diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-12-08 16:26:20 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-12-08 16:26:20 +0000 |
commit | 191390a85188d0780f42a42a236ce646062fbdf0 (patch) | |
tree | ae69dfd33d0a320e2b198582362bf11d458846aa | |
parent | 361da4cef7df3cbcd2b4ada8e1cd489a1181b5f8 (diff) | |
download | bcm5719-llvm-191390a85188d0780f42a42a236ce646062fbdf0.tar.gz bcm5719-llvm-191390a85188d0780f42a42a236ce646062fbdf0.zip |
Inline function called only once.
llvm-svn: 289067
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 28 | ||||
-rw-r--r-- | lld/ELF/SymbolTable.h | 1 |
2 files changed, 11 insertions, 18 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index e25bf331ad0..4fb611de7a2 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -460,20 +460,6 @@ template <class ELFT> SymbolBody *SymbolTable<ELFT>::find(StringRef Name) { return SymVector[V.Idx]->body(); } -// Returns a list of defined symbols that match with a given pattern. -template <class ELFT> -std::vector<SymbolBody *> SymbolTable<ELFT>::findAll(StringRef GlobPat) { - std::vector<SymbolBody *> Res; - StringMatcher M({GlobPat}); - for (Symbol *Sym : SymVector) { - SymbolBody *B = Sym->body(); - StringRef Name = B->getName(); - if (!B->isUndefined() && M.match(Name)) - Res.push_back(B); - } - return Res; -} - template <class ELFT> void SymbolTable<ELFT>::addLazyArchive(ArchiveFile *F, const object::Archive::Symbol Sym) { @@ -600,10 +586,11 @@ std::vector<SymbolBody *> SymbolTable<ELFT>::find(SymbolVersion Ver) { template <class ELFT> std::vector<SymbolBody *> SymbolTable<ELFT>::findAll(SymbolVersion Ver) { + std::vector<SymbolBody *> Res; + StringMatcher M({Ver.Name}); + if (Ver.IsExternCpp) { initDemangledSyms(); - std::vector<SymbolBody *> Res; - StringMatcher M({Ver.Name}); for (auto &P : *DemangledSyms) if (M.match(P.first())) for (SymbolBody *Body : P.second) @@ -611,7 +598,14 @@ std::vector<SymbolBody *> SymbolTable<ELFT>::findAll(SymbolVersion Ver) { Res.push_back(Body); return Res; } - return findAll(Ver.Name); + + for (Symbol *Sym : SymVector) { + SymbolBody *B = Sym->body(); + StringRef Name = B->getName(); + if (!B->isUndefined() && M.match(Name)) + Res.push_back(B); + } + return Res; } // If there's only one anonymous version definition in a version diff --git a/lld/ELF/SymbolTable.h b/lld/ELF/SymbolTable.h index ab1fa8957f9..0e1b62f2166 100644 --- a/lld/ELF/SymbolTable.h +++ b/lld/ELF/SymbolTable.h @@ -92,7 +92,6 @@ public: std::vector<InputSectionBase<ELFT> *> Sections; private: - std::vector<SymbolBody *> findAll(StringRef GlobPat); std::pair<Symbol *, bool> insert(StringRef Name); std::pair<Symbol *, bool> insert(StringRef Name, uint8_t Type, uint8_t Visibility, bool CanOmitFromDynSym, |