[lld] r231551 - Resolver: Reduce number of SymbolTable::isDefined function calls.

Rui Ueyama ruiu at google.com
Fri Mar 6 19:55:32 PST 2015


Author: ruiu
Date: Fri Mar  6 21:55:32 2015
New Revision: 231551

URL: http://llvm.org/viewvc/llvm-project?rev=231551&view=rev
Log:
Resolver: Reduce number of SymbolTable::isDefined function calls.

If an undefined symbol is added to the symbol table by the previous
call of SymbolTable::add, SymbolTable::isDefined will always return
false for the same symbol.

Modified:
    lld/trunk/lib/Core/Resolver.cpp

Modified: lld/trunk/lib/Core/Resolver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/Resolver.cpp?rev=231551&r1=231550&r2=231551&view=diff
==============================================================================
--- lld/trunk/lib/Core/Resolver.cpp (original)
+++ lld/trunk/lib/Core/Resolver.cpp Fri Mar  6 21:55:32 2015
@@ -125,7 +125,7 @@ bool Resolver::doUndefinedAtom(const Und
   // If the undefined symbol has an alternative name, try to resolve the
   // symbol with the name to give it a second chance. This feature is used
   // for COFF "weak external" symbol.
-  if (!_symbolTable.isDefined(atom.name())) {
+  if (newUndefAdded || !_symbolTable.isDefined(atom.name())) {
     if (const UndefinedAtom *fallbackAtom = atom.fallback()) {
       doUndefinedAtom(*fallbackAtom);
       _symbolTable.addReplacement(&atom, fallbackAtom);





More information about the llvm-commits mailing list