diff options
Diffstat (limited to 'llvm/test/Linker')
32 files changed, 67 insertions, 272 deletions
diff --git a/llvm/test/Linker/2009-09-03-mdnode.ll b/llvm/test/Linker/2009-09-03-mdnode.ll index c7d3f10d9c8..77c6b2d93fa 100644 --- a/llvm/test/Linker/2009-09-03-mdnode.ll +++ b/llvm/test/Linker/2009-09-03-mdnode.ll @@ -26,6 +26,6 @@ declare void @llvm.dbg.stoppoint(i32, i32, metadata) nounwind readnone declare void @llvm.dbg.region.end(metadata) nounwind readnone -!0 = !DISubprogram(name: "main", linkageName: "main", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1) +!0 = distinct !DISubprogram(name: "main", linkageName: "main", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1) !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "ellcc 0.1.0", isOptimized: true, emissionKind: 0, file: !2) !2 = !DIFile(filename: "a.c", directory: "/home/rich/ellcc/test/source") diff --git a/llvm/test/Linker/2009-09-03-mdnode2.ll b/llvm/test/Linker/2009-09-03-mdnode2.ll index ea9eca04536..69b8d6595eb 100644 --- a/llvm/test/Linker/2009-09-03-mdnode2.ll +++ b/llvm/test/Linker/2009-09-03-mdnode2.ll @@ -21,6 +21,6 @@ declare void @llvm.dbg.stoppoint(i32, i32, metadata) nounwind readnone declare void @llvm.dbg.region.end(metadata) nounwind readnone -!0 = !DISubprogram(name: "f", linkageName: "f", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1) +!0 = distinct !DISubprogram(name: "f", linkageName: "f", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1) !1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "ellcc 0.1.0", isOptimized: true, emissionKind: 0, file: !2) !2 = !DIFile(filename: "b.c", directory: "/home/rich/ellcc/test/source") diff --git a/llvm/test/Linker/2011-08-04-DebugLoc.ll b/llvm/test/Linker/2011-08-04-DebugLoc.ll index 0029daa2598..cce88ff2d2a 100644 --- a/llvm/test/Linker/2011-08-04-DebugLoc.ll +++ b/llvm/test/Linker/2011-08-04-DebugLoc.ll @@ -18,7 +18,7 @@ define i32 @foo() nounwind ssp { !llvm.dbg.sp = !{!1} !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-209.11) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: 0, file: !8, enums: !9, retainedTypes: !9, subprograms: !10) -!1 = !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !2, type: !3, function: i32 ()* @foo) +!1 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !2, type: !3, function: i32 ()* @foo) !2 = !DIFile(filename: "a.c", directory: "/private/tmp") !3 = !DISubroutineType(types: !4) !4 = !{!5} diff --git a/llvm/test/Linker/2011-08-04-DebugLoc2.ll b/llvm/test/Linker/2011-08-04-DebugLoc2.ll index 073a6359d8d..8b23cbb7d65 100644 --- a/llvm/test/Linker/2011-08-04-DebugLoc2.ll +++ b/llvm/test/Linker/2011-08-04-DebugLoc2.ll @@ -15,7 +15,7 @@ define i32 @bar() nounwind ssp { !llvm.dbg.sp = !{!1} !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-209.11) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: 0, file: !8, enums: !9, retainedTypes: !9, subprograms: !10) -!1 = !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !2, type: !3, function: i32 ()* @bar) +!1 = distinct !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !2, type: !3, function: i32 ()* @bar) !2 = !DIFile(filename: "b.c", directory: "/private/tmp") !3 = !DISubroutineType(types: !4) !4 = !{!5} diff --git a/llvm/test/Linker/2011-08-04-Metadata.ll b/llvm/test/Linker/2011-08-04-Metadata.ll index bf7a63378f5..6d88f5b3309 100644 --- a/llvm/test/Linker/2011-08-04-Metadata.ll +++ b/llvm/test/Linker/2011-08-04-Metadata.ll @@ -25,7 +25,7 @@ entry: !llvm.dbg.gv = !{!5} !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 ()", isOptimized: true, emissionKind: 0, file: !9, enums: !{}, retainedTypes: !{}, subprograms: !10) -!1 = !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !2, type: !3, function: void ()* @foo) +!1 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !2, type: !3, function: void ()* @foo) !2 = !DIFile(filename: "/tmp/one.c", directory: "/Volumes/Lalgate/Slate/D") !3 = !DISubroutineType(types: !4) !4 = !{null} diff --git a/llvm/test/Linker/2011-08-04-Metadata2.ll b/llvm/test/Linker/2011-08-04-Metadata2.ll index 7aa293a54cd..1bd12347d1c 100644 --- a/llvm/test/Linker/2011-08-04-Metadata2.ll +++ b/llvm/test/Linker/2011-08-04-Metadata2.ll @@ -20,7 +20,7 @@ entry: !llvm.dbg.gv = !{!5} !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 ()", isOptimized: true, emissionKind: 0, file: !9, enums: !{}, retainedTypes: !{}, subprograms: !10) -!1 = !DISubprogram(name: "bar", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !2, type: !3, function: void ()* @bar) +!1 = distinct !DISubprogram(name: "bar", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !9, scope: !2, type: !3, function: void ()* @bar) !2 = !DIFile(filename: "/tmp/two.c", directory: "/Volumes/Lalgate/Slate/D") !3 = !DISubroutineType(types: !4) !4 = !{null} diff --git a/llvm/test/Linker/2011-08-18-unique-class-type.ll b/llvm/test/Linker/2011-08-18-unique-class-type.ll index 0c09064a9b8..ec5246c9f5b 100644 --- a/llvm/test/Linker/2011-08-18-unique-class-type.ll +++ b/llvm/test/Linker/2011-08-18-unique-class-type.ll @@ -24,7 +24,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !1 = !{!2} !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "foo", linkageName: "_Z3fooN2N11AE", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !16, scope: !6, type: !7, function: void ()* @_Z3fooN2N11AE) +!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooN2N11AE", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !16, scope: !6, type: !7, function: void ()* @_Z3fooN2N11AE) !6 = !DIFile(filename: "n1.c", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{null} diff --git a/llvm/test/Linker/2011-08-18-unique-class-type2.ll b/llvm/test/Linker/2011-08-18-unique-class-type2.ll index 6f3b345c68f..92f21bbf412 100644 --- a/llvm/test/Linker/2011-08-18-unique-class-type2.ll +++ b/llvm/test/Linker/2011-08-18-unique-class-type2.ll @@ -22,7 +22,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone !1 = !{!2} !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "bar", linkageName: "_Z3barN2N11AE", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scope: !6, type: !7, function: void ()* @_Z3barN2N11AE) +!5 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barN2N11AE", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scope: !6, type: !7, function: void ()* @_Z3barN2N11AE) !6 = !DIFile(filename: "n2.c", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{null} diff --git a/llvm/test/Linker/2011-08-18-unique-debug-type.ll b/llvm/test/Linker/2011-08-18-unique-debug-type.ll index 76d63f50fc8..1836c576946 100644 --- a/llvm/test/Linker/2011-08-18-unique-debug-type.ll +++ b/llvm/test/Linker/2011-08-18-unique-debug-type.ll @@ -16,7 +16,7 @@ entry: !1 = !{!2} !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: !6, type: !7, function: i32 ()* @foo) +!5 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: !6, type: !7, function: i32 ()* @foo) !6 = !DIFile(filename: "one.c", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{!9} diff --git a/llvm/test/Linker/2011-08-18-unique-debug-type2.ll b/llvm/test/Linker/2011-08-18-unique-debug-type2.ll index d929878888b..4c012dce0df 100644 --- a/llvm/test/Linker/2011-08-18-unique-debug-type2.ll +++ b/llvm/test/Linker/2011-08-18-unique-debug-type2.ll @@ -16,7 +16,7 @@ entry: !1 = !{!2} !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: !6, type: !7, function: i32 ()* @bar) +!5 = distinct !DISubprogram(name: "bar", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !12, scope: !6, type: !7, function: i32 ()* @bar) !6 = !DIFile(filename: "two.c", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{!9} diff --git a/llvm/test/Linker/DbgDeclare.ll b/llvm/test/Linker/DbgDeclare.ll index 24884a66f3f..3f89e889e05 100644 --- a/llvm/test/Linker/DbgDeclare.ll +++ b/llvm/test/Linker/DbgDeclare.ll @@ -40,7 +40,7 @@ declare void @test(i32, i8**) !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 173515)", isOptimized: true, emissionKind: 0, file: !20, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2) !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "main", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !20, scope: null, type: !7, function: i32 (i32, i8**)* @main, variables: !2) +!5 = distinct !DISubprogram(name: "main", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !20, scope: null, type: !7, function: i32 (i32, i8**)* @main, variables: !2) !6 = !DIFile(filename: "main.cpp", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{!9, !9, !10} diff --git a/llvm/test/Linker/DbgDeclare2.ll b/llvm/test/Linker/DbgDeclare2.ll index 0b404a700d9..f3bd85cb087 100644 --- a/llvm/test/Linker/DbgDeclare2.ll +++ b/llvm/test/Linker/DbgDeclare2.ll @@ -53,7 +53,7 @@ declare i32 @puts(i8*) !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 173515)", isOptimized: true, emissionKind: 0, file: !25, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2) !2 = !{} !3 = !{!5} -!5 = !DISubprogram(name: "print_args", linkageName: "test", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 5, file: !26, scope: null, type: !7, function: void (i32, i8**)* @test, variables: !2) +!5 = distinct !DISubprogram(name: "print_args", linkageName: "test", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 5, file: !26, scope: null, type: !7, function: void (i32, i8**)* @test, variables: !2) !6 = !DIFile(filename: "test.cpp", directory: "/private/tmp") !7 = !DISubroutineType(types: !8) !8 = !{null, !9, !10} diff --git a/llvm/test/Linker/Inputs/mdlocation.ll b/llvm/test/Linker/Inputs/mdlocation.ll index 22473db4609..9c2f65d0a59 100644 --- a/llvm/test/Linker/Inputs/mdlocation.ll +++ b/llvm/test/Linker/Inputs/mdlocation.ll @@ -1,13 +1,9 @@ -!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} +!named = !{!0, !1, !2, !3, !4, !5} -!0 = !DISubprogram() ; Use this as a scope. +!0 = distinct !DISubprogram() ; Use this as a scope. !1 = !DILocation(line: 3, column: 7, scope: !0) !2 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !1) !3 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !2) -!4 = distinct !DISubprogram() ; Test actual remapping. -!5 = !DILocation(line: 3, column: 7, scope: !4) -!6 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !5) -!7 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !6) ; Test distinct nodes. -!8 = distinct !DILocation(line: 3, column: 7, scope: !0) -!9 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !8) +!4 = distinct !DILocation(line: 3, column: 7, scope: !0) +!5 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !4) diff --git a/llvm/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll b/llvm/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll index ff7ea0bba48..c7d4f560fa7 100644 --- a/llvm/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll +++ b/llvm/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll @@ -16,7 +16,7 @@ entry: !1 = !DIFile(filename: "t2.cpp", directory: "/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2") !2 = !{} !3 = !{!4} -!4 = !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !6, type: !7, function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv, variables: !2) +!4 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !6, type: !7, function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv, variables: !2) !5 = !DIFile(filename: "../t.h", directory: "/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2") !6 = !DIFile(filename: "../t.h", directory: "/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2") !7 = !DISubroutineType(types: !2) diff --git a/llvm/test/Linker/Inputs/subprogram-linkonce-weak-odr.ll b/llvm/test/Linker/Inputs/subprogram-linkonce-weak-odr.ll deleted file mode 100644 index df3167b4f6d..00000000000 --- a/llvm/test/Linker/Inputs/subprogram-linkonce-weak-odr.ll +++ /dev/null @@ -1,15 +0,0 @@ -define weak_odr i32 @foo(i32 %a, i32 %b) { -entry: - %sum = add i32 %a, %b, !dbg !DILocation(line: 2, scope: !3) - ret i32 %sum, !dbg !DILocation(line: 3, scope: !3) -} - -!llvm.module.flags = !{!0} -!0 = !{i32 2, !"Debug Info Version", i32 3} - -!llvm.dbg.cu = !{!1} -!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !{!3}, emissionKind: 1) -!2 = !DIFile(filename: "foo.c", directory: "/path/to/dir") -!3 = !DISubprogram(file: !4, scope: !4, line: 1, name: "foo", function: i32 (i32, i32)* @foo, type: !5) -!4 = !DIFile(filename: "foo.h", directory: "/path/to/dir") -!5 = !DISubroutineType(types: !{}) diff --git a/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll b/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll index 85227d3ac29..8fcb00c36e2 100644 --- a/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll +++ b/llvm/test/Linker/Inputs/subprogram-linkonce-weak.ll @@ -12,5 +12,5 @@ declare i32 @fastadd(i32, i32) !llvm.dbg.cu = !{!1} !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !{!3}, emissionKind: 1) !2 = !DIFile(filename: "foo.c", directory: "/path/to/dir") -!3 = !DISubprogram(file: !2, scope: !2, line: 51, name: "foo", function: i32 (i32, i32)* @foo, type: !4) +!3 = distinct !DISubprogram(file: !2, scope: !2, line: 51, name: "foo", function: i32 (i32, i32)* @foo, type: !4) !4 = !DISubroutineType(types: !{}) diff --git a/llvm/test/Linker/Inputs/type-unique-inheritance-a.ll b/llvm/test/Linker/Inputs/type-unique-inheritance-a.ll index 74b21fbbd40..ca9aba09e6b 100644 --- a/llvm/test/Linker/Inputs/type-unique-inheritance-a.ll +++ b/llvm/test/Linker/Inputs/type-unique-inheritance-a.ll @@ -81,7 +81,7 @@ attributes #1 = { nounwind readnone } !12 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !13 = !DIDerivedType(tag: DW_TAG_member, name: "x", line: 4, size: 32, align: 32, offset: 32, flags: DIFlagPrivate, file: !5, scope: !"_ZTS1A", baseType: !12) !14 = !{!15} -!15 = !DISubprogram(name: "f", linkageName: "_Z1fi", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 5, file: !1, scope: !16, type: !17, function: void (i32)* @_Z1fi, variables: !2) +!15 = distinct !DISubprogram(name: "f", linkageName: "_Z1fi", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 5, file: !1, scope: !16, type: !17, function: void (i32)* @_Z1fi, variables: !2) !16 = !DIFile(filename: "foo.cpp", directory: "/Users/mren/c_testing/type_unique_air/inher") !17 = !DISubroutineType(types: !18) !18 = !{null, !12} diff --git a/llvm/test/Linker/Inputs/type-unique-inheritance-b.ll b/llvm/test/Linker/Inputs/type-unique-inheritance-b.ll index a5dc2196f30..011d8d91f76 100644 --- a/llvm/test/Linker/Inputs/type-unique-inheritance-b.ll +++ b/llvm/test/Linker/Inputs/type-unique-inheritance-b.ll @@ -60,11 +60,11 @@ attributes #3 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !17 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 4, size: 32, align: 32, flags: DIFlagPrivate, file: !5, scope: !"_ZTS4Base", baseType: !8) !18 = !DIDerivedType(tag: DW_TAG_member, name: "x", line: 4, size: 32, align: 32, offset: 32, flags: DIFlagPrivate, file: !12, scope: !"_ZTS1A", baseType: !8) !19 = !{!20, !24} -!20 = !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !21, type: !22, function: void (i32)* @_Z1gi, variables: !2) +!20 = distinct !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !21, type: !22, function: void (i32)* @_Z1gi, variables: !2) !21 = !DIFile(filename: "bar.cpp", directory: "/Users/mren/c_testing/type_unique_air/inher") !22 = !DISubroutineType(types: !23) !23 = !{null, !8} -!24 = !DISubprogram(name: "main", line: 9, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 9, file: !1, scope: !21, type: !25, function: i32 ()* @main, variables: !2) +!24 = distinct !DISubprogram(name: "main", line: 9, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 9, file: !1, scope: !21, type: !25, function: i32 ()* @main, variables: !2) !25 = !DISubroutineType(types: !26) !26 = !{!8} !27 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/llvm/test/Linker/Inputs/type-unique-simple2-a.ll b/llvm/test/Linker/Inputs/type-unique-simple2-a.ll index 1a6abffb5c7..cc0f85ab808 100644 --- a/llvm/test/Linker/Inputs/type-unique-simple2-a.ll +++ b/llvm/test/Linker/Inputs/type-unique-simple2-a.ll @@ -75,7 +75,7 @@ attributes #1 = { nounwind readnone } !9 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 3, size: 64, align: 64, offset: 64, file: !5, scope: !"_ZTS4Base", baseType: !10) !10 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS4Base") !11 = !{!12} -!12 = !DISubprogram(name: "f", linkageName: "_Z1fi", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !13, type: !14, function: void (i32)* @_Z1fi, variables: !2) +!12 = distinct !DISubprogram(name: "f", linkageName: "_Z1fi", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !13, type: !14, function: void (i32)* @_Z1fi, variables: !2) !13 = !DIFile(filename: "foo.cpp", directory: ".") !14 = !DISubroutineType(types: !15) !15 = !{null, !8} diff --git a/llvm/test/Linker/Inputs/type-unique-simple2-b.ll b/llvm/test/Linker/Inputs/type-unique-simple2-b.ll index 21c597f63a8..d87e41db4db 100644 --- a/llvm/test/Linker/Inputs/type-unique-simple2-b.ll +++ b/llvm/test/Linker/Inputs/type-unique-simple2-b.ll @@ -48,11 +48,11 @@ attributes #3 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !9 = !DIDerivedType(tag: DW_TAG_member, name: "b", line: 3, size: 64, align: 64, offset: 64, file: !5, scope: !"_ZTS4Base", baseType: !10) !10 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS4Base") !11 = !{!12, !16} -!12 = !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !13, type: !14, function: void (i32)* @_Z1gi, variables: !2) +!12 = distinct !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !13, type: !14, function: void (i32)* @_Z1gi, variables: !2) !13 = !DIFile(filename: "bar.cpp", directory: ".") !14 = !DISubroutineType(types: !15) !15 = !{null, !8} -!16 = !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !13, type: !17, function: i32 ()* @main, variables: !2) +!16 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !13, type: !17, function: i32 ()* @main, variables: !2) !17 = !DISubroutineType(types: !18) !18 = !{!8} !19 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/llvm/test/Linker/mdlocation.ll b/llvm/test/Linker/mdlocation.ll index 9acc6701599..b42058bac60 100644 --- a/llvm/test/Linker/mdlocation.ll +++ b/llvm/test/Linker/mdlocation.ll @@ -2,33 +2,25 @@ ; Test that DILocations are remapped properly. -; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !0, !1, !2, !3, !10, !11, !12, !13, !14, !15} -!named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9} +; CHECK: !named = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10, !11} +!named = !{!0, !1, !2, !3, !4, !5} -; CHECK: !0 = !DISubprogram( +; CHECK: !0 = distinct !DISubprogram( ; CHECK-NEXT: !1 = !DILocation(line: 3, column: 7, scope: !0) ; CHECK-NEXT: !2 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !1) ; CHECK-NEXT: !3 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !2) -; CHECK-NEXT: !4 = distinct !DISubprogram( -; CHECK-NEXT: !5 = !DILocation(line: 3, column: 7, scope: !4) -; CHECK-NEXT: !6 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !5) -; CHECK-NEXT: !7 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !6) -; CHECK-NEXT: !8 = distinct !DILocation(line: 3, column: 7, scope: !0) -; CHECK-NEXT: !9 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !8) -; CHECK-NEXT: !10 = distinct !DISubprogram( -; CHECK-NEXT: !11 = !DILocation(line: 3, column: 7, scope: !10) -; CHECK-NEXT: !12 = !DILocation(line: 3, column: 7, scope: !10, inlinedAt: !11) -; CHECK-NEXT: !13 = !DILocation(line: 3, column: 7, scope: !10, inlinedAt: !12) -; CHECK-NEXT: !14 = distinct !DILocation(line: 3, column: 7, scope: !0) -; CHECK-NEXT: !15 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !14) -!0 = !DISubprogram() ; Use this as a scope. +; CHECK-NEXT: !4 = distinct !DILocation(line: 3, column: 7, scope: !0) +; CHECK-NEXT: !5 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !4) +; CHECK-NEXT: !6 = distinct !DISubprogram( +; CHECK-NEXT: !7 = !DILocation(line: 3, column: 7, scope: !6) +; CHECK-NEXT: !8 = !DILocation(line: 3, column: 7, scope: !6, inlinedAt: !7) +; CHECK-NEXT: !9 = !DILocation(line: 3, column: 7, scope: !6, inlinedAt: !8) +; CHECK-NEXT: !10 = distinct !DILocation(line: 3, column: 7, scope: !6) +; CHECK-NEXT: !11 = distinct !DILocation(line: 3, column: 7, scope: !6, inlinedAt: !10) +!0 = distinct !DISubprogram() ; Use this as a scope. !1 = !DILocation(line: 3, column: 7, scope: !0) !2 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !1) !3 = !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !2) -!4 = distinct !DISubprogram() ; Test actual remapping. -!5 = !DILocation(line: 3, column: 7, scope: !4) -!6 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !5) -!7 = !DILocation(line: 3, column: 7, scope: !4, inlinedAt: !6) ; Test distinct nodes. -!8 = distinct !DILocation(line: 3, column: 7, scope: !0) -!9 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !8) +!4 = distinct !DILocation(line: 3, column: 7, scope: !0) +!5 = distinct !DILocation(line: 3, column: 7, scope: !0, inlinedAt: !4) diff --git a/llvm/test/Linker/replaced-function-matches-first-subprogram.ll b/llvm/test/Linker/replaced-function-matches-first-subprogram.ll index 1037f0a09a7..793a64563ed 100644 --- a/llvm/test/Linker/replaced-function-matches-first-subprogram.ll +++ b/llvm/test/Linker/replaced-function-matches-first-subprogram.ll @@ -50,19 +50,19 @@ entry: ; CHECK-DAG: ![[SPs1]] = !{![[SP1:[0-9]+]], ![[SP2r:[0-9]+]]} ; CHECK-DAG: ![[SPs2]] = !{![[SP2:[0-9]+]]} !3 = !{!4, !7} -!4 = !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, function: i32 ()* @_Z3foov, variables: !2) +!4 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, function: i32 ()* @_Z3foov, variables: !2) !5 = !DIFile(filename: "t1.cpp", directory: "/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d1") !6 = !DISubroutineType(types: !2) ; Extract out the file from the replaced subprogram. Confirm that each ; subprogram is pointing at the correct function. -; CHECK-DAG: ![[SP1]] = !DISubprogram({{.*}} function: i32 ()* @_Z3foov -; CHECK-DAG: ![[SP2]] = !DISubprogram({{.*}} file: ![[FILE:[0-9]+]],{{.*}} function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv +; CHECK-DAG: ![[SP1]] = distinct !DISubprogram({{.*}} function: i32 ()* @_Z3foov +; CHECK-DAG: ![[SP2]] = distinct !DISubprogram({{.*}} file: ![[FILE:[0-9]+]],{{.*}} function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv ; We can't use CHECK-NOT/CHECK-SAME with a CHECK-DAG, so rely on field order to ; prove that there's no function: here. ; CHECK-DAG: ![[SP2r]] = {{.*}}!DISubprogram({{.*}} isOptimized: false, variables: -!7 = !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !8, scope: !9, type: !6, function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv, variables: !2) +!7 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !8, scope: !9, type: !6, function: i32 (%struct.Class*)* @_ZN5ClassIiE3fooEv, variables: !2) ; The new subprogram should be pointing at the new directory. ; CHECK-DAG: ![[FILE]] = !DIFile(filename: "../t.h", directory: "/Users/dexonsmith/data/llvm/staging/test/Linker/repro/d2") diff --git a/llvm/test/Linker/subprogram-linkonce-weak-odr.ll b/llvm/test/Linker/subprogram-linkonce-weak-odr.ll deleted file mode 100644 index cfd1893d513..00000000000 --- a/llvm/test/Linker/subprogram-linkonce-weak-odr.ll +++ /dev/null @@ -1,178 +0,0 @@ -; REQUIRES: native -; RUN: llvm-link %s %S/Inputs/subprogram-linkonce-weak-odr.ll -S -o %t1 -; RUN: FileCheck %s -check-prefix=LW -check-prefix=CHECK <%t1 -; RUN: llvm-link %S/Inputs/subprogram-linkonce-weak-odr.ll %s -S -o %t2 -; RUN: FileCheck %s -check-prefix=WL -check-prefix=CHECK <%t2 - -; This testcase tests the following flow: -; - File A defines a linkonce_odr version of @foo which has inlined into @bar. -; - File B defines a weak_odr version of @foo (identical definition). -; - Linkage rules state File B version of @foo wins. -; - Debug info for the subprograms of @foo match exactly. Without -; intervention, the same subprogram would show up in both compile units, and -; it would get associated with the compile unit where it was linkonce. -; - @bar has inlined debug info related to the linkonce_odr @foo. -; -; This checks a corner case for the fix for PR22792, where subprograms match -; exactly. It's a companion for subprogram-linkonce-weak.ll. - -; The LW prefix means linkonce (this file) first, then weak (the other file). -; The WL prefix means weak (the other file) first, then linkonce (this file). - -; We'll see @bar before @foo if this file is first. -; LW-LABEL: define i32 @bar( -; LW: %sum = add i32 %a, %b, !dbg ![[FOOINBAR:[0-9]+]] -; LW: ret i32 %sum, !dbg ![[BARRET:[0-9]+]] -; LW-LABEL: define weak_odr i32 @foo( -; LW: %sum = add i32 %a, %b, !dbg ![[FOOADD:[0-9]+]] -; LW: ret i32 %sum, !dbg ![[FOORET:[0-9]+]] - -; We'll see @foo before @bar if this file is second. -; WL-LABEL: define weak_odr i32 @foo( -; WL: %sum = add i32 %a, %b, !dbg ![[FOOADD:[0-9]+]] -; WL: ret i32 %sum, !dbg ![[FOORET:[0-9]+]] -; WL-LABEL: define i32 @bar( -; WL: %sum = add i32 %a, %b, !dbg ![[FOOINBAR:[0-9]+]] -; WL: ret i32 %sum, !dbg ![[BARRET:[0-9]+]] - -define i32 @bar(i32 %a, i32 %b) { -entry: - %sum = add i32 %a, %b, !dbg !DILocation(line: 2, scope: !4, - inlinedAt: !DILocation(line: 12, scope: !3)) - ret i32 %sum, !dbg !DILocation(line: 13, scope: !3) -} - -define linkonce_odr i32 @foo(i32 %a, i32 %b) { -entry: - %sum = add i32 %a, %b, !dbg !DILocation(line: 2, scope: !4) - ret i32 %sum, !dbg !DILocation(line: 3, scope: !4) -} - -!llvm.module.flags = !{!0} -!0 = !{i32 2, !"Debug Info Version", i32 3} - -; CHECK-LABEL: !llvm.dbg.cu = -; LW-SAME: !{![[LCU:[0-9]+]], ![[WCU:[0-9]+]]} -; WL-SAME: !{![[WCU:[0-9]+]], ![[LCU:[0-9]+]]} -!llvm.dbg.cu = !{!1} - -; LW: ![[LCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[LSPs:[0-9]+]] -; LW: ![[LSPs]] = !{![[BARSP:[0-9]+]], ![[FOOSP:[0-9]+]]} -; LW: ![[BARSP]] = !DISubprogram(name: "bar", -; LW-SAME: function: i32 (i32, i32)* @bar -; LW: ![[FOOSP]] = {{.*}}!DISubprogram(name: "foo", -; LW-NOT: function: -; LW-SAME: ){{$}} -; LW: ![[WCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[WSPs:[0-9]+]] -; LW: ![[WSPs]] = !{![[WEAKFOOSP:[0-9]+]]} -; LW: ![[WEAKFOOSP]] = !DISubprogram(name: "foo", -; LW-SAME: function: i32 (i32, i32)* @foo -; LW: ![[FOOINBAR]] = !DILocation(line: 2, scope: ![[FOOSP]], inlinedAt: ![[BARIA:[0-9]+]]) -; LW: ![[BARIA]] = !DILocation(line: 12, scope: ![[BARSP]]) -; LW: ![[BARRET]] = !DILocation(line: 13, scope: ![[BARSP]]) -; LW: ![[FOOADD]] = !DILocation(line: 2, scope: ![[WEAKFOOSP]]) -; LW: ![[FOORET]] = !DILocation(line: 3, scope: ![[WEAKFOOSP]]) - -; Same as above, but reordered. -; WL: ![[WCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[WSPs:[0-9]+]] -; WL: ![[WSPs]] = !{![[WEAKFOOSP:[0-9]+]]} -; WL: ![[WEAKFOOSP]] = !DISubprogram(name: "foo", -; WL-SAME: function: i32 (i32, i32)* @foo -; WL: ![[LCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[LSPs:[0-9]+]] -; Note: for symmetry, LSPs would have a different copy of the subprogram. -; WL: ![[LSPs]] = !{![[BARSP:[0-9]+]], ![[WEAKFOOSP:[0-9]+]]} -; WL: ![[BARSP]] = !DISubprogram(name: "bar", -; WL-SAME: function: i32 (i32, i32)* @bar -; WL: ![[FOOADD]] = !DILocation(line: 2, scope: ![[WEAKFOOSP]]) -; WL: ![[FOORET]] = !DILocation(line: 3, scope: ![[WEAKFOOSP]]) -; WL: ![[FOOINBAR]] = !DILocation(line: 2, scope: ![[WEAKFOOSP]], inlinedAt: ![[BARIA:[0-9]+]]) -; WL: ![[BARIA]] = !DILocation(line: 12, scope: ![[BARSP]]) -; WL: ![[BARRET]] = !DILocation(line: 13, scope: ![[BARSP]]) - -!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !{!3, !4}, emissionKind: 1) -!2 = !DIFile(filename: "bar.c", directory: "/path/to/dir") -!3 = !DISubprogram(file: !2, scope: !2, line: 11, name: "bar", function: i32 (i32, i32)* @bar, type: !6) -!4 = !DISubprogram(file: !5, scope: !5, line: 1, name: "foo", function: i32 (i32, i32)* @foo, type: !6) -!5 = !DIFile(filename: "foo.h", directory: "/path/to/dir") -!6 = !DISubroutineType(types: !{}) - -; Crasher for llc. -; REQUIRES: object-emission -; RUN: %llc_dwarf -filetype=obj -O0 %t1 -o %t1.o -; RUN: llvm-dwarfdump %t1.o -debug-dump=all | FileCheck %s -check-prefix=DWLW -check-prefix=DW -; RUN: %llc_dwarf -filetype=obj -O0 %t2 -o %t2.o -; RUN: llvm-dwarfdump %t2.o -debug-dump=all | FileCheck %s -check-prefix=DWWL -check-prefix=DW -; Check that the debug info puts the subprogram (with PCs) in the correct -; compile unit. - -; DW-LABEL: .debug_info contents: -; DWLW: DW_TAG_compile_unit -; DWLW: DW_AT_name {{.*}}"bar.c" -; Note: If we stop emitting foo here, the comment below for DWWL (and the -; check) should be copied up here. -; DWLW: DW_TAG_subprogram -; DWLW-NOT: DW_AT_low_pc -; DWLW-NOT: DW_AT_high_pc -; DWLW: DW_AT_name {{.*}}foo -; DWLW: DW_AT_decl_file {{.*}}"/path/to/dir{{/|\\}}foo.h" -; DWLW: DW_AT_decl_line {{.*}}(1) -; DWLW: DW_TAG_subprogram -; DWLW: DW_AT_low_pc -; DWLW: DW_AT_high_pc -; DWLW: DW_AT_name {{.*}}bar -; DWLW: DW_AT_decl_file {{.*}}"/path/to/dir{{/|\\}}bar.c" -; DWLW: DW_AT_decl_line {{.*}}(11) -; DWLW: DW_TAG_inlined_subroutine -; DWLW: DW_AT_abstract_origin -; DWLW: DW_TAG_compile_unit -; DWLW: DW_AT_name {{.*}}"foo.c" -; DWLW: DW_TAG_subprogram -; DWLW: DW_AT_low_pc -; DWLW: DW_AT_high_pc -; DWLW: DW_AT_name {{.*}}foo -; DWLW: DW_AT_decl_file {{.*}}"/path/to/dir{{/|\\}}foo.h" -; DWLW: DW_AT_decl_line {{.*}}(1) - -; The DWARF output is already symmetric (just reordered). -; DWWL: DW_TAG_compile_unit -; DWWL: DW_AT_name {{.*}}"foo.c" -; DWWL: DW_TAG_subprogram -; DWWL: DW_AT_low_pc -; DWWL: DW_AT_high_pc -; DWWL: DW_AT_name {{.*}}foo -; DWWL: DW_AT_decl_file {{.*}}"/path/to/dir{{/|\\}}foo.h" -; DWWL: DW_AT_decl_line {{.*}}(1) -; DWWL: DW_TAG_compile_unit -; DWWL: DW_AT_name {{.*}}"bar.c" -; Note: for symmetry, foo would also show up in this compile unit -; (alternatively, it wouldn't show up in the DWLW case). If we start emitting -; foo here, this should be updated by checking that we don't emit low_pc and -; high_pc for it. -; DWWL-NOT: DW_AT_name {{.*}}foo -; DWWL: DW_TAG_subprogram -; DWWL-NOT: DW_AT_name {{.*}}foo -; DWWL: DW_AT_low_pc -; DWWL: DW_AT_high_pc -; DWWL-NOT: DW_AT_name {{.*}}foo -; DWWL: DW_AT_name {{.*}}bar -; DWWL: DW_AT_decl_file {{.*}}"/path/to/dir{{/|\\}}bar.c" -; DWWL: DW_AT_decl_line {{.*}}(11) -; DWWL: DW_TAG_inlined_subroutine -; DWWL: DW_AT_abstract_origin - -; DW-LABEL: .debug_line contents: -; Check that we have the right things in the line table as well. - -; DWLW-LABEL: file_names[{{ *}}1]{{.*}} bar.c -; DWLW-LABEL: file_names[{{ *}}2]{{.*}} foo.h -; DWLW: 2 0 2 0 0 is_stmt prologue_end -; DWLW-LABEL: file_names[{{ *}}1]{{.*}} foo.h -; DWLW: 2 0 1 0 0 is_stmt prologue_end -; DWLW-NOT: prologue_end - -; DWWL-LABEL: file_names[{{ *}}1]{{.*}} foo.h -; DWWL: 2 0 1 0 0 is_stmt prologue_end -; DWWL-LABEL: file_names[{{ *}}1]{{.*}} bar.c -; DWWL-LABEL: file_names[{{ *}}2]{{.*}} foo.h -; DWWL: 2 0 2 0 0 is_stmt prologue_end -; DWWL-NOT: prologue_end diff --git a/llvm/test/Linker/subprogram-linkonce-weak.ll b/llvm/test/Linker/subprogram-linkonce-weak.ll index a0d6927f0d8..6330ecc5b55 100644 --- a/llvm/test/Linker/subprogram-linkonce-weak.ll +++ b/llvm/test/Linker/subprogram-linkonce-weak.ll @@ -55,14 +55,14 @@ entry: ; LW: ![[LCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[LSPs:[0-9]+]] ; LW: ![[LSPs]] = !{![[BARSP:[0-9]+]], ![[FOOSP:[0-9]+]]} -; LW: ![[BARSP]] = !DISubprogram(name: "bar", +; LW: ![[BARSP]] = distinct !DISubprogram(name: "bar", ; LW-SAME: function: i32 (i32, i32)* @bar -; LW: ![[FOOSP]] = {{.*}}!DISubprogram(name: "foo", +; LW: ![[FOOSP]] = distinct !DISubprogram(name: "foo", ; LW-NOT: function: ; LW-SAME: ){{$}} ; LW: ![[WCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[WSPs:[0-9]+]] ; LW: ![[WSPs]] = !{![[WEAKFOOSP:[0-9]+]]} -; LW: ![[WEAKFOOSP]] = !DISubprogram(name: "foo", +; LW: ![[WEAKFOOSP]] = distinct !DISubprogram(name: "foo", ; LW-SAME: function: i32 (i32, i32)* @foo ; LW: ![[FOOINBAR]] = !DILocation(line: 2, scope: ![[FOOSP]], inlinedAt: ![[BARIA:[0-9]+]]) ; LW: ![[BARIA]] = !DILocation(line: 12, scope: ![[BARSP]]) @@ -73,13 +73,13 @@ entry: ; Same as above, but reordered. ; WL: ![[WCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[WSPs:[0-9]+]] ; WL: ![[WSPs]] = !{![[WEAKFOOSP:[0-9]+]]} -; WL: ![[WEAKFOOSP]] = !DISubprogram(name: "foo", +; WL: ![[WEAKFOOSP]] = distinct !DISubprogram(name: "foo", ; WL-SAME: function: i32 (i32, i32)* @foo ; WL: ![[LCU]] = distinct !DICompileUnit({{.*}} subprograms: ![[LSPs:[0-9]+]] ; WL: ![[LSPs]] = !{![[BARSP:[0-9]+]], ![[FOOSP:[0-9]+]]} -; WL: ![[BARSP]] = !DISubprogram(name: "bar", +; WL: ![[BARSP]] = distinct !DISubprogram(name: "bar", ; WL-SAME: function: i32 (i32, i32)* @bar -; WL: ![[FOOSP]] = {{.*}}!DISubprogram(name: "foo", +; WL: ![[FOOSP]] = distinct !DISubprogram(name: "foo", ; Note, for symmetry, this should be "NOT: function:" and "SAME: ){{$}}". ; WL-SAME: function: i32 (i32, i32)* @foo ; WL: ![[FOOCALL]] = !DILocation(line: 52, scope: ![[WEAKFOOSP]]) @@ -90,8 +90,8 @@ entry: !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !{!3, !4}, emissionKind: 1) !2 = !DIFile(filename: "bar.c", directory: "/path/to/dir") -!3 = !DISubprogram(file: !2, scope: !2, line: 11, name: "bar", function: i32 (i32, i32)* @bar, type: !5) -!4 = !DISubprogram(file: !2, scope: !2, line: 1, name: "foo", function: i32 (i32, i32)* @foo, type: !5) +!3 = distinct !DISubprogram(file: !2, scope: !2, line: 11, name: "bar", function: i32 (i32, i32)* @bar, type: !5) +!4 = distinct !DISubprogram(file: !2, scope: !2, line: 1, name: "foo", function: i32 (i32, i32)* @foo, type: !5) !5 = !DISubroutineType(types: !{}) ; Crasher for llc. diff --git a/llvm/test/Linker/type-unique-odr-a.ll b/llvm/test/Linker/type-unique-odr-a.ll index 6f3ee71fe7f..2030598a9b4 100644 --- a/llvm/test/Linker/type-unique-odr-a.ll +++ b/llvm/test/Linker/type-unique-odr-a.ll @@ -87,11 +87,11 @@ attributes #1 = { nounwind readnone } !11 = !{null, !12} !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !"_ZTS1A") !14 = !{!15, !19} -!15 = !DISubprogram(name: "baz", linkageName: "_Z3bazv", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !5, scope: !16, type: !17, function: void ()* @_Z3bazv, variables: !2) +!15 = distinct !DISubprogram(name: "baz", linkageName: "_Z3bazv", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !5, scope: !16, type: !17, function: void ()* @_Z3bazv, variables: !2) !16 = !DIFile(filename: "type-unique-odr-a.cpp", directory: "") !17 = !DISubroutineType(types: !18) !18 = !{null} -!19 = !DISubprogram(name: "bar", linkageName: "_ZL3barv", line: 7, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !5, scope: !16, type: !17, function: void ()* @_ZL3barv, variables: !2) +!19 = distinct !DISubprogram(name: "bar", linkageName: "_ZL3barv", line: 7, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !5, scope: !16, type: !17, function: void ()* @_ZL3barv, variables: !2) !20 = !{i32 2, !"Dwarf Version", i32 4} !21 = !{i32 1, !"Debug Info Version", i32 3} !22 = !{!"clang version 3.5.0 "} diff --git a/llvm/test/Linker/type-unique-odr-b.ll b/llvm/test/Linker/type-unique-odr-b.ll index 325570754bc..fe45b29d3a8 100644 --- a/llvm/test/Linker/type-unique-odr-b.ll +++ b/llvm/test/Linker/type-unique-odr-b.ll @@ -68,12 +68,12 @@ attributes #1 = { nounwind readnone } !11 = !{null, !12} !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !"_ZTS1A") !14 = !{!15, !16, !20} -!15 = !DISubprogram(name: "getFoo", linkageName: "_ZN1A6getFooEv", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !5, scope: !"_ZTS1A", type: !10, function: void (%class.A*)* @_ZN1A6getFooEv, declaration: !9, variables: !2) -!16 = !DISubprogram(name: "f", linkageName: "_Z1fv", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !5, scope: !17, type: !18, function: void ()* @_Z1fv, variables: !2) +!15 = distinct !DISubprogram(name: "getFoo", linkageName: "_ZN1A6getFooEv", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 8, file: !5, scope: !"_ZTS1A", type: !10, function: void (%class.A*)* @_ZN1A6getFooEv, declaration: !9, variables: !2) +!16 = distinct !DISubprogram(name: "f", linkageName: "_Z1fv", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !5, scope: !17, type: !18, function: void ()* @_Z1fv, variables: !2) !17 = !DIFile(filename: "type-unique-odr-b.cpp", directory: "") !18 = !DISubroutineType(types: !19) !19 = !{null} -!20 = !DISubprogram(name: "bar", linkageName: "_ZL3barv", line: 10, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 10, file: !5, scope: !17, type: !18, function: void ()* @_ZL3barv, variables: !2) +!20 = distinct !DISubprogram(name: "bar", linkageName: "_ZL3barv", line: 10, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 10, file: !5, scope: !17, type: !18, function: void ()* @_ZL3barv, variables: !2) !21 = !{i32 2, !"Dwarf Version", i32 4} !22 = !{i32 1, !"Debug Info Version", i32 3} !23 = !{!"clang version 3.5.0 "} diff --git a/llvm/test/Linker/type-unique-simple-a.ll b/llvm/test/Linker/type-unique-simple-a.ll index 344fa1add03..a7102e72ba2 100644 --- a/llvm/test/Linker/type-unique-simple-a.ll +++ b/llvm/test/Linker/type-unique-simple-a.ll @@ -78,7 +78,7 @@ attributes #1 = { nounwind readnone } !7 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 2, size: 32, align: 32, file: !5, scope: !"_ZTS4Base", baseType: !8) !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !9 = !{!10} -!10 = !DISubprogram(name: "f", linkageName: "_Z1fi", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !11, type: !12, function: void (i32)* @_Z1fi, variables: !2) +!10 = distinct !DISubprogram(name: "f", linkageName: "_Z1fi", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !11, type: !12, function: void (i32)* @_Z1fi, variables: !2) !11 = !DIFile(filename: "foo.cpp", directory: "/Users/mren/c_testing/type_unique_air/simple") !12 = !DISubroutineType(types: !13) !13 = !{null, !8} diff --git a/llvm/test/Linker/type-unique-simple-b.ll b/llvm/test/Linker/type-unique-simple-b.ll index 3b17e6f341e..79e72a2df81 100644 --- a/llvm/test/Linker/type-unique-simple-b.ll +++ b/llvm/test/Linker/type-unique-simple-b.ll @@ -48,11 +48,11 @@ attributes #3 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n !7 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 2, size: 32, align: 32, file: !5, scope: !"_ZTS4Base", baseType: !8) !8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !9 = !{!10, !14} -!10 = !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !11, type: !12, function: void (i32)* @_Z1gi, variables: !2) +!10 = distinct !DISubprogram(name: "g", linkageName: "_Z1gi", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !11, type: !12, function: void (i32)* @_Z1gi, variables: !2) !11 = !DIFile(filename: "bar.cpp", directory: "/Users/mren/c_testing/type_unique_air/simple") !12 = !DISubroutineType(types: !13) !13 = !{null, !8} -!14 = !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !11, type: !15, function: i32 ()* @main, variables: !2) +!14 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !11, type: !15, function: i32 ()* @main, variables: !2) !15 = !DISubroutineType(types: !16) !16 = !{!8} !17 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/llvm/test/Linker/type-unique-simple2-a.ll b/llvm/test/Linker/type-unique-simple2-a.ll index 56682c4babb..e46e716806c 100644 --- a/llvm/test/Linker/type-unique-simple2-a.ll +++ b/llvm/test/Linker/type-unique-simple2-a.ll @@ -106,13 +106,13 @@ attributes #4 = { nounwind readnone } !23 = !DIDerivedType(tag: DW_TAG_typedef, name: "foo_t", line: 1, file: !24, baseType: !13) !24 = !DIFile(filename: "a.cpp", directory: "") !26 = !{!27, !31, !34} -!27 = !DISubprogram(name: "bar", linkageName: "_Z3barv", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !24, scope: !28, type: !29, function: i32 ()* @_Z3barv, variables: !2) +!27 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barv", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !24, scope: !28, type: !29, function: i32 ()* @_Z3barv, variables: !2) !28 = !DIFile(filename: "a.cpp", directory: "") !29 = !DISubroutineType(types: !30) !30 = !{!23} -!31 = !DISubprogram(name: "A", linkageName: "_ZN1AC1Ev", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1AC1Ev, declaration: !32, variables: !2) +!31 = distinct !DISubprogram(name: "A", linkageName: "_ZN1AC1Ev", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1AC1Ev, declaration: !32, variables: !2) !32 = !DISubprogram(name: "A", isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scope: !"_ZTS1A", type: !15) -!34 = !DISubprogram(name: "A", linkageName: "_ZN1AC2Ev", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1AC2Ev, declaration: !32, variables: !2) +!34 = distinct !DISubprogram(name: "A", linkageName: "_ZN1AC2Ev", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1AC2Ev, declaration: !32, variables: !2) !35 = !{i32 2, !"Dwarf Version", i32 2} !36 = !{i32 1, !"Debug Info Version", i32 3} !37 = !{!"clang version 3.5 "} diff --git a/llvm/test/Linker/type-unique-simple2-b.ll b/llvm/test/Linker/type-unique-simple2-b.ll index f53b08e3629..ab9f23efb23 100644 --- a/llvm/test/Linker/type-unique-simple2-b.ll +++ b/llvm/test/Linker/type-unique-simple2-b.ll @@ -71,9 +71,9 @@ attributes #1 = { nounwind readnone } !22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !23) !23 = !DIDerivedType(tag: DW_TAG_typedef, name: "foo_t", line: 1, file: !5, baseType: !13) !25 = !{!26, !28} -!26 = !DISubprogram(name: "setFoo", linkageName: "_ZN1A6setFooEv", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !27, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1A6setFooEv, declaration: !14, variables: !2) +!26 = distinct !DISubprogram(name: "setFoo", linkageName: "_ZN1A6setFooEv", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !27, scope: !"_ZTS1A", type: !15, function: void (%class.A*)* @_ZN1A6setFooEv, declaration: !14, variables: !2) !27 = !DIFile(filename: "b.cpp", directory: "") -!28 = !DISubprogram(name: "getFoo", linkageName: "_ZN1A6getFooEv", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !27, scope: !"_ZTS1A", type: !20, function: i32 (%class.A*)* @_ZN1A6getFooEv, declaration: !19, variables: !2) +!28 = distinct !DISubprogram(name: "getFoo", linkageName: "_ZN1A6getFooEv", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !27, scope: !"_ZTS1A", type: !20, function: i32 (%class.A*)* @_ZN1A6getFooEv, declaration: !19, variables: !2) !29 = !{i32 2, !"Dwarf Version", i32 2} !30 = !{i32 1, !"Debug Info Version", i32 3} !31 = !{!"clang version 3.5 "} diff --git a/llvm/test/Linker/type-unique-type-array-a.ll b/llvm/test/Linker/type-unique-type-array-a.ll index ca6c2524bb8..0004d35c52a 100644 --- a/llvm/test/Linker/type-unique-type-array-a.ll +++ b/llvm/test/Linker/type-unique-type-array-a.ll @@ -107,12 +107,12 @@ attributes #3 = { nounwind } !12 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 2, size: 32, align: 32, file: !1, scope: !"_ZTS2SA", baseType: !13) !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !14 = !{!15, !20} -!15 = !DISubprogram(name: "topA", linkageName: "_Z4topAP1A2SA", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !1, scope: !16, type: !17, function: void (%class.A*, i32)* @_Z4topAP1A2SA, variables: !2) +!15 = distinct !DISubprogram(name: "topA", linkageName: "_Z4topAP1A2SA", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !1, scope: !16, type: !17, function: void (%class.A*, i32)* @_Z4topAP1A2SA, variables: !2) !16 = !DIFile(filename: "a.cpp", directory: "/Users/manmanren/test-Nov/type_unique/rdar_di_array") !17 = !DISubroutineType(types: !18) !18 = !{null, !19, !"_ZTS2SA"} !19 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS1A") -!20 = !DISubprogram(name: "testA", linkageName: "_ZN1A5testAE2SA", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !"_ZTS1A", type: !7, function: void (%class.A*, i32)* @_ZN1A5testAE2SA, declaration: !6, variables: !2) +!20 = distinct !DISubprogram(name: "testA", linkageName: "_ZN1A5testAE2SA", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !"_ZTS1A", type: !7, function: void (%class.A*, i32)* @_ZN1A5testAE2SA, declaration: !6, variables: !2) !21 = !{i32 2, !"Dwarf Version", i32 2} !22 = !{i32 2, !"Debug Info Version", i32 3} !23 = !{!"clang version 3.5.0 (trunk 214102:214113M) (llvm/trunk 214102:214115M)"} diff --git a/llvm/test/Linker/type-unique-type-array-b.ll b/llvm/test/Linker/type-unique-type-array-b.ll index 82359817c05..b4d9a155d74 100644 --- a/llvm/test/Linker/type-unique-type-array-b.ll +++ b/llvm/test/Linker/type-unique-type-array-b.ll @@ -86,12 +86,12 @@ attributes #3 = { nounwind } !12 = !DIDerivedType(tag: DW_TAG_member, name: "a", line: 2, size: 32, align: 32, file: !1, scope: !"_ZTS2SA", baseType: !13) !13 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !14 = !{!15, !20} -!15 = !DISubprogram(name: "topB", linkageName: "_Z4topBP1B2SA", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !1, scope: !16, type: !17, function: void (%class.B*, i32)* @_Z4topBP1B2SA, variables: !2) +!15 = distinct !DISubprogram(name: "topB", linkageName: "_Z4topBP1B2SA", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !1, scope: !16, type: !17, function: void (%class.B*, i32)* @_Z4topBP1B2SA, variables: !2) !16 = !DIFile(filename: "b.cpp", directory: "/Users/manmanren/test-Nov/type_unique/rdar_di_array") !17 = !DISubroutineType(types: !18) !18 = !{null, !19, !"_ZTS2SA"} !19 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS1B") -!20 = !DISubprogram(name: "testB", linkageName: "_ZN1B5testBE2SA", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !"_ZTS1B", type: !7, function: void (%class.B*, i32)* @_ZN1B5testBE2SA, declaration: !6, variables: !2) +!20 = distinct !DISubprogram(name: "testB", linkageName: "_ZN1B5testBE2SA", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !"_ZTS1B", type: !7, function: void (%class.B*, i32)* @_ZN1B5testBE2SA, declaration: !6, variables: !2) !21 = !{i32 2, !"Dwarf Version", i32 2} !22 = !{i32 2, !"Debug Info Version", i32 3} !23 = !{!"clang version 3.5.0 (trunk 214102:214113M) (llvm/trunk 214102:214115M)"} |