const Decl *TargetDecl,
AttributeListType &PAL,
unsigned &CallingConv) {
- llvm::Attributes::Builder FuncAttrs;
- llvm::Attributes::Builder RetAttrs;
+ llvm::AttrBuilder FuncAttrs;
+ llvm::AttrBuilder RetAttrs;
CallingConv = FI.getEffectiveCallingConvention();
break;
case ABIArgInfo::Indirect: {
- llvm::Attributes::Builder SRETAttrs;
+ llvm::AttrBuilder SRETAttrs;
SRETAttrs.addAttribute(llvm::Attributes::StructRet);
if (RetAI.getInReg())
SRETAttrs.addAttribute(llvm::Attributes::InReg);
ie = FI.arg_end(); it != ie; ++it) {
QualType ParamType = it->type;
const ABIArgInfo &AI = it->info;
- llvm::Attributes::Builder Attrs;
+ llvm::AttrBuilder Attrs;
// 'restrict' -> 'noalias' is done in EmitFunctionProlog when we
// have the corresponding parameter variable. It doesn't make
// Name the struct return argument.
if (CGM.ReturnTypeUsesSRet(FI)) {
AI->setName("agg.result");
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoAlias);
AI->addAttr(llvm::Attributes::get(getLLVMContext(), B));
++AI;
llvm::Value *V = AI;
if (Arg->getType().isRestrictQualified()) {
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoAlias);
AI->addAttr(llvm::Attributes::get(getLLVMContext(), B));
}
llvm::FunctionType *FnType =
llvm::FunctionType::get(CGM.VoidTy, ArgTypes, false);
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoReturn)
.addAttribute(llvm::Attributes::NoUnwind)
.addAttribute(llvm::Attributes::UWTable);
// Add the non-lazy-bind attribute, since objc_msgSend is likely to
// be called a lot.
llvm::Type *params[] = { ObjectPtrTy, SelectorPtrTy };
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NonLazyBind);
return CGM.CreateRuntimeFunction(llvm::FunctionType::get(ObjectPtrTy,
params, true),
llvm::Constant *getSetJmpFn() {
// This is specifically the prototype for x86.
llvm::Type *params[] = { CGM.Int32Ty->getPointerTo() };
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NonLazyBind);
return CGM.CreateRuntimeFunction(llvm::FunctionType::get(CGM.Int32Ty,
params, false),
llvm::InlineAsm::get(FTy, AsmString, Constraints, HasSideEffect,
/* IsAlignStack */ false, AsmDialect);
llvm::CallInst *Result = Builder.CreateCall(IA, Args);
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoUnwind);
Result->addAttribute(llvm::AttrListPtr::FunctionIndex,
llvm::Attributes::get(getLLVMContext(), B));
llvm::FunctionType *FTy =
llvm::FunctionType::get(CGM.getTypes().ConvertType(CGM.getContext().IntTy),
GuardPtrTy, /*isVarArg=*/false);
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoUnwind);
return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_acquire",
llvm::Attributes::get(CGM.getLLVMContext(),
// void __cxa_guard_release(__guard *guard_object);
llvm::FunctionType *FTy =
llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false);
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoUnwind);
return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_release",
llvm::Attributes::get(CGM.getLLVMContext(),
// void __cxa_guard_abort(__guard *guard_object);
llvm::FunctionType *FTy =
llvm::FunctionType::get(CGM.VoidTy, GuardPtrTy, /*isVarArg=*/false);
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addAttribute(llvm::Attributes::NoUnwind);
return CGM.CreateRuntimeFunction(FTy, "__cxa_guard_abort",
llvm::Attributes::get(CGM.getLLVMContext(),
llvm::Function *Fn = cast<llvm::Function>(GV);
// Now add the 'alignstack' attribute with a value of 16.
- llvm::Attributes::Builder B;
+ llvm::AttrBuilder B;
B.addStackAlignmentAttr(16);
Fn->addAttribute(llvm::AttrListPtr::FunctionIndex,
llvm::Attributes::get(CGM.getLLVMContext(), B));