aboutsummaryrefslogtreecommitdiffstats
path: root/lib/IR/AttributeImpl.h
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/AttributeImpl.h
parent49716e5d84142d7bd3eeff7304f9bc708bff99d0 (diff)
downloadexternal_llvm-73bc452bcd63620daefb0a3bc613746af7418076.zip
external_llvm-73bc452bcd63620daefb0a3bc613746af7418076.tar.gz
external_llvm-73bc452bcd63620daefb0a3bc613746af7418076.tar.bz2
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/AttributeImpl.h')
-rw-r--r--lib/IR/AttributeImpl.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/IR/AttributeImpl.h b/lib/IR/AttributeImpl.h
index f9a716c..8d5de77 100644
--- a/lib/IR/AttributeImpl.h
+++ b/lib/IR/AttributeImpl.h
@@ -117,7 +117,8 @@ class AttributeSetImpl : public FoldingSetNode {
LLVMContext &Context;
SmallVector<AttributeWithIndex, 4> AttrList;
- SmallVector<std::pair<uint64_t, AttributeSetNode*>, 4> AttrNodes;
+ typedef std::pair<uint64_t, AttributeSetNode*> IndexAttrPair;
+ SmallVector<IndexAttrPair, 4> AttrNodes;
// AttributesSet is uniqued, these should not be publicly available.
void operator=(const AttributeSetImpl &) LLVM_DELETED_FUNCTION;
@@ -137,7 +138,9 @@ public:
/// is the index of the return, parameter, or function object that the
/// attributes are applied to, not the index into the AttrNodes list where the
/// attributes reside.
- uint64_t getSlotIndex(unsigned Slot) const { return AttrNodes[Slot].first; }
+ uint64_t getSlotIndex(unsigned Slot) const {
+ return AttrNodes[Slot].first;
+ }
/// \brief Retrieve the attributes for the given "slot" in the AttrNode list.
/// \p Slot is an index into the AttrNodes list, not the index of the return /
@@ -147,6 +150,19 @@ public:
return AttributeSet::get(Context, AttrList[Slot]);
}
+ typedef AttributeSetNode::iterator iterator;
+ typedef AttributeSetNode::const_iterator const_iterator;
+
+ iterator begin(unsigned Idx)
+ { return AttrNodes[Idx].second->begin(); }
+ iterator end(unsigned Idx)
+ { return AttrNodes[Idx].second->end(); }
+
+ const_iterator begin(unsigned Idx) const
+ { return AttrNodes[Idx].second->begin(); }
+ const_iterator end(unsigned Idx) const
+ { return AttrNodes[Idx].second->end(); }
+
void Profile(FoldingSetNodeID &ID) const {
Profile(ID, AttrList);
}