aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/IR/AttributeImpl.h9
-rw-r--r--lib/IR/Attributes.cpp12
2 files changed, 11 insertions, 10 deletions
diff --git a/lib/IR/AttributeImpl.h b/lib/IR/AttributeImpl.h
index b4c788fa9d..2aba3c4de2 100644
--- a/lib/IR/AttributeImpl.h
+++ b/lib/IR/AttributeImpl.h
@@ -116,15 +116,14 @@ class AttributeSetImpl : public FoldingSetNode {
AttributeSetImpl(const AttributeSetImpl &) LLVM_DELETED_FUNCTION;
public:
AttributeSetImpl(LLVMContext &C, ArrayRef<AttributeWithIndex> attrs);
- AttributeSetImpl(LLVMContext &C,
- ArrayRef<std::pair<uint64_t, AttributeSetNode*> > attrs);
LLVMContext &getContext() { return Context; }
ArrayRef<AttributeWithIndex> getAttributes() const { return AttrList; }
- unsigned getNumAttributes() const { return AttrList.size(); }
+ unsigned getNumAttributes() const {
+ return AttrNodes.size();
+ }
unsigned getSlotIndex(unsigned Slot) const {
- // FIXME: This needs to use AttrNodes instead.
- return AttrList[Slot].Index;
+ return AttrNodes[Slot].first;
}
AttributeSet getSlotAttributes(unsigned Slot) const {
// FIXME: This needs to use AttrNodes instead.
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp
index 780da00ac0..00b542dbc1 100644
--- a/lib/IR/Attributes.cpp
+++ b/lib/IR/Attributes.cpp
@@ -553,12 +553,14 @@ AttributeSetImpl(LLVMContext &C,
AttrNodes.push_back(std::make_pair(AWI.Index,
AttributeSetNode::get(C, Attrs)));
}
-}
-AttributeSetImpl::
-AttributeSetImpl(LLVMContext &C,
- ArrayRef<std::pair<uint64_t, AttributeSetNode*> > attrs)
- : Context(C), AttrNodes(attrs.begin(), attrs.end()) {
+ assert(AttrNodes.size() == AttrList.size() &&
+ "Number of attributes is different between lists!");
+#ifndef NDEBUG
+ for (unsigned I = 0, E = AttrNodes.size(); I != E; ++I)
+ assert((I == 0 || AttrNodes[I - 1].first < AttrNodes[I].first) &&
+ "Attributes not in ascending order!");
+#endif
}
//===----------------------------------------------------------------------===//