From de0ae9e89ec437d9f58e4b2da04d210c161854a3 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Mon, 16 Aug 2021 18:24:22 -0700 Subject: [PATCH] [NFC] Cleanup more AttributeList::addAttribute() --- clang/lib/CodeGen/CGCall.cpp | 20 ++++++------------ clang/lib/CodeGen/CodeGenModule.cpp | 3 +-- llvm/include/llvm/IR/Attributes.h | 14 +++++++++++++ llvm/lib/AsmParser/LLParser.cpp | 12 ++++------- llvm/lib/CodeGen/AtomicExpandPass.cpp | 2 +- llvm/lib/CodeGen/CommandFlags.cpp | 3 +-- .../ExecutionEngine/ExecutionEngineBindings.cpp | 3 +-- llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp | 6 ++---- llvm/lib/Target/Mips/Mips16HardFloat.cpp | 9 +++----- llvm/lib/Transforms/Coroutines/CoroSplit.cpp | 6 ++---- .../Instrumentation/DataFlowSanitizer.cpp | 24 ++++++++-------------- .../Transforms/Instrumentation/ThreadSanitizer.cpp | 3 +-- llvm/lib/Transforms/Utils/InlineFunction.cpp | 3 +-- llvm/tools/bugpoint/CrashDebugger.cpp | 3 +-- llvm/unittests/IR/AttributesTest.cpp | 21 ++++++++----------- llvm/unittests/IR/VerifierTest.cpp | 3 +-- 16 files changed, 56 insertions(+), 79 deletions(-) diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index 4b15243..c9dc1c8 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -4527,7 +4527,7 @@ maybeRaiseRetAlignmentAttribute(llvm::LLVMContext &Ctx, return Attrs; llvm::Attribute AlignAttr = llvm::Attribute::getWithAlignment(Ctx, NewAlign); return Attrs.removeRetAttribute(Ctx, llvm::Attribute::AttrKind::Alignment) - .addAttribute(Ctx, llvm::AttributeList::ReturnIndex, AlignAttr); + .addRetAttribute(Ctx, AlignAttr); } template class AbstractAssumeAlignedAttrEmitter { @@ -5188,15 +5188,11 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, if (const FunctionDecl *FD = dyn_cast_or_null(CurFuncDecl)) if (FD->hasAttr()) // All calls within a strictfp function are marked strictfp - Attrs = - Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex, - llvm::Attribute::StrictFP); + Attrs = Attrs.addFnAttribute(getLLVMContext(), llvm::Attribute::StrictFP); // Add call-site nomerge attribute if exists. if (InNoMergeAttributedStmt) - Attrs = - Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex, - llvm::Attribute::NoMerge); + Attrs = Attrs.addFnAttribute(getLLVMContext(), llvm::Attribute::NoMerge); // Apply some call-site-specific attributes. // TODO: work this into building the attribute set. @@ -5206,15 +5202,12 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, if (CurCodeDecl && CurCodeDecl->hasAttr() && !(TargetDecl && TargetDecl->hasAttr())) { Attrs = - Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex, - llvm::Attribute::AlwaysInline); + Attrs.addFnAttribute(getLLVMContext(), llvm::Attribute::AlwaysInline); } // Disable inlining inside SEH __try blocks. if (isSEHTryScope()) { - Attrs = - Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex, - llvm::Attribute::NoInline); + Attrs = Attrs.addFnAttribute(getLLVMContext(), llvm::Attribute::NoInline); } // Decide whether to use a call or an invoke. @@ -5282,8 +5275,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, if (const auto *FD = dyn_cast_or_null(CurFuncDecl)) { if (const auto *A = FD->getAttr()) { if (A->getGuard() == CFGuardAttr::GuardArg::nocf && !CI->getCalledFunction()) - Attrs = Attrs.addAttribute( - getLLVMContext(), llvm::AttributeList::FunctionIndex, "guard_nocf"); + Attrs = Attrs.addFnAttribute(getLLVMContext(), "guard_nocf"); } } diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 03ba909..0fdd85c 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -3759,8 +3759,7 @@ CodeGenModule::CreateRuntimeFunction(llvm::FunctionType *FTy, StringRef Name, bool AssumeConvergent) { if (AssumeConvergent) { ExtraAttrs = - ExtraAttrs.addAttribute(VMContext, llvm::AttributeList::FunctionIndex, - llvm::Attribute::Convergent); + ExtraAttrs.addFnAttribute(VMContext, llvm::Attribute::Convergent); } llvm::Constant *C = diff --git a/llvm/include/llvm/IR/Attributes.h b/llvm/include/llvm/IR/Attributes.h index 5113d79..857e6c6 100644 --- a/llvm/include/llvm/IR/Attributes.h +++ b/llvm/include/llvm/IR/Attributes.h @@ -510,6 +510,20 @@ public: return addAttribute(C, ReturnIndex, Kind); } + /// Add a return value attribute to the list. Returns a new list because + /// attribute lists are immutable. + LLVM_NODISCARD AttributeList addRetAttribute(LLVMContext &C, + Attribute Attr) const { + return addAttribute(C, ReturnIndex, Attr); + } + + /// Add a return value attribute to the list. Returns a new list because + /// attribute lists are immutable. + LLVM_NODISCARD AttributeList addRetAttributes(LLVMContext &C, + const AttrBuilder &B) const { + return addAttributes(C, ReturnIndex, B); + } + /// Add an argument attribute to the list. Returns a new list because /// attribute lists are immutable. LLVM_NODISCARD AttributeList addParamAttribute( diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 746393d..6fcd2ac 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -152,32 +152,28 @@ bool LLParser::validateEndOfModule(bool UpgradeDebugInfo) { FnAttrs.removeAttribute(Attribute::Alignment); } - AS = AS.addAttributes(Context, AttributeList::FunctionIndex, - AttributeSet::get(Context, FnAttrs)); + AS = AS.addFnAttributes(Context, AttributeSet::get(Context, FnAttrs)); Fn->setAttributes(AS); } else if (CallInst *CI = dyn_cast(V)) { AttributeList AS = CI->getAttributes(); AttrBuilder FnAttrs(AS.getFnAttrs()); AS = AS.removeAttributes(Context, AttributeList::FunctionIndex); FnAttrs.merge(B); - AS = AS.addAttributes(Context, AttributeList::FunctionIndex, - AttributeSet::get(Context, FnAttrs)); + AS = AS.addFnAttributes(Context, AttributeSet::get(Context, FnAttrs)); CI->setAttributes(AS); } else if (InvokeInst *II = dyn_cast(V)) { AttributeList AS = II->getAttributes(); AttrBuilder FnAttrs(AS.getFnAttrs()); AS = AS.removeAttributes(Context, AttributeList::FunctionIndex); FnAttrs.merge(B); - AS = AS.addAttributes(Context, AttributeList::FunctionIndex, - AttributeSet::get(Context, FnAttrs)); + AS = AS.addFnAttributes(Context, AttributeSet::get(Context, FnAttrs)); II->setAttributes(AS); } else if (CallBrInst *CBI = dyn_cast(V)) { AttributeList AS = CBI->getAttributes(); AttrBuilder FnAttrs(AS.getFnAttrs()); AS = AS.removeAttributes(Context, AttributeList::FunctionIndex); FnAttrs.merge(B); - AS = AS.addAttributes(Context, AttributeList::FunctionIndex, - AttributeSet::get(Context, FnAttrs)); + AS = AS.addFnAttributes(Context, AttributeSet::get(Context, FnAttrs)); CBI->setAttributes(AS); } else if (auto *GV = dyn_cast(V)) { AttrBuilder Attrs(GV->getAttributes()); diff --git a/llvm/lib/CodeGen/AtomicExpandPass.cpp b/llvm/lib/CodeGen/AtomicExpandPass.cpp index a27d43e..47cdd22 100644 --- a/llvm/lib/CodeGen/AtomicExpandPass.cpp +++ b/llvm/lib/CodeGen/AtomicExpandPass.cpp @@ -1865,7 +1865,7 @@ bool AtomicExpand::expandAtomicOpToLibcall( // Now, the return type. if (CASExpected) { ResultTy = Type::getInt1Ty(Ctx); - Attr = Attr.addAttribute(Ctx, AttributeList::ReturnIndex, Attribute::ZExt); + Attr = Attr.addRetAttribute(Ctx, Attribute::ZExt); } else if (HasResult && UseSizedLibcall) ResultTy = SizedIntTy; else diff --git a/llvm/lib/CodeGen/CommandFlags.cpp b/llvm/lib/CodeGen/CommandFlags.cpp index e5f5da5..19f3959 100644 --- a/llvm/lib/CodeGen/CommandFlags.cpp +++ b/llvm/lib/CodeGen/CommandFlags.cpp @@ -677,8 +677,7 @@ void codegen::setFunctionAttributes(StringRef CPU, StringRef Features, Attribute::get(Ctx, "trap-func-name", getTrapFuncName())); // Let NewAttrs override Attrs. - F.setAttributes( - Attrs.addAttributes(Ctx, AttributeList::FunctionIndex, NewAttrs)); + F.setAttributes(Attrs.addFnAttributes(Ctx, NewAttrs)); } /// Set function attributes of functions in Module M based on CPU, diff --git a/llvm/lib/ExecutionEngine/ExecutionEngineBindings.cpp b/llvm/lib/ExecutionEngine/ExecutionEngineBindings.cpp index addec68..672fd7b 100644 --- a/llvm/lib/ExecutionEngine/ExecutionEngineBindings.cpp +++ b/llvm/lib/ExecutionEngine/ExecutionEngineBindings.cpp @@ -188,8 +188,7 @@ LLVMBool LLVMCreateMCJITCompilerForModule( for (auto &F : *Mod) { auto Attrs = F.getAttributes(); StringRef Value = options.NoFramePointerElim ? "all" : "none"; - Attrs = Attrs.addAttribute(F.getContext(), AttributeList::FunctionIndex, - "frame-pointer", Value); + Attrs = Attrs.addFnAttribute(F.getContext(), "frame-pointer", Value); F.setAttributes(Attrs); } diff --git a/llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp b/llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp index 32262ea..452142a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULibFunc.cpp @@ -990,10 +990,8 @@ FunctionCallee AMDGPULibFunc::getOrInsertFunction(Module *M, } else { AttributeList Attr; LLVMContext &Ctx = M->getContext(); - Attr = Attr.addAttribute(Ctx, AttributeList::FunctionIndex, - Attribute::ReadOnly); - Attr = Attr.addAttribute(Ctx, AttributeList::FunctionIndex, - Attribute::NoUnwind); + Attr = Attr.addFnAttribute(Ctx, Attribute::ReadOnly); + Attr = Attr.addFnAttribute(Ctx, Attribute::NoUnwind); C = M->getOrInsertFunction(FuncName, FuncTy, Attr); } diff --git a/llvm/lib/Target/Mips/Mips16HardFloat.cpp b/llvm/lib/Target/Mips/Mips16HardFloat.cpp index db0097a..203e05d 100644 --- a/llvm/lib/Target/Mips/Mips16HardFloat.cpp +++ b/llvm/lib/Target/Mips/Mips16HardFloat.cpp @@ -408,12 +408,9 @@ static bool fixupFPReturnAndCall(Function &F, Module *M, // during call setup, the proper call lowering to the helper // functions will take place. // - A = A.addAttribute(C, AttributeList::FunctionIndex, - "__Mips16RetHelper"); - A = A.addAttribute(C, AttributeList::FunctionIndex, - Attribute::ReadNone); - A = A.addAttribute(C, AttributeList::FunctionIndex, - Attribute::NoInline); + A = A.addFnAttribute(C, "__Mips16RetHelper"); + A = A.addFnAttribute(C, Attribute::ReadNone); + A = A.addFnAttribute(C, Attribute::NoInline); FunctionCallee F = (M->getOrInsertFunction(Name, A, MyVoid, T)); CallInst::Create(F, Params, "", &I); } else if (const CallInst *CI = dyn_cast(&I)) { diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp index f960d64..4a4e8b8 100644 --- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp +++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp @@ -906,8 +906,7 @@ void CoroCloner::create() { case coro::ABI::Switch: // Bootstrap attributes by copying function attributes from the // original function. This should include optimization settings and so on. - NewAttrs = NewAttrs.addAttributes(Context, AttributeList::FunctionIndex, - OrigAttrs.getFnAttrs()); + NewAttrs = NewAttrs.addFnAttributes(Context, OrigAttrs.getFnAttrs()); addFramePointerAttrs(NewAttrs, Context, 0, Shape.FrameSize, Shape.FrameAlign); @@ -930,8 +929,7 @@ void CoroCloner::create() { // Transfer the original function's attributes. auto FnAttrs = OrigF.getAttributes().getFnAttrs(); - NewAttrs = - NewAttrs.addAttributes(Context, AttributeList::FunctionIndex, FnAttrs); + NewAttrs = NewAttrs.addFnAttributes(Context, FnAttrs); break; } case coro::ABI::Retcon: diff --git a/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp index afbf642..988224c 100644 --- a/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp @@ -1236,23 +1236,17 @@ Constant *DataFlowSanitizer::getOrBuildTrampolineFunction(FunctionType *FT, void DataFlowSanitizer::initializeRuntimeFunctions(Module &M) { { AttributeList AL; - AL = AL.addAttribute(M.getContext(), AttributeList::FunctionIndex, - Attribute::NoUnwind); - AL = AL.addAttribute(M.getContext(), AttributeList::FunctionIndex, - Attribute::ReadOnly); - AL = AL.addAttribute(M.getContext(), AttributeList::ReturnIndex, - Attribute::ZExt); + AL = AL.addFnAttribute(M.getContext(), Attribute::NoUnwind); + AL = AL.addFnAttribute(M.getContext(), Attribute::ReadOnly); + AL = AL.addRetAttribute(M.getContext(), Attribute::ZExt); DFSanUnionLoadFn = Mod->getOrInsertFunction("__dfsan_union_load", DFSanUnionLoadFnTy, AL); } { AttributeList AL; - AL = AL.addAttribute(M.getContext(), AttributeList::FunctionIndex, - Attribute::NoUnwind); - AL = AL.addAttribute(M.getContext(), AttributeList::FunctionIndex, - Attribute::ReadOnly); - AL = AL.addAttribute(M.getContext(), AttributeList::ReturnIndex, - Attribute::ZExt); + AL = AL.addFnAttribute(M.getContext(), Attribute::NoUnwind); + AL = AL.addFnAttribute(M.getContext(), Attribute::ReadOnly); + AL = AL.addRetAttribute(M.getContext(), Attribute::ZExt); DFSanLoadLabelAndOriginFn = Mod->getOrInsertFunction( "__dfsan_load_label_and_origin", DFSanLoadLabelAndOriginFnTy, AL); } @@ -1272,8 +1266,7 @@ void DataFlowSanitizer::initializeRuntimeFunctions(Module &M) { { AttributeList AL; AL = AL.addParamAttribute(M.getContext(), 0, Attribute::ZExt); - AL = AL.addAttribute(M.getContext(), AttributeList::ReturnIndex, - Attribute::ZExt); + AL = AL.addRetAttribute(M.getContext(), Attribute::ZExt); DFSanChainOriginFn = Mod->getOrInsertFunction("__dfsan_chain_origin", DFSanChainOriginFnTy, AL); } @@ -1281,8 +1274,7 @@ void DataFlowSanitizer::initializeRuntimeFunctions(Module &M) { AttributeList AL; AL = AL.addParamAttribute(M.getContext(), 0, Attribute::ZExt); AL = AL.addParamAttribute(M.getContext(), 1, Attribute::ZExt); - AL = AL.addAttribute(M.getContext(), AttributeList::ReturnIndex, - Attribute::ZExt); + AL = AL.addRetAttribute(M.getContext(), Attribute::ZExt); DFSanChainOriginIfTaintedFn = Mod->getOrInsertFunction( "__dfsan_chain_origin_if_tainted", DFSanChainOriginIfTaintedFnTy, AL); } diff --git a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp index 063999a..87fdcc9 100644 --- a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp @@ -249,8 +249,7 @@ void ThreadSanitizer::initialize(Module &M) { IRBuilder<> IRB(M.getContext()); AttributeList Attr; - Attr = Attr.addAttribute(M.getContext(), AttributeList::FunctionIndex, - Attribute::NoUnwind); + Attr = Attr.addFnAttribute(M.getContext(), Attribute::NoUnwind); // Initialize the callbacks. TsanFuncEntry = M.getOrInsertFunction("__tsan_func_entry", Attr, IRB.getVoidTy(), IRB.getInt8PtrTy()); diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 34236f2..2673867 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -1259,8 +1259,7 @@ static void AddReturnAttributes(CallBase &CB, ValueToValueMapTy &VMap) { // existing attribute value (i.e. attributes such as dereferenceable, // dereferenceable_or_null etc). See AttrBuilder::merge for more details. AttributeList AL = NewRetVal->getAttributes(); - AttributeList NewAL = - AL.addAttributes(Context, AttributeList::ReturnIndex, Valid); + AttributeList NewAL = AL.addRetAttributes(Context, Valid); NewRetVal->setAttributes(NewAL); } } diff --git a/llvm/tools/bugpoint/CrashDebugger.cpp b/llvm/tools/bugpoint/CrashDebugger.cpp index d068656..8e4de35 100644 --- a/llvm/tools/bugpoint/CrashDebugger.cpp +++ b/llvm/tools/bugpoint/CrashDebugger.cpp @@ -358,8 +358,7 @@ bool ReduceCrashingFunctionAttributes::TestFuncAttrs( for (auto A : Attrs) AB.addAttribute(A); AttributeList NewAttrs; - NewAttrs = - NewAttrs.addAttributes(BD.getContext(), AttributeList::FunctionIndex, AB); + NewAttrs = NewAttrs.addFnAttributes(BD.getContext(), AB); // Set this new list of attributes on the function. F->setAttributes(NewAttrs); diff --git a/llvm/unittests/IR/AttributesTest.cpp b/llvm/unittests/IR/AttributesTest.cpp index 4649b86..3e8bcf1 100644 --- a/llvm/unittests/IR/AttributesTest.cpp +++ b/llvm/unittests/IR/AttributesTest.cpp @@ -64,11 +64,11 @@ TEST(Attributes, AddAttributes) { AttributeList AL; AttrBuilder B; B.addAttribute(Attribute::NoReturn); - AL = AL.addAttributes(C, AttributeList::FunctionIndex, AttributeSet::get(C, B)); + AL = AL.addFnAttributes(C, AttributeSet::get(C, B)); EXPECT_TRUE(AL.hasFnAttr(Attribute::NoReturn)); B.clear(); B.addAttribute(Attribute::SExt); - AL = AL.addAttributes(C, AttributeList::ReturnIndex, B); + AL = AL.addRetAttributes(C, B); EXPECT_TRUE(AL.hasRetAttr(Attribute::SExt)); EXPECT_TRUE(AL.hasFnAttr(Attribute::NoReturn)); } @@ -102,7 +102,7 @@ TEST(Attributes, RemoveAlign) { AttributeList AL; AL = AL.addParamAttributes(C, 0, B_align_readonly); - AL = AL.addAttributes(C, 0, B_stackalign_optnone); + AL = AL.addRetAttributes(C, B_stackalign_optnone); EXPECT_TRUE(AL.hasRetAttrs()); EXPECT_TRUE(AL.hasRetAttr(Attribute::StackAlignment)); EXPECT_TRUE(AL.hasRetAttr(Attribute::OptimizeNone)); @@ -127,7 +127,7 @@ TEST(Attributes, RemoveAlign) { AttributeList AL2; AL2 = AL2.addParamAttributes(C, 0, B_align_readonly); - AL2 = AL2.addAttributes(C, 0, B_stackalign_optnone); + AL2 = AL2.addRetAttributes(C, B_stackalign_optnone); AL2 = AL2.removeParamAttributes(C, 0, B_align); EXPECT_FALSE(AL2.hasParamAttr(0, Attribute::Alignment)); @@ -146,17 +146,15 @@ TEST(Attributes, RemoveAlign) { TEST(Attributes, AddMatchingAlignAttr) { LLVMContext C; AttributeList AL; - AL = AL.addAttribute(C, AttributeList::FirstArgIndex, - Attribute::getWithAlignment(C, Align(8))); - AL = AL.addAttribute(C, AttributeList::FirstArgIndex + 1, - Attribute::getWithAlignment(C, Align(32))); + AL = AL.addParamAttribute(C, 0, Attribute::getWithAlignment(C, Align(8))); + AL = AL.addParamAttribute(C, 1, Attribute::getWithAlignment(C, Align(32))); EXPECT_EQ(Align(8), AL.getParamAlignment(0)); EXPECT_EQ(Align(32), AL.getParamAlignment(1)); AttrBuilder B; B.addAttribute(Attribute::NonNull); B.addAlignmentAttr(8); - AL = AL.addAttributes(C, AttributeList::FirstArgIndex, B); + AL = AL.addParamAttributes(C, 0, B); EXPECT_EQ(Align(8), AL.getParamAlignment(0)); EXPECT_EQ(Align(32), AL.getParamAlignment(1)); EXPECT_TRUE(AL.hasParamAttr(0, Attribute::NonNull)); @@ -229,8 +227,7 @@ TEST(Attributes, AttributeListPrinting) { std::string S; raw_string_ostream OS(S); AttributeList AL; - AL.addAttribute(C, AttributeList::FunctionIndex, Attribute::AlwaysInline) - .print(OS); + AL.addFnAttribute(C, Attribute::AlwaysInline).print(OS); EXPECT_EQ(S, "AttributeList[\n" " { function => alwaysinline }\n" "]\n"); @@ -240,7 +237,7 @@ TEST(Attributes, AttributeListPrinting) { std::string S; raw_string_ostream OS(S); AttributeList AL; - AL.addAttribute(C, AttributeList::ReturnIndex, Attribute::SExt).print(OS); + AL.addRetAttribute(C, Attribute::SExt).print(OS); EXPECT_EQ(S, "AttributeList[\n" " { return => signext }\n" "]\n"); diff --git a/llvm/unittests/IR/VerifierTest.cpp b/llvm/unittests/IR/VerifierTest.cpp index 0e58bc4..6031c80 100644 --- a/llvm/unittests/IR/VerifierTest.cpp +++ b/llvm/unittests/IR/VerifierTest.cpp @@ -99,8 +99,7 @@ TEST(VerifierTest, InvalidRetAttribute) { FunctionType *FTy = FunctionType::get(Type::getInt32Ty(C), /*isVarArg=*/false); Function *F = Function::Create(FTy, Function::ExternalLinkage, "foo", M); AttributeList AS = F->getAttributes(); - F->setAttributes( - AS.addAttribute(C, AttributeList::ReturnIndex, Attribute::UWTable)); + F->setAttributes(AS.addRetAttribute(C, Attribute::UWTable)); std::string Error; raw_string_ostream ErrorOS(Error); -- 2.7.4