[lld] bc588f9 - [lld/mac] Inline a check
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Mon May 17 17:09:16 PDT 2021
Author: Nico Weber
Date: 2021-05-17T20:04:45-04:00
New Revision: bc588f9961117d5705e97eb2191e901e92fe9094
URL: https://github.com/llvm/llvm-project/commit/bc588f9961117d5705e97eb2191e901e92fe9094
DIFF: https://github.com/llvm/llvm-project/commit/bc588f9961117d5705e97eb2191e901e92fe9094.diff
LOG: [lld/mac] Inline a check
`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 :)
Differential Revision: https://reviews.llvm.org/D102655
Added:
Modified:
lld/MachO/SyntheticSections.cpp
Removed:
################################################################################
diff --git a/lld/MachO/SyntheticSections.cpp b/lld/MachO/SyntheticSections.cpp
index 730145230cb0..f1afbc723bb5 100644
--- a/lld/MachO/SyntheticSections.cpp
+++ b/lld/MachO/SyntheticSections.cpp
@@ -587,9 +587,11 @@ static bool shouldExportSymbol(const Defined *defined) {
// 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() {
More information about the llvm-commits
mailing list