Mercurial > projects > ldc
comparison gen/toir.c @ 66:0c5f410d973c trunk
[svn r70] Fixed bug where correct calling convention was not set on calling aggregate methods
author | lindquist |
---|---|
date | Sun, 28 Oct 2007 02:03:42 +0200 |
parents | b688ad419f8c |
children | f918f3e2e99e |
comparison
equal
deleted
inserted
replaced
65:d4a678905d5e | 66:0c5f410d973c |
---|---|
1252 e->mem = llargs[0]; | 1252 e->mem = llargs[0]; |
1253 else | 1253 else |
1254 e->val = call; | 1254 e->val = call; |
1255 | 1255 |
1256 // set calling convention | 1256 // set calling convention |
1257 if ((fn->funcdecl && (fn->funcdecl->llvmInternal != LLVMintrinsic && fn->funcdecl->llvmInternal != LLVMva_start)) || delegateCall) | 1257 if (fn->funcdecl) { |
1258 int li = fn->funcdecl->llvmInternal; | |
1259 if (li != LLVMintrinsic && li != LLVMva_start && li != LLVMva_intrinsic) { | |
1260 call->setCallingConv(LLVM_DtoCallingConv(dlink)); | |
1261 } | |
1262 } | |
1263 else if (delegateCall) | |
1258 call->setCallingConv(LLVM_DtoCallingConv(dlink)); | 1264 call->setCallingConv(LLVM_DtoCallingConv(dlink)); |
1259 else if (fn->callconv != (unsigned)-1) | 1265 else if (fn->callconv != (unsigned)-1) |
1260 call->setCallingConv(fn->callconv); | 1266 call->setCallingConv(fn->callconv); |
1261 | 1267 |
1262 delete fn; | 1268 delete fn; |
1598 funcval = new llvm::LoadInst(funcval,"tmp",p->scopebb()); | 1604 funcval = new llvm::LoadInst(funcval,"tmp",p->scopebb()); |
1599 assert(funcval->getType() == fdecl->llvmValue->getType()); | 1605 assert(funcval->getType() == fdecl->llvmValue->getType()); |
1600 e->callconv = LLVM_DtoCallingConv(fdecl->linkage); | 1606 e->callconv = LLVM_DtoCallingConv(fdecl->linkage); |
1601 } | 1607 } |
1602 e->val = funcval; | 1608 e->val = funcval; |
1603 e->type = elem::VAL; | 1609 e->type = elem::FUNC; |
1610 e->funcdecl = fdecl; | |
1604 } | 1611 } |
1605 else { | 1612 else { |
1606 printf("unknown: %s\n", var->toChars()); | 1613 printf("unknown: %s\n", var->toChars()); |
1607 assert(0); | 1614 assert(0); |
1608 } | 1615 } |