[all-commits] [llvm/llvm-project] dabac5: [ELF][LTO] Cache symbol table of lazy BitcodeFile

Fangrui Song via All-commits all-commits at lists.llvm.org
Thu Dec 30 12:03:42 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: dabac5feecdde0441b22a19088ac7384e4763dd1
      https://github.com/llvm/llvm-project/commit/dabac5feecdde0441b22a19088ac7384e4763dd1
  Author: Fangrui Song <i at maskray.me>
  Date:   2021-12-30 (Thu, 30 Dec 2021)

  Changed paths:
    M lld/ELF/InputFiles.cpp

  Log Message:
  -----------
  [ELF][LTO] Cache symbol table of lazy BitcodeFile

Similar to D62188: a BitcodeFile's symbol table may be iterated twice, once in
--start-lib (lazy) state, and once in the non-lazy state. This patch
makes `parseLazy` save `symbols[i]` so that the non-lazy state does not need to
re-insert to the global symbol table. Avoiding a redundant `saver.save` may save
memory.

`Maximum resident set size (kbytes)` for a large --thinlto-index-only link:

* without the patch: 10164000
* with the patch: 10095716 (0.6% decrease)

Note: we can remove `saver.save` if `BitcodeCompiler::add` does not transfer the ownership
of `f.obj` in `checkError(ltoObj->add(std::move(f.obj), resols));`.

Reviewed By: tejohnson

Differential Revision: https://reviews.llvm.org/D116390




More information about the All-commits mailing list