aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/APInt.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2020-04-14 18:13:49 +0200
committerBenjamin Kramer <benny.kra@googlemail.com>2020-04-14 18:16:15 +0200
commit61ec4cdf6be9f05c65f9cc2e8a1d05320305e9fb (patch)
treef0f4ad980a8e6adeb0ffee0a236a8c9bed358a25 /llvm/lib/Support/APInt.cpp
parentc8a5b30bac695e9fbb592cf77364a60ebd6e0dbd (diff)
downloadllvm-61ec4cdf6be9f05c65f9cc2e8a1d05320305e9fb.zip
llvm-61ec4cdf6be9f05c65f9cc2e8a1d05320305e9fb.tar.gz
llvm-61ec4cdf6be9f05c65f9cc2e8a1d05320305e9fb.tar.bz2
[ADT] Mix the bit width into APInt's hash_value
Otherwise all zero values from i1 to i64 collide.
Diffstat (limited to 'llvm/lib/Support/APInt.cpp')
-rw-r--r--llvm/lib/Support/APInt.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Support/APInt.cpp b/llvm/lib/Support/APInt.cpp
index faef9a3..4a591ef 100644
--- a/llvm/lib/Support/APInt.cpp
+++ b/llvm/lib/Support/APInt.cpp
@@ -548,9 +548,11 @@ unsigned APInt::getBitsNeeded(StringRef str, uint8_t radix) {
hash_code llvm::hash_value(const APInt &Arg) {
if (Arg.isSingleWord())
- return hash_combine(Arg.U.VAL);
+ return hash_combine(Arg.BitWidth, Arg.U.VAL);
- return hash_combine_range(Arg.U.pVal, Arg.U.pVal + Arg.getNumWords());
+ return hash_combine(
+ Arg.BitWidth,
+ hash_combine_range(Arg.U.pVal, Arg.U.pVal + Arg.getNumWords()));
}
bool APInt::isSplat(unsigned SplatSizeInBits) const {