diff gen/toir.cpp @ 240:0db62b770a49 trunk

[svn r257] Fixed: array .sort and .reverse runtime code was incorrect. Fixed: most runtime calls did not get correct param attrs.
author lindquist
date Mon, 09 Jun 2008 00:01:10 +0200
parents 761c8352f494
children 4d006f7b2ada
line wrap: on
line diff
--- a/gen/toir.cpp	Sun Jun 08 22:07:10 2008 +0200
+++ b/gen/toir.cpp	Mon Jun 09 00:01:10 2008 +0200
@@ -1200,6 +1200,11 @@
 
             // this hack is necessary :/
             if (dfn && dfn->func && dfn->func->runTimeHack) {
+                llvm::Function* fn = dfn->func->ir.irFunc->func;
+                assert(fn);
+                if (fn->getParamAttrs().paramHasAttr(j+1, llvm::ParamAttr::ByVal))
+                    palist = palist.addAttr(j+1, llvm::ParamAttr::ByVal);
+
                 if (llfnty->getParamType(j) != NULL) {
                     if (llargs[j]->getType() != llfnty->getParamType(j)) {
                         Logger::println("llvmRunTimeHack==true - force casting argument");