Have AttrBuilder defriend the Attributes class.
authorBill Wendling <isanbard@gmail.com>
Tue, 16 Oct 2012 05:55:09 +0000 (05:55 +0000)
committerBill Wendling <isanbard@gmail.com>
Tue, 16 Oct 2012 05:55:09 +0000 (05:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166011 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Attributes.h
lib/VMCore/Attributes.cpp

index aac5d9ef4a0efef975dab519c22628dd06473362..345277560f5d1e6410e66921d4ea4bf9381b91f2 100644 (file)
@@ -192,7 +192,6 @@ public:
 /// Builder's value, however, is not. So this can be used as a quick way to test
 /// for equality, presence of attributes, etc.
 class AttrBuilder {
-  friend class Attributes;
   uint64_t Bits;
 public:
   AttrBuilder() : Bits(0) {}
@@ -267,6 +266,8 @@ public:
       .removeAttribute(Attributes::AddressSafety);
   }
 
+  uint64_t Raw() const { return Bits; }
+
   bool operator==(const AttrBuilder &B) {
     return Bits == B.Bits;
   }
index f028fd356d67bf3fe34e208cda2243e149b2862f..393eab0eef89a902d54fb8a97007d18032b9423d 100644 (file)
@@ -38,13 +38,13 @@ Attributes Attributes::get(LLVMContext &Context, ArrayRef<AttrVal> Vals) {
 
 Attributes Attributes::get(LLVMContext &Context, AttrBuilder &B) {
   // If there are no attributes, return an empty Attributes class.
-  if (B.Bits == 0)
+  if (!B.hasAttributes())
     return Attributes();
 
   // Otherwise, build a key to look up the existing attributes.
   LLVMContextImpl *pImpl = Context.pImpl;
   FoldingSetNodeID ID;
-  ID.AddInteger(B.Bits);
+  ID.AddInteger(B.Raw());
 
   void *InsertPoint;
   AttributesImpl *PA = pImpl->AttrsSet.FindNodeOrInsertPos(ID, InsertPoint);
@@ -52,7 +52,7 @@ Attributes Attributes::get(LLVMContext &Context, AttrBuilder &B) {
   if (!PA) {
     // If we didn't find any existing attributes of the same shape then create a
     // new one and insert it.
-    PA = new AttributesImpl(B.Bits);
+    PA = new AttributesImpl(B.Raw());
     pImpl->AttrsSet.InsertNode(PA, InsertPoint);
   }