diff options
Diffstat (limited to 'test/Linker/Inputs')
39 files changed, 341 insertions, 161 deletions
diff --git a/test/Linker/Inputs/alignment.ll b/test/Linker/Inputs/alignment.ll new file mode 100644 index 0000000..337cb8e --- /dev/null +++ b/test/Linker/Inputs/alignment.ll @@ -0,0 +1,12 @@ +@A = global i32 7, align 8 +@B = global i32 7, align 4 + +define void @C() align 8 { + ret void +} + +define void @D() align 4 { + ret void +} + +@E = common global i32 0, align 8 diff --git a/test/Linker/Inputs/apple-version/1.ll b/test/Linker/Inputs/apple-version/1.ll new file mode 100644 index 0000000..5cafa5e --- /dev/null +++ b/test/Linker/Inputs/apple-version/1.ll @@ -0,0 +1 @@ +target triple = "x86_64-apple-macosx10.10.0" diff --git a/test/Linker/Inputs/apple-version/2.ll b/test/Linker/Inputs/apple-version/2.ll new file mode 100644 index 0000000..b63ea1f --- /dev/null +++ b/test/Linker/Inputs/apple-version/2.ll @@ -0,0 +1 @@ +target triple = "x86_64-apple-macosx10.8.0" diff --git a/test/Linker/Inputs/apple-version/3.ll b/test/Linker/Inputs/apple-version/3.ll new file mode 100644 index 0000000..68e58ca --- /dev/null +++ b/test/Linker/Inputs/apple-version/3.ll @@ -0,0 +1 @@ +target triple = "i386-apple-macosx10.9.0" diff --git a/test/Linker/Inputs/apple-version/4.ll b/test/Linker/Inputs/apple-version/4.ll new file mode 100644 index 0000000..467a634 --- /dev/null +++ b/test/Linker/Inputs/apple-version/4.ll @@ -0,0 +1 @@ +target triple = "x86_64h-apple-macosx10.9.0" diff --git a/test/Linker/Inputs/comdat.ll b/test/Linker/Inputs/comdat.ll index fdcca49..74a805c 100644 --- a/test/Linker/Inputs/comdat.ll +++ b/test/Linker/Inputs/comdat.ll @@ -2,19 +2,19 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat largest -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) -define i32 @bar() comdat $foo { +define i32 @bar() comdat($foo) { ret i32 43 } $qux = comdat largest -@qux = global i32 13, comdat $qux -@in_unselected_group = global i32 13, comdat $qux +@qux = global i32 13, comdat($qux) +@in_unselected_group = global i32 13, comdat($qux) -define i32 @baz() comdat $qux { +define i32 @baz() comdat($qux) { ret i32 13 } $any = comdat any -@any = global i64 7, comdat $any +@any = global i64 7, comdat($any) diff --git a/test/Linker/Inputs/comdat2.ll b/test/Linker/Inputs/comdat2.ll index 9e18304..ed2af62 100644 --- a/test/Linker/Inputs/comdat2.ll +++ b/test/Linker/Inputs/comdat2.ll @@ -1,2 +1,2 @@ $foo = comdat largest -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) diff --git a/test/Linker/Inputs/comdat3.ll b/test/Linker/Inputs/comdat3.ll index 06f08b9..a1b730f 100644 --- a/test/Linker/Inputs/comdat3.ll +++ b/test/Linker/Inputs/comdat3.ll @@ -1,2 +1,2 @@ $foo = comdat noduplicates -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) diff --git a/test/Linker/Inputs/comdat4.ll b/test/Linker/Inputs/comdat4.ll index bbfe3f7..5b4b812 100644 --- a/test/Linker/Inputs/comdat4.ll +++ b/test/Linker/Inputs/comdat4.ll @@ -2,4 +2,4 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat samesize -@foo = global i64 42, comdat $foo +@foo = global i64 42, comdat($foo) diff --git a/test/Linker/Inputs/comdat5.ll b/test/Linker/Inputs/comdat5.ll index 800af18..98c42b7 100644 --- a/test/Linker/Inputs/comdat5.ll +++ b/test/Linker/Inputs/comdat5.ll @@ -1,15 +1,9 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" -target triple = "i686-pc-windows-msvc" -%MSRTTICompleteObjectLocator = type { i32, i32, i32, i8*, %MSRTTIClassHierarchyDescriptor* } -%MSRTTIClassHierarchyDescriptor = type { i32, i32, i32, %MSRTTIBaseClassDescriptor** } -%MSRTTIBaseClassDescriptor = type { i8*, i32, i32, i32, i32, i32, %MSRTTIClassHierarchyDescriptor* } -%struct.S = type { i32 (...)** } +$foo = comdat largest -$"\01??_7S@@6B@" = comdat largest +@zed = external constant i8 +@some_name = private unnamed_addr constant [2 x i8*] [i8* @zed, i8* bitcast (void ()* @bar to i8*)], comdat($foo) +@foo = alias getelementptr([2 x i8*]* @some_name, i32 0, i32 1) -@"\01??_R4S@@6B@" = external constant %MSRTTICompleteObjectLocator -@some_name = private unnamed_addr constant [2 x i8*] [i8* bitcast (%MSRTTICompleteObjectLocator* @"\01??_R4S@@6B@" to i8*), i8* bitcast (void (%struct.S*, i32)* @"\01??_GS@@UAEPAXI@Z" to i8*)], comdat $"\01??_7S@@6B@" -@"\01??_7S@@6B@" = alias getelementptr([2 x i8*]* @some_name, i32 0, i32 1) - -declare x86_thiscallcc void @"\01??_GS@@UAEPAXI@Z"(%struct.S*, i32) unnamed_addr +declare void @bar() unnamed_addr diff --git a/test/Linker/Inputs/comdat8.ll b/test/Linker/Inputs/comdat8.ll index eaa9625..a2833b0 100644 --- a/test/Linker/Inputs/comdat8.ll +++ b/test/Linker/Inputs/comdat8.ll @@ -1,4 +1,4 @@ $c1 = comdat largest -@some_name = private unnamed_addr constant i32 42, comdat $c1 +@some_name = private unnamed_addr constant i32 42, comdat($c1) @c1 = alias i32* @some_name diff --git a/test/Linker/Inputs/comdat9.ll b/test/Linker/Inputs/comdat9.ll deleted file mode 100644 index 679dbde..0000000 --- a/test/Linker/Inputs/comdat9.ll +++ /dev/null @@ -1,5 +0,0 @@ -$c = comdat any -@a = alias void ()* @f -define internal void @f() comdat $c { - ret void -} diff --git a/test/Linker/Inputs/distinct.ll b/test/Linker/Inputs/distinct.ll new file mode 100644 index 0000000..07ae224 --- /dev/null +++ b/test/Linker/Inputs/distinct.ll @@ -0,0 +1,13 @@ +@global = linkonce global i32 0 + +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8} + +!0 = !{} +!1 = !{!0} +!2 = !{i32* @global} +!3 = distinct !{} +!4 = distinct !{!0} +!5 = distinct !{i32* @global} +!6 = !{!3} +!7 = !{!4} +!8 = !{!5} diff --git a/test/Linker/Inputs/ident.a.ll b/test/Linker/Inputs/ident.a.ll index ebda940..3c3fb19 100644 --- a/test/Linker/Inputs/ident.a.ll +++ b/test/Linker/Inputs/ident.a.ll @@ -1,3 +1,3 @@ !llvm.ident = !{!0, !1} -!0 = metadata !{metadata !"Compiler V1"} -!1 = metadata !{metadata !"Compiler V2"} +!0 = !{!"Compiler V1"} +!1 = !{!"Compiler V2"} diff --git a/test/Linker/Inputs/ident.b.ll b/test/Linker/Inputs/ident.b.ll index 21ee1d8..d9daf85 100644 --- a/test/Linker/Inputs/ident.b.ll +++ b/test/Linker/Inputs/ident.b.ll @@ -1,2 +1,2 @@ !llvm.ident = !{!0} -!0 = metadata !{metadata !"Compiler V3"} +!0 = !{!"Compiler V3"} diff --git a/test/Linker/Inputs/mdlocation.ll b/test/Linker/Inputs/mdlocation.ll new file mode 100644 index 0000000..f85c1dc --- /dev/null +++ b/test/Linker/Inputs/mdlocation.ll @@ -0,0 +1,13 @@ +!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} + +!0 = !{} ; Use this as a scope. +!1 = !MDLocation(line: 3, column: 7, scope: !0) +!2 = !MDLocation(line: 3, column: 7, scope: !0, inlinedAt: !1) +!3 = !MDLocation(line: 3, column: 7, scope: !0, inlinedAt: !2) +!4 = distinct !{} ; Test actual remapping. +!5 = !MDLocation(line: 3, column: 7, scope: !4) +!6 = !MDLocation(line: 3, column: 7, scope: !4, inlinedAt: !5) +!7 = !MDLocation(line: 3, column: 7, scope: !4, inlinedAt: !6) +; Test distinct nodes. +!8 = distinct !MDLocation(line: 3, column: 7, scope: !0) +!9 = distinct !MDLocation(line: 3, column: 7, scope: !0, inlinedAt: !8) diff --git a/test/Linker/Inputs/module-flags-dont-change-others.ll b/test/Linker/Inputs/module-flags-dont-change-others.ll new file mode 100644 index 0000000..61d57e5 --- /dev/null +++ b/test/Linker/Inputs/module-flags-dont-change-others.ll @@ -0,0 +1,8 @@ +!llvm.module.flags = !{!3, !4, !5} + +!0 = !{} +!1 = !{!0} +!2 = !{!0, !1} +!3 = !{i32 4, !"foo", i32 37} ; Override the "foo" value. +!4 = !{i32 5, !"bar", !1} +!5 = !{i32 6, !"baz", !2} diff --git a/test/Linker/Inputs/module-flags-pic-2-b.ll b/test/Linker/Inputs/module-flags-pic-2-b.ll index 228e04a..0d78caf 100644 --- a/test/Linker/Inputs/module-flags-pic-2-b.ll +++ b/test/Linker/Inputs/module-flags-pic-2-b.ll @@ -1,3 +1,3 @@ -!0 = metadata !{ i32 1, metadata !"PIC Level", i32 2 } +!0 = !{ i32 1, !"PIC Level", i32 2 } !llvm.module.flags = !{!0} diff --git a/test/Linker/Inputs/opaque.ll b/test/Linker/Inputs/opaque.ll new file mode 100644 index 0000000..2b0d7d3 --- /dev/null +++ b/test/Linker/Inputs/opaque.ll @@ -0,0 +1,13 @@ +%A = type { } +%B = type { %D, %E, %B* } + +%D = type { %E } +%E = type opaque + +@g2 = external global %A +@g3 = external global %B + +define void @f1() { + getelementptr %A* null, i32 0 + ret void +} diff --git a/test/Linker/Inputs/pr21374.ll b/test/Linker/Inputs/pr21374.ll new file mode 100644 index 0000000..fcddeaf --- /dev/null +++ b/test/Linker/Inputs/pr21374.ll @@ -0,0 +1,4 @@ +%foo = type { i8* } +define void @g(%foo* %x) { + ret void +} diff --git a/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll b/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll new file mode 100644 index 0000000..a5de89f --- /dev/null +++ b/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll @@ -0,0 +1,27 @@ +%struct.Class = type { i8 } + +define weak_odr i32 @_ZN5ClassIiE3fooEv(%struct.Class* %this) align 2 { +entry: + %this.addr = alloca %struct.Class*, align 8 + store %struct.Class* %this, %struct.Class** %this.addr, align 8 + %this1 = load %struct.Class** %this.addr + ret i32 0, !dbg !12 +} + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!8, !9, !10} +!llvm.ident = !{!11} + +!0 = !{!"0x11\004\00clang version 3.6.0 (trunk 224193) (llvm/trunk 224197)\000\00\000\00\002", !1, !2, !2, !3, !2, !2} ; [ DW_TAG_compile_unit ] [/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2/t2.cpp] [DW_LANG_C_plus_plus] +!1 = !{!"t2.cpp", !"/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2"} +!2 = !{} +!3 = !{!4} +!4 = !{!"0x2e\00foo\00foo\00\002\000\001\000\000\00256\000\002", !5, !6, !7, null, i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv, null, null, !2} ; [ DW_TAG_subprogram ] [line 2] [def] [foo] +!5 = !{!"../t.h", !"/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2"} +!6 = !{!"0x29", !5} ; [ DW_TAG_file_type ] [/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2/../t.h] +!7 = !{!"0x15\00\000\000\000\000\000\000", null, null, null, !2, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!8 = !{i32 2, !"Dwarf Version", i32 2} +!9 = !{i32 2, !"Debug Info Version", i32 2} +!10 = !{i32 1, !"PIC Level", i32 2} +!11 = !{!"clang version 3.6.0 (trunk 224193) (llvm/trunk 224197)"} +!12 = !MDLocation(line: 2, column: 15, scope: !4) diff --git a/test/Linker/Inputs/targettriple-a.ll b/test/Linker/Inputs/targettriple-a.ll index 296d2df..b8c7901 100644 --- a/test/Linker/Inputs/targettriple-a.ll +++ b/test/Linker/Inputs/targettriple-a.ll @@ -1 +1 @@ -target triple = "e" +target triple = "x86_64-unknown-linux-gnu" diff --git a/test/Linker/Inputs/targettriple-b.ll b/test/Linker/Inputs/targettriple-b.ll index cca872e..0122b4a 100644 --- a/test/Linker/Inputs/targettriple-b.ll +++ b/test/Linker/Inputs/targettriple-b.ll @@ -1 +1 @@ -target triple = "E" +target triple = "i386-unknown-linux-gnu" diff --git a/test/Linker/Inputs/targettriple-c.ll b/test/Linker/Inputs/targettriple-c.ll new file mode 100644 index 0000000..e669a4c --- /dev/null +++ b/test/Linker/Inputs/targettriple-c.ll @@ -0,0 +1 @@ +target triple = "x86_64h-unknown-linux-gnu" diff --git a/test/Linker/Inputs/testlink.ll b/test/Linker/Inputs/testlink.ll new file mode 100644 index 0000000..89f02ba --- /dev/null +++ b/test/Linker/Inputs/testlink.ll @@ -0,0 +1,56 @@ +%intlist = type { %intlist*, i32 } + + +%Ty1 = type { %Ty2* } +%Ty2 = type opaque + +%VecSize = type { <10 x i32> } + +@GVTy1 = global %Ty1* null +@GVTy2 = external global %Ty2* + + +@MyVar = global i32 4 +@MyIntList = external global %intlist +@AConst = constant i32 1234 + +;; Intern in both testlink[12].ll +@Intern1 = internal constant i32 52 + +@Use2Intern1 = global i32* @Intern1 + +;; Intern in one but not in other +@Intern2 = constant i32 12345 + +@MyIntListPtr = constant { %intlist* } { %intlist* @MyIntList } +@MyVarPtr = linkonce global { i32* } { i32* @MyVar } +@0 = constant i32 412 + +; Provides definition of Struct1 and of S1GV. +%Struct1 = type { i32 } +@S1GV = global %Struct1* null + +define i32 @foo(i32 %blah) { + store i32 %blah, i32* @MyVar + %idx = getelementptr %intlist* @MyIntList, i64 0, i32 1 + store i32 12, i32* %idx + %ack = load i32* @0 + %fzo = add i32 %ack, %blah + ret i32 %fzo +} + +declare void @unimp(float, double) + +define internal void @testintern() { + ret void +} + +define void @Testintern() { + ret void +} + +define internal void @testIntern() { + ret void +} + +declare void @VecSizeCrash1(%VecSize) diff --git a/test/Linker/Inputs/type-unique-alias.ll b/test/Linker/Inputs/type-unique-alias.ll new file mode 100644 index 0000000..3ee162c --- /dev/null +++ b/test/Linker/Inputs/type-unique-alias.ll @@ -0,0 +1,4 @@ +%u = type { i8 } + +@g2 = global %u zeroinitializer +@a = weak alias %u* @g2 diff --git a/test/Linker/Inputs/type-unique-dst-types2.ll b/test/Linker/Inputs/type-unique-dst-types2.ll new file mode 100644 index 0000000..b565c6d --- /dev/null +++ b/test/Linker/Inputs/type-unique-dst-types2.ll @@ -0,0 +1,3 @@ +%A.11 = type { %B } +%B = type { i8 } +@g1 = external global %A.11 diff --git a/test/Linker/Inputs/type-unique-dst-types3.ll b/test/Linker/Inputs/type-unique-dst-types3.ll new file mode 100644 index 0000000..c5794ad --- /dev/null +++ b/test/Linker/Inputs/type-unique-dst-types3.ll @@ -0,0 +1,2 @@ +%A.11 = type opaque +@g2 = external global %A.11 diff --git a/test/Linker/Inputs/type-unique-inheritance-a.ll b/test/Linker/Inputs/type-unique-inheritance-a.ll index 31df5b2..c503919 100644 --- a/test/Linker/Inputs/type-unique-inheritance-a.ll +++ b/test/Linker/Inputs/type-unique-inheritance-a.ll @@ -52,8 +52,8 @@ entry: %a.addr = alloca i32, align 4 %t = alloca %class.A, align 4 store i32 %a, i32* %a.addr, align 4 - call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !20, metadata !{metadata !"0x102"}), !dbg !21 - call void @llvm.dbg.declare(metadata !{%class.A* %t}, metadata !22, metadata !{metadata !"0x102"}), !dbg !23 + call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !20, metadata !{!"0x102"}), !dbg !21 + call void @llvm.dbg.declare(metadata %class.A* %t, metadata !22, metadata !{!"0x102"}), !dbg !23 ret void, !dbg !24 } @@ -66,29 +66,29 @@ attributes #1 = { nounwind readnone } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!19, !25} -!0 = metadata !{metadata !"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git f54e02f969d02d640103db73efc30c45439fceab) (http://llvm.org/git/llvm.git 284353b55896cb1babfaa7add7c0a363245342d2)\000\00\000\00\000", metadata !1, metadata !2, metadata !3, metadata !14, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [/Users/mren/c_testing/type_unique_air/inher/foo.cpp] [DW_LANG_C_plus_plus] -!1 = metadata !{metadata !"foo.cpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!2 = metadata !{i32 0} -!3 = metadata !{metadata !4, metadata !8} -!4 = metadata !{metadata !"0x2\00A\003\0064\0032\000\000\000", metadata !5, null, null, metadata !6, null, null, metadata !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 3, size 64, align 32, offset 0] [def] [from ] -!5 = metadata !{metadata !"./a.hpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!6 = metadata !{metadata !7, metadata !13} -!7 = metadata !{metadata !"0x1c\00\000\000\000\000\001", null, metadata !"_ZTS1A", metadata !8} ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset 0] [private] [from Base] -!8 = metadata !{metadata !"0x2\00Base\003\0032\0032\000\000\000", metadata !9, null, null, metadata !10, null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_class_type ] [Base] [line 3, size 32, align 32, offset 0] [def] [from ] -!9 = metadata !{metadata !"./b.hpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!10 = metadata !{metadata !11} -!11 = metadata !{metadata !"0xd\00b\004\0032\0032\000\001", metadata !9, metadata !"_ZTS4Base", metadata !12} ; [ DW_TAG_member ] [b] [line 4, size 32, align 32, offset 0] [private] [from int] -!12 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] -!13 = metadata !{metadata !"0xd\00x\004\0032\0032\0032\001", metadata !5, metadata !"_ZTS1A", metadata !12} ; [ DW_TAG_member ] [x] [line 4, size 32, align 32, offset 32] [private] [from int] -!14 = metadata !{metadata !15} -!15 = metadata !{metadata !"0x2e\00f\00f\00_Z1fi\005\000\001\000\006\00256\000\005", metadata !1, metadata !16, metadata !17, null, void (i32)* @_Z1fi, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 5] [def] [f] -!16 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/Users/mren/c_testing/type_unique_air/inher/foo.cpp] -!17 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!18 = metadata !{null, metadata !12} -!19 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} -!20 = metadata !{metadata !"0x101\00a\0016777221\000", metadata !15, metadata !16, metadata !12} ; [ DW_TAG_arg_variable ] [a] [line 5] -!21 = metadata !{i32 5, i32 0, metadata !15, null} -!22 = metadata !{metadata !"0x100\00t\006\000", metadata !15, metadata !16, metadata !4} ; [ DW_TAG_auto_variable ] [t] [line 6] -!23 = metadata !{i32 6, i32 0, metadata !15, null} -!24 = metadata !{i32 7, i32 0, metadata !15, null} -!25 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} +!0 = !{!"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git f54e02f969d02d640103db73efc30c45439fceab) (http://llvm.org/git/llvm.git 284353b55896cb1babfaa7add7c0a363245342d2)\000\00\000\00\000", !1, !2, !3, !14, !2, !2} ; [ DW_TAG_compile_unit ] [/Users/mren/c_testing/type_unique_air/inher/foo.cpp] [DW_LANG_C_plus_plus] +!1 = !{!"foo.cpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!2 = !{i32 0} +!3 = !{!4, !8} +!4 = !{!"0x2\00A\003\0064\0032\000\000\000", !5, null, null, !6, null, null, !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 3, size 64, align 32, offset 0] [def] [from ] +!5 = !{!"./a.hpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!6 = !{!7, !13} +!7 = !{!"0x1c\00\000\000\000\000\001", null, !"_ZTS1A", !8} ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset 0] [private] [from Base] +!8 = !{!"0x2\00Base\003\0032\0032\000\000\000", !9, null, null, !10, null, null, !"_ZTS4Base"} ; [ DW_TAG_class_type ] [Base] [line 3, size 32, align 32, offset 0] [def] [from ] +!9 = !{!"./b.hpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!10 = !{!11} +!11 = !{!"0xd\00b\004\0032\0032\000\001", !9, !"_ZTS4Base", !12} ; [ DW_TAG_member ] [b] [line 4, size 32, align 32, offset 0] [private] [from int] +!12 = !{!"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!13 = !{!"0xd\00x\004\0032\0032\0032\001", !5, !"_ZTS1A", !12} ; [ DW_TAG_member ] [x] [line 4, size 32, align 32, offset 32] [private] [from int] +!14 = !{!15} +!15 = !{!"0x2e\00f\00f\00_Z1fi\005\000\001\000\006\00256\000\005", !1, !16, !17, null, void (i32)* @_Z1fi, null, null, !2} ; [ DW_TAG_subprogram ] [line 5] [def] [f] +!16 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [/Users/mren/c_testing/type_unique_air/inher/foo.cpp] +!17 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!18 = !{null, !12} +!19 = !{i32 2, !"Dwarf Version", i32 2} +!20 = !{!"0x101\00a\0016777221\000", !15, !16, !12} ; [ DW_TAG_arg_variable ] [a] [line 5] +!21 = !MDLocation(line: 5, scope: !15) +!22 = !{!"0x100\00t\006\000", !15, !16, !4} ; [ DW_TAG_auto_variable ] [t] [line 6] +!23 = !MDLocation(line: 6, scope: !15) +!24 = !MDLocation(line: 7, scope: !15) +!25 = !{i32 1, !"Debug Info Version", i32 2} diff --git a/test/Linker/Inputs/type-unique-inheritance-b.ll b/test/Linker/Inputs/type-unique-inheritance-b.ll index d915e45..d3b9dea 100644 --- a/test/Linker/Inputs/type-unique-inheritance-b.ll +++ b/test/Linker/Inputs/type-unique-inheritance-b.ll @@ -10,8 +10,8 @@ entry: %a.addr = alloca i32, align 4 %t = alloca %class.B, align 8 store i32 %a, i32* %a.addr, align 4 - call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !28, metadata !{metadata !"0x102"}), !dbg !29 - call void @llvm.dbg.declare(metadata !{%class.B* %t}, metadata !30, metadata !{metadata !"0x102"}), !dbg !31 + call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !28, metadata !{!"0x102"}), !dbg !29 + call void @llvm.dbg.declare(metadata %class.B* %t, metadata !30, metadata !{!"0x102"}), !dbg !31 ret void, !dbg !32 } @@ -24,7 +24,7 @@ entry: %retval = alloca i32, align 4 %a = alloca %class.A, align 4 store i32 0, i32* %retval - call void @llvm.dbg.declare(metadata !{%class.A* %a}, metadata !33, metadata !{metadata !"0x102"}), !dbg !34 + call void @llvm.dbg.declare(metadata %class.A* %a, metadata !33, metadata !{!"0x102"}), !dbg !34 call void @_Z1fi(i32 0), !dbg !35 call void @_Z1gi(i32 1), !dbg !36 ret i32 0, !dbg !37 @@ -40,42 +40,42 @@ attributes #3 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!27, !38} -!0 = metadata !{metadata !"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git f54e02f969d02d640103db73efc30c45439fceab) (http://llvm.org/git/llvm.git 284353b55896cb1babfaa7add7c0a363245342d2)\000\00\000\00\000", metadata !1, metadata !2, metadata !3, metadata !19, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [/Users/mren/c_testing/type_unique_air/inher/bar.cpp] [DW_LANG_C_plus_plus] -!1 = metadata !{metadata !"bar.cpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!2 = metadata !{i32 0} -!3 = metadata !{metadata !4, metadata !11, metadata !15} -!4 = metadata !{metadata !"0x2\00B\007\00128\0064\000\000\000", metadata !5, null, null, metadata !6, null, null, metadata !"_ZTS1B"} ; [ DW_TAG_class_type ] [B] [line 7, size 128, align 64, offset 0] [def] [from ] -!5 = metadata !{metadata !"./b.hpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!6 = metadata !{metadata !7, metadata !9} -!7 = metadata !{metadata !"0xd\00bb\008\0032\0032\000\001", metadata !5, metadata !"_ZTS1B", metadata !8} ; [ DW_TAG_member ] [bb] [line 8, size 32, align 32, offset 0] [private] [from int] -!8 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] -!9 = metadata !{metadata !"0xd\00a\009\0064\0064\0064\001", metadata !5, metadata !"_ZTS1B", metadata !10} ; [ DW_TAG_member ] [a] [line 9, size 64, align 64, offset 64] [private] [from ] -!10 = metadata !{metadata !"0xf\00\000\0064\0064\000\000", null, null, metadata !11} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from A] -!11 = metadata !{metadata !"0x2\00A\003\0064\0032\000\000\000", metadata !12, null, null, metadata !13, null, null, metadata !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 3, size 64, align 32, offset 0] [def] [from ] -!12 = metadata !{metadata !"./a.hpp", metadata !"/Users/mren/c_testing/type_unique_air/inher"} -!13 = metadata !{metadata !14, metadata !18} -!14 = metadata !{metadata !"0x1c\00\000\000\000\000\001", null, metadata !"_ZTS1A", metadata !15} ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset 0] [private] [from Base] -!15 = metadata !{metadata !"0x2\00Base\003\0032\0032\000\000\000", metadata !5, null, null, metadata !16, null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_class_type ] [Base] [line 3, size 32, align 32, offset 0] [def] [from ] -!16 = metadata !{metadata !17} -!17 = metadata !{metadata !"0xd\00b\004\0032\0032\000\001", metadata !5, metadata !"_ZTS4Base", metadata !8} ; [ DW_TAG_member ] [b] [line 4, size 32, align 32, offset 0] [private] [from int] -!18 = metadata !{metadata !"0xd\00x\004\0032\0032\0032\001", metadata !12, metadata !"_ZTS1A", metadata !8} ; [ DW_TAG_member ] [x] [line 4, size 32, align 32, offset 32] [private] [from int] -!19 = metadata !{metadata !20, metadata !24} -!20 = metadata !{metadata !"0x2e\00g\00g\00_Z1gi\004\000\001\000\006\00256\000\004", metadata !1, metadata !21, metadata !22, null, void (i32)* @_Z1gi, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 4] [def] [g] -!21 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/Users/mren/c_testing/type_unique_air/inher/bar.cpp] -!22 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !23, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!23 = metadata !{null, metadata !8} -!24 = metadata !{metadata !"0x2e\00main\00main\00\009\000\001\000\006\00256\000\009", metadata !1, metadata !21, metadata !25, null, i32 ()* @main, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 9] [def] [main] -!25 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !26, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!26 = metadata !{metadata !8} -!27 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} -!28 = metadata !{metadata !"0x101\00a\0016777220\000", metadata !20, metadata !21, metadata !8} ; [ DW_TAG_arg_variable ] [a] [line 4] -!29 = metadata !{i32 4, i32 0, metadata !20, null} -!30 = metadata !{metadata !"0x100\00t\005\000", metadata !20, metadata !21, metadata !4} ; [ DW_TAG_auto_variable ] [t] [line 5] -!31 = metadata !{i32 5, i32 0, metadata !20, null} -!32 = metadata !{i32 6, i32 0, metadata !20, null} -!33 = metadata !{metadata !"0x100\00a\0010\000", metadata !24, metadata !21, metadata !11} ; [ DW_TAG_auto_variable ] [a] [line 10] -!34 = metadata !{i32 10, i32 0, metadata !24, null} -!35 = metadata !{i32 11, i32 0, metadata !24, null} -!36 = metadata !{i32 12, i32 0, metadata !24, null} -!37 = metadata !{i32 13, i32 0, metadata !24, null} -!38 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} +!0 = !{!"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git f54e02f969d02d640103db73efc30c45439fceab) (http://llvm.org/git/llvm.git 284353b55896cb1babfaa7add7c0a363245342d2)\000\00\000\00\000", !1, !2, !3, !19, !2, !2} ; [ DW_TAG_compile_unit ] [/Users/mren/c_testing/type_unique_air/inher/bar.cpp] [DW_LANG_C_plus_plus] +!1 = !{!"bar.cpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!2 = !{i32 0} +!3 = !{!4, !11, !15} +!4 = !{!"0x2\00B\007\00128\0064\000\000\000", !5, null, null, !6, null, null, !"_ZTS1B"} ; [ DW_TAG_class_type ] [B] [line 7, size 128, align 64, offset 0] [def] [from ] +!5 = !{!"./b.hpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!6 = !{!7, !9} +!7 = !{!"0xd\00bb\008\0032\0032\000\001", !5, !"_ZTS1B", !8} ; [ DW_TAG_member ] [bb] [line 8, size 32, align 32, offset 0] [private] [from int] +!8 = !{!"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = !{!"0xd\00a\009\0064\0064\0064\001", !5, !"_ZTS1B", !10} ; [ DW_TAG_member ] [a] [line 9, size 64, align 64, offset 64] [private] [from ] +!10 = !{!"0xf\00\000\0064\0064\000\000", null, null, !11} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from A] +!11 = !{!"0x2\00A\003\0064\0032\000\000\000", !12, null, null, !13, null, null, !"_ZTS1A"} ; [ DW_TAG_class_type ] [A] [line 3, size 64, align 32, offset 0] [def] [from ] +!12 = !{!"./a.hpp", !"/Users/mren/c_testing/type_unique_air/inher"} +!13 = !{!14, !18} +!14 = !{!"0x1c\00\000\000\000\000\001", null, !"_ZTS1A", !15} ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset 0] [private] [from Base] +!15 = !{!"0x2\00Base\003\0032\0032\000\000\000", !5, null, null, !16, null, null, !"_ZTS4Base"} ; [ DW_TAG_class_type ] [Base] [line 3, size 32, align 32, offset 0] [def] [from ] +!16 = !{!17} +!17 = !{!"0xd\00b\004\0032\0032\000\001", !5, !"_ZTS4Base", !8} ; [ DW_TAG_member ] [b] [line 4, size 32, align 32, offset 0] [private] [from int] +!18 = !{!"0xd\00x\004\0032\0032\0032\001", !12, !"_ZTS1A", !8} ; [ DW_TAG_member ] [x] [line 4, size 32, align 32, offset 32] [private] [from int] +!19 = !{!20, !24} +!20 = !{!"0x2e\00g\00g\00_Z1gi\004\000\001\000\006\00256\000\004", !1, !21, !22, null, void (i32)* @_Z1gi, null, null, !2} ; [ DW_TAG_subprogram ] [line 4] [def] [g] +!21 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [/Users/mren/c_testing/type_unique_air/inher/bar.cpp] +!22 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !23, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!23 = !{null, !8} +!24 = !{!"0x2e\00main\00main\00\009\000\001\000\006\00256\000\009", !1, !21, !25, null, i32 ()* @main, null, null, !2} ; [ DW_TAG_subprogram ] [line 9] [def] [main] +!25 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !26, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!26 = !{!8} +!27 = !{i32 2, !"Dwarf Version", i32 2} +!28 = !{!"0x101\00a\0016777220\000", !20, !21, !8} ; [ DW_TAG_arg_variable ] [a] [line 4] +!29 = !MDLocation(line: 4, scope: !20) +!30 = !{!"0x100\00t\005\000", !20, !21, !4} ; [ DW_TAG_auto_variable ] [t] [line 5] +!31 = !MDLocation(line: 5, scope: !20) +!32 = !MDLocation(line: 6, scope: !20) +!33 = !{!"0x100\00a\0010\000", !24, !21, !11} ; [ DW_TAG_auto_variable ] [a] [line 10] +!34 = !MDLocation(line: 10, scope: !24) +!35 = !MDLocation(line: 11, scope: !24) +!36 = !MDLocation(line: 12, scope: !24) +!37 = !MDLocation(line: 13, scope: !24) +!38 = !{i32 1, !"Debug Info Version", i32 2} diff --git a/test/Linker/Inputs/type-unique-name.ll b/test/Linker/Inputs/type-unique-name.ll new file mode 100644 index 0000000..2553246 --- /dev/null +++ b/test/Linker/Inputs/type-unique-name.ll @@ -0,0 +1,5 @@ +%t = type { i8 } + +define %t* @f() { + ret %t* null +} diff --git a/test/Linker/Inputs/type-unique-opaque.ll b/test/Linker/Inputs/type-unique-opaque.ll new file mode 100644 index 0000000..872b601 --- /dev/null +++ b/test/Linker/Inputs/type-unique-opaque.ll @@ -0,0 +1,6 @@ +%t = type { i8 } +%t2 = type { %t*, i16 } + +define %t2* @f() { + ret %t2* null +} diff --git a/test/Linker/Inputs/type-unique-simple2-a.ll b/test/Linker/Inputs/type-unique-simple2-a.ll index 5ed5c2a..6d6e93c 100644 --- a/test/Linker/Inputs/type-unique-simple2-a.ll +++ b/test/Linker/Inputs/type-unique-simple2-a.ll @@ -49,8 +49,8 @@ entry: %a.addr = alloca i32, align 4 %t = alloca %struct.Base, align 8 store i32 %a, i32* %a.addr, align 4 - call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !17, metadata !{metadata !"0x102"}), !dbg !18 - call void @llvm.dbg.declare(metadata !{%struct.Base* %t}, metadata !19, metadata !{metadata !"0x102"}), !dbg !20 + call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !17, metadata !{!"0x102"}), !dbg !18 + call void @llvm.dbg.declare(metadata %struct.Base* %t, metadata !19, metadata !{!"0x102"}), !dbg !20 ret void, !dbg !21 } @@ -63,26 +63,26 @@ attributes #1 = { nounwind readnone } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!16, !22} -!0 = metadata !{metadata !"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git 8a3f9e46cb988d2c664395b21910091e3730ae82) (http://llvm.org/git/llvm.git 4699e9549358bc77824a59114548eecc3f7c523c)\000\00\000\00\000", metadata !1, metadata !2, metadata !3, metadata !11, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [foo.cpp] [DW_LANG_C_plus_plus] -!1 = metadata !{metadata !"foo.cpp", metadata !"."} -!2 = metadata !{} -!3 = metadata !{metadata !4} -!4 = metadata !{metadata !"0x13\00Base\001\00128\0064\000\000\000", metadata !5, null, null, metadata !6, null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_structure_type ] [Base] [line 1, size 128, align 64, offset 0] [def] [from ] -!5 = metadata !{metadata !"./a.hpp", metadata !"."} -!6 = metadata !{metadata !7, metadata !9} -!7 = metadata !{metadata !"0xd\00a\002\0032\0032\000\000", metadata !5, metadata !"_ZTS4Base", metadata !8} ; [ DW_TAG_member ] [a] [line 2, size 32, align 32, offset 0] [from int] -!8 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] -!9 = metadata !{metadata !"0xd\00b\003\0064\0064\0064\000", metadata !5, metadata !"_ZTS4Base", metadata !10} ; [ DW_TAG_member ] [b] [line 3, size 64, align 64, offset 64] [from ] -!10 = metadata !{metadata !"0xf\00\000\0064\0064\000\000", null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_pointer_type ] -!11 = metadata !{metadata !12} -!12 = metadata !{metadata !"0x2e\00f\00f\00_Z1fi\003\000\001\000\006\00256\000\003", metadata !1, metadata !13, metadata !14, null, void (i32)* @_Z1fi, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 3] [def] [f] -!13 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [foo.cpp] -!14 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !15, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!15 = metadata !{null, metadata !8} -!16 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} -!17 = metadata !{metadata !"0x101\00a\0016777219\000", metadata !12, metadata !13, metadata !8} ; [ DW_TAG_arg_variable ] [a] [line 3] -!18 = metadata !{i32 3, i32 0, metadata !12, null} -!19 = metadata !{metadata !"0x100\00t\004\000", metadata !12, metadata !13, metadata !4} ; [ DW_TAG_auto_variable ] [t] [line 4] -!20 = metadata !{i32 4, i32 0, metadata !12, null} -!21 = metadata !{i32 5, i32 0, metadata !12, null} -!22 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} +!0 = !{!"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git 8a3f9e46cb988d2c664395b21910091e3730ae82) (http://llvm.org/git/llvm.git 4699e9549358bc77824a59114548eecc3f7c523c)\000\00\000\00\000", !1, !2, !3, !11, !2, !2} ; [ DW_TAG_compile_unit ] [foo.cpp] [DW_LANG_C_plus_plus] +!1 = !{!"foo.cpp", !"."} +!2 = !{} +!3 = !{!4} +!4 = !{!"0x13\00Base\001\00128\0064\000\000\000", !5, null, null, !6, null, null, !"_ZTS4Base"} ; [ DW_TAG_structure_type ] [Base] [line 1, size 128, align 64, offset 0] [def] [from ] +!5 = !{!"./a.hpp", !"."} +!6 = !{!7, !9} +!7 = !{!"0xd\00a\002\0032\0032\000\000", !5, !"_ZTS4Base", !8} ; [ DW_TAG_member ] [a] [line 2, size 32, align 32, offset 0] [from int] +!8 = !{!"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = !{!"0xd\00b\003\0064\0064\0064\000", !5, !"_ZTS4Base", !10} ; [ DW_TAG_member ] [b] [line 3, size 64, align 64, offset 64] [from ] +!10 = !{!"0xf\00\000\0064\0064\000\000", null, null, !"_ZTS4Base"} ; [ DW_TAG_pointer_type ] +!11 = !{!12} +!12 = !{!"0x2e\00f\00f\00_Z1fi\003\000\001\000\006\00256\000\003", !1, !13, !14, null, void (i32)* @_Z1fi, null, null, !2} ; [ DW_TAG_subprogram ] [line 3] [def] [f] +!13 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [foo.cpp] +!14 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !15, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!15 = !{null, !8} +!16 = !{i32 2, !"Dwarf Version", i32 2} +!17 = !{!"0x101\00a\0016777219\000", !12, !13, !8} ; [ DW_TAG_arg_variable ] [a] [line 3] +!18 = !MDLocation(line: 3, scope: !12) +!19 = !{!"0x100\00t\004\000", !12, !13, !4} ; [ DW_TAG_auto_variable ] [t] [line 4] +!20 = !MDLocation(line: 4, scope: !12) +!21 = !MDLocation(line: 5, scope: !12) +!22 = !{i32 1, !"Debug Info Version", i32 2} diff --git a/test/Linker/Inputs/type-unique-simple2-b.ll b/test/Linker/Inputs/type-unique-simple2-b.ll index 241218d..d3b2f7e 100644 --- a/test/Linker/Inputs/type-unique-simple2-b.ll +++ b/test/Linker/Inputs/type-unique-simple2-b.ll @@ -8,8 +8,8 @@ entry: %a.addr = alloca i32, align 4 %t = alloca %struct.Base, align 8 store i32 %a, i32* %a.addr, align 4 - call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !20, metadata !{metadata !"0x102"}), !dbg !21 - call void @llvm.dbg.declare(metadata !{%struct.Base* %t}, metadata !22, metadata !{metadata !"0x102"}), !dbg !23 + call void @llvm.dbg.declare(metadata i32* %a.addr, metadata !20, metadata !{!"0x102"}), !dbg !21 + call void @llvm.dbg.declare(metadata %struct.Base* %t, metadata !22, metadata !{!"0x102"}), !dbg !23 ret void, !dbg !24 } @@ -36,32 +36,32 @@ attributes #3 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!19, !28} -!0 = metadata !{metadata !"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git 8a3f9e46cb988d2c664395b21910091e3730ae82) (http://llvm.org/git/llvm.git 4699e9549358bc77824a59114548eecc3f7c523c)\000\00\000\00\000", metadata !1, metadata !2, metadata !3, metadata !11, metadata !2, metadata !2} ; [ DW_TAG_compile_unit ] [bar.cpp] [DW_LANG_C_plus_plus] -!1 = metadata !{metadata !"bar.cpp", metadata !"."} -!2 = metadata !{} -!3 = metadata !{metadata !4} -!4 = metadata !{metadata !"0x13\00Base\001\00128\0064\000\000\000", metadata !5, null, null, metadata !6, null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_structure_type ] [Base] [line 1, size 128, align 64, offset 0] [def] [from ] -!5 = metadata !{metadata !"./a.hpp", metadata !"."} -!6 = metadata !{metadata !7, metadata !9} -!7 = metadata !{metadata !"0xd\00a\002\0032\0032\000\000", metadata !5, metadata !"_ZTS4Base", metadata !8} ; [ DW_TAG_member ] [a] [line 2, size 32, align 32, offset 0] [from int] -!8 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] -!9 = metadata !{metadata !"0xd\00b\003\0064\0064\0064\000", metadata !5, metadata !"_ZTS4Base", metadata !10} ; [ DW_TAG_member ] [b] [line 3, size 64, align 64, offset 64] [from ] -!10 = metadata !{metadata !"0xf\00\000\0064\0064\000\000", null, null, metadata !"_ZTS4Base"} ; [ DW_TAG_pointer_type ] -!11 = metadata !{metadata !12, metadata !16} -!12 = metadata !{metadata !"0x2e\00g\00g\00_Z1gi\004\000\001\000\006\00256\000\004", metadata !1, metadata !13, metadata !14, null, void (i32)* @_Z1gi, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 4] [def] [g] -!13 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [bar.cpp] -!14 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !15, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!15 = metadata !{null, metadata !8} -!16 = metadata !{metadata !"0x2e\00main\00main\00\007\000\001\000\006\00256\000\007", metadata !1, metadata !13, metadata !17, null, i32 ()* @main, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 7] [def] [main] -!17 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] -!18 = metadata !{metadata !8} -!19 = metadata !{i32 2, metadata !"Dwarf Version", i32 2} -!20 = metadata !{metadata !"0x101\00a\0016777220\000", metadata !12, metadata !13, metadata !8} ; [ DW_TAG_arg_variable ] [a] [line 4] -!21 = metadata !{i32 4, i32 0, metadata !12, null} -!22 = metadata !{metadata !"0x100\00t\005\000", metadata !12, metadata !13, metadata !4} ; [ DW_TAG_auto_variable ] [t] [line 5] -!23 = metadata !{i32 5, i32 0, metadata !12, null} -!24 = metadata !{i32 6, i32 0, metadata !12, null} -!25 = metadata !{i32 8, i32 0, metadata !16, null} -!26 = metadata !{i32 9, i32 0, metadata !16, null} -!27 = metadata !{i32 10, i32 0, metadata !16, null} -!28 = metadata !{i32 1, metadata !"Debug Info Version", i32 2} +!0 = !{!"0x11\004\00clang version 3.4 (http://llvm.org/git/clang.git 8a3f9e46cb988d2c664395b21910091e3730ae82) (http://llvm.org/git/llvm.git 4699e9549358bc77824a59114548eecc3f7c523c)\000\00\000\00\000", !1, !2, !3, !11, !2, !2} ; [ DW_TAG_compile_unit ] [bar.cpp] [DW_LANG_C_plus_plus] +!1 = !{!"bar.cpp", !"."} +!2 = !{} +!3 = !{!4} +!4 = !{!"0x13\00Base\001\00128\0064\000\000\000", !5, null, null, !6, null, null, !"_ZTS4Base"} ; [ DW_TAG_structure_type ] [Base] [line 1, size 128, align 64, offset 0] [def] [from ] +!5 = !{!"./a.hpp", !"."} +!6 = !{!7, !9} +!7 = !{!"0xd\00a\002\0032\0032\000\000", !5, !"_ZTS4Base", !8} ; [ DW_TAG_member ] [a] [line 2, size 32, align 32, offset 0] [from int] +!8 = !{!"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed] +!9 = !{!"0xd\00b\003\0064\0064\0064\000", !5, !"_ZTS4Base", !10} ; [ DW_TAG_member ] [b] [line 3, size 64, align 64, offset 64] [from ] +!10 = !{!"0xf\00\000\0064\0064\000\000", null, null, !"_ZTS4Base"} ; [ DW_TAG_pointer_type ] +!11 = !{!12, !16} +!12 = !{!"0x2e\00g\00g\00_Z1gi\004\000\001\000\006\00256\000\004", !1, !13, !14, null, void (i32)* @_Z1gi, null, null, !2} ; [ DW_TAG_subprogram ] [line 4] [def] [g] +!13 = !{!"0x29", !1} ; [ DW_TAG_file_type ] [bar.cpp] +!14 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !15, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!15 = !{null, !8} +!16 = !{!"0x2e\00main\00main\00\007\000\001\000\006\00256\000\007", !1, !13, !17, null, i32 ()* @main, null, null, !2} ; [ DW_TAG_subprogram ] [line 7] [def] [main] +!17 = !{!"0x15\00\000\000\000\000\000\000", i32 0, null, null, !18, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ] +!18 = !{!8} +!19 = !{i32 2, !"Dwarf Version", i32 2} +!20 = !{!"0x101\00a\0016777220\000", !12, !13, !8} ; [ DW_TAG_arg_variable ] [a] [line 4] +!21 = !MDLocation(line: 4, scope: !12) +!22 = !{!"0x100\00t\005\000", !12, !13, !4} ; [ DW_TAG_auto_variable ] [t] [line 5] +!23 = !MDLocation(line: 5, scope: !12) +!24 = !MDLocation(line: 6, scope: !12) +!25 = !MDLocation(line: 8, scope: !16) +!26 = !MDLocation(line: 9, scope: !16) +!27 = !MDLocation(line: 10, scope: !16) +!28 = !{i32 1, !"Debug Info Version", i32 2} diff --git a/test/Linker/Inputs/type-unique-unrelated2.ll b/test/Linker/Inputs/type-unique-unrelated2.ll new file mode 100644 index 0000000..b7c2cec --- /dev/null +++ b/test/Linker/Inputs/type-unique-unrelated2.ll @@ -0,0 +1,7 @@ +%t = type { i8* } +declare %t @g() + +define %t @g2() { + %x = call %t @g() + ret %t %x +} diff --git a/test/Linker/Inputs/type-unique-unrelated3.ll b/test/Linker/Inputs/type-unique-unrelated3.ll new file mode 100644 index 0000000..e3f2dd9 --- /dev/null +++ b/test/Linker/Inputs/type-unique-unrelated3.ll @@ -0,0 +1,7 @@ +%t = type { i8* } +declare %t @f() + +define %t @g() { + %x = call %t @f() + ret %t %x +} diff --git a/test/Linker/Inputs/unique-fwd-decl-b.ll b/test/Linker/Inputs/unique-fwd-decl-b.ll index 240fbee..24099b8 100644 --- a/test/Linker/Inputs/unique-fwd-decl-b.ll +++ b/test/Linker/Inputs/unique-fwd-decl-b.ll @@ -1,3 +1,3 @@ !b = !{!0} -!0 = metadata !{metadata !1} -!1 = metadata !{} +!0 = !{!1} +!1 = !{} diff --git a/test/Linker/Inputs/unique-fwd-decl-order.ll b/test/Linker/Inputs/unique-fwd-decl-order.ll new file mode 100644 index 0000000..e87ac84 --- /dev/null +++ b/test/Linker/Inputs/unique-fwd-decl-order.ll @@ -0,0 +1,6 @@ +!named = !{!0} + +; These nodes are intentionally in the opposite order from the test-driver. +; However, they are numbered the same for the reader's convenience. +!1 = !{} +!0 = !{!1} diff --git a/test/Linker/Inputs/visibility.ll b/test/Linker/Inputs/visibility.ll index 2ab58fd..2cd112e 100644 --- a/test/Linker/Inputs/visibility.ll +++ b/test/Linker/Inputs/visibility.ll @@ -4,7 +4,7 @@ $c1 = comdat any @v1 = weak hidden global i32 0 @v2 = weak protected global i32 0 @v3 = weak hidden global i32 0 -@v4 = hidden global i32 1, comdat $c1 +@v4 = hidden global i32 1, comdat($c1) ; Aliases @a1 = weak hidden alias i32* @v1 |