[PATCH] D88830: [LLD][ELF] Improve ICF for relocations to sections via "aliases"

Andrew Ng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 5 06:10:23 PDT 2020


andrewng created this revision.
andrewng added reviewers: MaskRay, pcc, grimar.
Herald added subscribers: arichardson, emaste.
Herald added a reviewer: espindola.
andrewng requested review of this revision.

ICF was not able to merge equivalent sections because of relocations to
sections ineligible for ICF that use alternative symbols, e.g. symbol
aliases or section relative relocations.

Merging in this scenario has been enabled by giving the sections that
are ineligigle for ICF a unique ID, i.e. an equivalence class of their
own. This approach also provides another benefit as it improves the
hashing that is used to perform the initial equivalance grouping for
ICF. This is because the ICF ineligible sections can now contribute a
unique value towards the hashes instead of the same value of zero. This
has been seen to reduce link time with ICF by ~68% for objects compiled
with -fprofile-instr-generate.

In order to facilitate this use of a unique ID, the existing
inconsistent approach to the setting of the InputSection eqClass in ICF
has been changed so that there is a clear distinction between the
eqClass values of ICF eligible sections and those of the ineligible
sections that have a unique ID. This inconsistency could have caused
incorrect equivalence class equality in the past, although it appears
that no issues were encountered in actual use.


https://reviews.llvm.org/D88830

Files:
  lld/ELF/ICF.cpp
  lld/test/ELF/icf18.s

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88830.296166.patch
Type: text/x-patch
Size: 3937 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201005/99a385c4/attachment.bin>


More information about the llvm-commits mailing list