[lld] r265374 - Fix another case of propagating IsUsedRegularObj.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 4 18:38:44 PDT 2016


Author: rafael
Date: Mon Apr  4 20:38:43 2016
New Revision: 265374

URL: http://llvm.org/viewvc/llvm-project?rev=265374&view=rev
Log:
Fix another case of propagating IsUsedRegularObj.

I have an idea on how to clean this up, but lets get the tests passing
first.

Added:
    lld/trunk/test/ELF/lto/Inputs/archive-3.ll
    lld/trunk/test/ELF/lto/archive-3.ll
Modified:
    lld/trunk/ELF/SymbolTable.cpp

Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=265374&r1=265373&r2=265374&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Mon Apr  4 20:38:43 2016
@@ -228,7 +228,8 @@ template <class ELFT> void SymbolTable<E
     }
     // Found a definition for something also in an archive.
     // Ignore the archive definition.
-    New->setUsedInRegularObj();
+    if (L->isUsedInRegularObj())
+      New->setUsedInRegularObj();
     Sym->Body = New;
     return;
   }
@@ -282,6 +283,8 @@ template <class ELFT> void SymbolTable<E
 
 template <class ELFT>
 void SymbolTable<ELFT>::addMemberFile(Undefined *Undef, Lazy *L) {
+  if (Undef->isUsedInRegularObj())
+    L->setUsedInRegularObj();
   // Weak undefined symbols should not fetch members from archives.
   // If we were to keep old symbol we would not know that an archive member was
   // available if a strong undefined symbol shows up afterwards in the link.

Added: lld/trunk/test/ELF/lto/Inputs/archive-3.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/Inputs/archive-3.ll?rev=265374&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/Inputs/archive-3.ll (added)
+++ lld/trunk/test/ELF/lto/Inputs/archive-3.ll Mon Apr  4 20:38:43 2016
@@ -0,0 +1,5 @@
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+define void @foo() {
+  ret void
+}

Added: lld/trunk/test/ELF/lto/archive-3.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/archive-3.ll?rev=265374&view=auto
==============================================================================
--- lld/trunk/test/ELF/lto/archive-3.ll (added)
+++ lld/trunk/test/ELF/lto/archive-3.ll Mon Apr  4 20:38:43 2016
@@ -0,0 +1,19 @@
+; REQUIRES: x86
+; RUN: llvm-as %S/Inputs/archive-3.ll -o %t1.o
+; RUN: llvm-as %s -o %t2.o
+
+; RUN: ld.lld -m elf_x86_64 %t1.o %t2.o  -o %t3 -save-temps
+; RUN: llvm-dis %t3.lto.bc -o - | FileCheck %s
+
+; RUN: rm -f %t.a
+; RUN: llvm-ar rcs %t.a %t1.o
+; RUN: ld.lld -m elf_x86_64 %t.a %t1.o %t2.o  -o %t3 -save-temps
+; RUN: llvm-dis %t3.lto.bc -o - | FileCheck %s
+
+; CHECK: define internal void @foo() {
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+define void @_start() {
+  ret void
+}




More information about the llvm-commits mailing list