[llvm] r254917 - Link declaration lazily.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 8 14:40:42 PST 2015


Can you explain why there were so many test changes needed?

-- Sean Silva

On Mon, Dec 7, 2015 at 8:31 AM, Rafael Espindola via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: rafael
> Date: Mon Dec  7 10:31:41 2015
> New Revision: 254917
>
> URL: http://llvm.org/viewvc/llvm-project?rev=254917&view=rev
> Log:
> Link declaration lazily.
>
> We already linked available_externally and linkonce lazily, this just
> adds declarations to the list.
>
> Modified:
>     llvm/trunk/lib/Linker/LinkModules.cpp
>     llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll
>     llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll
>     llvm/trunk/test/Linker/ConstantGlobals.ll
>     llvm/trunk/test/Linker/Inputs/opaque.ll
>     llvm/trunk/test/Linker/Inputs/testlink.ll
>     llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll
>     llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll
>     llvm/trunk/test/Linker/opaque.ll
>     llvm/trunk/test/Linker/testlink.ll
>     llvm/trunk/test/Linker/type-unique-dst-types.ll
>     llvm/trunk/test/Linker/type-unique-src-type.ll
>     llvm/trunk/test/Linker/unnamed-addr1-a.ll
>     llvm/trunk/test/Linker/weakextern.ll
>
> Modified: llvm/trunk/lib/Linker/LinkModules.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/LinkModules.cpp?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Linker/LinkModules.cpp (original)
> +++ llvm/trunk/lib/Linker/LinkModules.cpp Mon Dec  7 10:31:41 2015
> @@ -1753,6 +1753,9 @@ bool ModuleLinker::linkIfNeeded(GlobalVa
>         GV.hasAvailableExternallyLinkage()))
>      return false;
>
> +  if (GV.isDeclaration())
> +    return false;
> +
>    if (const Comdat *SC = GV.getComdat()) {
>      bool LinkFromSrc;
>      Comdat::SelectionKind SK;
>
> Modified: llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll (original)
> +++ llvm/trunk/test/Linker/2003-04-23-LinkOnceLost.ll Mon Dec  7 10:31:41
> 2015
> @@ -4,3 +4,7 @@
>
>  declare void @foo()
>
> +define void @use_foo() {
> +  call void @foo()
> +  ret void
> +}
>
> Modified: llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll (original)
> +++ llvm/trunk/test/Linker/2003-05-31-LinkerRename.ll Mon Dec  7 10:31:41
> 2015
> @@ -6,13 +6,13 @@
>  ; CHECK-NEXT:   ret i32 7
>  ; CHECK-NEXT: }
>
> -; CHECK: declare i32 @foo()
> -
>  ; CHECK:      define i32 @test() {
>  ; CHECK-NEXT:   %X = call i32 @foo()
>  ; CHECK-NEXT:   ret i32 %X
>  ; CHECK-NEXT: }
>
> +; CHECK: declare i32 @foo()
> +
>  declare i32 @foo()
>
>  define i32 @test() {
>
> Modified: llvm/trunk/test/Linker/ConstantGlobals.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/ConstantGlobals.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/ConstantGlobals.ll (original)
> +++ llvm/trunk/test/Linker/ConstantGlobals.ll Mon Dec  7 10:31:41 2015
> @@ -6,3 +6,7 @@
>
>  ; CHECK-DAG: @Y = external global [1 x i32]
>  @Y = external global [1 x i32]
> +
> +define [1 x i32]* @use-Y() {
> +  ret [1 x i32] *@Y
> +}
>
> Modified: llvm/trunk/test/Linker/Inputs/opaque.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/Inputs/opaque.ll (original)
> +++ llvm/trunk/test/Linker/Inputs/opaque.ll Mon Dec  7 10:31:41 2015
> @@ -11,3 +11,11 @@ define void @f1()  {
>    getelementptr %A, %A* null, i32 0
>    ret void
>  }
> +
> +define %A* @use_g2() {
> + ret %A* @g2
> +}
> +
> +define %B* @use_g3() {
> +  ret %B* @g3
> +}
>
> Modified: llvm/trunk/test/Linker/Inputs/testlink.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/Inputs/testlink.ll (original)
> +++ llvm/trunk/test/Linker/Inputs/testlink.ll Mon Dec  7 10:31:41 2015
> @@ -53,4 +53,6 @@ define internal void @testIntern() {
>    ret void
>  }
>
> -declare void @VecSizeCrash1(%VecSize)
> +define void @VecSizeCrash1(%VecSize) {
> +  ret void
> +}
>
> Modified: llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll (original)
> +++ llvm/trunk/test/Linker/Inputs/type-unique-dst-types2.ll Mon Dec  7
> 10:31:41 2015
> @@ -1,3 +1,7 @@
>  %A.11 = type { %B }
>  %B = type { i8 }
>  @g1 = external global %A.11
> +
> +define %A.11* @use_g1() {
> +  ret %A.11* @g1
> +}
>
> Modified: llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll (original)
> +++ llvm/trunk/test/Linker/Inputs/type-unique-dst-types3.ll Mon Dec  7
> 10:31:41 2015
> @@ -1,2 +1,6 @@
>  %A.11 = type opaque
>  @g2 = external global %A.11
> +
> +define %A.11* @use_g2() {
> +  ret %A.11* @g2
> +}
>
> Modified: llvm/trunk/test/Linker/opaque.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/opaque.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/opaque.ll (original)
> +++ llvm/trunk/test/Linker/opaque.ll Mon Dec  7 10:31:41 2015
> @@ -19,3 +19,7 @@
>  %C = type { %A }
>
>  @g1 = external global %B
> +
> +define %B* @use_g1() {
> +  ret %B* @g1
> +}
>
> Modified: llvm/trunk/test/Linker/testlink.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/testlink.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/testlink.ll (original)
> +++ llvm/trunk/test/Linker/testlink.ll Mon Dec  7 10:31:41 2015
> @@ -32,6 +32,11 @@
>
>  ; CHECK-DAG: @0 = external global i32
>  @0 = external global i32
> +
> +define i32* @use0() {
> +  ret i32* @0
> +}
> +
>  ; CHECK-DAG: @Inte = global i32 1
>  @Inte = global i32 1
>
> @@ -101,4 +106,6 @@ define void @testIntern() {
>    ret void
>  }
>
> -declare void @VecSizeCrash(%VecSize)
> +define void @VecSizeCrash(%VecSize) {
> +  ret void
> +}
>
> Modified: llvm/trunk/test/Linker/type-unique-dst-types.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-dst-types.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/type-unique-dst-types.ll (original)
> +++ llvm/trunk/test/Linker/type-unique-dst-types.ll Mon Dec  7 10:31:41
> 2015
> @@ -17,3 +17,7 @@
>  %A = type { %B }
>  %B = type { i8 }
>  @g3 = external global %A
> +
> +define %A* @use_g3() {
> +  ret %A* @g3
> +}
>
> Modified: llvm/trunk/test/Linker/type-unique-src-type.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/type-unique-src-type.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/type-unique-src-type.ll (original)
> +++ llvm/trunk/test/Linker/type-unique-src-type.ll Mon Dec  7 10:31:41 2015
> @@ -10,7 +10,7 @@
>  ; CHECK-NEXT: %B = type { %A }
>  ; CHECK-NEXT: %A = type { i8 }
>
> -; CHECK: @g1 = external global %C.0
> +; CHECK: @g1 = global %C.0 zeroinitializer
>  ; CHECK:  getelementptr %C.0, %C.0* null, i64 0, i32 0, i32 0
>
>  %A   = type { i8 }
> @@ -21,4 +21,4 @@ define void @f1() {
>    getelementptr %C, %C* null, i64 0, i32 0, i32 0
>    ret void
>  }
> - at g1 = external global %C.0
> + at g1 = global %C.0 zeroinitializer
>
> Modified: llvm/trunk/test/Linker/unnamed-addr1-a.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/unnamed-addr1-a.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/unnamed-addr1-a.ll (original)
> +++ llvm/trunk/test/Linker/unnamed-addr1-a.ll Mon Dec  7 10:31:41 2015
> @@ -15,6 +15,11 @@ define weak void @func-b() unnamed_addr
>  @global-c = common unnamed_addr global i32 0
>  ; CHECK-DAG: @global-c = common unnamed_addr global i32 0
>  @global-d = external global i32
> +
> +define i32* @use-global-d() {
> +  ret i32* @global-d
> +}
> +
>  ; CHECK-DAG: @global-d = global i32 42
>  @global-e = external unnamed_addr global i32
>  ; CHECK-DAG: @global-e = unnamed_addr global i32 42
> @@ -27,6 +32,11 @@ define weak void @func-b() unnamed_addr
>  ; CHECK-DAG: @alias-b = unnamed_addr alias i32, i32* @global-f
>
>  declare void @func-c()
> +define void @use-func-c() {
> +  call void @func-c()
> +  ret void
> +}
> +
>  ; CHECK-DAG: define weak void @func-c() {
>  define weak void @func-d() { ret void }
>  ; CHECK-DAG: define weak void @func-d() {
>
> Modified: llvm/trunk/test/Linker/weakextern.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Linker/weakextern.ll?rev=254917&r1=254916&r2=254917&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/Linker/weakextern.ll (original)
> +++ llvm/trunk/test/Linker/weakextern.ll Mon Dec  7 10:31:41 2015
> @@ -6,3 +6,7 @@
>  @kallsyms_names = extern_weak global [0 x i8]
>  @MyVar = extern_weak global i32
>  @Inte = extern_weak global i32
> +
> +define weak [0 x i8]* @use_kallsyms_names() {
> +  ret [0 x i8]* @kallsyms_names
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151208/8584b0d8/attachment.html>


More information about the llvm-commits mailing list