mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-23 17:24:48 +00:00
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
This commit is contained in:
@ -113,8 +113,7 @@ public:
|
|||||||
//===--------------------------------------------------------------------===//
|
//===--------------------------------------------------------------------===//
|
||||||
|
|
||||||
/// \brief Return a uniquified Attribute object.
|
/// \brief Return a uniquified Attribute object.
|
||||||
static Attribute get(LLVMContext &Context, AttrKind Kind);
|
static Attribute get(LLVMContext &Context, AttrKind Kind, Constant *Val = 0);
|
||||||
static Attribute get(LLVMContext &Context, AttrBuilder &B);
|
|
||||||
|
|
||||||
/// \brief Return a uniquified Attribute object that has the specific
|
/// \brief Return a uniquified Attribute object that has the specific
|
||||||
/// alignment set.
|
/// alignment set.
|
||||||
|
@ -30,24 +30,15 @@ using namespace llvm;
|
|||||||
// Attribute Construction Methods
|
// Attribute Construction Methods
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
Attribute Attribute::get(LLVMContext &Context, AttrKind Kind) {
|
Attribute Attribute::get(LLVMContext &Context, AttrKind Kind,
|
||||||
AttrBuilder B;
|
Constant *Val) {
|
||||||
return Attribute::get(Context, B.addAttribute(Kind));
|
if (Kind == None) return Attribute();
|
||||||
}
|
|
||||||
|
|
||||||
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!");
|
|
||||||
|
|
||||||
// Otherwise, build a key to look up the existing attributes.
|
// Otherwise, build a key to look up the existing attributes.
|
||||||
LLVMContextImpl *pImpl = Context.pImpl;
|
LLVMContextImpl *pImpl = Context.pImpl;
|
||||||
FoldingSetNodeID ID;
|
FoldingSetNodeID ID;
|
||||||
ConstantInt *CI = ConstantInt::get(Type::getInt64Ty(Context), B.Raw());
|
ID.AddInteger(Kind);
|
||||||
ID.AddPointer(CI);
|
ID.AddPointer(Val);
|
||||||
|
|
||||||
void *InsertPoint;
|
void *InsertPoint;
|
||||||
AttributeImpl *PA = pImpl->AttrsSet.FindNodeOrInsertPos(ID, InsertPoint);
|
AttributeImpl *PA = pImpl->AttrsSet.FindNodeOrInsertPos(ID, InsertPoint);
|
||||||
@ -55,7 +46,9 @@ Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) {
|
|||||||
if (!PA) {
|
if (!PA) {
|
||||||
// If we didn't find any existing attributes of the same shape then create a
|
// If we didn't find any existing attributes of the same shape then create a
|
||||||
// new one and insert it.
|
// 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);
|
pImpl->AttrsSet.InsertNode(PA, InsertPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,14 +57,14 @@ Attribute Attribute::get(LLVMContext &Context, AttrBuilder &B) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Attribute Attribute::getWithAlignment(LLVMContext &Context, uint64_t Align) {
|
Attribute Attribute::getWithAlignment(LLVMContext &Context, uint64_t Align) {
|
||||||
AttrBuilder B;
|
return get(Context, Attribute::Alignment,
|
||||||
return get(Context, B.addAlignmentAttr(Align));
|
ConstantInt::get(Type::getInt64Ty(Context), Align));
|
||||||
}
|
}
|
||||||
|
|
||||||
Attribute Attribute::getWithStackAlignment(LLVMContext &Context,
|
Attribute Attribute::getWithStackAlignment(LLVMContext &Context,
|
||||||
uint64_t Align) {
|
uint64_t Align) {
|
||||||
AttrBuilder B;
|
return get(Context, Attribute::StackAlignment,
|
||||||
return get(Context, B.addStackAlignmentAttr(Align));
|
ConstantInt::get(Type::getInt64Ty(Context), Align));
|
||||||
}
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
@ -745,7 +745,9 @@ void Verifier::VerifyFunctionAttrs(FunctionType *FT,
|
|||||||
AttrBuilder NotFn(Attrs, AttributeSet::FunctionIndex);
|
AttrBuilder NotFn(Attrs, AttributeSet::FunctionIndex);
|
||||||
NotFn.removeFunctionOnlyAttrs();
|
NotFn.removeFunctionOnlyAttrs();
|
||||||
Assert1(!NotFn.hasAttributes(), "Attribute '" +
|
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);
|
"' do not apply to the function!", V);
|
||||||
|
|
||||||
// Check for mutually incompatible attributes.
|
// Check for mutually incompatible attributes.
|
||||||
|
Reference in New Issue
Block a user