[lld] 40eb8a7 - [ELF] findAllByVersion: optimize a find('@') with hasVersionSuffix. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Thu May 25 21:23:28 PDT 2023
Author: Fangrui Song
Date: 2023-05-25T21:23:23-07:00
New Revision: 40eb8a78640ce88a883c154a9ddd6b7fa296c42b
URL: https://github.com/llvm/llvm-project/commit/40eb8a78640ce88a883c154a9ddd6b7fa296c42b
DIFF: https://github.com/llvm/llvm-project/commit/40eb8a78640ce88a883c154a9ddd6b7fa296c42b.diff
LOG: [ELF] findAllByVersion: optimize a find('@') with hasVersionSuffix. NFC
Added:
Modified:
lld/ELF/SymbolTable.cpp
Removed:
################################################################################
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index f09d0d7f90958..8ffc8ee7696b0 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -171,10 +171,11 @@ SmallVector<Symbol *, 0> SymbolTable::findAllByVersion(SymbolVersion ver,
bool includeNonDefault) {
SmallVector<Symbol *, 0> res;
SingleStringMatcher m(ver.name);
- auto check = [&](StringRef name) {
- size_t pos = name.find('@');
+ auto check = [&](const Symbol &sym) -> bool {
if (!includeNonDefault)
- return pos == StringRef::npos;
+ return !sym.hasVersionSuffix;
+ StringRef name = sym.getName();
+ size_t pos = name.find('@');
return !(pos + 1 < name.size() && name[pos + 1] == '@');
};
@@ -182,14 +183,13 @@ SmallVector<Symbol *, 0> SymbolTable::findAllByVersion(SymbolVersion ver,
for (auto &p : getDemangledSyms())
if (m.match(p.first()))
for (Symbol *sym : p.second)
- if (check(sym->getName()))
+ if (check(*sym))
res.push_back(sym);
return res;
}
for (Symbol *sym : symVector)
- if (canBeVersioned(*sym) && check(sym->getName()) &&
- m.match(sym->getName()))
+ if (canBeVersioned(*sym) && check(*sym) && m.match(sym->getName()))
res.push_back(sym);
return res;
}
More information about the llvm-commits
mailing list