From 46d5dd9b058f31637f2449b2925f13a5707d126d Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 16 Oct 2012 05:23:31 +0000 Subject: [PATCH] Use the Attributes::get method which takes an AttrVal value directly to simplify the code a bit. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166009 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Function.h | 12 ++--- include/llvm/Instructions.h | 55 +++++++++------------- lib/Transforms/IPO/GlobalOpt.cpp | 6 +-- lib/Transforms/Scalar/ObjCARC.cpp | 36 ++++---------- lib/Transforms/Scalar/SimplifyLibCalls.cpp | 5 +- 5 files changed, 38 insertions(+), 76 deletions(-) diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 26b148d848a..e211e9ab52a 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -178,9 +178,7 @@ public: /// void addFnAttr(Attributes::AttrVal N) { // Function Attributes are stored at ~0 index - AttrBuilder B; - B.addAttribute(N); - addAttribute(~0U, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), N)); } /// removeFnAttr - Remove function attributes from this function. @@ -278,9 +276,7 @@ public: return getParamAttributes(n).hasAttribute(Attributes::NoAlias); } void setDoesNotAlias(unsigned n) { - AttrBuilder B; - B.addAttribute(Attributes::NoAlias); - addAttribute(n, Attributes::get(getContext(), B)); + addAttribute(n, Attributes::get(getContext(), Attributes::NoAlias)); } /// @brief Determine if the parameter can be captured. @@ -289,9 +285,7 @@ public: return getParamAttributes(n).hasAttribute(Attributes::NoCapture); } void setDoesNotCapture(unsigned n) { - AttrBuilder B; - B.addAttribute(Attributes::NoCapture); - addAttribute(n, Attributes::get(getContext(), B)); + addAttribute(n, Attributes::get(getContext(), Attributes::NoCapture)); } /// copyAttributesFrom - copy all additional attributes (those not needed to diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index 97612b6f850..40dbbaabe69 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -1281,9 +1281,8 @@ public: /// @brief Return true if the call should not be inlined. bool isNoInline() const { return hasFnAttr(Attributes::NoInline); } void setIsNoInline() { - AttrBuilder B; - B.addAttribute(Attributes::NoInline); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoInline)); } /// @brief Return true if the call can return twice @@ -1291,9 +1290,8 @@ public: return hasFnAttr(Attributes::ReturnsTwice); } void setCanReturnTwice() { - AttrBuilder B; - B.addAttribute(Attributes::ReturnsTwice); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::ReturnsTwice)); } /// @brief Determine if the call does not access memory. @@ -1301,9 +1299,8 @@ public: return hasFnAttr(Attributes::ReadNone); } void setDoesNotAccessMemory() { - AttrBuilder B; - B.addAttribute(Attributes::ReadNone); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::ReadNone)); } /// @brief Determine if the call does not access or only reads memory. @@ -1311,25 +1308,22 @@ public: return doesNotAccessMemory() || hasFnAttr(Attributes::ReadOnly); } void setOnlyReadsMemory() { - AttrBuilder B; - B.addAttribute(Attributes::ReadOnly); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::ReadOnly)); } /// @brief Determine if the call cannot return. bool doesNotReturn() const { return hasFnAttr(Attributes::NoReturn); } void setDoesNotReturn() { - AttrBuilder B; - B.addAttribute(Attributes::NoReturn); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoReturn)); } /// @brief Determine if the call cannot unwind. bool doesNotThrow() const { return hasFnAttr(Attributes::NoUnwind); } void setDoesNotThrow() { - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoUnwind)); } /// @brief Determine if the call returns a structure through first @@ -3036,9 +3030,8 @@ public: /// @brief Return true if the call should not be inlined. bool isNoInline() const { return hasFnAttr(Attributes::NoInline); } void setIsNoInline() { - AttrBuilder B; - B.addAttribute(Attributes::NoInline); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoInline)); } /// @brief Determine if the call does not access memory. @@ -3046,9 +3039,8 @@ public: return hasFnAttr(Attributes::ReadNone); } void setDoesNotAccessMemory() { - AttrBuilder B; - B.addAttribute(Attributes::ReadNone); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::ReadNone)); } /// @brief Determine if the call does not access or only reads memory. @@ -3056,25 +3048,22 @@ public: return doesNotAccessMemory() || hasFnAttr(Attributes::ReadOnly); } void setOnlyReadsMemory() { - AttrBuilder B; - B.addAttribute(Attributes::ReadOnly); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::ReadOnly)); } /// @brief Determine if the call cannot return. bool doesNotReturn() const { return hasFnAttr(Attributes::NoReturn); } void setDoesNotReturn() { - AttrBuilder B; - B.addAttribute(Attributes::NoReturn); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoReturn)); } /// @brief Determine if the call cannot unwind. bool doesNotThrow() const { return hasFnAttr(Attributes::NoUnwind); } void setDoesNotThrow() { - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); - addAttribute(AttrListPtr::FunctionIndex, Attributes::get(getContext(), B)); + addAttribute(AttrListPtr::FunctionIndex, + Attributes::get(getContext(), Attributes::NoUnwind)); } /// @brief Determine if the call returns a structure through first diff --git a/lib/Transforms/IPO/GlobalOpt.cpp b/lib/Transforms/IPO/GlobalOpt.cpp index 6468ff3276e..678189b3d6c 100644 --- a/lib/Transforms/IPO/GlobalOpt.cpp +++ b/lib/Transforms/IPO/GlobalOpt.cpp @@ -2062,15 +2062,13 @@ static void ChangeCalleesToFastCall(Function *F) { } static AttrListPtr StripNest(LLVMContext &C, const AttrListPtr &Attrs) { - AttrBuilder B; - B.addAttribute(Attributes::Nest); - for (unsigned i = 0, e = Attrs.getNumSlots(); i != e; ++i) { if (!Attrs.getSlot(i).Attrs.hasAttribute(Attributes::Nest)) continue; // There can be only one. - return Attrs.removeAttr(C, Attrs.getSlot(i).Index, Attributes::get(C, B)); + return Attrs.removeAttr(C, Attrs.getSlot(i).Index, + Attributes::get(C, Attributes::Nest)); } return Attrs; diff --git a/lib/Transforms/Scalar/ObjCARC.cpp b/lib/Transforms/Scalar/ObjCARC.cpp index e18208d4a57..dfdf50549da 100644 --- a/lib/Transforms/Scalar/ObjCARC.cpp +++ b/lib/Transforms/Scalar/ObjCARC.cpp @@ -1788,11 +1788,9 @@ Constant *ObjCARCOpt::getRetainRVCallee(Module *M) { Type *I8X = PointerType::getUnqual(Type::getInt8Ty(C)); Type *Params[] = { I8X }; FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false); - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(M->getContext(), B)); + Attributes::get(C, Attributes::NoUnwind)); RetainRVCallee = M->getOrInsertFunction("objc_retainAutoreleasedReturnValue", FTy, Attributes); @@ -1806,11 +1804,9 @@ Constant *ObjCARCOpt::getAutoreleaseRVCallee(Module *M) { Type *I8X = PointerType::getUnqual(Type::getInt8Ty(C)); Type *Params[] = { I8X }; FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false); - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); AutoreleaseRVCallee = M->getOrInsertFunction("objc_autoreleaseReturnValue", FTy, Attributes); @@ -1822,11 +1818,9 @@ Constant *ObjCARCOpt::getReleaseCallee(Module *M) { if (!ReleaseCallee) { LLVMContext &C = M->getContext(); Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) }; - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); ReleaseCallee = M->getOrInsertFunction( "objc_release", @@ -1840,11 +1834,9 @@ Constant *ObjCARCOpt::getRetainCallee(Module *M) { if (!RetainCallee) { LLVMContext &C = M->getContext(); Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) }; - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); RetainCallee = M->getOrInsertFunction( "objc_retain", @@ -1873,11 +1865,9 @@ Constant *ObjCARCOpt::getAutoreleaseCallee(Module *M) { if (!AutoreleaseCallee) { LLVMContext &C = M->getContext(); Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) }; - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); AutoreleaseCallee = M->getOrInsertFunction( "objc_autorelease", @@ -3850,14 +3840,10 @@ Constant *ObjCARCContract::getStoreStrongCallee(Module *M) { Type *I8XX = PointerType::getUnqual(I8X); Type *Params[] = { I8XX, I8X }; - AttrBuilder BNoUnwind; - BNoUnwind.addAttribute(Attributes::NoUnwind); - AttrBuilder BNoCapture; - BNoCapture.addAttribute(Attributes::NoCapture); AttrListPtr Attributes = AttrListPtr() .addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, BNoUnwind)) - .addAttr(M->getContext(), 1, Attributes::get(C, BNoCapture)); + Attributes::get(C, Attributes::NoUnwind)) + .addAttr(M->getContext(), 1, Attributes::get(C, Attributes::NoCapture)); StoreStrongCallee = M->getOrInsertFunction( @@ -3874,11 +3860,9 @@ Constant *ObjCARCContract::getRetainAutoreleaseCallee(Module *M) { Type *I8X = PointerType::getUnqual(Type::getInt8Ty(C)); Type *Params[] = { I8X }; FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false); - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); RetainAutoreleaseCallee = M->getOrInsertFunction("objc_retainAutorelease", FTy, Attributes); } @@ -3891,11 +3875,9 @@ Constant *ObjCARCContract::getRetainAutoreleaseRVCallee(Module *M) { Type *I8X = PointerType::getUnqual(Type::getInt8Ty(C)); Type *Params[] = { I8X }; FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false); - AttrBuilder B; - B.addAttribute(Attributes::NoUnwind); AttrListPtr Attributes = AttrListPtr().addAttr(M->getContext(), AttrListPtr::FunctionIndex, - Attributes::get(C, B)); + Attributes::get(C, Attributes::NoUnwind)); RetainAutoreleaseRVCallee = M->getOrInsertFunction("objc_retainAutoreleaseReturnValue", FTy, Attributes); diff --git a/lib/Transforms/Scalar/SimplifyLibCalls.cpp b/lib/Transforms/Scalar/SimplifyLibCalls.cpp index 0223d39ab3b..d86c4cbc9f6 100644 --- a/lib/Transforms/Scalar/SimplifyLibCalls.cpp +++ b/lib/Transforms/Scalar/SimplifyLibCalls.cpp @@ -348,9 +348,8 @@ struct StrToOpt : public LibCallOptimization { if (isa(EndPtr)) { // With a null EndPtr, this function won't capture the main argument. // It would be readonly too, except that it still may write to errno. - AttrBuilder B; - B.addAttribute(Attributes::NoCapture); - CI->addAttribute(1, Attributes::get(Callee->getContext(), B)); + CI->addAttribute(1, Attributes::get(Callee->getContext(), + Attributes::NoCapture)); } return 0;