[llvm-commits] [llvm] r173196 - in /llvm/trunk: include/llvm/IR/Attributes.h lib/IR/Attributes.cpp lib/IR/Core.cpp lib/IR/Function.cpp lib/IR/Instructions.cpp lib/Transforms/IPO/PruneEH.cpp lib/Transforms/Scalar/ObjCARC.cpp
Bill Wendling
isanbard at gmail.com
Tue Jan 22 13:15:51 PST 2013
Author: void
Date: Tue Jan 22 15:15:51 2013
New Revision: 173196
URL: http://llvm.org/viewvc/llvm-project?rev=173196&view=rev
Log:
More encapsulation work.
Use the AttributeSet when we're talking about more than one attribute. Add a
function that adds a single attribute. No functionality change intended.
Modified:
llvm/trunk/include/llvm/IR/Attributes.h
llvm/trunk/lib/IR/Attributes.cpp
llvm/trunk/lib/IR/Core.cpp
llvm/trunk/lib/IR/Function.cpp
llvm/trunk/lib/IR/Instructions.cpp
llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp
Modified: llvm/trunk/include/llvm/IR/Attributes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Attributes.h?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Attributes.h (original)
+++ llvm/trunk/include/llvm/IR/Attributes.h Tue Jan 22 15:15:51 2013
@@ -212,6 +212,11 @@
/// for the result are denoted with Idx = 0.
Attribute getAttributes(unsigned Idx) const;
+ /// \brief Add the specified attribute at the specified index to this
+ /// attribute list. Since attribute lists are immutable, this returns the new
+ /// list.
+ AttributeSet addAttr(LLVMContext &C, unsigned Idx, Attribute Attrs) const;
+
explicit AttributeSet(AttributeSetImpl *LI) : AttrList(LI) {}
public:
AttributeSet() : AttrList(0) {}
@@ -226,10 +231,10 @@
static AttributeSet get(LLVMContext &C, ArrayRef<AttributeWithIndex> Attrs);
static AttributeSet get(LLVMContext &C, unsigned Idx, AttrBuilder &B);
- /// \brief Add the specified attribute at the specified index to this
- /// attribute list. Since attribute lists are immutable, this returns the new
- /// list.
- AttributeSet addAttr(LLVMContext &C, unsigned Idx, Attribute Attrs) const;
+ /// \brief Add an attribute to the attribute set at the given index. Since
+ /// attribute sets are immutable, this returns a new set.
+ AttributeSet addAttribute(LLVMContext &C, unsigned Idx,
+ Attribute::AttrKind Attr) const;
/// \brief Add attributes to the attribute set at the given index. Since
/// attribute sets are immutable, this returns a new set.
Modified: llvm/trunk/lib/IR/Attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Attributes.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Attributes.cpp (original)
+++ llvm/trunk/lib/IR/Attributes.cpp Tue Jan 22 15:15:51 2013
@@ -150,7 +150,7 @@
/// the LLVM attributes that have been decoded from the given integer. This
/// function must stay in sync with 'encodeLLVMAttributesForBitcode'.
Attribute Attribute::decodeLLVMAttributesForBitcode(LLVMContext &C,
- uint64_t EncodedAttrs) {
+ uint64_t EncodedAttrs) {
// The alignment is stored as a 16-bit raw value from bits 31--16. We shift
// the bits above 31 down by 11 bits.
unsigned Alignment = (EncodedAttrs & (0xffffULL << 16)) >> 16;
@@ -318,32 +318,29 @@
I = Attribute::AttrKind(I + 1)) {
if (uint64_t A = (Val & AttributeImpl::getAttrMask(I))) {
Attrs.insert(I);
-
+
if (I == Attribute::Alignment)
Alignment = 1ULL << ((A >> 16) - 1);
else if (I == Attribute::StackAlignment)
StackAlignment = 1ULL << ((A >> 26)-1);
}
}
-
+
return *this;
}
-AttrBuilder &AttrBuilder::addAttributes(const Attribute &A) {
- uint64_t Mask = A.Raw();
+AttrBuilder &AttrBuilder::addAttributes(const Attribute &Attr) {
+ uint64_t Mask = Attr.Raw();
for (Attribute::AttrKind I = Attribute::None; I != Attribute::EndAttrKinds;
- I = Attribute::AttrKind(I + 1)) {
- if (uint64_t A = (Mask & AttributeImpl::getAttrMask(I))) {
+ I = Attribute::AttrKind(I + 1))
+ if ((Mask & AttributeImpl::getAttrMask(I)) != 0)
Attrs.insert(I);
- if (I == Attribute::Alignment)
- Alignment = 1ULL << ((A >> 16) - 1);
- else if (I == Attribute::StackAlignment)
- StackAlignment = 1ULL << ((A >> 26)-1);
- }
- }
-
+ if (Attr.getAlignment())
+ Alignment = Attr.getAlignment();
+ if (Attr.getStackAlignment())
+ StackAlignment = Attr.getStackAlignment();
return *this;
}
@@ -601,18 +598,7 @@
// AttributeWithIndexes that then are used to create the AttributeSet.
if (!B.hasAttributes())
return AttributeSet();
-
- uint64_t Mask = 0;
-
- for (AttrBuilder::iterator I = B.begin(), E = B.end(); I != E; ++I)
- Mask |= AttributeImpl::getAttrMask(*I);
-
- Attribute A = Attribute::decodeLLVMAttributesForBitcode(C, Mask);
- if (B.getAlignment())
- A.setAlignment(B.getAlignment());
- if (B.getStackAlignment())
- A.setStackAlignment(B.getStackAlignment());
- return get(C, AttributeWithIndex::get(Idx, A));
+ return get(C, AttributeWithIndex::get(Idx, Attribute::get(C, B)));
}
//===----------------------------------------------------------------------===//
@@ -665,8 +651,6 @@
}
/// getAttributes - The attributes for the specified index are returned.
-/// Attributes for the result are denoted with Idx = 0. Function attributes are
-/// denoted with Idx = ~0.
Attribute AttributeSet::getAttributes(unsigned Idx) const {
if (AttrList == 0) return Attribute();
@@ -691,6 +675,11 @@
return false;
}
+AttributeSet AttributeSet::addAttribute(LLVMContext &C, unsigned Idx,
+ Attribute::AttrKind Attr) const {
+ return addAttr(C, Idx, Attribute::get(C, Attr));
+}
+
AttributeSet AttributeSet::addAttributes(LLVMContext &C, unsigned Idx,
AttributeSet Attrs) const {
return addAttr(C, Idx, Attrs.getAttributes(Idx));
Modified: llvm/trunk/lib/IR/Core.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Core.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Core.cpp (original)
+++ llvm/trunk/lib/IR/Core.cpp Tue Jan 22 15:15:51 2013
@@ -1383,8 +1383,9 @@
const AttributeSet PAL = Func->getAttributes();
AttrBuilder B(PA);
const AttributeSet PALnew =
- PAL.addAttr(Func->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(Func->getContext(), B));
+ PAL.addFnAttributes(Func->getContext(),
+ AttributeSet::get(Func->getContext(),
+ AttributeSet::FunctionIndex, B));
Func->setAttributes(PALnew);
}
@@ -1676,8 +1677,9 @@
CallSite Call = CallSite(unwrap<Instruction>(Instr));
AttrBuilder B(PA);
Call.setAttributes(
- Call.getAttributes().addAttr(Call->getContext(), index,
- Attribute::get(Call->getContext(), B)));
+ Call.getAttributes().addAttributes(Call->getContext(), index,
+ AttributeSet::get(Call->getContext(),
+ index, B)));
}
void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
@@ -1694,8 +1696,10 @@
CallSite Call = CallSite(unwrap<Instruction>(Instr));
AttrBuilder B;
B.addAlignmentAttr(align);
- Call.setAttributes(Call.getAttributes().addAttr(Call->getContext(), index,
- Attribute::get(Call->getContext(), B)));
+ Call.setAttributes(Call.getAttributes()
+ .addAttributes(Call->getContext(), index,
+ AttributeSet::get(Call->getContext(),
+ index, B)));
}
/*--.. Operations on call instructions (only) ..............................--*/
Modified: llvm/trunk/lib/IR/Function.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Function.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Function.cpp (original)
+++ llvm/trunk/lib/IR/Function.cpp Tue Jan 22 15:15:51 2013
@@ -250,7 +250,9 @@
void Function::addAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
- PAL = PAL.addAttr(getContext(), i, attr);
+ AttrBuilder B(attr);
+ PAL = PAL.addAttributes(getContext(), i,
+ AttributeSet::get(getContext(), i, B));
setAttributes(PAL);
}
Modified: llvm/trunk/lib/IR/Instructions.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Instructions.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Instructions.cpp (original)
+++ llvm/trunk/lib/IR/Instructions.cpp Tue Jan 22 15:15:51 2013
@@ -333,7 +333,9 @@
void CallInst::addAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
- PAL = PAL.addAttr(getContext(), i, attr);
+ AttrBuilder B(attr);
+ PAL = PAL.addAttributes(getContext(), i,
+ AttributeSet::get(getContext(), i, B));
setAttributes(PAL);
}
@@ -589,7 +591,9 @@
void InvokeInst::addAttribute(unsigned i, Attribute attr) {
AttributeSet PAL = getAttributes();
- PAL = PAL.addAttr(getContext(), i, attr);
+ AttrBuilder B(attr);
+ PAL = PAL.addAttributes(getContext(), i,
+ AttributeSet::get(getContext(), i, B));
setAttributes(PAL);
}
Modified: llvm/trunk/lib/Transforms/IPO/PruneEH.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/PruneEH.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/PruneEH.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/PruneEH.cpp Tue Jan 22 15:15:51 2013
@@ -146,9 +146,11 @@
Function *F = (*I)->getFunction();
const AttributeSet &PAL = F->getAttributes();
- const AttributeSet &NPAL = PAL.addAttr(F->getContext(), ~0,
- Attribute::get(F->getContext(),
- NewAttributes));
+ const AttributeSet &NPAL =
+ PAL.addFnAttributes(F->getContext(),
+ AttributeSet::get(F->getContext(),
+ AttributeSet::FunctionIndex,
+ NewAttributes));
if (PAL != NPAL) {
MadeChange = true;
F->setAttributes(NPAL);
Modified: llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp?rev=173196&r1=173195&r2=173196&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/ObjCARC.cpp Tue Jan 22 15:15:51 2013
@@ -1914,8 +1914,8 @@
Type *Params[] = { I8X };
FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
RetainRVCallee =
M->getOrInsertFunction("objc_retainAutoreleasedReturnValue", FTy,
Attribute);
@@ -1930,8 +1930,8 @@
Type *Params[] = { I8X };
FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
AutoreleaseRVCallee =
M->getOrInsertFunction("objc_autoreleaseReturnValue", FTy,
Attribute);
@@ -1944,8 +1944,8 @@
LLVMContext &C = M->getContext();
Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
ReleaseCallee =
M->getOrInsertFunction(
"objc_release",
@@ -1960,8 +1960,8 @@
LLVMContext &C = M->getContext();
Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
RetainCallee =
M->getOrInsertFunction(
"objc_retain",
@@ -1991,8 +1991,8 @@
LLVMContext &C = M->getContext();
Type *Params[] = { PointerType::getUnqual(Type::getInt8Ty(C)) };
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
AutoreleaseCallee =
M->getOrInsertFunction(
"objc_autorelease",
@@ -4105,16 +4105,16 @@
Type *I8XX = PointerType::getUnqual(I8X);
Type *Params[] = { I8XX, I8X };
- AttributeSet Attribute = AttributeSet()
- .addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind))
- .addAttr(M->getContext(), 1, Attribute::get(C, Attribute::NoCapture));
+ AttributeSet Attr = AttributeSet()
+ .addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind)
+ .addAttribute(M->getContext(), 1, Attribute::NoCapture);
StoreStrongCallee =
M->getOrInsertFunction(
"objc_storeStrong",
FunctionType::get(Type::getVoidTy(C), Params, /*isVarArg=*/false),
- Attribute);
+ Attr);
}
return StoreStrongCallee;
}
@@ -4126,8 +4126,8 @@
Type *Params[] = { I8X };
FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
RetainAutoreleaseCallee =
M->getOrInsertFunction("objc_retainAutorelease", FTy, Attribute);
}
@@ -4141,8 +4141,8 @@
Type *Params[] = { I8X };
FunctionType *FTy = FunctionType::get(I8X, Params, /*isVarArg=*/false);
AttributeSet Attribute =
- AttributeSet().addAttr(M->getContext(), AttributeSet::FunctionIndex,
- Attribute::get(C, Attribute::NoUnwind));
+ AttributeSet().addAttribute(M->getContext(), AttributeSet::FunctionIndex,
+ Attribute::NoUnwind);
RetainAutoreleaseRVCallee =
M->getOrInsertFunction("objc_retainAutoreleaseReturnValue", FTy,
Attribute);
More information about the llvm-commits
mailing list