From: Bill Wendling Date: Tue, 16 Oct 2012 05:55:09 +0000 (+0000) Subject: Have AttrBuilder defriend the Attributes class. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=a5c699d5f7de7eb88b7f549539b6550653dea74e;p=oota-llvm.git Have AttrBuilder defriend the Attributes class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166011 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h index aac5d9ef4a0..345277560f5 100644 --- a/include/llvm/Attributes.h +++ b/include/llvm/Attributes.h @@ -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; } diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index f028fd356d6..393eab0eef8 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -38,13 +38,13 @@ Attributes Attributes::get(LLVMContext &Context, ArrayRef 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); }