summaryrefslogtreecommitdiff
path: root/lib/IR/Attributes.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-01-28 00:21:34 +0000
committerBill Wendling <isanbard@gmail.com>2013-01-28 00:21:34 +0000
commit73bc452bcd63620daefb0a3bc613746af7418076 (patch)
tree436573d6bd97123d470f5a387471fa418625052a /lib/IR/Attributes.cpp
parent49716e5d84142d7bd3eeff7304f9bc708bff99d0 (diff)
downloadllvm-73bc452bcd63620daefb0a3bc613746af7418076.tar.gz
llvm-73bc452bcd63620daefb0a3bc613746af7418076.tar.bz2
llvm-73bc452bcd63620daefb0a3bc613746af7418076.tar.xz
Remove a use of AttributeWithIndex.
We want to remove AttributeWithIndex because it provides a non-encapsulated view of the AttributeSetImpl object. Instead, use accessor methods and iterators. Eventually, this code can be simplified because the Attribute object will hold only one attribute instead of multiple attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173641 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR/Attributes.cpp')
-rw-r--r--lib/IR/Attributes.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp
index 361f3d6c8c..59d3ef03dd 100644
--- a/lib/IR/Attributes.cpp
+++ b/lib/IR/Attributes.cpp
@@ -197,17 +197,21 @@ AttrBuilder::AttrBuilder(AttributeSet AS, unsigned Idx)
AttributeSetImpl *pImpl = AS.pImpl;
if (!pImpl) return;
- ArrayRef<AttributeWithIndex> AttrList = pImpl->getAttributes();
- const AttributeWithIndex *AWI = 0;
- for (unsigned I = 0, E = AttrList.size(); I != E; ++I)
- if (AttrList[I].Index == Idx) {
- AWI = &AttrList[I];
- break;
- }
+ AttrBuilder B;
+
+ for (unsigned I = 0, E = pImpl->getNumAttributes(); I != E; ++I) {
+ if (pImpl->getSlotIndex(I) != Idx) continue;
+
+ for (AttributeSetNode::const_iterator II = pImpl->begin(I),
+ IE = pImpl->end(I); II != IE; ++II)
+ B.addAttributes(*II);
+
+ break;
+ }
- if (!AWI) return;
+ if (!B.hasAttributes()) return;
- uint64_t Mask = AWI->Attrs.Raw();
+ uint64_t Mask = B.Raw();
for (Attribute::AttrKind I = Attribute::None; I != Attribute::EndAttrKinds;
I = Attribute::AttrKind(I + 1)) {
@@ -861,8 +865,8 @@ AttributeSet AttributeSet::removeAttr(LLVMContext &C, unsigned Idx,
}
void AttributeSet::dump() const {
- dbgs() << "PAL[ ";
- for (unsigned i = 0; i < getNumSlots(); ++i) {
+ dbgs() << "PAL[\n";
+ for (unsigned i = 0, e = getNumSlots(); i < e; ++i) {
uint64_t Index = getSlotIndex(i);
dbgs() << " { ";
if (Index == ~0U)