[llvm] r323407 - [IRMover] Add comment and fix test case

Rafael Avila de Espindola via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 30 15:19:13 PST 2018


Thanks!


Eugene Leviant via llvm-commits <llvm-commits at lists.llvm.org> writes:

> Author: evgeny777
> Date: Thu Jan 25 00:35:52 2018
> New Revision: 323407
>
> URL: http://llvm.org/viewvc/llvm-project?rev=323407&view=rev
> Log:
> [IRMover] Add comment and fix test case
>
> Modified:
>     llvm/trunk/lib/Linker/IRMover.cpp
>     llvm/trunk/test/Linker/type-unique-dst-types.ll
>
> Modified: llvm/trunk/lib/Linker/IRMover.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Linker/IRMover.cpp?rev=323407&r1=323406&r2=323407&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Linker/IRMover.cpp (original)
> +++ llvm/trunk/lib/Linker/IRMover.cpp Thu Jan 25 00:35:52 2018
> @@ -95,6 +95,12 @@ void TypeMapTy::addTypeMapping(Type *Dst
>      for (StructType *Ty : SpeculativeDstOpaqueTypes)
>        DstResolvedOpaqueTypes.erase(Ty);
>    } else {
> +    // SrcTy and DstTy are recursively ismorphic. We clear names of SrcTy
> +    // and all its descendants to lower amount of renaming in LLVM context
> +    // Renaming occurs because we load all source modules to the same context
> +    // and declaration with existing name gets renamed (i.e Foo -> Foo.42).
> +    // As a result we may get several different types in the destination
> +    // module, which are in fact the same.
>      for (Type *Ty : SpeculativeTypes)
>        if (auto *STy = dyn_cast<StructType>(Ty))
>          if (STy->hasName())
>
> 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=323407&r1=323406&r2=323407&view=diff
> ==============================================================================
> --- llvm/trunk/test/Linker/type-unique-dst-types.ll (original)
> +++ llvm/trunk/test/Linker/type-unique-dst-types.ll Thu Jan 25 00:35:52 2018
> @@ -1,6 +1,8 @@
>  ; RUN: llvm-link %p/type-unique-dst-types.ll \
>  ; RUN:           %p/Inputs/type-unique-dst-types2.ll \
> -; RUN:           %p/Inputs/type-unique-dst-types3.ll -S -o - | FileCheck %s
> +; RUN:           %p/Inputs/type-unique-dst-types3.ll -S -o %t1.ll
> +; RUN: cat %t1.ll | FileCheck %s
> +; RUN: cat %t1.ll | FileCheck --check-prefix=RENAMED %s
>  
>  ; This tests the importance of keeping track of which types are part of the
>  ; destination module.
> @@ -14,6 +16,8 @@
>  ; CHECK: @g1 = external global %A
>  ; CHECK: @g2 = external global %A
>  
> +; RENAMED-NOT: A.11
> +
>  %A = type { %B }
>  %B = type { i8 }
>  @g3 = external global %A
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list