[lld] [lld] Merge equivalent symbols found during ICF (PR #134342)
Pranav Kant via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 14 14:26:03 PDT 2025
================
@@ -333,6 +333,28 @@ bool ICF<ELFT>::equalsConstant(const InputSection *a, const InputSection *b) {
: constantEq(a, ra.relas, b, rb.relas);
}
+template <class RelTy>
+static SmallVector<Symbol *> getReloc(const InputSection *sec,
----------------
pranavk wrote:
> Around line 581, symbolMap.insert(std::make_pair(replacedSyms[i], syms[i])); inside forEachClassRange (parallel) looks like unsafe concurrent updates of the unordered map.
`forEachClassRange` is not parallel as far as I can see. `forEachClass` is parallel which is why I couldn't do this inside of `variablesEq`. So there should be no concurrent update to the map.
https://github.com/llvm/llvm-project/pull/134342
More information about the llvm-commits
mailing list