summaryrefslogtreecommitdiffstats
path: root/lld/ELF/SymbolTable.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2018-12-20 22:54:41 +0000
committerRui Ueyama <ruiu@google.com>2018-12-20 22:54:41 +0000
commitfb81437638d220a7112568d27b3b72b9542b90e6 (patch)
tree1c103d4c01fcf530b759c0323ccd4c70b6122df5 /lld/ELF/SymbolTable.cpp
parent51fe635f81aea34901cc329e1a375703c980d7ef (diff)
downloadbcm5719-llvm-fb81437638d220a7112568d27b3b72b9542b90e6.tar.gz
bcm5719-llvm-fb81437638d220a7112568d27b3b72b9542b90e6.zip
Simplify. NFC.
llvm-svn: 349850
Diffstat (limited to 'lld/ELF/SymbolTable.cpp')
-rw-r--r--lld/ELF/SymbolTable.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/lld/ELF/SymbolTable.cpp b/lld/ELF/SymbolTable.cpp
index 5545617487e..2e8759b8630 100644
--- a/lld/ELF/SymbolTable.cpp
+++ b/lld/ELF/SymbolTable.cpp
@@ -494,21 +494,16 @@ void SymbolTable::addShared(StringRef Name, SharedFile<ELFT> &File,
// An undefined symbol with non default visibility must be satisfied
// in the same DSO.
- if (WasInserted) {
- replaceSymbol<SharedSymbol>(S, File, Name, Sym.getBinding(), Sym.st_other,
+ auto Replace = [&](uint8_t Binding) {
+ replaceSymbol<SharedSymbol>(S, File, Name, Binding, Sym.st_other,
Sym.getType(), Sym.st_value, Sym.st_size,
Alignment, VerdefIndex);
- return;
- }
+ };
- if ((S->isUndefined() || S->isLazy()) && S->Visibility == STV_DEFAULT) {
- uint8_t Binding = S->Binding;
- replaceSymbol<SharedSymbol>(S, File, Name, Sym.getBinding(), Sym.st_other,
- Sym.getType(), Sym.st_value, Sym.st_size,
- Alignment, VerdefIndex);
-
- S->Binding = Binding;
- }
+ if (WasInserted)
+ Replace(Sym.getBinding());
+ else if (S->Visibility == STV_DEFAULT && (S->isUndefined() || S->isLazy()))
+ Replace(S->Binding);
}
Symbol *SymbolTable::addBitcode(StringRef Name, uint8_t Binding,
OpenPOWER on IntegriCloud