[PATCH] D51720: [COFF] don't mark lazy symbols as used in regular objects
Bob Haarman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 6 13:25:05 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL341585: [COFF] don't mark lazy symbols as used in regular objects (authored by inglorion, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D51720?vs=164266&id=164277#toc
Repository:
rL LLVM
https://reviews.llvm.org/D51720
Files:
lld/trunk/COFF/SymbolTable.cpp
lld/trunk/COFF/SymbolTable.h
lld/trunk/test/COFF/thinlto-archives.ll
Index: lld/trunk/test/COFF/thinlto-archives.ll
===================================================================
--- lld/trunk/test/COFF/thinlto-archives.ll
+++ lld/trunk/test/COFF/thinlto-archives.ll
@@ -6,9 +6,17 @@
; RUN: opt -thinlto-bc -o %T/thinlto-archives/b/bar.obj %S/Inputs/bar.ll
; RUN: llvm-ar crs %T/thinlto-archives/a.lib %T/thinlto-archives/a/bar.obj
; RUN: llvm-ar crs %T/thinlto-archives/b.lib %T/thinlto-archives/b/bar.obj
-; RUN: lld-link /out:%T/thinlto-archives/main.exe -entry:main \
-; RUN: -subsystem:console %T/thinlto-archives/main.obj \
+; RUN: lld-link -out:%T/thinlto-archives/main.exe -entry:main \
+; RUN: -lldsavetemps -subsystem:console %T/thinlto-archives/main.obj \
; RUN: %T/thinlto-archives/a.lib %T/thinlto-archives/b.lib
+; RUN: FileCheck %s < %T/thinlto-archives/main.exe.resolution.txt
+
+; CHECK: {{/thinlto-archives/main.obj$}}
+; CHECK: {{^-r=.*/thinlto-archives/main.obj,main,px$}}
+; CHECK: {{/thinlto-archives/a.libbar.obj$}}
+; CHECK-NEXT: {{^-r=.*/thinlto-archives/a.libbar.obj,foo,p$}}
+; CHECK-NEXT: {{/thinlto-archives/b.libbar.obj$}}
+; CHECK-NEXT: {{^-r=.*/thinlto-archives/b.libbar.obj,bar,p$}}
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
Index: lld/trunk/COFF/SymbolTable.h
===================================================================
--- lld/trunk/COFF/SymbolTable.h
+++ lld/trunk/COFF/SymbolTable.h
@@ -111,6 +111,9 @@
}
private:
+ /// Inserts symbol if not already present.
+ std::pair<Symbol *, bool> insert(StringRef Name);
+ /// Same as insert(Name), but also sets IsUsedInRegularObj.
std::pair<Symbol *, bool> insert(StringRef Name, InputFile *F);
StringRef findByPrefix(StringRef Prefix);
Index: lld/trunk/COFF/SymbolTable.cpp
===================================================================
--- lld/trunk/COFF/SymbolTable.cpp
+++ lld/trunk/COFF/SymbolTable.cpp
@@ -272,20 +272,25 @@
}
}
-std::pair<Symbol *, bool> SymbolTable::insert(StringRef Name, InputFile *File) {
+std::pair<Symbol *, bool> SymbolTable::insert(StringRef Name) {
bool Inserted = false;
Symbol *&Sym = SymMap[CachedHashStringRef(Name)];
if (!Sym) {
Sym = reinterpret_cast<Symbol *>(make<SymbolUnion>());
Sym->IsUsedInRegularObj = false;
Sym->PendingArchiveLoad = false;
Inserted = true;
}
- if (!File || !isa<BitcodeFile>(File))
- Sym->IsUsedInRegularObj = true;
return {Sym, Inserted};
}
+std::pair<Symbol *, bool> SymbolTable::insert(StringRef Name, InputFile *File) {
+ std::pair<Symbol *, bool> Result = insert(Name);
+ if (!File || !isa<BitcodeFile>(File))
+ Result.first->IsUsedInRegularObj = true;
+ return Result;
+}
+
Symbol *SymbolTable::addUndefined(StringRef Name, InputFile *F,
bool IsWeakAlias) {
Symbol *S;
@@ -308,7 +313,7 @@
StringRef Name = Sym.getName();
Symbol *S;
bool WasInserted;
- std::tie(S, WasInserted) = insert(Name, nullptr);
+ std::tie(S, WasInserted) = insert(Name);
if (WasInserted) {
replaceSymbol<Lazy>(S, F, Sym);
return;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51720.164277.patch
Type: text/x-patch
Size: 3115 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180906/3d06768b/attachment.bin>
More information about the llvm-commits
mailing list