<div dir="ltr">Can you explain why there were so many test changes needed?<div><br></div><div>-- Sean Silva</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 7, 2015 at 8:31 AM, Rafael Espindola via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rafael<br>
Date: Mon Dec  7 10:31:41 2015<br>
New Revision: 254917<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=254917&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=254917&view=rev</a><br>
Log:<br>
Link declaration lazily.<br>
<br>
We already linked available_externally and linkonce lazily, this just<br>
adds declarations to the list.<br>
<br>
Modified:<br>
    llvm/trunk/lib/Linker/LinkModules.cpp<br>
    llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll<br>
    llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll<br>
    llvm/trunk/test/Linker/ConstantGlobals.ll<br>
    llvm/trunk/test/Linker/Inputs/opaque.ll<br>
    llvm/trunk/test/Linker/Inputs/testlink.ll<br>
    llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll<br>
    llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll<br>
    llvm/trunk/test/Linker/opaque.ll<br>
    llvm/trunk/test/Linker/testlink.ll<br>
    llvm/trunk/test/Linker/type-unique-dst-types.ll<br>
    llvm/trunk/test/Linker/type-unique-src-type.ll<br>
    llvm/trunk/test/Linker/unnamed-addr1-a.ll<br>
    llvm/trunk/test/Linker/weakextern.ll<br>
<br>
Modified: llvm/trunk/lib/Linker/LinkModules.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Linker/LinkModules.cpp (original)<br>
+++ llvm/trunk/lib/Linker/LinkModules.cpp Mon Dec  7 10:31:41 2015<br>
@@ -1753,6 +1753,9 @@ bool ModuleLinker::linkIfNeeded(GlobalVa<br>
        GV.hasAvailableExternallyLinkage()))<br>
     return false;<br>
