diff options
author | Bill Wendling <isanbard@gmail.com> | 2013-01-31 00:53:21 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2013-01-31 00:53:21 +0000 |
commit | c6077eff8b9963b59de21e5d1dfae7a6ea75da36 (patch) | |
tree | a28343f6fccddf1386e47dc365a0a18f1c90cbce | |
parent | e187e259963466cc106b8a23c0d5b4d44fdd15a6 (diff) |
Remove the AttrBuilder version of the Attribute::get function.
The AttrBuilder is there to build up multiple attributes. The Attribute class
represents only one attribute at a time. So remove this unnecessary builder
creator method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174010 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/IR/Attributes.h | 3 | ||||
-rw-r--r-- | lib/IR/Attributes.cpp | 31 | ||||
-rw-r--r-- | lib/IR/Verifier.cpp | 4 |
3 files changed, 16 insertions, 22 deletions
diff --git a/include/llvm/IR/Attributes.h b/include/llvm/IR/Attributes.h index 29eaec1d0d..f53cfd6a08 100644 --- a/include/llvm/IR/Attributes.h +++ b/include/llvm/IR/Attributes.h @@ -113,8 +113,7 @@ public: //===--------------------------------------------------------------------===// /// \brief Return a uniquified Attribute object. - static Attribute get(LLVMContext &Context, AttrKind Kind); - static Attribute get(LLVMContext &Context, AttrBuilder &B); + static Attribute get(LLVMContext &Context, AttrKind Kind, Constant *Val = 0); /// \brief Return a uniquified Attribute object that has the specific /// alignment set. diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index 98c12b5d85..59e86f02a0 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -30,24 +30,15 @@ using namespace llvm; // Attribute Construction Methods //===----------------------------------------------------------------------===// -Attribute Attribute::get(LLVMContext &Context, AttrKind Kind) { - AttrBuilder B; - return Attribute::get(Context, B.addAttribute(Kind)); -} - -Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) { - // If there are no attributes, return an empty Attribute class. - if (!B.hasAttributes()) - return Attribute(); - - assert(std::distance(B.begin(), B.end()) == 1 && - "The Attribute object should represent one attribute only!"); +Attribute Attribute::get(LLVMContext &Context, AttrKind Kind, + Constant *Val) { + if (Kind == None) return Attribute(); // Otherwise, build a key to look up the existing attributes. LLVMContextImpl *pImpl = Context.pImpl; FoldingSetNodeID ID; - ConstantInt *CI = ConstantInt::get(Type::getInt64Ty(Context), B.Raw()); - ID.AddPointer(CI); + ID.AddInteger(Kind); + ID.AddPointer(Val); void *InsertPoint; AttributeImpl *PA = pImpl->AttrsSet.FindNodeOrInsertPos(ID, InsertPoint); @@ -55,7 +46,9 @@ Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) { if (!PA) { // If we didn't find any existing attributes of the same shape then create a // new one and insert it. - PA = new AttributeImpl(Context, CI); + PA = (!Val) ? + new AttributeImpl(Context, Kind) : + new AttributeImpl(Context, Kind, Val); pImpl->AttrsSet.InsertNode(PA, InsertPoint); } @@ -64,14 +57,14 @@ Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) { } Attribute Attribute::getWithAlignment(LLVMContext &Context, uint64_t Align) { - AttrBuilder B; - return get(Context, B.addAlignmentAttr(Align)); + return get(Context, Attribute::Alignment, + ConstantInt::get(Type::getInt64Ty(Context), Align)); } Attribute Attribute::getWithStackAlignment(LLVMContext &Context, uint64_t Align) { - AttrBuilder B; - return get(Context, B.addStackAlignmentAttr(Align)); + return get(Context, Attribute::StackAlignment, + ConstantInt::get(Type::getInt64Ty(Context), Align)); } //===----------------------------------------------------------------------===// diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index 5da74481e4..babc295126 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -745,7 +745,9 @@ void Verifier::VerifyFunctionAttrs(FunctionType *FT, AttrBuilder NotFn(Attrs, AttributeSet::FunctionIndex); NotFn.removeFunctionOnlyAttrs(); Assert1(!NotFn.hasAttributes(), "Attribute '" + - Attribute::get(V->getContext(), NotFn).getAsString() + + AttributeSet::get(V->getContext(), + AttributeSet::FunctionIndex, + NotFn).getAsString(AttributeSet::FunctionIndex) + "' do not apply to the function!", V); // Check for mutually incompatible attributes. |