[lld] f546165 - [lld-macho] Don't create entries in isecPriorities during sorting (NFC)
Daniel Bertalan via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 28 07:55:48 PDT 2022
Author: Daniel Bertalan
Date: 2022-09-28T16:50:18+02:00
New Revision: f546165754d41353010d34b8d4c9f381434ffc68
URL: https://github.com/llvm/llvm-project/commit/f546165754d41353010d34b8d4c9f381434ffc68
DIFF: https://github.com/llvm/llvm-project/commit/f546165754d41353010d34b8d4c9f381434ffc68.diff
LOG: [lld-macho] Don't create entries in isecPriorities during sorting (NFC)
If a value for a given key is not present, `DenseMap::operator[]`
default-constructs one, which is wasteful when we don't do anything with
it afterwards. Fix it by calling `lookup()` instead which only returns
the default value, but does not modify the map.
This speeds up linking a fair bit when only a small portion of all
sections are specified in the order file, like in the case of Chromium
Framework:
N Min Max Median Avg Stddev
x 25 3.727684 3.8808699 3.753552 3.7702461 0.0397282
+ 25 3.6469049 3.7523289 3.6764321 3.6841622 0.025525047
Difference at 95.0% confidence
-0.0860839 +/- 0.0189924
-2.28324% +/- 0.503745%
(Student's t, pooled s = 0.0333906)
Differential Revision: https://reviews.llvm.org/D134811
Added:
Modified:
lld/MachO/Writer.cpp
Removed:
################################################################################
diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp
index 014e543e69c2f..b9e6775843b51 100644
--- a/lld/MachO/Writer.cpp
+++ b/lld/MachO/Writer.cpp
@@ -902,10 +902,10 @@ static void sortSegmentsAndSections() {
if (!isecPriorities.empty()) {
if (auto *merged = dyn_cast<ConcatOutputSection>(osec)) {
- llvm::stable_sort(merged->inputs,
- [&](InputSection *a, InputSection *b) {
- return isecPriorities[a] > isecPriorities[b];
- });
+ llvm::stable_sort(
+ merged->inputs, [&](InputSection *a, InputSection *b) {
+ return isecPriorities.lookup(a) > isecPriorities.lookup(b);
+ });
}
}
}
More information about the llvm-commits
mailing list