Mercurial > projects > ldc
diff gen/arrays.cpp @ 315:a9697749e898 trunk
[svn r336] Made sure calls within a landing pad area are invokes.
Nested trys still need some consideration.
author | ChristianK |
---|---|
date | Thu, 03 Jul 2008 22:05:45 +0200 |
parents | 6b62e8cdf970 |
children | 7086a84ab3d6 |
line wrap: on
line diff
--- a/gen/arrays.cpp Wed Jul 02 22:20:18 2008 +0200 +++ b/gen/arrays.cpp Thu Jul 03 22:05:45 2008 +0200 @@ -232,7 +232,7 @@ LLFunction* fn = LLVM_D_GetRuntimeFunction(gIR->module, funcname); assert(fn); Logger::cout() << "calling array init function: " << *fn <<'\n'; - llvm::CallInst* call = llvm::CallInst::Create(fn, args.begin(), args.end(), "", gIR->scopebb()); + CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end()); call->setCallingConv(llvm::CallingConv::C); } @@ -412,7 +412,7 @@ LLFunction* fn = LLVM_D_GetRuntimeFunction(gIR->module, zeroInit ? "_d_newarrayT" : "_d_newarrayiT" ); // call allocator - LLValue* newptr = gIR->ir->CreateCall2(fn, arrayTypeInfo, arrayLen, ".gc_mem"); + LLValue* newptr = gIR->CreateCallOrInvoke2(fn, arrayTypeInfo, arrayLen, ".gc_mem")->get(); // cast to wanted type const LLType* dstType = DtoType(arrayType)->getContainedType(1); @@ -460,7 +460,7 @@ } // call allocator - LLValue* newptr = gIR->ir->CreateCall3(fn, arrayTypeInfo, DtoConstSize_t(ndims), dimsArg, ".gc_mem"); + LLValue* newptr = gIR->CreateCallOrInvoke3(fn, arrayTypeInfo, DtoConstSize_t(ndims), dimsArg, ".gc_mem")->get(); // cast to wanted type const LLType* dstType = DtoType(arrayType)->getContainedType(1); @@ -506,7 +506,7 @@ Logger::cout() << "arrPtr = " << *arrPtr << '\n'; args.push_back(DtoBitCast(arrPtr, fn->getFunctionType()->getParamType(3), "tmp")); - LLValue* newptr = gIR->ir->CreateCall(fn, args.begin(), args.end(), ".gc_mem"); + LLValue* newptr = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), ".gc_mem")->get(); if (newptr->getType() != arrPtr->getType()) newptr = DtoBitCast(newptr, arrPtr->getType(), ".gc_mem"); @@ -753,7 +753,7 @@ args.push_back(DtoBitCast(tival, pt)); } - llvm::CallInst* call = gIR->ir->CreateCall(fn, args.begin(), args.end(), "tmp"); + CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp"); // set param attrs llvm::PAListPtr palist; @@ -761,7 +761,7 @@ palist = palist.addAttr(2, llvm::ParamAttr::ByVal); call->setParamAttrs(palist); - return call; + return call->get(); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -854,7 +854,7 @@ args.push_back(llvm::ConstantInt::get(DtoSize_t(), nsz, false)); LLFunction* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_array_cast_len"); - return llvm::CallInst::Create(fn, args.begin(), args.end(), "tmp", gIR->scopebb()); + return gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp")->get(); } //////////////////////////////////////////////////////////////////////////////////////////