summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-01-31 00:53:21 +0000
committerBill Wendling <isanbard@gmail.com>2013-01-31 00:53:21 +0000
commitb8b16b567c123339dd4fea01170a86daf215a229 (patch)
treef952687d7558c885fafc6e3daa6722e494ad9d51 /llvm
parent258c867c0b4fb37b493cdfdba74572f5a0e319c3 (diff)
downloadbcm5719-llvm-b8b16b567c123339dd4fea01170a86daf215a229.tar.gz
bcm5719-llvm-b8b16b567c123339dd4fea01170a86daf215a229.zip
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. llvm-svn: 174010
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/IR/Attributes.h3
-rw-r--r--llvm/lib/IR/Attributes.cpp31
-rw-r--r--llvm/lib/IR/Verifier.cpp4
3 files changed, 16 insertions, 22 deletions
diff --git a/llvm/include/llvm/IR/Attributes.h b/llvm/include/llvm/IR/Attributes.h
index 29eaec1d0df..f53cfd6a080 100644
--- a/llvm/include/llvm/IR/Attributes.h
+++ b/llvm/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/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp
index 98c12b5d855..59e86f02a0e 100644
--- a/llvm/lib/IR/Attributes.cpp
+++ b/llvm/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/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 5da74481e4f..babc295126e 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/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.
OpenPOWER on IntegriCloud