From 3a4779a9211281a1d0c27c97037342329035a185 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Sat, 5 Jan 2013 07:55:47 +0000 Subject: [PATCH] IR/Attributes: Provide EmptyKey and TombstoneKey in part of enum, as workaround for gcc-4.4 take #2. I will investigate, later, what was wrong. I am too tired for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171611 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/Attributes.h | 10 +++++++--- lib/IR/Attributes.cpp | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/llvm/IR/Attributes.h b/include/llvm/IR/Attributes.h index 28ec9db62e7..1932ffd3cb7 100644 --- a/include/llvm/IR/Attributes.h +++ b/include/llvm/IR/Attributes.h @@ -93,7 +93,11 @@ public: UWTable, ///< Function must be in a unwind table ZExt, ///< Zero extended before/after call - EndAttrKinds ///< Sentinal value useful for loops + EndAttrKinds, ///< Sentinal value useful for loops + + // Values for DenseMapInfo + EmptyKey = 0x7FFFFFFF, + TombstoneKey = -0x7FFFFFFF - 1 }; private: AttributeImpl *pImpl; @@ -165,10 +169,10 @@ public: /// AttrBuilder. template<> struct DenseMapInfo { static inline Attribute::AttrKind getEmptyKey() { - return Attribute::AttrKind(~0U); + return Attribute::EmptyKey; } static inline Attribute::AttrKind getTombstoneKey() { - return Attribute::AttrKind(~0U - 1); + return Attribute::TombstoneKey; } static unsigned getHashValue(const Attribute::AttrKind &Val) { return Val * 37U; diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp index 84f90ade8b2..039e036e894 100644 --- a/lib/IR/Attributes.cpp +++ b/lib/IR/Attributes.cpp @@ -426,6 +426,8 @@ uint64_t AttributeImpl::getBitMask() const { uint64_t AttributeImpl::getAttrMask(Attribute::AttrKind Val) { switch (Val) { case Attribute::EndAttrKinds: break; + case Attribute::EmptyKey: break; + case Attribute::TombstoneKey: break; case Attribute::None: return 0; case Attribute::ZExt: return 1 << 0; case Attribute::SExt: return 1 << 1;