diff options
author | Fangrui Song <i@maskray.me> | 2023-10-18 08:56:17 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-18 08:56:17 -0700 |
commit | ec0e556e6708e1e979be271a74a03abd1b45496a (patch) | |
tree | cc4ae3042777b6d39715ed18e5d889ebd81cd25c /llvm/docs/tutorial/MyFirstLanguageFrontend | |
parent | 9f4950983e2ae1e8cebf48ce33b84c23ac3d2dc2 (diff) | |
download | llvm-ec0e556e6708e1e979be271a74a03abd1b45496a.zip llvm-ec0e556e6708e1e979be271a74a03abd1b45496a.tar.gz llvm-ec0e556e6708e1e979be271a74a03abd1b45496a.tar.bz2 |
[ELF] Merge copyLocalSymbols and demoteLocalSymbolsInDiscardedSections (#69425)
Follow-up to #69295: In `Writer<ELFT>::run`, the symbol passes are
flexible:
they can be placed almost everywhere before `scanRelocations`, with a
constraint
that the `computeIsPreemptible` pass must be invoked for linker-defined
non-local symbols.
Merge copyLocalSymbols and demoteLocalSymbolsInDiscardedSections to
simplify
code:
* Demoting local symbols can be made unconditional, not constrainted to
/DISCARD/ uses due to performance concerns
* `includeInSymtab` can be made faster
* Make symbol passes close to each other
* Decrease data cache misses due to saving an iteration over local
symbols
There is no speedup, likely due to the unconditional `dr->section`
access in `demoteAndCopyLocalSymbols`.
`gc-sections-tls.s` no longer reports an error because the TLS symbol is
converted to an Undefined.
Diffstat (limited to 'llvm/docs/tutorial/MyFirstLanguageFrontend')
0 files changed, 0 insertions, 0 deletions