diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-04 02:48:56 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-03-04 02:48:56 +0000 |
commit | 2bc2a08b1bf6b5dcbfa515acc85999d6f884ec1a (patch) | |
tree | 734862ddd103af3867c96a1e2962ed8cc7ce419d | |
parent | a0807f57caed954545661c23607c507f8d5c3d64 (diff) | |
download | external_llvm-2bc2a08b1bf6b5dcbfa515acc85999d6f884ec1a.zip external_llvm-2bc2a08b1bf6b5dcbfa515acc85999d6f884ec1a.tar.gz external_llvm-2bc2a08b1bf6b5dcbfa515acc85999d6f884ec1a.tar.bz2 |
DenseMap<uintptr_t,...> doesn't allow all values as keys.
Avoid colliding with the sentinels, hopefully unbreaking
llvm-gcc-x86_64-linux-selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126982 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Utils/Local.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index 3f789fa..32a50b8 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -632,6 +632,8 @@ bool llvm::EliminateDuplicatePHINodes(BasicBlock *BB) { Hash ^= reinterpret_cast<uintptr_t>(static_cast<Value *>(*I)); Hash = (Hash << 7) | (Hash >> (sizeof(uintptr_t) * CHAR_BIT - 7)); } + // Avoid colliding with the DenseMap sentinels ~0 and ~0-1. + Hash >>= 1; // If we've never seen this hash value before, it's a unique PHI. std::pair<DenseMap<uintptr_t, PHINode *>::iterator, bool> Pair = HashMap.insert(std::make_pair(Hash, PN)); |