public:
AttributeImpl(LLVMContext &C, uint64_t data);
+ bool contains(Attribute::AttrKind Kind) const;
+ bool contains(StringRef Kind) const;
+
bool hasAttribute(uint64_t A) const;
bool hasAttributes() const;
uint64_t getAlignment() const;
uint64_t getStackAlignment() const;
+ bool operator==(Attribute::AttrKind Kind) const {
+ return contains(Kind);
+ }
+ bool operator!=(Attribute::AttrKind Kind) const {
+ return !contains(Kind);
+ }
+
+ bool operator==(StringRef Kind) const {
+ return contains(Kind);
+ }
+ bool operator!=(StringRef Kind) const {
+ return !contains(Kind);
+ }
+
uint64_t getBitMask() const; // FIXME: Remove.
static uint64_t getAttrMask(uint64_t Val);
Data = ConstantInt::get(Type::getInt64Ty(C), data);
}
+bool AttributeImpl::contains(Attribute::AttrKind Kind) const {
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(Data))
+ return CI->getZExtValue() == Kind;
+ return false;
+}
+
+bool AttributeImpl::contains(StringRef Kind) const {
+ if (ConstantDataArray *CDA = dyn_cast<ConstantDataArray>(Data))
+ if (CDA->isString())
+ return CDA->getAsString() == Kind;
+ return false;
+}
+
uint64_t AttributeImpl::getBitMask() const {
+ // FIXME: Remove this.
return cast<ConstantInt>(Data)->getZExtValue();
}