diff options
author | Rui Ueyama <ruiu@google.com> | 2016-04-28 00:03:38 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2016-04-28 00:03:38 +0000 |
commit | 1b70d666ae57d74ad14711c29a3a5e68e05bc388 (patch) | |
tree | 8e57fddb56601efad6b55d4ae677586fa85c6c54 | |
parent | 9fdd071d01bb9cf813eed89fd4e321d6c463929a (diff) | |
download | bcm5719-llvm-1b70d666ae57d74ad14711c29a3a5e68e05bc388.tar.gz bcm5719-llvm-1b70d666ae57d74ad14711c29a3a5e68e05bc388.zip |
Do not lookup the symbol table twice for each --wrap.
llvm-svn: 267822
-rw-r--r-- | lld/ELF/SymbolTable.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp index 289ffbbfe8f..bfd70bca5ae 100644 --- a/lld/ELF/SymbolTable.cpp +++ b/lld/ELF/SymbolTable.cpp @@ -188,10 +188,11 @@ DefinedRegular<ELFT> *SymbolTable<ELFT>::addIgnored(StringRef Name, // Rename SYM as __wrap_SYM. The original symbol is preserved as __real_SYM. // Used to implement --wrap. template <class ELFT> void SymbolTable<ELFT>::wrap(StringRef Name) { - if (Symtab.count(Name) == 0) + SymbolBody *B = find(Name); + if (!B) return; StringSaver Saver(Alloc); - Symbol *Sym = addUndefined(Name)->Backref; + Symbol *Sym = B->Backref; Symbol *Real = addUndefined(Saver.save("__real_" + Name))->Backref; Symbol *Wrap = addUndefined(Saver.save("__wrap_" + Name))->Backref; Real->Body = Sym->Body; |