diff options
author | Chris Lattner <sabre@nondot.org> | 2008-11-29 01:18:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-11-29 01:18:05 +0000 |
commit | 9ac30537aa3c201b6950bc708e02b1885c288c8d (patch) | |
tree | 323b82c4740d9ff97ebba2d10cf261e2bf9695db /include/llvm/ADT/PointerIntPair.h | |
parent | d55da4de048684e3791dbae8018666e5b7549506 (diff) | |
download | llvm-9ac30537aa3c201b6950bc708e02b1885c288c8d.tar.gz llvm-9ac30537aa3c201b6950bc708e02b1885c288c8d.tar.bz2 llvm-9ac30537aa3c201b6950bc708e02b1885c288c8d.tar.xz |
Fix spello, add DenseMapInfo specialization for PointerIntPair.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60228 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/ADT/PointerIntPair.h')
-rw-r--r-- | include/llvm/ADT/PointerIntPair.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/llvm/ADT/PointerIntPair.h b/include/llvm/ADT/PointerIntPair.h index 6b437b9ff5..60671da77e 100644 --- a/include/llvm/ADT/PointerIntPair.h +++ b/include/llvm/ADT/PointerIntPair.h @@ -18,6 +18,9 @@ namespace llvm { +template<typename T> +struct DenseMapInfo; + /// PointerIntPair - This class implements a pair of a pointer and small /// integer. It is designed to represent this in the space required by one /// pointer by bitmangling the integer into the low part of the pointer. This @@ -65,5 +68,24 @@ public: } }; +// Provide specialization of DenseMapInfo for PointerIntPair. +template<typename PointerTy, unsigned IntBits, typename IntType> +struct DenseMapInfo<PointerIntPair<PointerTy, IntBits, IntType> > { + typedef PointerIntPair<PointerTy, IntBits, IntType> Ty; + static Ty getEmptyKey() { + return Ty(reinterpret_cast<PointerTy>(-1), + IntType((1 << IntBits)-1)); + } + static Ty getTombstoneKey() { + return Ty(reinterpret_cast<PointerTy>(-2), IntType(0)); + } + static unsigned getHashValue(Ty V) { + uintptr_t IV = reinterpret_cast<uintptr_t>(V.getOpaqueValue()); + return unsigned(IV) ^ unsigned(IV >> 9); + } + static bool isEqual(const Ty &LHS, const Ty &RHS) { return LHS == RHS; } + static bool isPod() { return true; } +}; + } // end namespace llvm #endif |