forked from OSchip/llvm-project
Apply the 'nobuiltin' attribute to call sites when the user specifies `-fno-builtin' on the command line.
llvm-svn: 175836
This commit is contained in:
parent
09bd1f71ee
commit
f4d64cb3a5
|
@ -969,7 +969,8 @@ llvm::Type *CodeGenTypes::GetFunctionTypeForVTable(GlobalDecl GD) {
|
|||
void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
|
||||
const Decl *TargetDecl,
|
||||
AttributeListType &PAL,
|
||||
unsigned &CallingConv) {
|
||||
unsigned &CallingConv,
|
||||
bool AttrOnCallSite) {
|
||||
llvm::AttrBuilder FuncAttrs;
|
||||
llvm::AttrBuilder RetAttrs;
|
||||
|
||||
|
@ -1028,6 +1029,9 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
|
|||
FuncAttrs.addAttribute("target-features", Features.getString());
|
||||
}
|
||||
|
||||
if (AttrOnCallSite && !CodeGenOpts.SimplifyLibCalls)
|
||||
FuncAttrs.addAttribute(llvm::Attribute::NoBuiltin);
|
||||
|
||||
QualType RetTy = FI.getReturnType();
|
||||
unsigned Index = 1;
|
||||
const ABIArgInfo &RetAI = FI.getReturnInfo();
|
||||
|
@ -2238,9 +2242,10 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
|
|||
|
||||
unsigned CallingConv;
|
||||
CodeGen::AttributeListType AttributeList;
|
||||
CGM.ConstructAttributeList(CallInfo, TargetDecl, AttributeList, CallingConv);
|
||||
CGM.ConstructAttributeList(CallInfo, TargetDecl, AttributeList,
|
||||
CallingConv, true);
|
||||
llvm::AttributeSet Attrs = llvm::AttributeSet::get(getLLVMContext(),
|
||||
AttributeList);
|
||||
AttributeList);
|
||||
|
||||
llvm::BasicBlock *InvokeDest = 0;
|
||||
if (!Attrs.hasAttribute(llvm::AttributeSet::FunctionIndex,
|
||||
|
|
|
@ -550,7 +550,7 @@ void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D,
|
|||
llvm::Function *F) {
|
||||
unsigned CallingConv;
|
||||
AttributeListType AttributeList;
|
||||
ConstructAttributeList(Info, D, AttributeList, CallingConv);
|
||||
ConstructAttributeList(Info, D, AttributeList, CallingConv, false);
|
||||
F->setAttributes(llvm::AttributeSet::get(getLLVMContext(), AttributeList));
|
||||
F->setCallingConv(static_cast<llvm::CallingConv::ID>(CallingConv));
|
||||
}
|
||||
|
|
|
@ -839,7 +839,8 @@ public:
|
|||
void ConstructAttributeList(const CGFunctionInfo &Info,
|
||||
const Decl *TargetDecl,
|
||||
AttributeListType &PAL,
|
||||
unsigned &CallingConv);
|
||||
unsigned &CallingConv,
|
||||
bool AttrOnCallSite);
|
||||
|
||||
StringRef getMangledName(GlobalDecl GD);
|
||||
void getBlockMangledName(GlobalDecl GD, MangleBuffer &Buffer,
|
||||
|
|
Loading…
Reference in New Issue