Preserve exceptions information during calls code generation.
This patch changes the generation of CGFunctionInfo to contain the FunctionProtoType if it is available. This enables the code generation for call instructions to look into this type for exception information and therefore generate better quality IR - it will not create invoke instructions for functions that are know not to throw. llvm-svn: 253926
This commit is contained in:
@@ -949,11 +949,11 @@ CodeGenFunction::generateObjCGetterBody(const ObjCImplementationDecl *classImpl,
|
||||
// FIXME: We shouldn't need to get the function info here, the
|
||||
// runtime already should have computed it to build the function.
|
||||
llvm::Instruction *CallInstruction;
|
||||
RValue RV = EmitCall(getTypes().arrangeFreeFunctionCall(propType, args,
|
||||
FunctionType::ExtInfo(),
|
||||
RequiredArgs::All),
|
||||
getPropertyFn, ReturnValueSlot(), args, nullptr,
|
||||
&CallInstruction);
|
||||
RValue RV = EmitCall(
|
||||
getTypes().arrangeFreeFunctionCall(
|
||||
propType, args, FunctionType::ExtInfo(), RequiredArgs::All),
|
||||
getPropertyFn, ReturnValueSlot(), args, CGCalleeInfo(),
|
||||
&CallInstruction);
|
||||
if (llvm::CallInst *call = dyn_cast<llvm::CallInst>(CallInstruction))
|
||||
call->setTailCall();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user