void operator=(const AttributeImpl &) LLVM_DELETED_FUNCTION;
AttributeImpl(const AttributeImpl &) LLVM_DELETED_FUNCTION;
public:
- explicit AttributeImpl(LLVMContext &C, uint64_t data);
+ AttributeImpl(LLVMContext &C, Constant *Data)
+ : Context(C), Data(Data) {}
explicit AttributeImpl(LLVMContext &C, Attribute::AttrKind data);
AttributeImpl(LLVMContext &C, Attribute::AttrKind data,
ArrayRef<Constant*> values);
AttributeImpl(LLVMContext &C, StringRef data);
- LLVMContext &getContext() { return Context; }
-
- ArrayRef<Constant*> getValues() const { return Vals; }
-
bool hasAttribute(Attribute::AttrKind A) const;
-
bool hasAttributes() const;
+ LLVMContext &getContext() { return Context; }
+ ArrayRef<Constant*> getValues() const { return Vals; }
+
uint64_t getAlignment() const;
uint64_t getStackAlignment() const;
bool operator<(const AttributeImpl &AI) const;
- uint64_t Raw() const; // FIXME: Remove.
-
- static uint64_t getAttrMask(Attribute::AttrKind Val);
-
void Profile(FoldingSetNodeID &ID) const {
Profile(ID, Data, Vals);
}
static void Profile(FoldingSetNodeID &ID, Constant *Data,
- ArrayRef<Constant*> Vals);
+ ArrayRef<Constant*> Vals) {
+ ID.AddPointer(Data);
+ for (unsigned I = 0, E = Vals.size(); I != E; ++I)
+ ID.AddPointer(Vals[I]);
+ }
+
+ // FIXME: Remove these!
+ uint64_t Raw() const;
+ static uint64_t getAttrMask(Attribute::AttrKind Val);
};
//===----------------------------------------------------------------------===//
LLVMContext &Context;
- typedef std::pair<uint64_t, AttributeSetNode*> IndexAttrPair;
+ typedef std::pair<unsigned, AttributeSetNode*> IndexAttrPair;
SmallVector<IndexAttrPair, 4> AttrNodes;
// AttributesSet is uniqued, these should not be publicly available.
AttributeSetImpl(const AttributeSetImpl &) LLVM_DELETED_FUNCTION;
public:
AttributeSetImpl(LLVMContext &C,
- ArrayRef<std::pair<uint64_t, AttributeSetNode*> > attrs)
+ ArrayRef<std::pair<unsigned, AttributeSetNode*> > attrs)
: Context(C), AttrNodes(attrs.begin(), attrs.end()) {}
/// \brief Get the context that created this AttributeSetImpl.
Profile(ID, AttrNodes);
}
static void Profile(FoldingSetNodeID &ID,
- ArrayRef<std::pair<uint64_t, AttributeSetNode*> > Nodes) {
+ ArrayRef<std::pair<unsigned, AttributeSetNode*> > Nodes) {
for (unsigned i = 0, e = Nodes.size(); i != e; ++i) {
ID.AddInteger(Nodes[i].first);
ID.AddPointer(Nodes[i].second);