diff options
author | Jez Ng <jezng@fb.com> | 2021-07-01 20:33:55 -0400 |
---|---|---|
committer | Jez Ng <jezng@fb.com> | 2021-07-01 21:22:39 -0400 |
commit | f6b6e7214366fc12469aba2fe16495e5f7a375a6 (patch) | |
tree | 373e7ed3055de4e46330d605e8945c222e74289c /llvm/lib/CodeGen/MachineOperand.cpp | |
parent | 08715e6c47f68b7ea985fbd76d4945dfdff0a9aa (diff) | |
download | llvm-f6b6e7214366fc12469aba2fe16495e5f7a375a6.zip llvm-f6b6e7214366fc12469aba2fe16495e5f7a375a6.tar.gz llvm-f6b6e7214366fc12469aba2fe16495e5f7a375a6.tar.bz2 |
[lld-macho] Factor out common InputSection members
We have been creating many ConcatInputSections with identical values due
to .subsections_via_symbols. This diff factors out the identical values
into a Shared struct, to reduce memory consumption and make copying
cheaper.
I also changed `callSiteCount` from a uint32_t to a 31-bit field to save an
extra word.
All in all, this takes InputSection from 120 to 72 bytes (and
ConcatInputSection from 160 to 112 bytes), i.e. 30% size reduction in
ConcatInputSection.
Numbers for linking chromium_framework on my 3.2 GHz 16-Core Intel Xeon W:
N Min Max Median Avg Stddev
x 20 4.14 4.24 4.18 4.183 0.027548999
+ 20 4.04 4.11 4.075 4.0775 0.018027756
Difference at 95.0% confidence
-0.1055 +/- 0.0149005
-2.52211% +/- 0.356215%
(Student's t, pooled s = 0.0232803)
Reviewed By: #lld-macho, thakis
Differential Revision: https://reviews.llvm.org/D105305
Diffstat (limited to 'llvm/lib/CodeGen/MachineOperand.cpp')
0 files changed, 0 insertions, 0 deletions