[lld] [lld] Merge equivalent symbols found during ICF (PR #134342)

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 12 14:10:42 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,
----------------
MaskRay wrote:

I was concerned about the extra relocation scanning. However, it seems unavoidable after taking a closer took.

Around line 581, `symbolMap.insert(std::make_pair(replacedSyms[i], syms[i]));` inside `forEachClassRange` (parallel) looks like unsafe concurrent updates of the unordered map.

https://github.com/llvm/llvm-project/pull/134342


More information about the llvm-commits mailing list