comparison 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
comparison
equal deleted inserted replaced
239:fa691b1c0498 240:0db62b770a49
1198 if (fnarg && fnarg->llvmByVal) 1198 if (fnarg && fnarg->llvmByVal)
1199 palist = palist.addAttr(j+1, llvm::ParamAttr::ByVal); 1199 palist = palist.addAttr(j+1, llvm::ParamAttr::ByVal);
1200 1200
1201 // this hack is necessary :/ 1201 // this hack is necessary :/
1202 if (dfn && dfn->func && dfn->func->runTimeHack) { 1202 if (dfn && dfn->func && dfn->func->runTimeHack) {
1203 llvm::Function* fn = dfn->func->ir.irFunc->func;
1204 assert(fn);
1205 if (fn->getParamAttrs().paramHasAttr(j+1, llvm::ParamAttr::ByVal))
1206 palist = palist.addAttr(j+1, llvm::ParamAttr::ByVal);
1207
1203 if (llfnty->getParamType(j) != NULL) { 1208 if (llfnty->getParamType(j) != NULL) {
1204 if (llargs[j]->getType() != llfnty->getParamType(j)) { 1209 if (llargs[j]->getType() != llfnty->getParamType(j)) {
1205 Logger::println("llvmRunTimeHack==true - force casting argument"); 1210 Logger::println("llvmRunTimeHack==true - force casting argument");
1206 Logger::cout() << "casting: " << *llargs[j] << " to type: " << *llfnty->getParamType(j) << '\n'; 1211 Logger::cout() << "casting: " << *llargs[j] << " to type: " << *llfnty->getParamType(j) << '\n';
1207 llargs[j] = DtoBitCast(llargs[j], llfnty->getParamType(j)); 1212 llargs[j] = DtoBitCast(llargs[j], llfnty->getParamType(j));