[llvm] [NFC][RemoveDIs] Switch constant-hoisting to insert with iterators (PR #84738)
Scott Todd via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 26 11:17:13 PDT 2024
================
@@ -774,6 +774,32 @@ BasicBlock::iterator skipDebugIntrinsics(BasicBlock::iterator It);
inline void BasicBlock::validateInstrOrdering() const {}
#endif
+// Specialize DenseMapInfo for iterators, so that ththey can be installed into
+// maps and sets. The iterator is made up of its node pointer, and the
+// debug-info "head" bit.
+template <> struct DenseMapInfo<BasicBlock::iterator> {
+ static inline BasicBlock::iterator getEmptyKey() {
+ return BasicBlock::iterator(nullptr);
+ }
+
+ static inline BasicBlock::iterator getTombstoneKey() {
+ BasicBlock::iterator It(nullptr);
+ It.setHeadBit(true);
+ return It;
+ }
+
+ static unsigned getHashValue(const BasicBlock::iterator &It) {
+ return DenseMapInfo<void *>::getHashValue(
+ reinterpret_cast<void *>(It.getNodePtr())) ^
+ It.getHeadBit();
----------------
ScottTodd wrote:
Ah, there are PRs for that already.
https://github.com/llvm/llvm-project/pull/84738
More information about the llvm-commits
mailing list