Mercurial > projects > ldc
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)); |