[PATCH] D102655: [lld/mac] Inline a check
Nico Weber via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon May 17 15:26:36 PDT 2021
thakis created this revision.
thakis added a reviewer: lld-macho.
Herald added a reviewer: int3.
Herald added a reviewer: gkm.
Herald added a project: lld-macho.
thakis requested review of this revision.
`match()` can only return for non-empty vectors, but at least in
non-LTO builds that isn't clear to the compiler. Help it out.
This is a minor but measurable speedup on my machine (but less
than what we might've lost in https://reviews.llvm.org/D100818#2764272 --
bot note higher N on this measurement here, so higher confidence here):
% ministat at_main at_branch
x at_main
+ at_branch
N Min Max Median Avg Stddev
x 30 3.9243979 4.0395119 3.987375 3.9826236 0.027567796
+ 30 3.8495831 4.0009291 3.931325 3.9347135 0.037832878
Difference at 95.0% confidence
-0.0479101 +/- 0.0171102
-1.20298% +/- 0.429622%
(Student's t, pooled s = 0.0331007)
No behavior change.
Eventually we should apply these lists at symbol parse time instead of
every time shouldExportSymbol() though :)
https://reviews.llvm.org/D102655
Files:
lld/MachO/SyntheticSections.cpp
Index: lld/MachO/SyntheticSections.cpp
===================================================================
--- lld/MachO/SyntheticSections.cpp
+++ lld/MachO/SyntheticSections.cpp
@@ -587,9 +587,11 @@
// Measurements show that symbol ordering (which again looks up
// every symbol in a hashmap) is the biggest bottleneck when linking
// chromium_framework, so this will likely be worth optimizing.
- return config->exportedSymbols.empty()
- ? !config->unexportedSymbols.match(defined->getName())
- : config->exportedSymbols.match(defined->getName());
+ if (!config->exportedSymbols.empty())
+ return config->exportedSymbols.match(defined->getName());
+ if (!config->unexportedSymbols.empty())
+ return !config->unexportedSymbols.match(defined->getName());
+ return true;
}
void ExportSection::finalizeContents() {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D102655.346002.patch
Type: text/x-patch
Size: 860 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210517/0e0deb69/attachment.bin>
More information about the llvm-commits
mailing list