[PATCH] COFF: Allow the combined LTO object to define new symbols.
Peter Collingbourne
peter at pcc.me.uk
Mon Jun 8 19:57:18 PDT 2015
REPOSITORY
rL LLVM
http://reviews.llvm.org/D10331
Files:
lld/trunk/COFF/SymbolTable.cpp
lld/trunk/test/COFF/lto-new-symbol.ll
Index: lld/trunk/COFF/SymbolTable.cpp
===================================================================
--- lld/trunk/COFF/SymbolTable.cpp
+++ lld/trunk/COFF/SymbolTable.cpp
@@ -269,12 +269,18 @@
if (!Body->isExternal())
continue;
- // Find an existing Symbol. We should not see any new symbols at this point.
+ // Find an existing Symbol. We should not see any new undefined symbols at
+ // this point.
StringRef Name = Body->getName();
- Symbol *Sym = Symtab[Name];
+ Symbol *&Sym = Symtab[Name];
if (!Sym) {
- llvm::errs() << "LTO: unexpected new symbol: " << Name << '\n';
- return make_error_code(LLDError::BrokenFile);
+ if (!isa<Defined>(Body)) {
+ llvm::errs() << "LTO: undefined symbol: " << Name << '\n';
+ return make_error_code(LLDError::BrokenFile);
+ }
+ Sym = new (Alloc) Symbol(Body);
+ Body->setBackref(Sym);
+ continue;
}
Body->setBackref(Sym);
Index: lld/trunk/test/COFF/lto-new-symbol.ll
===================================================================
--- lld/trunk/test/COFF/lto-new-symbol.ll
+++ lld/trunk/test/COFF/lto-new-symbol.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as -o %t.obj %s
+; RUN: lld -flavor link2 /out:%t.exe /entry:foo /subsystem:console %t.obj
+
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-pc-windows-msvc"
+
+define void @foo(<4 x i32>* %p, <4 x float>* %q, i1 %t) nounwind {
+entry:
+ br label %loop
+loop:
+ store <4 x i32><i32 1073741824, i32 1073741824, i32 1073741824, i32 1073741824>, <4 x i32>* %p
+ store <4 x float><float 2.0, float 2.0, float 2.0, float 2.0>, <4 x float>* %q
+ br i1 %t, label %loop, label %ret
+ret:
+ ret void
+}
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10331.27356.patch
Type: text/x-patch
Size: 1729 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150609/1e1c8960/attachment.bin>
More information about the llvm-commits
mailing list