[llvm-commits] [llvm] r171247 - in /llvm/trunk/lib/VMCore: AttributeImpl.h Attributes.cpp

Bill Wendling isanbard at gmail.com
Sat Dec 29 17:38:39 PST 2012


Author: void
Date: Sat Dec 29 19:38:39 2012
New Revision: 171247

URL: http://llvm.org/viewvc/llvm-project?rev=171247&view=rev
Log:
Add a few (as yet unused) query methods to determine if the attribute that's
stored here is of a certain kind. This is in preparation for when an Attribute
object represents a single attribute, instead of a bitmask of attributes.

Modified:
    llvm/trunk/lib/VMCore/AttributeImpl.h
    llvm/trunk/lib/VMCore/Attributes.cpp

Modified: llvm/trunk/lib/VMCore/AttributeImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AttributeImpl.h?rev=171247&r1=171246&r2=171247&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/AttributeImpl.h (original)
+++ llvm/trunk/lib/VMCore/AttributeImpl.h Sat Dec 29 19:38:39 2012
@@ -34,6 +34,9 @@
 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;
@@ -42,6 +45,20 @@
   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);

Modified: llvm/trunk/lib/VMCore/Attributes.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Attributes.cpp?rev=171247&r1=171246&r2=171247&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Attributes.cpp (original)
+++ llvm/trunk/lib/VMCore/Attributes.cpp Sat Dec 29 19:38:39 2012
@@ -302,7 +302,21 @@
   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();
 }
 





More information about the llvm-commits mailing list