Mercurial > projects > ldc
comparison gen/statements.cpp @ 632:df196c8dea26
Updated to latest LLVM trunk, function notes have been removed and merged with parameter attributes, which have been renamed to just attributes. Nothing seems to have broke!
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Wed, 01 Oct 2008 23:17:14 +0200 |
parents | 26fce59fe80a |
children | c8fcde3337b0 |
comparison
equal
deleted
inserted
replaced
629:607b6b5819a7 | 632:df196c8dea26 |
---|---|
703 } | 703 } |
704 assert(llval->getType() == fn->getFunctionType()->getParamType(1)); | 704 assert(llval->getType() == fn->getFunctionType()->getParamType(1)); |
705 | 705 |
706 CallOrInvoke* call = gIR->CreateCallOrInvoke2(fn, table, llval, "tmp"); | 706 CallOrInvoke* call = gIR->CreateCallOrInvoke2(fn, table, llval, "tmp"); |
707 | 707 |
708 llvm::PAListPtr palist; | 708 llvm::AttrListPtr palist; |
709 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); | 709 palist = palist.addAttr(1, llvm::Attribute::ByVal); |
710 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); | 710 palist = palist.addAttr(2, llvm::Attribute::ByVal); |
711 call->setParamAttrs(palist); | 711 call->setAttributes(palist); |
712 | 712 |
713 return call->get(); | 713 return call->get(); |
714 } | 714 } |
715 | 715 |
716 void SwitchStatement::toIR(IRState* p) | 716 void SwitchStatement::toIR(IRState* p) |
1253 LOG_SCOPE; | 1253 LOG_SCOPE; |
1254 | 1254 |
1255 llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error"); | 1255 llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error"); |
1256 | 1256 |
1257 // param attrs | 1257 // param attrs |
1258 llvm::PAListPtr palist; | 1258 llvm::AttrListPtr palist; |
1259 int idx = 1; | 1259 int idx = 1; |
1260 | 1260 |
1261 std::vector<LLValue*> args; | 1261 std::vector<LLValue*> args; |
1262 LLConstant* c; | 1262 LLConstant* c; |
1263 | 1263 |
1274 DtoStore(c->getOperand(0), ptr); | 1274 DtoStore(c->getOperand(0), ptr); |
1275 ptr = DtoGEPi(alloc, 0,1, "tmp"); | 1275 ptr = DtoGEPi(alloc, 0,1, "tmp"); |
1276 DtoStore(c->getOperand(1), ptr); | 1276 DtoStore(c->getOperand(1), ptr); |
1277 | 1277 |
1278 args.push_back(alloc); | 1278 args.push_back(alloc); |
1279 palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal); | 1279 palist = palist.addAttr(idx++, llvm::Attribute::ByVal); |
1280 | 1280 |
1281 // line param | 1281 // line param |
1282 c = DtoConstUint(loc.linnum); | 1282 c = DtoConstUint(loc.linnum); |
1283 args.push_back(c); | 1283 args.push_back(c); |
1284 | 1284 |
1285 // call | 1285 // call |
1286 CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end()); | 1286 CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end()); |
1287 call->setParamAttrs(palist); | 1287 call->setAttributes(palist); |
1288 | 1288 |
1289 gIR->ir->CreateUnreachable(); | 1289 gIR->ir->CreateUnreachable(); |
1290 } | 1290 } |
1291 | 1291 |
1292 ////////////////////////////////////////////////////////////////////////////// | 1292 ////////////////////////////////////////////////////////////////////////////// |