<br>
+  if (GV.isDeclaration())<br>
+    return false;<br>
+<br>
   if (const Comdat *SC = GV.getComdat()) {<br>
     bool LinkFromSrc;<br>
     Comdat::SelectionKind SK;<br>
<br>
Modified: llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll (original)<br>
+++ llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll Mon Dec  7 10:31:41 2015<br>
@@ -4,3 +4,7 @@<br>
<br>
 declare void @foo()<br>
<br>
+define void @use_foo() {<br>
+  call void @foo()<br>
+  ret void<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll (original)<br>
+++ llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll Mon Dec  7 10:31:41 2015<br>
@@ -6,13 +6,13 @@<br>
 ; CHECK-NEXT:   ret i32 7<br>
 ; CHECK-NEXT: }<br>
<br>
-; CHECK: declare i32 @foo()<br>
-<br>
 ; CHECK:      define i32 @test() {<br>
 ; CHECK-NEXT:   %X = call i32 @foo()<br>
 ; CHECK-NEXT:   ret i32 %X<br>
 ; CHECK-NEXT: }<br>
<br>
+; CHECK: declare i32 @foo()<br>
+<br>
 declare i32 @foo()<br>
<br>
 define i32 @test() {<br>
<br>
Modified: llvm/trunk/test/Linker/ConstantGlobals.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/ConstantGlobals.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/ConstantGlobals.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/ConstantGlobals.ll (original)<br>
+++ llvm/trunk/test/Linker/ConstantGlobals.ll Mon Dec  7 10:31:41 2015<br>
@@ -6,3 +6,7 @@<br>
<br>
 ; CHECK-DAG: @Y = external global [1 x i32]<br>
 @Y = external global [1 x i32]<br>
+<br>
+define [1 x i32]* @use-Y() {<br>
+  ret [1 x i32] *@Y<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/Inputs/opaque.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/Inputs/opaque.ll (original)<br>
+++ llvm/trunk/test/Linker/Inputs/opaque.ll Mon Dec  7 10:31:41 2015<br>
@@ -11,3 +11,11 @@ define void @f1()  {<br>
   getelementptr %A, %A* null, i32 0<br>
   ret void<br>
 }<br>
+<br>
+define %A* @use_g2() {<br>
+ ret %A* @g2<br>
+}<br>
+<br>
+define %B* @use_g3() {<br>
+  ret %B* @g3<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/Inputs/testlink.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/Inputs/testlink.ll (original)<br>
+++ llvm/trunk/test/Linker/Inputs/testlink.ll Mon Dec  7 10:31:41 2015<br>
@@ -53,4 +53,6 @@ define internal void @testIntern() {<br>
   ret void<br>
 }<br>
<br>
-declare void @VecSizeCrash1(%VecSize)<br>
+define void @VecSizeCrash1(%VecSize) {<br>
+  ret void<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll (original)<br>
+++ llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll Mon Dec  7 10:31:41 2015<br>
@@ -1,3 +1,7 @@<br>
 %A.11 = type { %B }<br>
 %B = type { i8 }<br>
 @g1 = external global %A.11<br>
+<br>
+define %A.11* @use_g1() {<br>
+  ret %A.11* @g1<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll (original)<br>
+++ llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll Mon Dec  7 10:31:41 2015<br>
@@ -1,2 +1,6 @@<br>
 %A.11 = type opaque<br>
 @g2 = external global %A.11<br>
+<br>
+define %A.11* @use_g2() {<br>
+  ret %A.11* @g2<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/opaque.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/opaque.ll (original)<br>
+++ llvm/trunk/test/Linker/opaque.ll Mon Dec  7 10:31:41 2015<br>
@@ -19,3 +19,7 @@<br>
 %C = type { %A }<br>
<br>
 @g1 = external global %B<br>
+<br>
+define %B* @use_g1() {<br>
+  ret %B* @g1<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/testlink.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/testlink.ll (original)<br>
+++ llvm/trunk/test/Linker/testlink.ll Mon Dec  7 10:31:41 2015<br>
@@ -32,6 +32,11 @@<br>
<br>
 ; CHECK-DAG: @0 = external global i32<br>
 @0 = external global i32<br>
+<br>
+define i32* @use0() {<br>
+  ret i32* @0<br>
+}<br>
+<br>
 ; CHECK-DAG: @Inte = global i32 1<br>
 @Inte = global i32 1<br>
<br>
@@ -101,4 +106,6 @@ define void @testIntern() {<br>
   ret void<br>
 }<br>
<br>
-declare void @VecSizeCrash(%VecSize)<br>
+define void @VecSizeCrash(%VecSize) {<br>
+  ret void<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/type-unique-dst-types.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-dst-types.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-dst-types.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/type-unique-dst-types.ll (original)<br>
+++ llvm/trunk/test/Linker/type-unique-dst-types.ll Mon Dec  7 10:31:41 2015<br>
@@ -17,3 +17,7 @@<br>
 %A = type { %B }<br>
 %B = type { i8 }<br>
 @g3 = external global %A<br>
+<br>
+define %A* @use_g3() {<br>
+  ret %A* @g3<br>
+}<br>
<br>
Modified: llvm/trunk/test/Linker/type-unique-src-type.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-src-type.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-src-type.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/type-unique-src-type.ll (original)<br>
+++ llvm/trunk/test/Linker/type-unique-src-type.ll Mon Dec  7 10:31:41 2015<br>
@@ -10,7 +10,7 @@<br>
 ; CHECK-NEXT: %B = type { %A }<br>
 ; CHECK-NEXT: %A = type { i8 }<br>
<br>
-; CHECK: @g1 = external global %C.0<br>
+; CHECK: @g1 = global %C.0 zeroinitializer<br>
 ; CHECK:  getelementptr %C.0, %C.0* null, i64 0, i32 0, i32 0<br>
<br>
 %A   = type { i8 }<br>
@@ -21,4 +21,4 @@ define void @f1() {<br>
   getelementptr %C, %C* null, i64 0, i32 0, i32 0<br>
   ret void<br>
 }<br>
-@g1 = external global %C.0<br>
+@g1 = global %C.0 zeroinitializer<br>
<br>
Modified: llvm/trunk/test/Linker/unnamed-addr1-a.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/unnamed-addr1-a.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/unnamed-addr1-a.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/unnamed-addr1-a.ll (original)<br>
+++ llvm/trunk/test/Linker/unnamed-addr1-a.ll Mon Dec  7 10:31:41 2015<br>
@@ -15,6 +15,11 @@ define weak void @func-b() unnamed_addr<br>
 @global-c = common unnamed_addr global i32 0<br>
 ; CHECK-DAG: @global-c = common unnamed_addr global i32 0<br>
 @global-d = external global i32<br>
+<br>
+define i32* @use-global-d() {<br>
+  ret i32* @global-d<br>
+}<br>
+<br>
 ; CHECK-DAG: @global-d = global i32 42<br>
 @global-e = external unnamed_addr global i32<br>
 ; CHECK-DAG: @global-e = unnamed_addr global i32 42<br>
@@ -27,6 +32,11 @@ define weak void @func-b() unnamed_addr<br>
 ; CHECK-DAG: @alias-b = unnamed_addr alias i32, i32* @global-f<br>
<br>
 declare void @func-c()<br>
+define void @use-func-c() {<br>
+  call void @func-c()<br>
+  ret void<br>
+}<br>
+<br>
 ; CHECK-DAG: define weak void @func-c() {<br>
 define weak void @func-d() { ret void }<br>
 ; CHECK-DAG: define weak void @func-d() {<br>
<br>
Modified: llvm/trunk/test/Linker/weakextern.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/weakextern.ll?rev=254917&r1=254916&r2=254917&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/weakextern.ll?rev=254917&r1=254916&r2=254917&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/Linker/weakextern.ll (original)<br>
+++ llvm/trunk/test/Linker/weakextern.ll Mon Dec  7 10:31:41 2015<br>
@@ -6,3 +6,7 @@<br>
 @kallsyms_names = extern_weak global [0 x i8]<br>
 @MyVar = extern_weak global i32<br>
 @Inte = extern_weak global i32<br>
+<br>
+define weak [0 x i8]* @use_kallsyms_names() {<br>
+  ret [0 x i8]* @kallsyms_names<br>
+}<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>