Skip to content

Commit c538434

Browse files
authored
[ADT,CodeGen] Remove stable_hash_combine_string
FNV, used by stable_hash_combine_string is extremely slow. For string hashing with good avalanche effects, we prefer xxh3_64bits. StableHashing.h might still be useful as it provides a stable hash_combine while Hashing.h's might be non-deterministic (llvm#96282). Pull Request: llvm#100668
1 parent 991192b commit c538434

File tree

2 files changed

+4
-16
lines changed

2 files changed

+4
-16
lines changed

llvm/include/llvm/ADT/StableHashing.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,18 +95,6 @@ inline stable_hash stable_hash_combine_array(const stable_hash *P, size_t C) {
9595
hashing::detail::stable_hash_append(Hash, P[I]);
9696
return Hash;
9797
}
98-
99-
inline stable_hash stable_hash_combine_string(const StringRef &S) {
100-
return stable_hash_combine_range(S.begin(), S.end());
101-
}
102-
103-
inline stable_hash stable_hash_combine_string(const char *C) {
104-
stable_hash Hash = hashing::detail::FNV_OFFSET_64;
105-
while (*C)
106-
hashing::detail::stable_hash_append(Hash, *(C++));
107-
return Hash;
108-
}
109-
11098
} // namespace llvm
11199

112100
#endif

llvm/lib/CodeGen/MachineStableHash.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "llvm/MC/MCSymbol.h"
3434
#include "llvm/Support/Alignment.h"
3535
#include "llvm/Support/ErrorHandling.h"
36+
#include "llvm/Support/xxhash.h"
3637

3738
#define DEBUG_TYPE "machine-stable-hash"
3839

@@ -100,8 +101,7 @@ stable_hash llvm::stableHashValue(const MachineOperand &MO) {
100101
case MachineOperand::MO_TargetIndex: {
101102
if (const char *Name = MO.getTargetIndexName())
102103
return stable_hash_combine(MO.getType(), MO.getTargetFlags(),
103-
stable_hash_combine_string(Name),
104-
MO.getOffset());
104+
xxh3_64bits(Name), MO.getOffset());
105105
StableHashBailingTargetIndexNoName++;
106106
return 0;
107107
}
@@ -113,7 +113,7 @@ stable_hash llvm::stableHashValue(const MachineOperand &MO) {
113113

114114
case MachineOperand::MO_ExternalSymbol:
115115
return hash_combine(MO.getType(), MO.getTargetFlags(), MO.getOffset(),
116-
stable_hash_combine_string(MO.getSymbolName()));
116+
xxh3_64bits(MO.getSymbolName()));
117117

118118
case MachineOperand::MO_RegisterMask:
119119
case MachineOperand::MO_RegisterLiveOut: {
@@ -151,7 +151,7 @@ stable_hash llvm::stableHashValue(const MachineOperand &MO) {
151151
case MachineOperand::MO_MCSymbol: {
152152
auto SymbolName = MO.getMCSymbol()->getName();
153153
return hash_combine(MO.getType(), MO.getTargetFlags(),
154-
stable_hash_combine_string(SymbolName));
154+
xxh3_64bits(SymbolName));
155155
}
156156
case MachineOperand::MO_CFIIndex:
157157
return stable_hash_combine(MO.getType(), MO.getTargetFlags(),

0 commit comments

Comments
 (0)