forked from OSchip/llvm-project
[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
This commit is contained in:
parent
6d3e3ae8a9
commit
bc588f9961
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue