From 2774a41b96b835a05421d051582afe51e6313df2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 29 Nov 2008 01:18:05 +0000 Subject: [PATCH] Fix spello, add DenseMapInfo specialization for PointerIntPair. llvm-svn: 60228 --- llvm/include/llvm/ADT/PointerIntPair.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/llvm/include/llvm/ADT/PointerIntPair.h b/llvm/include/llvm/ADT/PointerIntPair.h index 6b437b9ff5a3..60671da77ede 100644 --- a/llvm/include/llvm/ADT/PointerIntPair.h +++ b/llvm/include/llvm/ADT/PointerIntPair.h @@ -18,6 +18,9 @@ namespace llvm { +template +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 +struct DenseMapInfo > { + typedef PointerIntPair Ty; + static Ty getEmptyKey() { + return Ty(reinterpret_cast(-1), + IntType((1 << IntBits)-1)); + } + static Ty getTombstoneKey() { + return Ty(reinterpret_cast(-2), IntType(0)); + } + static unsigned getHashValue(Ty V) { + uintptr_t IV = reinterpret_cast(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