Mercurial > projects > ldc
comparison gen/toir.c @ 32:a86fe7496b58 trunk
[svn r36] * Fixed a bug where passing a regular argument to a ref argument did not allocate storage
author | lindquist |
---|---|
date | Thu, 04 Oct 2007 18:24:05 +0200 |
parents | 881158a93592 |
children | 4648206ca213 |
comparison
equal
deleted
inserted
replaced
31:2841234d2aea | 32:a86fe7496b58 |
---|---|
984 assert(llargs[j] != 0); | 984 assert(llargs[j] != 0); |
985 } | 985 } |
986 else { | 986 else { |
987 Logger::println("as ptr arg"); | 987 Logger::println("as ptr arg"); |
988 llargs[j] = arg->mem ? arg->mem : arg->val; | 988 llargs[j] = arg->mem ? arg->mem : arg->val; |
989 if (llargs[j]->getType() != llfnty->getParamType(j)) | |
990 { | |
991 assert(llargs[j]->getType() == llfnty->getParamType(j)->getContainedType(0)); | |
992 LLVM_DtoGiveArgumentStorage(arg); | |
993 new llvm::StoreInst(llargs[j], arg->mem, p->scopebb()); | |
994 llargs[j] = arg->mem; | |
995 } | |
989 assert(llargs[j] != 0); | 996 assert(llargs[j] != 0); |
990 } | 997 } |
991 | 998 |
992 delete arg; | 999 delete arg; |
993 } | 1000 } |