[PATCH] D56955: COFF, ELF: Adjust ICF hash computation to account for self relocations.
Peter Collingbourne via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 22 15:38:57 PST 2019
pcc updated this revision to Diff 182988.
pcc added a comment.
- Add instead of xoring
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D56955/new/
https://reviews.llvm.org/D56955
Files:
lld/COFF/ICF.cpp
lld/ELF/ICF.cpp
Index: lld/ELF/ICF.cpp
===================================================================
--- lld/ELF/ICF.cpp
+++ lld/ELF/ICF.cpp
@@ -432,7 +432,7 @@
Symbol &S = IS->template getFile<ELFT>()->getRelocTargetSym(Rel);
if (auto *D = dyn_cast<Defined>(&S))
if (auto *RelSec = dyn_cast_or_null<InputSection>(D->Section))
- Hash ^= RelSec->Class[1];
+ Hash += RelSec->Class[1];
}
// Set MSB to 1 to avoid collisions with non-hash IDs.
IS->Class[0] = Hash | (1U << 31);
Index: lld/COFF/ICF.cpp
===================================================================
--- lld/COFF/ICF.cpp
+++ lld/COFF/ICF.cpp
@@ -272,7 +272,7 @@
uint32_t Hash = SC->Class[1];
for (Symbol *B : SC->symbols())
if (auto *Sym = dyn_cast_or_null<DefinedRegular>(B))
- Hash ^= Sym->getChunk()->Class[1];
+ Hash += Sym->getChunk()->Class[1];
// Set MSB to 1 to avoid collisions with non-hash classs.
SC->Class[0] = Hash | (1U << 31);
});
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56955.182988.patch
Type: text/x-patch
Size: 987 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190122/d74cbe06/attachment.bin>
More information about the llvm-commits
mailing list