[all-commits] [llvm/llvm-project] 5fc432: [ELF] Change some global pointers to unique_ptr

Fangrui Song via All-commits all-commits at lists.llvm.org
Wed Dec 22 14:36:26 PST 2021

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5fc4323eda60ee15ef4c87d989d468cd0e6d77c1
  Author: Fangrui Song <i at maskray.me>
  Date:   2021-12-22 (Wed, 22 Dec 2021)

  Changed paths:
    M lld/ELF/Config.h
    M lld/ELF/Driver.cpp
    M lld/ELF/Driver.h
    M lld/ELF/LinkerScript.cpp
    M lld/ELF/LinkerScript.h
    M lld/ELF/SymbolTable.cpp
    M lld/ELF/SymbolTable.h

  Log Message:
  [ELF] Change some global pointers to unique_ptr

Currently the singleton `config` is assigned by `config = make<Configuration>()`
and (if `canExitEarly` is false) destroyed by `lld::freeArena`.

`make<Configuration>` allocates a stab with `malloc(4096)`. This both wastes
memory and bloats the executable (every type instantiates `BumpPtrAllocator`
which costs more than 1KiB code on x86-64).

(No need to worry about `clang::no_destroy`. Regular invocations (`canExitEarly`
is true) call `_Exit` via llvm::sys::Process::ExitNoCleanup.)

Reviewed By: lichray

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

More information about the All-commits mailing list