Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lld/COFF
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2015-07-01 02:46:52 +0300
committerRui Ueyama <ruiu@google.com>2015-07-01 02:46:52 +0300
commit4b6698917d4089efd8fbf20a9362244081eb0995 (patch)
treead080e321db74d766f3717063a61714c1c0352ef /lld/COFF
parent342b1e8053ef493d174aa9227df8a82ed022ee68 (diff)
COFF: Simplify SymbolTable::findLazy. NFC.
llvm-svn: 241128
Diffstat (limited to 'lld/COFF')
-rw-r--r--lld/COFF/Driver.cpp3
-rw-r--r--lld/COFF/SymbolTable.cpp16
-rw-r--r--lld/COFF/SymbolTable.h2
3 files changed, 5 insertions, 16 deletions
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index debadc226cc6..66009a203b31 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -217,7 +217,8 @@ StringRef LinkerDriver::findDefaultEntry() {
{"wWinMain", "wWinMainCRTStartup"},
};
for (auto E : Entries) {
- if (Symtab.findLazy(E[0]))
+ Symbol *Sym = Symtab.findSymbol(E[0]);
+ if (Sym && !isa<Undefined>(Sym->Body))
return E[1];
}
return "";
diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp
index 61c6a1ec74f3..8a4ad59e5190 100644
--- a/lld/COFF/SymbolTable.cpp
+++ b/lld/COFF/SymbolTable.cpp
@@ -237,23 +237,11 @@ Defined *SymbolTable::find(StringRef Name) {
return nullptr;
}
-// Find a given symbol. If a lazy symbol is found,
-// resolve that before returning.
-Defined *SymbolTable::findLazy(StringRef Name) {
+Symbol *SymbolTable::findSymbol(StringRef Name) {
auto It = Symtab.find(Name);
if (It == Symtab.end())
return nullptr;
- Symbol *Sym = It->second;
- if (auto *B = dyn_cast<Defined>(Sym->Body))
- return B;
- if (auto *B = dyn_cast<Lazy>(Sym->Body)) {
- if (addMemberFile(B))
- return nullptr;
- if (run())
- return nullptr;
- return cast<Defined>(Sym->Body);
- }
- return nullptr;
+ return It->second;
}
// Find a given symbol or its mangled symbol.
diff --git a/lld/COFF/SymbolTable.h b/lld/COFF/SymbolTable.h
index adecaba13f88..8688e8e62311 100644
--- a/lld/COFF/SymbolTable.h
+++ b/lld/COFF/SymbolTable.h
@@ -59,7 +59,7 @@ public:
// mechanisms to allow aliases, a name can be resolved to a
// different symbol). Returns a nullptr if not found.
Defined *find(StringRef Name);
- Defined *findLazy(StringRef Name);
+ Symbol *findSymbol(StringRef Name);
// Find a symbol assuming that Name is a function name.
// Not only a given string but its mangled names (in MSVC C++ manner)