Allow unsigned long long DenseMapInfo.
authorMike Stump <mrs@apple.com>
Wed, 26 Aug 2009 18:02:19 +0000 (18:02 +0000)
committerMike Stump <mrs@apple.com>
Wed, 26 Aug 2009 18:02:19 +0000 (18:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80118 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/DenseMapInfo.h

index a895074220d473e65ddf9121bfcc4867d2c22f66..d76ebde7fb31b86f0bc8e8b0ccd931a90bde865f 100644 (file)
@@ -84,6 +84,20 @@ template<> struct DenseMapInfo<unsigned long> {
   }
 };
 
+// Provide DenseMapInfo for unsigned long longs.
+template<> struct DenseMapInfo<unsigned long long> {
+  static inline unsigned long long getEmptyKey() { return ~0LL; }
+  static inline unsigned long long getTombstoneKey() { return ~0LL - 1LL; }
+  static unsigned getHashValue(const unsigned long long& Val) {
+    return (unsigned)(Val * 37LL);
+  }
+  static bool isPod() { return true; }
+  static bool isEqual(const unsigned long long& LHS,
+                      const unsigned long long& RHS) {
+  return LHS == RHS;
+  }
+};
+
 // Provide DenseMapInfo for all pairs whose members have info.
 template<typename T, typename U>
 struct DenseMapInfo<std::pair<T, U> > {