From 40eb8a78640ce88a883c154a9ddd6b7fa296c42b Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 25 May 2023 21:23:23 -0700 Subject: [PATCH] [ELF] findAllByVersion: optimize a find('@') with hasVersionSuffix. NFC --- lld/ELF/SymbolTable.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index f09d0d7f9095..8ffc8ee7696b 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -171,10 +171,11 @@ SmallVector SymbolTable::findAllByVersion(SymbolVersion ver, bool includeNonDefault) { SmallVector 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 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; }