[PATCH] D111451: [DenseMapInfo] Move hash_code implementation to Hashing.h
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 8 11:38:49 PDT 2021
nikic created this revision.
nikic added reviewers: RKSimon, lattner.
Herald added a subscriber: dexonsmith.
nikic requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
This moves the DenseMapInfo implementation for hash_code into Hashing.h, removing the need to include Hashing.h (and thus <string>) in DenseMapInfo.h. This follows the general convention of declaring DenseMapInfo for types that we own in the respective header. The remaining implementations in DenseMapInfo.h are all for types we do not own.
https://reviews.llvm.org/D111451
Files:
llvm/include/llvm/ADT/DenseMapInfo.h
llvm/include/llvm/ADT/Hashing.h
Index: llvm/include/llvm/ADT/Hashing.h
===================================================================
--- llvm/include/llvm/ADT/Hashing.h
+++ llvm/include/llvm/ADT/Hashing.h
@@ -56,6 +56,7 @@
#include <utility>
namespace llvm {
+template <typename T> struct DenseMapInfo;
/// An opaque object representing a hash code.
///
@@ -677,6 +678,13 @@
return hash_combine_range(arg.begin(), arg.end());
}
+template <> struct DenseMapInfo<hash_code> {
+ static inline hash_code getEmptyKey() { return hash_code(-1); }
+ static inline hash_code getTombstoneKey() { return hash_code(-2); }
+ static unsigned getHashValue(hash_code val) { return val; }
+ static bool isEqual(hash_code LHS, hash_code RHS) { return LHS == RHS; }
+};
+
} // namespace llvm
#endif
Index: llvm/include/llvm/ADT/DenseMapInfo.h
===================================================================
--- llvm/include/llvm/ADT/DenseMapInfo.h
+++ llvm/include/llvm/ADT/DenseMapInfo.h
@@ -13,7 +13,6 @@
#ifndef LLVM_ADT_DENSEMAPINFO_H
#define LLVM_ADT_DENSEMAPINFO_H
-#include "llvm/ADT/Hashing.h"
#include <cassert>
#include <cstddef>
#include <cstdint>
@@ -283,13 +282,6 @@
}
};
-template <> struct DenseMapInfo<hash_code> {
- static inline hash_code getEmptyKey() { return hash_code(-1); }
- static inline hash_code getTombstoneKey() { return hash_code(-2); }
- static unsigned getHashValue(hash_code val) { return val; }
- static bool isEqual(hash_code LHS, hash_code RHS) { return LHS == RHS; }
-};
-
} // end namespace llvm
#endif // LLVM_ADT_DENSEMAPINFO_H
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111451.378319.patch
Type: text/x-patch
Size: 1570 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211008/eed891b9/attachment.bin>
More information about the llvm-commits
mailing list