[all-commits] [llvm/llvm-project] 2b78ef: [lld-macho][nfc] Eliminate InputSection::Shared
Jez Ng via All-commits
all-commits at lists.llvm.org
Thu Feb 3 16:56:03 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 2b78ef06c2cd65175a5f39240b4d4c8674e1e754
https://github.com/llvm/llvm-project/commit/2b78ef06c2cd65175a5f39240b4d4c8674e1e754
Author: Jez Ng <jezng at fb.com>
Date: 2022-02-03 (Thu, 03 Feb 2022)
Changed paths:
M lld/MachO/ConcatOutputSection.cpp
M lld/MachO/Driver.cpp
M lld/MachO/InputFiles.cpp
M lld/MachO/InputFiles.h
M lld/MachO/InputSection.cpp
M lld/MachO/InputSection.h
M lld/MachO/SymbolTable.cpp
M lld/MachO/SyntheticSections.cpp
M lld/MachO/Writer.cpp
Log Message:
-----------
[lld-macho][nfc] Eliminate InputSection::Shared
Earlier in LLD's evolution, I tried to create the illusion that
subsections were indistinguishable from "top-level" sections. Thus, even
though the subsections shared many common field values, I hid those
common values away in a private Shared struct (see D105305). More
recently, however, @gkm added a public `Section` struct in D113241 that
served as an explicit way to store values that are common to an entire
set of subsections (aka InputSections). Now that we have another "common
value" struct, `Shared` has been rendered redundant. All its fields can
be moved into `Section` instead, and the pointer to `Shared` can be replaced
with a pointer to `Section`.
This `Section` pointer also has the advantage of letting us inspect other
subsections easily, simplifying the implementation of {D118798}.
P.S. I do think that having both `Section` and `InputSection` makes for
a slightly confusing naming scheme. I considered renaming `InputSection`
to `Subsection`, but that would break the symmetry with `OutputSection`.
It would also make us deviate from LLD-ELF's naming scheme.
This change is perf-neutral on my 3.2 GHz 16-Core Intel Xeon W machine:
base diff difference (95% CI)
sys_time 1.258 ± 0.031 1.248 ± 0.023 [ -1.6% .. +0.1%]
user_time 3.659 ± 0.047 3.658 ± 0.041 [ -0.5% .. +0.4%]
wall_time 4.640 ± 0.085 4.625 ± 0.063 [ -1.0% .. +0.3%]
samples 49 61
There's also no stat sig change in RSS (as measured by `time -l`):
base diff difference (95% CI)
time 998038627.097 ± 13567305.958 1003327715.556 ± 15210451.236 [ -0.2% .. +1.2%]
samples 31 36
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D118797
More information about the All-commits
mailing list