From 92e287f5bde8d34af9c3f2979afb6cd05bfb452c Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 31 Dec 2012 11:51:54 +0000 Subject: [PATCH] Add some comparison operators to compare the Attribute object with the AttrKind value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171294 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Attributes.h | 6 +++++- lib/VMCore/Attributes.cpp | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h index caba9633ebc..a8fedb8210b 100644 --- a/include/llvm/Attributes.h +++ b/include/llvm/Attributes.h @@ -120,6 +120,10 @@ public: /// alignment value. unsigned getStackAlignment() const; + bool operator==(AttrKind K) const; + bool operator!=(AttrKind K) const; + + // FIXME: Remove these 'operator' methods. bool operator==(const Attribute &A) const { return pImpl == A.pImpl; } @@ -141,7 +145,7 @@ public: /// that have been decoded from the given integer. This function must stay in /// sync with 'encodeLLVMAttributesForBitcode'. static Attribute decodeLLVMAttributesForBitcode(LLVMContext &C, - uint64_t EncodedAttrs); + uint64_t EncodedAttrs); /// \brief The Attribute is converted to a string of equivalent mnemonic. This /// is, presumably, for writing out the mnemonics for the assembly writer. diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index e8c6b2a01c8..f17a9b70f7b 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -88,6 +88,14 @@ unsigned Attribute::getStackAlignment() const { return 1U << ((pImpl->getStackAlignment() >> 26) - 1); } +bool Attribute::operator==(AttrKind K) const { + return pImpl && pImpl->contains(K); +} + +bool Attribute::operator!=(AttrKind K) const { + return !(pImpl && pImpl->contains(K)); +} + uint64_t Attribute::getBitMask() const { return pImpl ? pImpl->getBitMask() : 0; } @@ -473,8 +481,8 @@ uint64_t AttributeSet::getBitMask(unsigned Index) const { } /// getAttributes - The attributes for the specified index are returned. -/// Attribute for the result are denoted with Idx = 0. Function notes are -/// denoted with idx = ~0. +/// Attributes for the result are denoted with Idx = 0. Function attributes are +/// denoted with Idx = ~0. Attribute AttributeSet::getAttributes(unsigned Idx) const { if (AttrList == 0) return Attribute();