[all-commits] [llvm/llvm-project] 025a5b: [lld-macho] Sort data-in-code entries
Daniel Bertalan via All-commits
all-commits at lists.llvm.org
Tue Sep 13 10:10:49 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 025a5b22c848364be0009a630e7fb53f40515e68
https://github.com/llvm/llvm-project/commit/025a5b22c848364be0009a630e7fb53f40515e68
Author: Daniel Bertalan <dani at danielbertalan.dev>
Date: 2022-09-13 (Tue, 13 Sep 2022)
Changed paths:
M lld/MachO/SyntheticSections.cpp
M lld/MachO/SyntheticSections.h
A lld/test/MachO/data-in-code-section-ordering.s
Log Message:
-----------
[lld-macho] Sort data-in-code entries
Previously, we would add entries to DataInCodeSection in the order they
appeared in input files. Because of this, entries would not be sorted if
sections were reordered due to e.g. `-order_file` or call graph profile
sorting. ld64 always keeps data-in-code information sorted.
This commit also fixes an incorrect assertion. The original assertion
from D103006 used to check that data-in-code entries are sorted in the
input objects -- likely because we use binary search on that data. In
D115556, the assertion was moved into `collectDataInCodeEntries`, but
the checked variable's name was not changed, so it ended up checking the
final contents of the DataInCodeSection.
We no longer crash when building LLVM with PGO using an asserts build of
LLD as the linker.
Fixes https://bugs.chromium.org/p/chromium/issues/detail?id=1265937
Numbers for linking the Chromium Framework reproducer from #48001, which
has 6829 data-in-code entries:
x before
+ after
N Min Max Median Avg Stddev
x 20 2.1076453 2.3059683 2.1132485 2.1350302 0.049905767
+ 20 2.1069031 2.3915262 2.14465 2.1728429 0.084065898
No difference proven at 95.0% confidence
Differential Revision: https://reviews.llvm.org/D133581
More information about the All-commits
mailing list