[llvm] r266446 - [PR27284] Reverse the ownership between DICompileUnit and DISubprogram.

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 15 13:48:33 PDT 2016


Hi Adrian,

unfortunately your recent debug info changes broke the Polly tests. Do 
you happen to have scripts that implement the necessary renaming or did
you update all test cases that appear hear by hand? In case you had some
scripts, could you possibly share them?

Best,
Tobias

On 04/15/2016 05:57 PM, Adrian Prantl via llvm-commits wrote:
> Modified: llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll (original)
> +++ llvm/trunk/test/Transforms/AddDiscriminators/oneline.ll Fri Apr 15 10:57:41 2016
> @@ -58,11 +58,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.module.flags = !{!10, !11}
>   !llvm.ident = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 250915)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 250915)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "a.cc", directory: "/usr/local/google/home/dehao/discr")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, variables: !8)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !8)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/ArgumentPromotion/dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ArgumentPromotion/dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/ArgumentPromotion/dbg.ll (original)
> +++ llvm/trunk/test/Transforms/ArgumentPromotion/dbg.ll Fri Apr 15 10:57:41 2016
> @@ -23,7 +23,6 @@ define void @caller(i32** %Y) {
>
>   !0 = !{i32 2, !"Debug Info Version", i32 3}
>   !1 = !DILocation(line: 8, scope: !2)
> -!2 = distinct !DISubprogram(name: "test", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, scope: null)
> -!3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: LineTablesOnly, file: !5, subprograms: !4)
> -!4 = !{!2}
> +!2 = distinct !DISubprogram(name: "test", line: 3, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !3, scopeLine: 3, scope: null)
> +!3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: false, emissionKind: LineTablesOnly, file: !5)
>   !5 = !DIFile(filename: "test.c", directory: "")
>
> Modified: llvm/trunk/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll (original)
> +++ llvm/trunk/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll Fri Apr 15 10:57:41 2016
> @@ -101,10 +101,9 @@ catch:
>   !llvm.module.flags = !{!7, !8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 254906) (llvm/trunk 254917)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: null, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 254906) (llvm/trunk 254917)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: null)
>   !1 = !DIFile(filename: "t.c", directory: "D:\5Csrc\5Cllvm\5Cbuild")
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, variables: null)
> +!4 = distinct !DISubprogram(name: "test_dbg_value", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: null)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null}
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll (original)
> +++ llvm/trunk/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll Fri Apr 15 10:57:41 2016
> @@ -46,9 +46,9 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.dbg.cu = !{!3}
>   !llvm.module.flags = !{!30}
>   !0 = !DILocalVariable(name: "name", line: 8, arg: 1, scope: !1, file: !2, type: !6)
> -!1 = distinct !DISubprogram(name: "vfs_addname", linkageName: "vfs_addname", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !28, scope: !2, type: !4)
> +!1 = distinct !DISubprogram(name: "vfs_addname", linkageName: "vfs_addname", line: 12, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !28, scope: !2, type: !4)
>   !2 = !DIFile(filename: "tail.c", directory: "/Users/echeng/LLVM/radars/r7927803/")
> -!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", isOptimized: true, emissionKind: FullDebug, file: !28, enums: !29, retainedTypes: !29, subprograms: !{!1, !16})
> +!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build 9999)", isOptimized: true, emissionKind: FullDebug, file: !28, enums: !29, retainedTypes: !29)
>   !4 = !DISubroutineType(types: !5)
>   !5 = !{!6, !6, !9, !9, !9}
>   !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !28, scope: !2, baseType: !7)
> @@ -61,7 +61,7 @@ declare void @llvm.dbg.value(metadata, i
>   !13 = !DILocation(line: 13, scope: !14)
>   !14 = distinct !DILexicalBlock(line: 12, column: 0, file: !28, scope: !1)
>   !15 = !DILocalVariable(name: "name", line: 17, arg: 1, scope: !16, file: !2, type: !6)
> -!16 = distinct !DISubprogram(name: "add_name_internal", linkageName: "add_name_internal", line: 22, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !28, scope: !2, type: !17)
> +!16 = distinct !DISubprogram(name: "add_name_internal", linkageName: "add_name_internal", line: 22, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, file: !28, scope: !2, type: !17)
>   !17 = !DISubroutineType(types: !18)
>   !18 = !{!6, !6, !9, !9, !19, !9}
>   !19 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned char", size: 8, align: 8, encoding: DW_ATE_unsigned_char)
>
> Modified: llvm/trunk/test/Transforms/DeadArgElim/dbginfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadArgElim/dbginfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/DeadArgElim/dbginfo.ll (original)
> +++ llvm/trunk/test/Transforms/DeadArgElim/dbginfo.ll Fri Apr 15 10:57:41 2016
> @@ -48,15 +48,14 @@ attributes #2 = { nounwind readnone }
>   !llvm.module.flags = !{!12, !13}
>   !llvm.ident = !{!14}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.6.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.6.0 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "dbg.cpp", directory: "/tmp/dbginfo")
>   !2 = !{}
> -!3 = !{!4, !8}
> -!4 = distinct !DISubprogram(name: "f2", linkageName: "_Z2f2v", line: 4, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "f2", linkageName: "_Z2f2v", line: 4, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "dbg.cpp", directory: "/tmp/dbginfo")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{null}
> -!8 = distinct !DISubprogram(name: "f1", linkageName: "_ZL2f1iz", line: 1, isLocal: true, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !1, scope: !5, type: !9, variables: !2)
> +!8 = distinct !DISubprogram(name: "f1", linkageName: "_ZL2f1iz", line: 1, isLocal: true, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !9, variables: !2)
>   !9 = !DISubroutineType(types: !10)
>   !10 = !{null, !11, null}
>   !11 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/DeadStoreElimination/inst-limits.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/DeadStoreElimination/inst-limits.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/DeadStoreElimination/inst-limits.ll (original)
> +++ llvm/trunk/test/Transforms/DeadStoreElimination/inst-limits.ll Fri Apr 15 10:57:41 2016
> @@ -245,11 +245,10 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!11, !13}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.4", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.4", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "test.c", directory: "/home/tmp")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test_within_limit", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test_within_limit", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "test.c", directory: "/home/tmp")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{!8}
>
> Modified: llvm/trunk/test/Transforms/FunctionImport/Inputs/funcimport_debug.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/Inputs/funcimport_debug.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/FunctionImport/Inputs/funcimport_debug.ll (original)
> +++ llvm/trunk/test/Transforms/FunctionImport/Inputs/funcimport_debug.ll Fri Apr 15 10:57:41 2016
> @@ -14,11 +14,10 @@ attributes #0 = { nounwind uwtable "disa
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 255685) (llvm/trunk 255682)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 255685) (llvm/trunk 255682)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "funcimport_debug.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "func", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null}
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/FunctionImport/funcimport_debug.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/funcimport_debug.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/FunctionImport/funcimport_debug.ll (original)
> +++ llvm/trunk/test/Transforms/FunctionImport/funcimport_debug.ll Fri Apr 15 10:57:41 2016
> @@ -10,14 +10,13 @@
>
>   ; Check that we have exactly two subprograms (that func's subprogram wasn't
>   ; linked more than once for example), and that they are connected to
> -; the subprogram list on a compute unit.
> -; CHECK: !{{[0-9]+}} = distinct !DICompileUnit({{.*}} subprograms: ![[SPs1:[0-9]+]]
> -; CHECK: ![[SPs1]] = !{![[MAINSP:[0-9]+]]}
> -; CHECK: ![[MAINSP]] = distinct !DISubprogram(name: "main"
> -; CHECK: !{{[0-9]+}} = distinct !DICompileUnit({{.*}} subprograms: ![[SPs2:[0-9]+]]
> -; CHECK-NOT: ![[SPs2]] = !{{{.*}}null{{.*}}}
> -; CHECK: ![[SPs2]] = !{![[FUNCSP:[0-9]+]]}
> -; CHECK: ![[FUNCSP]] = distinct !DISubprogram(name: "func"
> +; the correct compile unit.
> +; CHECK: ![[CU1:[0-9]+]] = distinct !DICompileUnit(
> +; CHECK: ![[CU2:[0-9]+]] = distinct !DICompileUnit(
> +; CHECK: distinct !DISubprogram(name: "main"
> +; CHECK-SAME:                   unit: ![[CU1]]
> +; CHECK: distinct !DISubprogram(name: "func"
> +; CHECK-SAME:                   unit: ![[CU2]]
>   ; CHECK-NOT: distinct !DISubprogram
>
>   ; ModuleID = 'funcimport_debug.o'
> @@ -40,11 +39,10 @@ attributes #1 = { "disable-tail-calls"="
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 255685) (llvm/trunk 255682)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 255685) (llvm/trunk 255682)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "funcimport_debug.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/function-numbering.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/function-numbering.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/function-numbering.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/function-numbering.ll Fri Apr 15 10:57:41 2016
> @@ -40,15 +40,14 @@ define void @baz() !dbg !8 {
>   !llvm.module.flags = !{!9, !10}
>   !llvm.ident = !{!11}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 ", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 ", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: ".../llvm/test/Transforms/GCOVProfiling/function-numbering.ll", directory: "")
>   !2 = !{}
> -!3 = !{!4, !7, !8}
> -!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, isOptimized: false, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: ".../llvm/test/Transforms/GCOVProfiling/function-numbering.ll", directory: "")
>   !6 = !DISubroutineType(types: !2)
> -!7 = distinct !DISubprogram(name: "bar", line: 2, isLocal: false, isDefinition: true, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
> -!8 = distinct !DISubprogram(name: "baz", line: 3, isLocal: false, isDefinition: true, isOptimized: false, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "bar", line: 2, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
> +!8 = distinct !DISubprogram(name: "baz", line: 3, isLocal: false, isDefinition: true, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
>   !9 = !{i32 2, !"Dwarf Version", i32 2}
>   !10 = !{i32 2, !"Debug Info Version", i32 3}
>   !11 = !{!"clang version 3.6.0 "}
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/global-ctor.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/global-ctor.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/global-ctor.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/global-ctor.ll Fri Apr 15 10:57:41 2016
> @@ -38,15 +38,14 @@ attributes #1 = { "less-precise-fpmad"="
>   !llvm.gcov = !{!16}
>   !llvm.ident = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (trunk 210217)", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (trunk 210217)", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "<stdin>", directory: "/home/nlewycky")
>   !2 = !{}
> -!3 = !{!4, !8}
> -!4 = distinct !DISubprogram(name: "__cxx_global_var_init", line: 2, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !5, scope: !6, type: !7, variables: !2)
> +!4 = distinct !DISubprogram(name: "__cxx_global_var_init", line: 2, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !5, scope: !6, type: !7, variables: !2)
>   !5 = !DIFile(filename: "global-ctor.ll", directory: "/home/nlewycky")
>   !6 = !DIFile(filename: "global-ctor.ll", directory: "/home/nlewycky")
>   !7 = !DISubroutineType(types: !2)
> -!8 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_global-ctor.ll", isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, file: !1, scope: !9, type: !7, variables: !2)
> +!8 = distinct !DISubprogram(name: "", linkageName: "_GLOBAL__sub_I_global-ctor.ll", isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagArtificial, isOptimized: false, unit: !0, file: !1, scope: !9, type: !7, variables: !2)
>   !9 = !DIFile(filename: "<stdin>", directory: "/home/nlewycky")
>   !10 = !{i32 2, !"Dwarf Version", i32 4}
>   !11 = !{i32 2, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/linezero.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/linezero.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/linezero.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/linezero.ll Fri Apr 15 10:57:41 2016
> @@ -93,7 +93,7 @@ attributes #3 = { noreturn nounwind }
>   !llvm.gcov = !{!25}
>   !llvm.ident = !{!26}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (trunk 209871)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !3, subprograms: !14, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (trunk 209871)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !3, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "<stdin>", directory: "PATTERN")
>   !2 = !{}
>   !3 = !{!4}
> @@ -107,13 +107,12 @@ attributes #3 = { noreturn nounwind }
>   !11 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
>   !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !"_ZTS6vector")
>   !13 = !DISubprogram(name: "end", linkageName: "_ZN6vector3endEv", line: 26, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 26, file: !5, scope: !"_ZTS6vector", type: !8)
> -!14 = !{!15, !20}
> -!15 = distinct !DISubprogram(name: "test", linkageName: "_Z4testv", line: 50, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 50, file: !5, scope: !16, type: !17, variables: !2)
> +!15 = distinct !DISubprogram(name: "test", linkageName: "_Z4testv", line: 50, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 50, file: !5, scope: !16, type: !17, variables: !2)
>   !16 = !DIFile(filename: "linezero.cc", directory: "PATTERN")
>   !17 = !DISubroutineType(types: !18)
>   !18 = !{!19}
>   !19 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!20 = distinct !DISubprogram(name: "f1", linkageName: "_Z2f1v", line: 54, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 54, file: !5, scope: !16, type: !21, variables: !2)
> +!20 = distinct !DISubprogram(name: "f1", linkageName: "_Z2f1v", line: 54, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 54, file: !5, scope: !16, type: !21, variables: !2)
>   !21 = !DISubroutineType(types: !22)
>   !22 = !{null}
>   !23 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/linkagename.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/linkagename.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/linkagename.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/linkagename.ll Fri Apr 15 10:57:41 2016
> @@ -13,12 +13,11 @@ entry:
>   !llvm.module.flags = !{!10}
>   !llvm.gcov = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 177323)", isOptimized: false, emissionKind: FullDebug, file: !2, enums: !3, retainedTypes: !3, subprograms: !4, globals: !3, imports:  !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 177323)", isOptimized: false, emissionKind: FullDebug, file: !2, enums: !3, retainedTypes: !3, globals: !3, imports:  !3)
>   !1 = !DIFile(filename: "hello.cc", directory: "/home/nlewycky")
>   !2 = !DIFile(filename: "hello.cc", directory: "/home/nlewycky")
>   !3 = !{}
> -!4 = !{!5}
> -!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !1, scope: !1, type: !6, variables: !3)
> +!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !1, type: !6, variables: !3)
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{null}
>   !8 = !DILocation(line: 1, scope: !5)
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/modules.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/modules.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/modules.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/modules.ll Fri Apr 15 10:57:41 2016
> @@ -5,7 +5,7 @@
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!3, !4}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !2, globals: !2, imports: !2, dwoId: 43981)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "LLVM", isOptimized: false, runtimeVersion: 2, splitDebugFilename: "my.dwo", emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2, dwoId: 43981)
>   !1 = !DIFile(filename: "<stdin>", directory: "/")
>   !2 = !{}
>   !3 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/return-block.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/return-block.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/return-block.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/return-block.ll Fri Apr 15 10:57:41 2016
> @@ -44,11 +44,10 @@ attributes #2 = { nounwind }
>   !llvm.module.flags = !{!11, !12}
>   !llvm.ident = !{!13}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 (trunk 223182)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !8, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 (trunk 223182)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !8, imports: !2)
>   !1 = !DIFile(filename: ".../llvm/test/Transforms/GCOVProfiling/return-block.ll", directory: "")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test", line: 5, isLocal: false, isDefinition: true, isOptimized: true, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test", line: 5, isLocal: false, isDefinition: true, isOptimized: true, unit: !0, scopeLine: 5, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: ".../llvm/test/Transforms/GCOVProfiling/return-block.ll", directory: "")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{null}
>
> Modified: llvm/trunk/test/Transforms/GCOVProfiling/version.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GCOVProfiling/version.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GCOVProfiling/version.ll (original)
> +++ llvm/trunk/test/Transforms/GCOVProfiling/version.ll Fri Apr 15 10:57:41 2016
> @@ -16,11 +16,10 @@ define void @test() !dbg !5 {
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 176994)", isOptimized: false, emissionKind: FullDebug, file: !11, enums: !3, retainedTypes: !3, subprograms: !4, globals: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.3 (trunk 176994)", isOptimized: false, emissionKind: FullDebug, file: !11, enums: !3, retainedTypes: !3, globals: !3)
>   !2 = !DIFile(filename: "version", directory: "/usr/local/google/home/nlewycky")
>   !3 = !{}
> -!4 = !{!5}
> -!5 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !10, scope: !6, type: !7, variables: !3)
> +!5 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !10, scope: !6, type: !7, variables: !3)
>   !6 = !DIFile(filename: "<stdin>", directory: ".")
>   !7 = !DISubroutineType(types: !{null})
>   !8 = !DILocation(line: 1, scope: !5)
>
> Modified: llvm/trunk/test/Transforms/GVN/load-pre-nonlocal.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/load-pre-nonlocal.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GVN/load-pre-nonlocal.ll (original)
> +++ llvm/trunk/test/Transforms/GVN/load-pre-nonlocal.ll Fri Apr 15 10:57:41 2016
> @@ -100,7 +100,7 @@ if.end:
>   !10 = !{}
>   !11 = !DISubroutineType(types: !10)
>   !12 = !DIFile(filename: "test.cpp", directory: "/tmp")
> -!13 = distinct !DISubprogram(name: "test", scope: !12, file: !12, line: 99, type: !11, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, variables: !10)
> +!13 = distinct !DISubprogram(name: "test", scope: !12, file: !12, line: 99, type: !11, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !18, variables: !10)
>   !14 = !DILocation(line: 100, column: 1, scope: !13)
>   !15 = !DILocation(line: 101, column: 1, scope: !13)
>   !16 = !DILocation(line: 102, column: 1, scope: !13)
> @@ -108,5 +108,4 @@ if.end:
>   !18 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !12,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!13})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/GVN/phi-translate.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/phi-translate.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GVN/phi-translate.ll (original)
> +++ llvm/trunk/test/Transforms/GVN/phi-translate.ll Fri Apr 15 10:57:41 2016
> @@ -45,7 +45,7 @@ end:
>   !3 = !{}
>   !4 = !DISubroutineType(types: !3)
>   !5 = !DIFile(filename: "a.cc", directory: "/tmp")
> -!6 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 42, type: !4, isLocal: false, isDefinition: true, scopeLine: 43, flags: DIFlagPrototyped, isOptimized: false, variables: !3)
> +!6 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 42, type: !4, isLocal: false, isDefinition: true, scopeLine: 43, flags: DIFlagPrototyped, isOptimized: false, unit: !12, variables: !3)
>   !7 = !DILocation(line: 43, column: 1, scope: !6)
>   !8 = !DILocation(line: 44, column: 1, scope: !6)
>   !9 = !DILocation(line: 45, column: 1, scope: !6)
> @@ -54,5 +54,4 @@ end:
>   !12 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !5,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!6})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/GlobalOpt/2009-03-05-dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/2009-03-05-dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/GlobalOpt/2009-03-05-dbg.ll (original)
> +++ llvm/trunk/test/Transforms/GlobalOpt/2009-03-05-dbg.ll Fri Apr 15 10:57:41 2016
> @@ -58,7 +58,7 @@ declare void @llvm.dbg.value(metadata, i
>   !1 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, globals: !{!0})
>   !2 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>   !3 = !DILocalVariable(name: "i", line: 4, arg: 1, scope: !4, file: !1, type: !2)
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1, type: !5)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !1, scope: !1, type: !5)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!2, !2}
>   !7 = !DILocation(line: 5, scope: !8)
> @@ -69,7 +69,7 @@ declare void @llvm.dbg.value(metadata, i
>   !12 = !DILocation(line: 11, scope: !8)
>   !13 = !DILocation(line: 14, scope: !14)
>   !14 = distinct !DILexicalBlock(line: 0, column: 0, file: !20, scope: !15)
> -!15 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scope: !1, type: !16)
> +!15 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !1, scope: !1, type: !16)
>   !16 = !DISubroutineType(types: !17)
>   !17 = !{!2}
>   !18 = !DILocation(line: 15, scope: !14)
>
> Modified: llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare-merge.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare-merge.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare-merge.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare-merge.ll Fri Apr 15 10:57:41 2016
> @@ -70,15 +70,14 @@ attributes #2 = { nounwind uwtable "disa
>   !llvm.module.flags = !{!9, !10}
>   !llvm.ident = !{!11}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 248518) (llvm/trunk 248512)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 248518) (llvm/trunk 248512)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "../1.c", directory: "/code/llvm-git/build")
>   !2 = !{}
> -!3 = !{!4, !7, !8}
> -!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null}
> -!7 = distinct !DISubprogram(name: "g", scope: !1, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, scopeLine: 6, isOptimized: false, variables: !2)
> -!8 = distinct !DISubprogram(name: "h", scope: !1, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true, scopeLine: 11, isOptimized: false, variables: !2)
> +!7 = distinct !DISubprogram(name: "g", scope: !1, file: !1, line: 6, type: !5, isLocal: false, isDefinition: true, scopeLine: 6, isOptimized: false, unit: !0, variables: !2)
> +!8 = distinct !DISubprogram(name: "h", scope: !1, file: !1, line: 11, type: !5, isLocal: false, isDefinition: true, scopeLine: 11, isOptimized: false, unit: !0, variables: !2)
>   !9 = !{i32 2, !"Dwarf Version", i32 4}
>   !10 = !{i32 2, !"Debug Info Version", i32 3}
>   !11 = !{!"clang version 3.8.0 (trunk 248518) (llvm/trunk 248512)"}
>
> Modified: llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/alloca-dbgdeclare.ll Fri Apr 15 10:57:41 2016
> @@ -82,7 +82,7 @@ attributes #3 = { noreturn nounwind }
>   !llvm.module.flags = !{!28, !29}
>   !llvm.ident = !{!30}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.7.0 (trunk 227480) (llvm/trunk 227517)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !3, subprograms: !14, globals: !25, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.7.0 (trunk 227480) (llvm/trunk 227517)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !3, globals: !25, imports: !2)
>   !1 = !DIFile(filename: "<stdin>", directory: "")
>   !2 = !{}
>   !3 = !{!4}
> @@ -96,17 +96,16 @@ attributes #3 = { noreturn nounwind }
>   !11 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)
>   !12 = !{!13}
>   !13 = !DISubrange(count: 2)
> -!14 = !{!15, !21, !24}
> -!15 = distinct !DISubprogram(name: "fn3", linkageName: "_Z3fn31A", line: 6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 6, file: !5, scope: !16, type: !17, variables: !19)
> +!15 = distinct !DISubprogram(name: "fn3", linkageName: "_Z3fn31A", line: 6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 6, file: !5, scope: !16, type: !17, variables: !19)
>   !16 = !DIFile(filename: "test.cpp", directory: "")
>   !17 = !DISubroutineType(types: !18)
>   !18 = !{null, !"_ZTS1A"}
>   !19 = !{!20}
>   !20 = !DILocalVariable(name: "p1", line: 6, arg: 1, scope: !15, file: !16, type: !"_ZTS1A")
> -!21 = distinct !DISubprogram(name: "fn4", linkageName: "_Z3fn4v", line: 11, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 11, file: !5, scope: !16, type: !22, variables: !2)
> +!21 = distinct !DISubprogram(name: "fn4", linkageName: "_Z3fn4v", line: 11, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 11, file: !5, scope: !16, type: !22, variables: !2)
>   !22 = !DISubroutineType(types: !23)
>   !23 = !{null}
> -!24 = distinct !DISubprogram(name: "fn5", linkageName: "_Z3fn5v", line: 13, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 13, file: !5, scope: !16, type: !22, variables: !2)
> +!24 = distinct !DISubprogram(name: "fn5", linkageName: "_Z3fn5v", line: 13, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 13, file: !5, scope: !16, type: !22, variables: !2)
>   !25 = !{!26, !27}
>   !26 = !DIGlobalVariable(name: "a", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !"_ZTS1A", variable: %struct.A* @a)
>   !27 = !DIGlobalVariable(name: "b", line: 4, isLocal: false, isDefinition: true, scope: null, file: !16, type: !"_ZTS1A", variable: %struct.A* @b)
>
> Modified: llvm/trunk/test/Transforms/Inline/debug-info-duplicate-calls.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/debug-info-duplicate-calls.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/debug-info-duplicate-calls.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/debug-info-duplicate-calls.ll Fri Apr 15 10:57:41 2016
> @@ -38,19 +38,19 @@
>   ; CHECK-DAG: [[F3:![0-9]+]] = distinct !DISubprogram(name: "f3"
>   ; CHECK-DAG: [[F4:![0-9]+]] = distinct !DISubprogram(name: "f4"
>
> -; CHECK: [[fcs1_f4_f3cs1_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs1_f4_f3cs1:![0-9]+]])
> -; CHECK: [[fcs1_f4_f3cs1]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs1_f4:![0-9]+]])
> -; CHECK: [[fcs1_f4]] = {{.*}}, scope: [[F4]], inlinedAt: [[fcs1:![0-9]+]])
> -; CHECK: [[fcs1]] = {{.*}}, scope: [[F]])
> -; CHECK: [[fcs1_f4_f3cs2_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs1_f4_f3cs2:![0-9]+]])
> -; CHECK: [[fcs1_f4_f3cs2]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs1_f4]])
> -
> -; CHECK: [[fcs2_f4_f3cs1_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs2_f4_f3cs1:![0-9]+]])
> -; CHECK: [[fcs2_f4_f3cs1]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs2_f4:![0-9]+]])
> -; CHECK: [[fcs2_f4]] = {{.*}}, scope: [[F4]], inlinedAt: [[fcs2:![0-9]+]])
> -; CHECK: [[fcs2]] = {{.*}}, scope: [[F]])
> -; CHECK: [[fcs2_f4_f3cs2_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs2_f4_f3cs2:![0-9]+]])
> -; CHECK: [[fcs2_f4_f3cs2]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs2_f4]])
> +; CHECK-DAG: [[fcs1_f4_f3cs1_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs1_f4_f3cs1:![0-9]+]])
> +; CHECK-DAG: [[fcs1_f4_f3cs1]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs1_f4:![0-9]+]])
> +; CHECK-DAG: [[fcs1_f4]] = {{.*}}, scope: [[F4]], inlinedAt: [[fcs1:![0-9]+]])
> +; CHECK-DAG: [[fcs1]] = {{.*}}, scope: [[F]])
> +; CHECK-DAG: [[fcs1_f4_f3cs2_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs1_f4_f3cs2:![0-9]+]])
> +; CHECK-DAG: [[fcs1_f4_f3cs2]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs1_f4]])
> +
> +; CHECK-DAG: [[fcs2_f4_f3cs1_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs2_f4_f3cs1:![0-9]+]])
> +; CHECK-DAG: [[fcs2_f4_f3cs1]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs2_f4:![0-9]+]])
> +; CHECK-DAG: [[fcs2_f4]] = {{.*}}, scope: [[F4]], inlinedAt: [[fcs2:![0-9]+]])
> +; CHECK-DAG: [[fcs2]] = {{.*}}, scope: [[F]])
> +; CHECK-DAG: [[fcs2_f4_f3cs2_f2]] = {{.*}}, scope: [[F2]], inlinedAt: [[fcs2_f4_f3cs2:![0-9]+]])
> +; CHECK-DAG: [[fcs2_f4_f3cs2]] = {{.*}}, scope: [[F3]], inlinedAt: [[fcs2_f4]])
>
>   $_Z2f4v = comdat any
>
> @@ -98,16 +98,15 @@ attributes #2 = { "less-precise-fpmad"="
>   !llvm.module.flags = !{!10, !11}
>   !llvm.ident = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.7.0 (trunk 226474) (llvm/trunk 226478)", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.7.0 (trunk 226474) (llvm/trunk 226478)", isOptimized: false, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "debug-info-duplicate-calls.cpp", directory: "/tmp/dbginfo")
>   !2 = !{}
> -!3 = !{!4, !7, !8, !9}
> -!4 = distinct !DISubprogram(name: "f", line: 13, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 13, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "f", line: 13, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 13, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "debug-info-duplicate-calls.cpp", directory: "/tmp/dbginfo")
>   !6 = !DISubroutineType(types: !2)
> -!7 = distinct !DISubprogram(name: "f4", line: 10, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 10, file: !1, scope: !5, type: !6, variables: !2)
> -!8 = distinct !DISubprogram(name: "f3", line: 7, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
> -!9 = distinct !DISubprogram(name: "f2", line: 4, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "f4", line: 10, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 10, file: !1, scope: !5, type: !6, variables: !2)
> +!8 = distinct !DISubprogram(name: "f3", line: 7, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
> +!9 = distinct !DISubprogram(name: "f2", line: 4, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !2)
>   !10 = !{i32 2, !"Dwarf Version", i32 4}
>   !11 = !{i32 2, !"Debug Info Version", i32 3}
>   !12 = !{!"clang version 3.7.0 (trunk 226474) (llvm/trunk 226478)"}
>
> Modified: llvm/trunk/test/Transforms/Inline/debug-invoke.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/debug-invoke.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/debug-invoke.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/debug-invoke.ll Fri Apr 15 10:57:41 2016
> @@ -34,12 +34,11 @@ lpad:
>   !llvm.dbg.cu = !{!5}
>
>   !1 = !{i32 2, !"Debug Info Version", i32 3}
> -!2 = distinct !DISubprogram()
> +!2 = distinct !DISubprogram(unit: !5)
>   !3 = !DILocation(line: 1, scope: !2)
>   !4 = !DILocation(line: 2, scope: !2)
>   !5 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !6,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!2})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>   !6 = !DIFile(filename: "path/davidino", directory: "/path/to/dir")
>
> Modified: llvm/trunk/test/Transforms/Inline/ignore-debug-info.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/ignore-debug-info.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/ignore-debug-info.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/ignore-debug-info.ll Fri Apr 15 10:57:41 2016
> @@ -47,10 +47,10 @@ attributes #0 = { nounwind readnone }
>   !llvm.module.flags = !{!3, !4}
>   !llvm.ident = !{!5}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !{!6}, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "test.c", directory: "")
>   !2 = !{}
>   !3 = !{i32 2, !"Dwarf Version", i32 4}
>   !4 = !{i32 1, !"Debug Info Version", i32 3}
>   !5 = !{!""}
> -!6 = distinct !DISubprogram()
> +!6 = distinct !DISubprogram(unit: !0)
>
> Modified: llvm/trunk/test/Transforms/Inline/inline_dbg_declare.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/inline_dbg_declare.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/inline_dbg_declare.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/inline_dbg_declare.ll Fri Apr 15 10:57:41 2016
> @@ -67,16 +67,15 @@ attributes #1 = { nounwind readnone }
>   !llvm.module.flags = !{!13, !14}
>   !llvm.ident = !{!15}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 (trunk)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0 (trunk)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "foo.c", directory: "")
>   !2 = !{}
> -!3 = !{!4, !9}
> -!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "foo.c", directory: "")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{!8, !8}
>   !8 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
> -!9 = distinct !DISubprogram(name: "bar", line: 6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !5, type: !10, variables: !2)
> +!9 = distinct !DISubprogram(name: "bar", line: 6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 7, file: !1, scope: !5, type: !10, variables: !2)
>   !10 = !DISubroutineType(types: !11)
>   !11 = !{null, !12}
>   !12 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !8)
> @@ -93,7 +92,7 @@ attributes #1 = { nounwind readnone }
>   !23 = !DILocation(line: 9, column: 1, scope: !9)
>
>   ; CHECK: [[FOO:![0-9]+]] = distinct !DISubprogram(name: "foo",
> -; CHECK: [[BAR:![0-9]+]] = distinct !DISubprogram(name: "bar",
>   ; CHECK: [[m23]] = !DILocalVariable(name: "x", arg: 1, scope: [[FOO]]
> +; CHECK: [[BAR:![0-9]+]] = distinct !DISubprogram(name: "bar",
>   ; CHECK: [[m24]] = !DILocation(line: 1, column: 17, scope: [[FOO]], inlinedAt: [[CALL_SITE:![0-9]+]])
>   ; CHECK: [[CALL_SITE]] = distinct !DILocation(line: 8, column: 14, scope: [[BAR]])
>
> Modified: llvm/trunk/test/Transforms/Inline/local-as-metadata-undominated-use.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Inline/local-as-metadata-undominated-use.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Inline/local-as-metadata-undominated-use.ll (original)
> +++ llvm/trunk/test/Transforms/Inline/local-as-metadata-undominated-use.ll Fri Apr 15 10:57:41 2016
> @@ -31,13 +31,12 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.9.0 (trunk 265634) (llvm/trunk 265637)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.9.0 (trunk 265634) (llvm/trunk 265637)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "t.c", directory: "/path/to/tests")
>
>   ; CHECK: ![[EMPTY]] = !{}
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true)
> +!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/InstCombine/debug-line.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/debug-line.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/debug-line.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/debug-line.ll Fri Apr 15 10:57:41 2016
> @@ -14,14 +14,13 @@ declare i32 @printf(i8*, ...)
>   !llvm.dbg.cu = !{!2}
>   !llvm.module.flags = !{!10}
>
> -!0 = distinct !DISubprogram(name: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", line: 4, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !8, scope: !1, type: !3)
>   !1 = !DIFile(filename: "m.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !{}, retainedTypes: !{}, subprograms: !9)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !{}, retainedTypes: !{})
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{null}
>   !5 = !DILocation(line: 5, column: 2, scope: !6)
>   !6 = distinct !DILexicalBlock(line: 4, column: 12, file: !8, scope: !0)
>   !7 = !DILocation(line: 6, column: 1, scope: !6)
>   !8 = !DIFile(filename: "m.c", directory: "/private/tmp")
> -!9 = !{!0}
>   !10 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/InstCombine/debuginfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/debuginfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/debuginfo.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/debuginfo.ll Fri Apr 15 10:57:41 2016
> @@ -32,9 +32,9 @@ entry:
>   !llvm.module.flags = !{!30}
>
>   !0 = !DILocalVariable(name: "__dest", line: 78, arg: 1, scope: !1, file: !2, type: !6)
> -!1 = distinct !DISubprogram(name: "foobar", line: 79, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 79, file: !27, scope: !2, type: !4, variables: !25)
> +!1 = distinct !DISubprogram(name: "foobar", line: 79, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !3, scopeLine: 79, file: !27, scope: !2, type: !4, variables: !25)
>   !2 = !DIFile(filename: "string.h", directory: "Game")
> -!3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 127710)", isOptimized: true, emissionKind: FullDebug, file: !28, enums: !29, retainedTypes: !29, subprograms: !24)
> +!3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 127710)", isOptimized: true, emissionKind: FullDebug, file: !28, enums: !29, retainedTypes: !29)
>   !4 = !DISubroutineType(types: !5)
>   !5 = !{!6}
>   !6 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, scope: !3, baseType: null)
> @@ -50,7 +50,6 @@ entry:
>   !21 = !DILocation(line: 80, column: 3, scope: !22)
>   !22 = distinct !DILexicalBlock(line: 80, column: 3, file: !27, scope: !23)
>   !23 = distinct !DILexicalBlock(line: 79, column: 1, file: !27, scope: !1)
> -!24 = !{!1}
>   !25 = !{!0, !7, !9}
>   !26 = !DIFile(filename: "bits.c", directory: "Game")
>   !27 = !DIFile(filename: "string.h", directory: "Game")
>
> Modified: llvm/trunk/test/Transforms/InstCombine/lifetime.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/lifetime.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/InstCombine/lifetime.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/lifetime.ll Fri Apr 15 10:57:41 2016
> @@ -64,11 +64,10 @@ fin:
>   !llvm.module.flags = !{!22, !23}
>   !llvm.ident = !{!24}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 248826) (llvm/trunk 248827)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 248826) (llvm/trunk 248827)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "test.cpp", directory: "/home/user")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "bar", linkageName: "bar", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, variables: !8)
> +!4 = distinct !DISubprogram(name: "bar", linkageName: "bar", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !8)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null, !7}
>   !7 = !DIBasicType(name: "bool", size: 8, align: 8, encoding: DW_ATE_boolean)
>
> Modified: llvm/trunk/test/Transforms/LICM/debug-value.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LICM/debug-value.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LICM/debug-value.ll (original)
> +++ llvm/trunk/test/Transforms/LICM/debug-value.ll Fri Apr 15 10:57:41 2016
> @@ -36,17 +36,16 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.module.flags = !{!26}
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "idamax", line: 112, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !25, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "idamax", line: 112, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !25, scope: !1, type: !3)
>   !1 = !DIFile(filename: "/Volumes/Lalgate/work/llvm/projects/llvm-test/SingleSource/Benchmarks/CoyoteBench/lpbench.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 127169)", isOptimized: true, emissionKind: FullDebug, file: !25, subprograms: !8)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 127169)", isOptimized: true, emissionKind: FullDebug, file: !25)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{!5}
>   !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!6 = distinct !DISubprogram(name: "dscal", line: 206, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !25, scope: !1, type: !7)
> +!6 = distinct !DISubprogram(name: "dscal", line: 206, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !25, scope: !1, type: !7)
>   !7 = !DISubroutineType(types: !{null})
> -!8 = !{!0, !6, !9, !10}
> -!9 = distinct !DISubprogram(name: "daxpy", line: 230, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !25, scope: !1, type: !7)
> -!10 = distinct !DISubprogram(name: "dgefa", line: 267, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !25, scope: !1, type: !7)
> +!9 = distinct !DISubprogram(name: "daxpy", line: 230, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !25, scope: !1, type: !7)
> +!10 = distinct !DISubprogram(name: "dgefa", line: 267, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !25, scope: !1, type: !7)
>   !11 = !DILocation(line: 281, column: 9, scope: !12)
>   !12 = distinct !DILexicalBlock(line: 272, column: 5, file: !25, scope: !13)
>   !13 = distinct !DILexicalBlock(line: 271, column: 5, file: !25, scope: !14)
>
> Modified: llvm/trunk/test/Transforms/LoopIdiom/debug-line.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopIdiom/debug-line.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopIdiom/debug-line.ll (original)
> +++ llvm/trunk/test/Transforms/LoopIdiom/debug-line.ll Fri Apr 15 10:57:41 2016
> @@ -30,9 +30,9 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.module.flags = !{!19}
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !18, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !18, scope: !1, type: !3)
>   !1 = !DIFile(filename: "li.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 127165:127174)", isOptimized: true, emissionKind: FullDebug, file: !18, enums: !9, subprograms: !{!0}, retainedTypes: !9)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 127165:127174)", isOptimized: true, emissionKind: FullDebug, file: !18, enums: !9, retainedTypes: !9)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{null}
>   !5 = !DILocalVariable(name: "a", line: 2, arg: 1, scope: !0, file: !1, type: !6)
>
> Modified: llvm/trunk/test/Transforms/LoopReroll/reroll_with_dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopReroll/reroll_with_dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopReroll/reroll_with_dbg.ll (original)
> +++ llvm/trunk/test/Transforms/LoopReroll/reroll_with_dbg.ll Fri Apr 15 10:57:41 2016
> @@ -85,11 +85,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.module.flags = !{!17, !18, !19, !20}
>   !llvm.ident = !{!21}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (http://llvm.org/git/clang.git b1fbc23058e7fa1cdd954ab97ba84f1c549c9879) (http://llvm.org/git/llvm.git 054da58c5398a721d4dab7af63d7de8d7a1e1a1c)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (http://llvm.org/git/clang.git b1fbc23058e7fa1cdd954ab97ba84f1c549c9879) (http://llvm.org/git/llvm.git 054da58c5398a721d4dab7af63d7de8d7a1e1a1c)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "test.c", directory: "/home/weimingz/llvm-build/release/community-tip")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, variables: !11)
> +!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !11)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null, !7, !7, !10}
>   !7 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !8)
>
> Modified: llvm/trunk/test/Transforms/LoopRotate/dbgvalue.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopRotate/dbgvalue.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopRotate/dbgvalue.ll (original)
> +++ llvm/trunk/test/Transforms/LoopRotate/dbgvalue.ll Fri Apr 15 10:57:41 2016
> @@ -84,9 +84,9 @@ for.end:
>   !llvm.module.flags = !{!20}
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "tak", line: 32, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !18, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "tak", line: 32, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !18, scope: !1, type: !3)
>   !1 = !DIFile(filename: "/Volumes/Lalgate/cj/llvm/projects/llvm-test/SingleSource/Benchmarks/BenchmarkGame/recursive.c", directory: "/Volumes/Lalgate/cj/D/projects/llvm-test/SingleSource/Benchmarks/BenchmarkGame")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 125492)", isOptimized: true, emissionKind: FullDebug, file: !18, subprograms: !{!0})
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.9 (trunk 125492)", isOptimized: true, emissionKind: FullDebug, file: !18)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{!5}
>   !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/LoopSimplify/dbg-loc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopSimplify/dbg-loc.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopSimplify/dbg-loc.ll (original)
> +++ llvm/trunk/test/Transforms/LoopSimplify/dbg-loc.ll Fri Apr 15 10:57:41 2016
> @@ -81,7 +81,7 @@ eh.resume:
>   !3 = !{}
>   !4 = !DISubroutineType(types: !3)
>   !5 = !DIFile(filename: "Vector.h", directory: "/tmp")
> -!6 = distinct !DISubprogram(name: "destruct", scope: !5, file: !5, line: 71, type: !4, isLocal: false, isDefinition: true, scopeLine: 72, flags: DIFlagPrototyped, isOptimized: false, variables: !3)
> +!6 = distinct !DISubprogram(name: "destruct", scope: !5, file: !5, line: 71, type: !4, isLocal: false, isDefinition: true, scopeLine: 72, flags: DIFlagPrototyped, isOptimized: false, unit: !14, variables: !3)
>   !7 = !DILocation(line: 73, column: 38, scope: !6)
>   !8 = !DILocation(line: 73, column: 13, scope: !6)
>   !9 = !DILocation(line: 73, column: 27, scope: !6)
> @@ -92,5 +92,4 @@ eh.resume:
>   !14 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !5,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!6})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/LoopSimplify/single-backedge.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopSimplify/single-backedge.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopSimplify/single-backedge.ll (original)
> +++ llvm/trunk/test/Transforms/LoopSimplify/single-backedge.ll Fri Apr 15 10:57:41 2016
> @@ -31,7 +31,7 @@ BE2:    ; preds = %n br label %Loop
>   !2 = !{}
>   !3 = !DISubroutineType(types: !2)
>   !4 = !DIFile(filename: "atomic.cpp", directory: "/tmp")
> -!5 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!5 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !12, variables: !2)
>   !6 = !DILocation(line: 100, column: 1, scope: !5)
>   !7 = !DILocation(line: 101, column: 1, scope: !5)
>   !8 = !DILocation(line: 102, column: 1, scope: !5)
> @@ -41,5 +41,4 @@ BE2:    ; preds = %n br label %Loop
>   !12 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !4,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!5})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/LoopUnroll/runtime-loop1.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopUnroll/runtime-loop1.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopUnroll/runtime-loop1.ll (original)
> +++ llvm/trunk/test/Transforms/LoopUnroll/runtime-loop1.ll Fri Apr 15 10:57:41 2016
> @@ -61,13 +61,12 @@ for.end:
>   !3 = !{}
>   !4 = !DISubroutineType(types: !3)
>   !5 = !DIFile(filename: "test.cpp", directory: "/tmp")
> -!6 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 99, type: !4, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, variables: !3)
> +!6 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 99, type: !4, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !11, variables: !3)
>   !7 = !DILocation(line: 100, column: 1, scope: !6)
>   !8 = !DILocation(line: 101, column: 1, scope: !6)
>   !9 = !DILocation(line: 102, column: 1, scope: !6)
>   !10 = !DILocation(line: 103, column: 1, scope: !6)
> -!11 =  distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
> +!11 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !5,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!6})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/X86/no_fpmath.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/no_fpmath.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/X86/no_fpmath.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/X86/no_fpmath.ll Fri Apr 15 10:57:41 2016
> @@ -79,7 +79,7 @@ attributes #0 = { nounwind }
>   !1 = !{i32 1, !"PIC Level", i32 2}
>   !2 = !{!"clang version 3.7.0"}
>   !3 = !DILocation(line: 5, column: 20, scope: !4)
> -!4 = distinct !DISubprogram(name: "cond_sum", scope: !5, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, variables: !7)
> +!4 = distinct !DISubprogram(name: "cond_sum", scope: !5, file: !5, line: 1, type: !6, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: true, unit: !28, variables: !7)
>   !5 = !DIFile(filename: "no_fpmath.c", directory: "")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{}
> @@ -95,7 +95,7 @@ attributes #0 = { nounwind }
>   !17 = distinct !{!17, !18}
>   !18 = !{!"llvm.loop.unroll.disable"}
>   !19 = !DILocation(line: 16, column: 20, scope: !20)
> -!20 = distinct !DISubprogram(name: "cond_sum_loop_hint", scope: !5, file: !5, line: 12, type: !6, isLocal: false, isDefinition: true, scopeLine: 12, flags: DIFlagPrototyped, isOptimized: true, variables: !7)
> +!20 = distinct !DISubprogram(name: "cond_sum_loop_hint", scope: !5, file: !5, line: 12, type: !6, isLocal: false, isDefinition: true, scopeLine: 12, flags: DIFlagPrototyped, isOptimized: true, unit: !28, variables: !7)
>   !21 = !DILocation(line: 16, column: 3, scope: !20)
>   !22 = !DILocation(line: 17, column: 14, scope: !20)
>   !23 = !DILocation(line: 20, column: 3, scope: !20)
> @@ -106,5 +106,4 @@ attributes #0 = { nounwind }
>   !28 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !5,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!4, !20})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll Fri Apr 15 10:57:41 2016
> @@ -123,15 +123,14 @@ attributes #0 = { nounwind }
>   !llvm.module.flags = !{!9, !10}
>   !llvm.ident = !{!11}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "source.cpp", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !7, !8}
> -!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "source.cpp", directory: ".")
>   !6 = !DISubroutineType(types: !2)
> -!7 = distinct !DISubprogram(name: "test_disabled", line: 10, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 10, file: !1, scope: !5, type: !6, variables: !2)
> -!8 = distinct !DISubprogram(name: "test_array_bounds", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 16, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "test_disabled", line: 10, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 10, file: !1, scope: !5, type: !6, variables: !2)
> +!8 = distinct !DISubprogram(name: "test_array_bounds", line: 16, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 16, file: !1, scope: !5, type: !6, variables: !2)
>   !9 = !{i32 2, !"Dwarf Version", i32 2}
>   !10 = !{i32 2, !"Debug Info Version", i32 3}
>   !11 = !{!"clang version 3.5.0"}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-profitable.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-profitable.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-profitable.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks-profitable.ll Fri Apr 15 10:57:41 2016
> @@ -82,13 +82,12 @@ attributes #0 = { nounwind uwtable "disa
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 250016)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 250016)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
>   !1 = !DIFile(filename: "vectorization-remarks-profitable.c", directory: "")
>   !2 = !{}
> -!3 = !{!4, !6}
> -!4 = distinct !DISubprogram(name: "do_not_interleave", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "do_not_interleave", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !2)
> -!6 = distinct !DISubprogram(name: "interleave_not_profitable", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!6 = distinct !DISubprogram(name: "interleave_not_profitable", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>   !8 = !{i32 2, !"Debug Info Version", i32 3}
>   !9 = !{!"clang version 3.8.0 (trunk 250016)"}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/X86/vectorization-remarks.ll Fri Apr 15 10:57:41 2016
> @@ -53,7 +53,7 @@ declare void @ibar(i32*) #1
>   !1 = !DIFile(filename: "vectorization-remarks.c", directory: ".")
>   !2 = !{}
>   !3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 6, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !24, scopeLine: 6, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "vectorization-remarks.c", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
> @@ -73,4 +73,4 @@ declare void @ibar(i32*) #1
>   !21 = !{!13, !13, i64 0}
>   !22 = !DILocation(line: 20, column: 3, scope: !4)
>   !23 = !DILocation(line: 21, column: 3, scope: !4)
> -!24 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1, subprograms: !{!4})
> +!24 = distinct !DICompileUnit(language: DW_LANG_C89, file: !1)
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/conditional-assignment.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/conditional-assignment.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/conditional-assignment.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/conditional-assignment.ll Fri Apr 15 10:57:41 2016
> @@ -36,11 +36,10 @@ attributes #0 = { nounwind }
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0", isOptimized: true, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.6.0", isOptimized: true, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "source.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "conditional_store", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "conditional_store", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "source.c", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 2}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/control-flow.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/control-flow.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/control-flow.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/control-flow.ll Fri Apr 15 10:57:41 2016
> @@ -55,11 +55,10 @@ attributes #0 = { nounwind }
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "source.cpp", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "source.cpp", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 2}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/dbg.value.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/dbg.value.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/dbg.value.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/dbg.value.ll Fri Apr 15 10:57:41 2016
> @@ -44,10 +44,9 @@ attributes #1 = { nounwind readnone }
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!26}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !25, enums: !1, retainedTypes: !1, subprograms: !2, globals: !11)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !25, enums: !1, retainedTypes: !1, globals: !11)
>   !1 = !{}
> -!2 = !{!3}
> -!3 = distinct !DISubprogram(name: "test", linkageName: "test", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !25, scope: !4, type: !5, variables: !8)
> +!3 = distinct !DISubprogram(name: "test", linkageName: "test", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !25, scope: !4, type: !5, variables: !8)
>   !4 = !DIFile(filename: "test", directory: "/path/to/somewhere")
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/debugloc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/debugloc.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/debugloc.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/debugloc.ll Fri Apr 15 10:57:41 2016
> @@ -63,11 +63,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!18, !27}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 185038) (llvm/trunk 185097)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 185038) (llvm/trunk 185097)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "-", directory: "/Volumes/Data/backedup/dev/os/llvm/debug")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "f", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !12)
> +!4 = distinct !DISubprogram(name: "f", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !12)
>   !5 = !DIFile(filename: "<stdin>", directory: "/Volumes/Data/backedup/dev/os/llvm/debug")
>   !6 = !DIFile(filename: "<stdin>", directory: "/Volumes/Data/backedup/dev/os/llvm/debug")
>   !7 = !DISubroutineType(types: !8)
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/no_array_bounds.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/no_array_bounds.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/no_array_bounds.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/no_array_bounds.ll Fri Apr 15 10:57:41 2016
> @@ -72,11 +72,10 @@ attributes #0 = { nounwind }
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "no_array_bounds.cpp", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 2, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "no_array_bounds.cpp", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 2}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/no_switch.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/no_switch.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/no_switch.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/no_switch.ll Fri Apr 15 10:57:41 2016
> @@ -67,11 +67,10 @@ attributes #0 = { nounwind }
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0", isOptimized: true, runtimeVersion: 6, emissionKind: LineTablesOnly, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "source.cpp", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "test_switch", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "test_switch", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "source.cpp", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 2}
>
> Modified: llvm/trunk/test/Transforms/LoopVectorize/runtime-check.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/runtime-check.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/LoopVectorize/runtime-check.ll (original)
> +++ llvm/trunk/test/Transforms/LoopVectorize/runtime-check.ll Fri Apr 15 10:57:41 2016
> @@ -74,14 +74,13 @@ loopexit:
>   !2 = !{}
>   !3 = !DISubroutineType(types: !2)
>   !4 = !DIFile(filename: "test.cpp", directory: "/tmp")
> -!5 = distinct !DISubprogram(name: "foo", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!5 = distinct !DISubprogram(name: "foo", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !9, variables: !2)
>   !6 = !DILocation(line: 100, column: 1, scope: !5)
>   !7 = !DILocation(line: 101, column: 1, scope: !5)
>   !8 = !DILocation(line: 102, column: 1, scope: !5)
>   !9 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !10,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!5})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>   !10 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
>   !11 = !{i32 2, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo.ll (original)
> +++ llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo.ll Fri Apr 15 10:57:41 2016
> @@ -36,9 +36,9 @@ declare void @llvm.dbg.declare(metadata,
>   !llvm.module.flags = !{!14}
>
>   !0 = !DILocalVariable(name: "i", line: 2, arg: 1, scope: !1, file: !2, type: !7)
> -!1 = distinct !DISubprogram(name: "testfunc", linkageName: "testfunc", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 2, file: !12, scope: !2, type: !4)
> +!1 = distinct !DISubprogram(name: "testfunc", linkageName: "testfunc", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 2, file: !12, scope: !2, type: !4)
>   !2 = !DIFile(filename: "testfunc.c", directory: "/tmp")
> -!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !12, enums: !13, retainedTypes: !13, subprograms: !{!1})
> +!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !12, enums: !13, retainedTypes: !13)
>   !4 = !DISubroutineType(types: !5)
>   !5 = !{!6, !7, !6}
>   !6 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float)
>
> Modified: llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll (original)
> +++ llvm/trunk/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll Fri Apr 15 10:57:41 2016
> @@ -43,16 +43,16 @@ return:
>   !llvm.dbg.cu = !{!3}
>   !llvm.module.flags = !{!22}
>   !0 = !DILocalVariable(name: "a", line: 8, arg: 1, scope: !1, file: !2, type: !6)
> -!1 = distinct !DISubprogram(name: "baz", linkageName: "baz", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 8, file: !20, scope: !2, type: !4)
> +!1 = distinct !DISubprogram(name: "baz", linkageName: "baz", line: 8, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 8, file: !20, scope: !2, type: !4)
>   !2 = !DIFile(filename: "bar.c", directory: "/tmp/")
> -!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21, subprograms: !{!1, !10})
> +!3 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !20, enums: !21, retainedTypes: !21)
>   !4 = !DISubroutineType(types: !5)
>   !5 = !{null, !6}
>   !6 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>   !7 = !DILocation(line: 8, scope: !1)
>   !8 = !DILocation(line: 9, scope: !1)
>   !9 = !DILocalVariable(name: "x", line: 4, arg: 1, scope: !10, file: !2, type: !6)
> -!10 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, scopeLine: 4, file: !20, scope: !2, type: !11)
> +!10 = distinct !DISubprogram(name: "bar", linkageName: "bar", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !3, scopeLine: 4, file: !20, scope: !2, type: !11)
>   !11 = !DISubroutineType(types: !12)
>   !12 = !{null, !6, !13, !14}
>   !13 = !DIBasicType(tag: DW_TAG_base_type, name: "long int", size: 64, align: 64, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/ObjCARC/basic.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ObjCARC/basic.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/ObjCARC/basic.ll (original)
> +++ llvm/trunk/test/Transforms/ObjCARC/basic.ll Fri Apr 15 10:57:41 2016
> @@ -3041,12 +3041,11 @@ define void @test67(i8* %x) {
>
>   !0 = !{}
>   !1 = !{i32 1, !"Debug Info Version", i32 3}
> -!2 = distinct !DISubprogram()
> +!2 = distinct !DISubprogram(unit: !3)
>   !3 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
>                                file: !4,
>                                isOptimized: true, flags: "-O2",
> -                             splitDebugFilename: "abc.debug", emissionKind: 2,
> -                             subprograms: !{!2})
> +                             splitDebugFilename: "abc.debug", emissionKind: 2)
>   !4 = !DIFile(filename: "path/to/file", directory: "/path/to/dir")
>   !5 = !{i32 2, !"Debug Info Version", i32 3}
>
>
> Modified: llvm/trunk/test/Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll (original)
> +++ llvm/trunk/test/Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll Fri Apr 15 10:57:41 2016
> @@ -113,10 +113,9 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!33, !34, !35, !36, !61}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "clang version 3.3 ", isOptimized: true, runtimeVersion: 2, emissionKind: FullDebug, file: !60, enums: !1, retainedTypes: !1, subprograms: !3, globals: !1)
> +!0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "clang version 3.3 ", isOptimized: true, runtimeVersion: 2, emissionKind: FullDebug, file: !60, enums: !1, retainedTypes: !1, globals: !1)
>   !1 = !{}
> -!3 = !{!5, !27}
> -!5 = distinct !DISubprogram(name: "main", line: 9, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, scopeLine: 10, file: !60, scope: !6, type: !7, variables: !11)
> +!5 = distinct !DISubprogram(name: "main", line: 9, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !0, scopeLine: 10, file: !60, scope: !6, type: !7, variables: !11)
>   !6 = !DIFile(filename: "test.m", directory: "/Volumes/Files/gottesmmcab/Radar/12906997")
>   !7 = !DISubroutineType(types: !8)
>   !8 = !{!9}
> @@ -137,7 +136,7 @@ declare void @llvm.dbg.value(metadata, i
>   !24 = !DIBasicType(tag: DW_TAG_base_type, name: "signed char", size: 8, align: 8, encoding: DW_ATE_signed_char)
>   !25 = !DILocalVariable(name: "obj2", line: 15, scope: !26, file: !6, type: !14)
>   !26 = distinct !DILexicalBlock(line: 14, column: 0, file: !60, scope: !22)
> -!27 = distinct !DISubprogram(name: "ThrowFunc", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !60, scope: !6, type: !28, variables: !31)
> +!27 = distinct !DISubprogram(name: "ThrowFunc", line: 4, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 5, file: !60, scope: !6, type: !28, variables: !31)
>   !28 = !DISubroutineType(types: !29)
>   !29 = !{null, !14}
>   !31 = !{!32}
>
> Modified: llvm/trunk/test/Transforms/SLPVectorizer/X86/debug_info.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SLPVectorizer/X86/debug_info.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SLPVectorizer/X86/debug_info.ll (original)
> +++ llvm/trunk/test/Transforms/SLPVectorizer/X86/debug_info.ll Fri Apr 15 10:57:41 2016
> @@ -57,11 +57,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!18, !32}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 187335) (llvm/trunk 187335:187340M)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 187335) (llvm/trunk 187335:187340M)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "file.c", directory: "/Users/nadav")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "depth", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !11)
> +!4 = distinct !DISubprogram(name: "depth", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !11)
>   !5 = !DIFile(filename: "file.c", directory: "/Users/nadav")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{!8, !9, !8}
>
> Modified: llvm/trunk/test/Transforms/SROA/dbg-single-piece.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SROA/dbg-single-piece.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SROA/dbg-single-piece.ll (original)
> +++ llvm/trunk/test/Transforms/SROA/dbg-single-piece.ll Fri Apr 15 10:57:41 2016
> @@ -28,11 +28,11 @@ attributes #0 = { nounwind readnone }
>
>   !0 = !{i32 2, !"Debug Info Version", i32 3}
>   !1 = !DILocalVariable(name: "I", scope: !2, file: !3, line: 947, type: !4)
> -!2 = distinct !DISubprogram(name: "findInsertLocation", linkageName: "_ZL18findInsertLocationPN4llvm17MachineBasicBlockENS_9SlotIndexERNS_13LiveIntervalsE", scope: !3, file: !3, line: 937, isLocal: true, isDefinition: true, scopeLine: 938, flags: DIFlagPrototyped, isOptimized: true)
> +!2 = distinct !DISubprogram(name: "findInsertLocation", linkageName: "_ZL18findInsertLocationPN4llvm17MachineBasicBlockENS_9SlotIndexERNS_13LiveIntervalsE", scope: !3, file: !3, line: 937, isLocal: true, isDefinition: true, scopeLine: 938, flags: DIFlagPrototyped, isOptimized: true, unit: !9)
>   !3 = !DIFile(filename: "none", directory: ".")
>   !4 = !DICompositeType(tag: DW_TAG_class_type, name: "bundle_iterator<llvm::MachineInstr, llvm::ilist_iterator<llvm::MachineInstr> >", scope: !5, file: !3, line: 163, size: 128, align: 64, elements: !6, templateParams: !6, identifier: "_ZTSN4llvm17MachineBasicBlock15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS2_EEEE")
>   !5 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "MachineBasicBlock", file: !3, line: 68, size: 1408, align: 64, identifier: "_ZTSN4llvm17MachineBasicBlockE")
>   !6 = !{}
>   !7 = !DIExpression()
>   !8 = !DILocation(line: 947, column: 35, scope: !2)
> -!9 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, subprograms: !{!2})
> +!9 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3)
>
> Modified: llvm/trunk/test/Transforms/SafeStack/debug-loc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SafeStack/debug-loc.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SafeStack/debug-loc.ll (original)
> +++ llvm/trunk/test/Transforms/SafeStack/debug-loc.ll Fri Apr 15 10:57:41 2016
> @@ -55,7 +55,7 @@ attributes #2 = { "disable-tail-calls"="
>   !llvm.module.flags = !{!15, !16}
>   !llvm.ident = !{!17}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 254019) (llvm/trunk 254036)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, subprograms: !11)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 254019) (llvm/trunk 254036)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3)
>   !1 = !DIFile(filename: "../llvm/2.cc", directory: "/code/build-llvm")
>   !2 = !{}
>   !3 = !{!4}
> @@ -66,8 +66,7 @@ attributes #2 = { "disable-tail-calls"="
>   !8 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
>   !9 = !{!10}
>   !10 = !DISubrange(count: 100)
> -!11 = !{!12}
> -!12 = distinct !DISubprogram(name: "f", linkageName: "_Z1f1S", scope: !1, file: !1, line: 10, type: !13, isLocal: false, isDefinition: true, scopeLine: 10, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!12 = distinct !DISubprogram(name: "f", linkageName: "_Z1f1S", scope: !1, file: !1, line: 10, type: !13, isLocal: false, isDefinition: true, scopeLine: 10, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !13 = !DISubroutineType(types: !14)
>   !14 = !{null, !"_ZTS1S"}
>   !15 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/branch.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/branch.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/branch.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/branch.ll Fri Apr 15 10:57:41 2016
> @@ -157,13 +157,12 @@ attributes #4 = { nounwind readonly }
>   !llvm.module.flags = !{!13, !14}
>   !llvm.ident = !{!15}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 248211) (llvm/trunk 248217)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, retainedTypes: !3, subprograms: !5)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 248211) (llvm/trunk 248217)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, retainedTypes: !3)
>   !1 = !DIFile(filename: "test.cc", directory: "/ssd/llvm_commit")
>   !2 = !{}
>   !3 = !{!4}
>   !4 = !DIBasicType(name: "double", size: 64, align: 64, encoding: DW_ATE_float)
> -!5 = !{!6}
> -!6 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!6 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 4, type: !7, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !7 = !DISubroutineType(types: !8)
>   !8 = !{!9, !9, !10}
>   !9 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/calls.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/calls.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/calls.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/calls.ll Fri Apr 15 10:57:41 2016
> @@ -88,14 +88,13 @@ declare i32 @printf(i8*, ...) #2
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "calls.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !7}
> -!4 = distinct !DISubprogram(name: "sum", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "sum", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "calls.cc", directory: ".")
>   !6 = !DISubroutineType(types: !2)
> -!7 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
>   !8 = !{i32 2, !"Dwarf Version", i32 4}
>   !9 = !{i32 1, !"Debug Info Version", i32 3}
>   !10 = !{!"clang version 3.5 "}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/cov-zero-samples.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/cov-zero-samples.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/cov-zero-samples.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/cov-zero-samples.ll Fri Apr 15 10:57:41 2016
> @@ -86,15 +86,14 @@ declare i32 @printf(i8*, ...)
>   !llvm.module.flags = !{!15, !16}
>   !llvm.ident = !{!17}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 253667) (llvm/trunk 253670)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3, globals: !11)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 253667) (llvm/trunk 253670)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, globals: !11)
>   !1 = !DIFile(filename: "cov-zero-samples.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !8}
> -!4 = distinct !DISubprogram(name: "never_called", linkageName: "_Z12never_calledi", scope: !1, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "never_called", linkageName: "_Z12never_calledi", scope: !1, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!8 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!8 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !9, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !9 = !DISubroutineType(types: !10)
>   !10 = !{!7}
>   !11 = !{!12}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/coverage-warning.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/coverage-warning.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/coverage-warning.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/coverage-warning.ll Fri Apr 15 10:57:41 2016
> @@ -30,11 +30,10 @@ return:
>   !llvm.module.flags = !{!6, !7}
>   !llvm.ident = !{!8}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251524) (llvm/trunk 251531)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251524) (llvm/trunk 251531)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
>   !1 = !DIFile(filename: "coverage-warning.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !2)
>   !6 = !{i32 2, !"Dwarf Version", i32 4}
>   !7 = !{i32 2, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/discriminator.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/discriminator.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/discriminator.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/discriminator.ll Fri Apr 15 10:57:41 2016
> @@ -66,11 +66,10 @@ while.end:
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "discriminator.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "discriminator.c", directory: ".")
>   !6 = !DISubroutineType(types: !2)
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/entry_counts.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/entry_counts.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/entry_counts.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/entry_counts.ll Fri Apr 15 10:57:41 2016
> @@ -19,11 +19,10 @@ entry:
>   !llvm.module.flags = !{!6, !7}
>   !llvm.ident = !{!8}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 237249) (llvm/trunk 237261)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 237249) (llvm/trunk 237261)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "entry_counts.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "empty", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "empty", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !2)
>   !6 = !{i32 2, !"Dwarf Version", i32 4}
>   !7 = !{i32 2, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/fnptr.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/fnptr.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/fnptr.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/fnptr.ll Fri Apr 15 10:57:41 2016
> @@ -131,17 +131,17 @@ declare i32 @printf(i8* nocapture readon
>   !0 = !{i32 2, !"Debug Info Version", i32 3}
>   !1 = !{!"clang version 3.6.0 "}
>   !2 = !DILocation(line: 9, column: 3, scope: !3)
> -!3 = distinct !DISubprogram(name: "foo", line: 8, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 8, file: !4, scope: !5, type: !6, variables: !7)
> +!3 = distinct !DISubprogram(name: "foo", line: 8, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !26, scopeLine: 8, file: !4, scope: !5, type: !6, variables: !7)
>   !4 = !DIFile(filename: "fnptr.cc", directory: ".")
>   !5 = !DIFile(filename: "fnptr.cc", directory: ".")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{}
>   !8 = !DILocation(line: 9, column: 14, scope: !3)
>   !9 = !DILocation(line: 13, column: 3, scope: !10)
> -!10 = distinct !DISubprogram(name: "bar", line: 12, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 12, file: !4, scope: !5, type: !6, variables: !7)
> +!10 = distinct !DISubprogram(name: "bar", line: 12, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !26, scopeLine: 12, file: !4, scope: !5, type: !6, variables: !7)
>   !11 = !DILocation(line: 13, column: 14, scope: !10)
>   !12 = !DILocation(line: 19, column: 3, scope: !13)
> -!13 = distinct !DISubprogram(name: "main", line: 16, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 16, file: !4, scope: !5, type: !6, variables: !7)
> +!13 = distinct !DISubprogram(name: "main", line: 16, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !26, scopeLine: 16, file: !4, scope: !5, type: !6, variables: !7)
>   !14 = !DILocation(line: 20, column: 5, scope: !13)
>   !15 = !DILocation(line: 21, column: 15, scope: !13)
>   !16 = !DILocation(line: 22, column: 11, scope: !13)
> @@ -154,4 +154,4 @@ declare i32 @printf(i8* nocapture readon
>   !23 = !{!"branch_weights", i32 0, i32 534}
>   !24 = !DILocation(line: 27, column: 3, scope: !13)
>   !25 = !DILocation(line: 28, column: 3, scope: !13)
> -!26 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !4, subprograms: !{!3, !10, !13})
> +!26 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !4)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/gcc-simple.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/gcc-simple.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/gcc-simple.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/gcc-simple.ll Fri Apr 15 10:57:41 2016
> @@ -144,16 +144,15 @@ attributes #3 = { nounwind }
>   !llvm.module.flags = !{!13, !14}
>   !llvm.ident = !{!15}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 247554) (llvm/trunk 247557)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 247554) (llvm/trunk 247557)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "discriminator.cc", directory: "/usr/local/google/home/dnovillo/llvm/test/autofdo")
>   !2 = !{}
> -!3 = !{!4, !9}
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fool", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fool", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !8}
>   !7 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
>   !8 = !DIBasicType(name: "long int", size: 64, align: 64, encoding: DW_ATE_signed)
> -!9 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !10, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!9 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !10, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !10 = !DISubroutineType(types: !11)
>   !11 = !{!12}
>   !12 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/inline-combine.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/inline-combine.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/inline-combine.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/inline-combine.ll Fri Apr 15 10:57:41 2016
> @@ -37,10 +37,10 @@ define void @bar(%"class.llvm::SmallVect
>   !0 = !{i32 2, !"Dwarf Version", i32 4}
>   !1 = !{i32 1, !"Debug Info Version", i32 3}
>   !2 = !{!"clang version 3.5 "}
> -!3 = distinct !DISubprogram(name: "foo", scope: !4, file: !4, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, variables: !6)
> +!3 = distinct !DISubprogram(name: "foo", scope: !4, file: !4, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !9, variables: !6)
>   !4 = !DIFile(filename: "test.cc", directory: ".")
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{}
>   !7 = !DILocation(line: 4, scope: !3)
> -!8 = distinct !DISubprogram(name: "bar", scope: !4, file: !4, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, variables: !6)
> -!9 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !4, subprograms: !{!3, !8})
> +!8 = distinct !DISubprogram(name: "bar", scope: !4, file: !4, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !9, variables: !6)
> +!9 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !4)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/inline-coverage.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/inline-coverage.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/inline-coverage.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/inline-coverage.ll Fri Apr 15 10:57:41 2016
> @@ -90,16 +90,15 @@ for.end:
>   !llvm.module.flags = !{!13, !14}
>   !llvm.ident = !{!15}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 251738) (llvm/trunk 251737)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 251738) (llvm/trunk 251737)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "coverage.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !9}
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fool", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fool", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !8}
>   !7 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
>   !8 = !DIBasicType(name: "long int", size: 64, align: 64, encoding: DW_ATE_signed)
> -!9 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !10, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!9 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !10, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !10 = !DISubroutineType(types: !11)
>   !11 = !{!12}
>   !12 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/inline-hint.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/inline-hint.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/inline-hint.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/inline-hint.ll Fri Apr 15 10:57:41 2016
> @@ -16,21 +16,21 @@ entry:
>   !llvm.ident = !{!19}
>   !llvm.dbg.cu = !{!0}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, subprograms: !{!4, !10, !11, !14})
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1)
>   !1 = !DIFile(filename: "inline-hint.cc", directory: ".")
>   !2 = !{}
>   !3 = !{!4, !10, !11, !14}
> -!4 = distinct !DISubprogram(name: "cold_fn", linkageName: "_Z7cold_fnRxi", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "cold_fn", linkageName: "_Z7cold_fnRxi", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null, !7, !9}
>   !7 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !8, size: 64, align: 64)
>   !8 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
>   !9 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!10 = distinct !DISubprogram(name: "hot_fn", linkageName: "_Z6hot_fnRxi", scope: !1, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> -!11 = distinct !DISubprogram(name: "compute", linkageName: "_Z7computex", scope: !1, file: !1, line: 11, type: !12, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!10 = distinct !DISubprogram(name: "hot_fn", linkageName: "_Z6hot_fnRxi", scope: !1, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
> +!11 = distinct !DISubprogram(name: "compute", linkageName: "_Z7computex", scope: !1, file: !1, line: 11, type: !12, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !12 = !DISubroutineType(types: !13)
>   !13 = !{!8, !8}
> -!14 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 21, type: !15, isLocal: false, isDefinition: true, scopeLine: 21, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!14 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 21, type: !15, isLocal: false, isDefinition: true, scopeLine: 21, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !15 = !DISubroutineType(types: !16)
>   !16 = !{!9}
>   !17 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/inline.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/inline.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/inline.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/inline.ll Fri Apr 15 10:57:41 2016
> @@ -81,14 +81,13 @@ declare i32 @printf(i8*, ...) #2
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "calls.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !7}
> -!4 = distinct !DISubprogram(name: "sum", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "sum", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "calls.cc", directory: ".")
>   !6 = !DISubroutineType(types: !2)
> -!7 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "main", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 7, file: !1, scope: !5, type: !6, variables: !2)
>   !8 = !{i32 2, !"Dwarf Version", i32 4}
>   !9 = !{i32 1, !"Debug Info Version", i32 3}
>   !10 = !{!"clang version 3.5 "}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/nolocinfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/nolocinfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/nolocinfo.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/nolocinfo.ll Fri Apr 15 10:57:41 2016
> @@ -23,11 +23,10 @@ if.end:
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251335) (llvm/trunk 251344)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251335) (llvm/trunk 251344)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "nolocinfo.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/offset.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/offset.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/offset.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/offset.ll Fri Apr 15 10:57:41 2016
> @@ -54,11 +54,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 250750)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 250750)", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "a.cc", directory: "/tmp")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi", scope: !1, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3fooi", scope: !1, file: !1, line: 5, type: !5, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/propagate.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/propagate.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/propagate.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/propagate.ll Fri Apr 15 10:57:41 2016
> @@ -198,14 +198,13 @@ attributes #2 = { "less-precise-fpmad"="
>   !llvm.module.flags = !{!8, !9}
>   !llvm.ident = !{!10}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5 ", isOptimized: false, emissionKind: NoDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "propagate.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !7}
> -!4 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
> +!4 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !1, scope: !5, type: !6, variables: !2)
>   !5 = !DIFile(filename: "propagate.cc", directory: ".")
>   !6 = !DISubroutineType(types: !{null})
> -!7 = distinct !DISubprogram(name: "main", line: 24, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 24, file: !1, scope: !5, type: !6, variables: !2)
> +!7 = distinct !DISubprogram(name: "main", line: 24, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 24, file: !1, scope: !5, type: !6, variables: !2)
>   !8 = !{i32 2, !"Dwarf Version", i32 4}
>   !9 = !{i32 1, !"Debug Info Version", i32 3}
>   !10 = !{!"clang version 3.5 "}
>
> Modified: llvm/trunk/test/Transforms/SampleProfile/remarks.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SampleProfile/remarks.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SampleProfile/remarks.ll (original)
> +++ llvm/trunk/test/Transforms/SampleProfile/remarks.ll Fri Apr 15 10:57:41 2016
> @@ -124,11 +124,10 @@ attributes #4 = { nounwind }
>   !llvm.module.flags = !{!16, !17}
>   !llvm.ident = !{!18}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 251041) (llvm/trunk 251053)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 251041) (llvm/trunk 251053)", isOptimized: true, runtimeVersion: 0, emissionKind: NoDebug, enums: !2)
>   !1 = !DIFile(filename: "remarks.cc", directory: ".")
>   !2 = !{}
> -!3 = !{!4, !13}
> -!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, variables: !8)
> +!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !8)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7}
>   !7 = !DIBasicType(name: "long long int", size: 64, align: 64, encoding: DW_ATE_signed)
> @@ -137,7 +136,7 @@ attributes #4 = { nounwind }
>   !10 = !DILocalVariable(name: "i", scope: !11, file: !1, line: 5, type: !12)
>   !11 = distinct !DILexicalBlock(scope: !4, file: !1, line: 5, column: 3)
>   !12 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!13 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 13, type: !14, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, variables: !2)
> +!13 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 13, type: !14, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !2)
>   !14 = !DISubroutineType(types: !15)
>   !15 = !{!12}
>   !16 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/Transforms/ScalarRepl/debuginfo-preserved.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/ScalarRepl/debuginfo-preserved.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/ScalarRepl/debuginfo-preserved.ll (original)
> +++ llvm/trunk/test/Transforms/ScalarRepl/debuginfo-preserved.ll Fri Apr 15 10:57:41 2016
> @@ -42,8 +42,8 @@ declare void @llvm.dbg.declare(metadata,
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!20}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 131941)", isOptimized: false, emissionKind: FullDebug, file: !18, enums: !19, retainedTypes: !19, subprograms: !17)
> -!1 = distinct !DISubprogram(name: "f", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, file: !18, scope: !2, type: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 131941)", isOptimized: false, emissionKind: FullDebug, file: !18, enums: !19, retainedTypes: !19)
> +!1 = distinct !DISubprogram(name: "f", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !18, scope: !2, type: !3)
>   !2 = !DIFile(filename: "/d/j/debug-test.c", directory: "/Volumes/Data/b")
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{!5}
> @@ -59,7 +59,6 @@ declare void @llvm.dbg.declare(metadata,
>   !14 = !DILocation(line: 3, column: 5, scope: !11)
>   !15 = !DILocation(line: 4, column: 5, scope: !11)
>   !16 = !DILocation(line: 5, column: 5, scope: !11)
> -!17 = !{!1}
>   !18 = !DIFile(filename: "/d/j/debug-test.c", directory: "/Volumes/Data/b")
>   !19 = !{}
>   !20 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/Scalarizer/dbginfo.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Scalarizer/dbginfo.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Scalarizer/dbginfo.ll (original)
> +++ llvm/trunk/test/Transforms/Scalarizer/dbginfo.ll Fri Apr 15 10:57:41 2016
> @@ -57,11 +57,10 @@ attributes #1 = { nounwind readnone }
>   !llvm.module.flags = !{!18, !26}
>   !llvm.ident = !{!19}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 194134) (llvm/trunk 194126)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.4 (trunk 194134) (llvm/trunk 194126)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "/tmp/add.c", directory: "/home/richards/llvm/build")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "f1", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !14)
> +!4 = distinct !DISubprogram(name: "f1", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 4, file: !1, scope: !5, type: !6, variables: !14)
>   !5 = !DIFile(filename: "/tmp/add.c", directory: "/home/richards/llvm/build")
>   !6 = !DISubroutineType(types: !7)
>   !7 = !{null, !8, !8, !8}
>
> Modified: llvm/trunk/test/Transforms/SimplifyCFG/basictest.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/basictest.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SimplifyCFG/basictest.ll (original)
> +++ llvm/trunk/test/Transforms/SimplifyCFG/basictest.ll Fri Apr 15 10:57:41 2016
> @@ -75,10 +75,10 @@ declare i8 @test6g(i8*)
>   !0 = !{!1, !1, i64 0}
>   !1 = !{!"foo"}
>   !2 = !{i8 0, i8 2}
> -!3 = distinct !DICompileUnit(language: DW_LANG_C99, file: !7, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, subprograms: !{!6}, globals: !4)
> +!3 = distinct !DICompileUnit(language: DW_LANG_C99, file: !7, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !4)
>   !4 = !{}
>   !5 = !DILocation(line: 23, scope: !6)
> -!6 = distinct !DISubprogram(name: "foo", scope: !3, file: !7, line: 1, type: !DISubroutineType(types: !4), isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, variables: !4)
> +!6 = distinct !DISubprogram(name: "foo", scope: !3, file: !7, line: 1, type: !DISubroutineType(types: !4), isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !3, variables: !4)
>   !7 = !DIFile(filename: "foo.c", directory: "/")
>   !8 = !{i32 2, !"Dwarf Version", i32 2}
>   !9 = !{i32 2, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/SimplifyCFG/branch-fold-dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/branch-fold-dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SimplifyCFG/branch-fold-dbg.ll (original)
> +++ llvm/trunk/test/Transforms/SimplifyCFG/branch-fold-dbg.ll Fri Apr 15 10:57:41 2016
> @@ -41,9 +41,9 @@ declare void @llvm.dbg.value(metadata, i
>
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "foo", line: 231, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !15, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", line: 231, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !15, scope: !1, type: !3)
>   !1 = !DIFile(filename: "a.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang (trunk 129006)", isOptimized: true, emissionKind: FullDebug, file: !15, subprograms: !{!0}, enums: !4, retainedTypes: !4)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang (trunk 129006)", isOptimized: true, emissionKind: FullDebug, file: !15, enums: !4, retainedTypes: !4)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{null}
>   !5 = !DILocation(line: 131, column: 2, scope: !0)
>
> Modified: llvm/trunk/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll (original)
> +++ llvm/trunk/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll Fri Apr 15 10:57:41 2016
> @@ -32,9 +32,9 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.module.flags = !{!21}
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, file: !20, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !2, file: !20, scope: !1, type: !3)
>   !1 = !DIFile(filename: "b.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !20, subprograms: !{!0})
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", isOptimized: true, emissionKind: FullDebug, file: !20)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{!5}
>   !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
>
> Modified: llvm/trunk/test/Transforms/SimplifyCFG/trap-debugloc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/trap-debugloc.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/SimplifyCFG/trap-debugloc.ll (original)
> +++ llvm/trunk/test/Transforms/SimplifyCFG/trap-debugloc.ll Fri Apr 15 10:57:41 2016
> @@ -10,14 +10,13 @@ define void @foo() nounwind ssp !dbg !0
>   !llvm.dbg.cu = !{!2}
>   !llvm.module.flags = !{!10}
>
> -!0 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !8, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !8, scope: !1, type: !3)
>   !1 = !DIFile(filename: "foo.c", directory: "/private/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-206.1) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !{}, retainedTypes: !{}, subprograms: !9)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "Apple clang version 3.0 (tags/Apple/clang-206.1) (based on LLVM 3.0svn)", isOptimized: true, emissionKind: FullDebug, file: !8, enums: !{}, retainedTypes: !{})
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{null}
>   !5 = !DILocation(line: 4, column: 2, scope: !6)
>   !6 = distinct !DILexicalBlock(line: 3, column: 12, file: !8, scope: !0)
>   !7 = !DILocation(line: 5, column: 1, scope: !6)
>   !8 = !DIFile(filename: "foo.c", directory: "/private/tmp")
> -!9 = !{!0}
>   !10 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll (original)
> +++ llvm/trunk/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll Fri Apr 15 10:57:41 2016
> @@ -15,9 +15,9 @@ declare void @llvm.dbg.value(metadata, i
>   !llvm.module.flags = !{!13}
>   !llvm.dbg.cu = !{!2}
>
> -!0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !12, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 2, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !2, file: !12, scope: !1, type: !3)
>   !1 = !DIFile(filename: "b.c", directory: "/tmp")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !12, subprograms: !{!0}, globals: !{!8})
> +!2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !12, globals: !{!8})
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{null}
>   !5 = !DILocalVariable(name: "y", line: 3, scope: !6, file: !1, type: !7)
>
> Modified: llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll (original)
> +++ llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll Fri Apr 15 10:57:41 2016
> @@ -7,9 +7,9 @@ entry:
>   !llvm.dbg.cu = !{!2}
>   !llvm.module.flags = !{!14}
>
> -!0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, file: !10, scope: !1, type: !3)
> +!0 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !2, file: !10, scope: !1, type: !3)
>   !1 = !DIFile(filename: "/tmp/a.c", directory: "/Volumes/Lalgate/clean/D.CW")
> -!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.8 (trunk 112062)", isOptimized: true, emissionKind: FullDebug, file: !10, enums: !11, retainedTypes: !11, subprograms: !12, globals: !13)
> +!2 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 2.8 (trunk 112062)", isOptimized: true, emissionKind: FullDebug, file: !10, enums: !11, retainedTypes: !11, globals: !13)
>   !3 = !DISubroutineType(types: !4)
>   !4 = !{!5}
>   !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> @@ -19,6 +19,5 @@ entry:
>   !9 = distinct !DILexicalBlock(line: 3, column: 11, file: !10, scope: !0)
>   !10 = !DIFile(filename: "/tmp/a.c", directory: "/Volumes/Lalgate/clean/D.CW")
>   !11 = !{}
> -!12 = !{!0}
>   !13 = !{!6}
>   !14 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll (original)
> +++ llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll Fri Apr 15 10:57:41 2016
> @@ -30,17 +30,17 @@ attributes #2 = { nounwind readonly ssp
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!25}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !{}, retainedTypes: !{}, subprograms: !23, globals: !24)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !{}, retainedTypes: !{}, globals: !24)
>   !1 = !DIFile(filename: "g.c", directory: "/tmp/")
>   !2 = !{null}
> -!3 = distinct !DISubprogram(name: "bar", line: 5, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !1, scope: null, type: !4)
> +!3 = distinct !DISubprogram(name: "bar", line: 5, isLocal: true, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !0, file: !1, scope: null, type: !4)
>   !4 = !DISubroutineType(types: !2)
>   !5 = !DIFile(filename: "g.c", directory: "/tmp/")
> -!6 = distinct !DISubprogram(name: "fn", linkageName: "fn", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !1, scope: null, type: !7)
> +!6 = distinct !DISubprogram(name: "fn", linkageName: "fn", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !0, file: !1, scope: null, type: !7)
>   !7 = !DISubroutineType(types: !8)
>   !8 = !{!9}
>   !9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!10 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, file: !1, scope: null, type: !11)
> +!10 = distinct !DISubprogram(name: "foo", linkageName: "foo", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: true, unit: !0, file: !1, scope: null, type: !11)
>   !11 = !DISubroutineType(types: !12)
>   !12 = !{!9, !9}
>   !13 = !DILocalVariable(name: "bb", line: 5, scope: !14, file: !5, type: !9)
> @@ -53,6 +53,5 @@ attributes #2 = { nounwind readonly ssp
>   !20 = !DILocation(line: 7, scope: !10)
>   !21 = !DILocation(line: 10, scope: !22)
>   !22 = distinct !DILexicalBlock(line: 7, column: 0, file: !1, scope: !10)
> -!23 = !{!3, !6, !10}
>   !24 = !{!16, !17}
>   !25 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Transforms/Util/simplify-dbg-declare-load.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Util/simplify-dbg-declare-load.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Util/simplify-dbg-declare-load.ll (original)
> +++ llvm/trunk/test/Transforms/Util/simplify-dbg-declare-load.ll Fri Apr 15 10:57:41 2016
> @@ -34,7 +34,7 @@ attributes #1 = { sspreq }
>
>   !0 = !{i32 1, !"Debug Info Version", i32 3}
>   !1 = !DILocalVariable(name: "cp", scope: !2, file: !3, line: 106, type: !12)
> -!2 = distinct !DISubprogram(name: "fastshortest", linkageName: "julia_fastshortest_6256", scope: null, file: !3, type: !4, isLocal: false, isDefinition: true, isOptimized: true, variables: !11)
> +!2 = distinct !DISubprogram(name: "fastshortest", linkageName: "julia_fastshortest_6256", scope: null, file: !3, type: !4, isLocal: false, isDefinition: true, isOptimized: true, unit: !18, variables: !11)
>   !3 = !DIFile(filename: "grisu/fastshortest.jl", directory: ".")
>   !4 = !DISubroutineType(types: !5)
>   !5 = !{!6, !7}
> @@ -50,4 +50,4 @@ attributes #1 = { sspreq }
>   !15 = !DIBasicType(name: "Int32", size: 32, align: 32, encoding: DW_ATE_unsigned)
>   !16 = !DIExpression()
>   !17 = !DILocation(line: 106, scope: !2)
> -!18 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3, subprograms: !{!2})
> +!18 = distinct !DICompileUnit(language: DW_LANG_Julia, file: !3)
>
> Modified: llvm/trunk/test/Transforms/Util/split-bit-piece.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Util/split-bit-piece.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Util/split-bit-piece.ll (original)
> +++ llvm/trunk/test/Transforms/Util/split-bit-piece.ll Fri Apr 15 10:57:41 2016
> @@ -29,7 +29,7 @@ attributes #0 = { nounwind readnone }
>   !llvm.module.flags = !{!7}
>   !llvm.ident = !{!8}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 256979) (llvm/trunk 257107)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, subprograms: !{!11})
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 256979) (llvm/trunk 257107)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2)
>   !1 = !DIFile(filename: "tsan_shadow_test.cc", directory: "/tmp")
>   !2 = !{!3, !5}
>   !3 = !DICompositeType(tag: DW_TAG_class_type, name: "FastState", file: !4, line: 91, size: 64, align: 64, identifier: "_ZTSN6__tsan9FastStateE")
> @@ -40,6 +40,6 @@ attributes #0 = { nounwind readnone }
>   !8 = !{!"clang version 3.8.0 (trunk 256979) (llvm/trunk 257107)"}
>   !9 = !DILocalVariable(name: "v1", scope: !10, file: !4, line: 136, type: !5)
>   !10 = distinct !DILexicalBlock(scope: !11, file: !4, line: 136, column: 5)
> -!11 = distinct !DISubprogram(name: "SetHistorySize", linkageName: "_ZN6__tsan9FastState14SetHistorySizeEi", scope: !"_ZTSN6__tsan9FastStateE", file: !4, line: 135, isLocal: false, isDefinition: true, scopeLine: 135, flags: DIFlagPrototyped, isOptimized: false)
> +!11 = distinct !DISubprogram(name: "SetHistorySize", linkageName: "_ZN6__tsan9FastState14SetHistorySizeEi", scope: !"_ZTSN6__tsan9FastStateE", file: !4, line: 135, isLocal: false, isDefinition: true, scopeLine: 135, flags: DIFlagPrototyped, isOptimized: false, unit: !0)
>   !12 = !DIExpression()
>   !13 = !DILocation(line: 136, column: 5, scope: !10)
>
> Modified: llvm/trunk/test/Transforms/Util/store-first-op.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Util/store-first-op.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Transforms/Util/store-first-op.ll (original)
> +++ llvm/trunk/test/Transforms/Util/store-first-op.ll Fri Apr 15 10:57:41 2016
> @@ -24,11 +24,11 @@ attributes #1 = { nounwind readnone }
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!2}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (https://github.com/llvm-mirror/clang 89dda3855cda574f355e6defa1d77bdae5053994) (llvm/trunk 257597)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, subprograms: !{!4})
> +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (https://github.com/llvm-mirror/clang 89dda3855cda574f355e6defa1d77bdae5053994) (llvm/trunk 257597)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)
>   !1 = !DIFile(filename: "none", directory: ".")
>   !2 = !{i32 2, !"Debug Info Version", i32 3}
>   !3 = !DILocalVariable(name: "getU", scope: !4, file: !1, line: 25, type: !5)
> -!4 = distinct !DISubprogram(name: "multiply64", linkageName: "_ZN4llvm13ScaledNumbers10multiply64Emm", scope: null, file: !1, line: 22, isLocal: false, isDefinition: true, scopeLine: 23, flags: DIFlagPrototyped, isOptimized: true)
> +!4 = distinct !DISubprogram(name: "multiply64", linkageName: "_ZN4llvm13ScaledNumbers10multiply64Emm", scope: null, file: !1, line: 22, isLocal: false, isDefinition: true, scopeLine: 23, flags: DIFlagPrototyped, isOptimized: true, unit: !0)
>   !5 = !DICompositeType(tag: DW_TAG_class_type, scope: !4, file: !1, line: 25, size: 8, align: 8)
>   !6 = !DIExpression()
>   !7 = !DILocation(line: 25, column: 8, scope: !4)
>
> Modified: llvm/trunk/test/Verifier/dbg-difile-crash.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/dbg-difile-crash.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Verifier/dbg-difile-crash.ll (original)
> +++ llvm/trunk/test/Verifier/dbg-difile-crash.ll Fri Apr 15 10:57:41 2016
> @@ -2,9 +2,13 @@
>   ; CHECK:      assembly parsed, but does not verify
>   ; CHECK-NEXT: invalid file
>
> +define void @blah() !dbg !3 {
> +  ret void
> +}
> +
>   !llvm.module.flags = !{!0}
>   !0 = !{i32 2, !"Debug Info Version", i32 3}
>   !llvm.dbg.cu = !{!1}
> -!1 = distinct !DICompileUnit(file: !2, language: DW_LANG_C99, subprograms: !{!3})
> +!1 = distinct !DICompileUnit(file: !2, language: DW_LANG_C99)
>   !2 = !DIFile(filename: "file.c", directory: "/path/to/dir")
> -!3 = distinct !DISubprogram(name: "blah", file: !1)
> +!3 = distinct !DISubprogram(name: "blah", file: !1, unit: !1)
>
> Modified: llvm/trunk/test/Verifier/dbg-invalid-retaintypes.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/dbg-invalid-retaintypes.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Verifier/dbg-invalid-retaintypes.ll (original)
> +++ llvm/trunk/test/Verifier/dbg-invalid-retaintypes.ll Fri Apr 15 10:57:41 2016
> @@ -5,6 +5,6 @@
>   !llvm.module.flags = !{!3}
>
>   !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.0 (trunk 131941)", isOptimized: true, emissionKind: FullDebug, file: !2, retainedTypes: !1)
> -!1 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 1, scope: !2)
> +!1 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, scope: !2)
>   !2 = !DIFile(filename: "/davide/test", directory: "/")
>   !3 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Verifier/func-dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/func-dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Verifier/func-dbg.ll (original)
> +++ llvm/trunk/test/Verifier/func-dbg.ll Fri Apr 15 10:57:41 2016
> @@ -14,12 +14,11 @@ entry:
>   !llvm.dbg.cu = !{!0}
>   !llvm.module.flags = !{!7, !8}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "dwarf-test.c", directory: "test")
>   !2 = !{}
> -!3 = !{!4, !5}
> -!4 = distinct !DISubprogram(name: "foo", scope: !0, isDefinition: true)
> -!5 = distinct !DISubprogram(name: "bar", scope: !0, isDefinition: true)
> +!4 = distinct !DISubprogram(name: "foo", scope: !0, isDefinition: true, unit: !0)
> +!5 = distinct !DISubprogram(name: "bar", scope: !0, isDefinition: true, unit: !0)
>   !6 = !DILocation(line: 7, scope: !4)
>   !7 = !{i32 2, !"Dwarf Version", i32 3}
>   !8 = !{i32 1, !"Debug Info Version", i32 3}
>
> Modified: llvm/trunk/test/Verifier/metadata-function-dbg.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/metadata-function-dbg.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/Verifier/metadata-function-dbg.ll (original)
> +++ llvm/trunk/test/Verifier/metadata-function-dbg.ll Fri Apr 15 10:57:41 2016
> @@ -16,8 +16,7 @@ define void @bar() !dbg !6 {
>   !0 = !{i32 2, !"Debug Info Version", i32 3}
>
>   !llvm.dbg.cu = !{!1}
> -!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, subprograms: !3)
> +!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2)
>   !2 = !DIFile(filename: "t.c", directory: "/path/to/dir")
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !2)
> +!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !2, unit: !1)
>   !6 = !{}
>
> Modified: llvm/trunk/test/tools/dsymutil/Inputs/frame-dw2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/Inputs/frame-dw2.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/tools/dsymutil/Inputs/frame-dw2.ll (original)
> +++ llvm/trunk/test/tools/dsymutil/Inputs/frame-dw2.ll Fri Apr 15 10:57:41 2016
> @@ -42,15 +42,14 @@ attributes #2 = { "less-precise-fpmad"="
>   !llvm.module.flags = !{!9, !10, !11}
>   !llvm.ident = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "frame.c", directory: "/tmp")
>   !2 = !{}
> -!3 = !{!4, !8}
> -!4 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!8 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!8 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !9 = !{i32 2, !"Dwarf Version", i32 2}
>   !10 = !{i32 2, !"Debug Info Version", i32 3}
>   !11 = !{i32 1, !"PIC Level", i32 2}
>
> Modified: llvm/trunk/test/tools/dsymutil/Inputs/frame-dw4.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/Inputs/frame-dw4.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/tools/dsymutil/Inputs/frame-dw4.ll (original)
> +++ llvm/trunk/test/tools/dsymutil/Inputs/frame-dw4.ll Fri Apr 15 10:57:41 2016
> @@ -42,15 +42,14 @@ attributes #2 = { "less-precise-fpmad"="
>   !llvm.module.flags = !{!9, !10, !11}
>   !llvm.ident = !{!12}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 239176) (llvm/trunk 239190)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2)
>   !1 = !DIFile(filename: "frame.c", directory: "/tmp")
>   !2 = !{}
> -!3 = !{!4, !8}
> -!4 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!4 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{!7, !7}
>   !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
> -!8 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, variables: !2)
> +!8 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 8, type: !5, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
>   !9 = !{i32 2, !"Dwarf Version", i32 4}
>   !10 = !{i32 2, !"Debug Info Version", i32 3}
>   !11 = !{i32 1, !"PIC Level", i32 2}
>
> Modified: llvm/trunk/test/tools/gold/X86/Inputs/linkonce-weak.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/gold/X86/Inputs/linkonce-weak.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/tools/gold/X86/Inputs/linkonce-weak.ll (original)
> +++ llvm/trunk/test/tools/gold/X86/Inputs/linkonce-weak.ll Fri Apr 15 10:57:41 2016
> @@ -6,11 +6,10 @@ define weak_odr void @f() !dbg !4 {
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251407) (llvm/trunk 251401)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251407) (llvm/trunk 251401)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "linkonce-weak.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, variables: !2)
> +!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null}
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/test/tools/gold/X86/linkonce-weak.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/gold/X86/linkonce-weak.ll?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/test/tools/gold/X86/linkonce-weak.ll (original)
> +++ llvm/trunk/test/tools/gold/X86/linkonce-weak.ll Fri Apr 15 10:57:41 2016
> @@ -26,11 +26,10 @@ define linkonce_odr void @f() !dbg !4 {
>   !llvm.module.flags = !{!7, !8}
>   !llvm.ident = !{!9}
>
> -!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251407) (llvm/trunk 251401)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, subprograms: !3)
> +!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 (trunk 251407) (llvm/trunk 251401)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
>   !1 = !DIFile(filename: "linkonce-weak.c", directory: ".")
>   !2 = !{}
> -!3 = !{!4}
> -!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, variables: !2)
> +!4 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, variables: !2)
>   !5 = !DISubroutineType(types: !6)
>   !6 = !{null}
>   !7 = !{i32 2, !"Dwarf Version", i32 4}
>
> Modified: llvm/trunk/unittests/IR/MetadataTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/MetadataTest.cpp?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/IR/MetadataTest.cpp (original)
> +++ llvm/trunk/unittests/IR/MetadataTest.cpp Fri Apr 15 10:57:41 2016
> @@ -84,13 +84,19 @@ protected:
>     }
>     DISubprogram *getSubprogram() {
>       return DISubprogram::getDistinct(Context, nullptr, "", "", nullptr, 0,
> -                                     nullptr, false, false, 0, nullptr, 0, 0, 0,
> -                                     0);
> +                                     nullptr, false, false, 0, nullptr,
> +                                     0, 0, 0, false, nullptr);
>     }
>     DIScopeRef getSubprogramRef() { return getSubprogram()->getRef(); }
>     DIFile *getFile() {
>       return DIFile::getDistinct(Context, "file.c", "/path/to/dir");
>     }
> +  DICompileUnit *getUnit() {
> +    return DICompileUnit::getDistinct(Context, 1, getFile(), "clang", false,
> +                                      "-g", 2, "", DICompileUnit::FullDebug,
> +                                      getTuple(), getTuple(), getTuple(),
> +                                      getTuple(), getTuple(), 0);
> +  }
>     DITypeRef getBasicType(StringRef Name) {
>       return DIBasicType::get(Context, dwarf::DW_TAG_unspecified_type, Name)
>           ->getRef();
> @@ -1308,7 +1314,6 @@ TEST_F(DICompileUnitTest, get) {
>     auto EmissionKind = DICompileUnit::FullDebug;
>     MDTuple *EnumTypes = getTuple();
>     MDTuple *RetainedTypes = getTuple();
> -  MDTuple *Subprograms = getTuple();
>     MDTuple *GlobalVariables = getTuple();
>     MDTuple *ImportedEntities = getTuple();
>     uint64_t DWOId = 0x10000000c0ffee;
> @@ -1316,7 +1321,7 @@ TEST_F(DICompileUnitTest, get) {
>     auto *N = DICompileUnit::getDistinct(
>         Context, SourceLanguage, File, Producer, IsOptimized, Flags,
>         RuntimeVersion, SplitDebugFilename, EmissionKind, EnumTypes,
> -      RetainedTypes, Subprograms, GlobalVariables, ImportedEntities, Macros,
> +      RetainedTypes, GlobalVariables, ImportedEntities, Macros,
>         DWOId);
>
>     EXPECT_EQ(dwarf::DW_TAG_compile_unit, N->getTag());
> @@ -1330,7 +1335,6 @@ TEST_F(DICompileUnitTest, get) {
>     EXPECT_EQ(EmissionKind, N->getEmissionKind());
>     EXPECT_EQ(EnumTypes, N->getEnumTypes().get());
>     EXPECT_EQ(RetainedTypes, N->getRetainedTypes().get());
> -  EXPECT_EQ(Subprograms, N->getSubprograms().get());
>     EXPECT_EQ(GlobalVariables, N->getGlobalVariables().get());
>     EXPECT_EQ(ImportedEntities, N->getImportedEntities().get());
>     EXPECT_EQ(Macros, N->getMacros().get());
> @@ -1348,7 +1352,6 @@ TEST_F(DICompileUnitTest, get) {
>     EXPECT_EQ(EmissionKind, Temp->getEmissionKind());
>     EXPECT_EQ(EnumTypes, Temp->getEnumTypes().get());
>     EXPECT_EQ(RetainedTypes, Temp->getRetainedTypes().get());
> -  EXPECT_EQ(Subprograms, Temp->getSubprograms().get());
>     EXPECT_EQ(GlobalVariables, Temp->getGlobalVariables().get());
>     EXPECT_EQ(ImportedEntities, Temp->getImportedEntities().get());
>     EXPECT_EQ(Macros, Temp->getMacros().get());
> @@ -1376,14 +1379,7 @@ TEST_F(DICompileUnitTest, replaceArrays)
>     auto *N = DICompileUnit::getDistinct(
>         Context, SourceLanguage, File, Producer, IsOptimized, Flags,
>         RuntimeVersion, SplitDebugFilename, EmissionKind, EnumTypes,
> -      RetainedTypes, nullptr, nullptr, ImportedEntities, nullptr, DWOId);
> -
> -  auto *Subprograms = MDTuple::getDistinct(Context, None);
> -  EXPECT_EQ(nullptr, N->getSubprograms().get());
> -  N->replaceSubprograms(Subprograms);
> -  EXPECT_EQ(Subprograms, N->getSubprograms().get());
> -  N->replaceSubprograms(nullptr);
> -  EXPECT_EQ(nullptr, N->getSubprograms().get());
> +      RetainedTypes, nullptr, ImportedEntities, nullptr, DWOId);
>
>     auto *GlobalVariables = MDTuple::getDistinct(Context, None);
>     EXPECT_EQ(nullptr, N->getGlobalVariables().get());
> @@ -1421,11 +1417,12 @@ TEST_F(DISubprogramTest, get) {
>     MDTuple *TemplateParams = getTuple();
>     DISubprogram *Declaration = getSubprogram();
>     MDTuple *Variables = getTuple();
> +  DICompileUnit *Unit = getUnit();
>
>     auto *N = DISubprogram::get(
>         Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit,
>         IsDefinition, ScopeLine, ContainingType, Virtuality, VirtualIndex, Flags,
> -      IsOptimized, TemplateParams, Declaration, Variables);
> +      IsOptimized, Unit, TemplateParams, Declaration, Variables);
>
>     EXPECT_EQ(dwarf::DW_TAG_subprogram, N->getTag());
>     EXPECT_EQ(Scope, N->getScope());
> @@ -1442,99 +1439,105 @@ TEST_F(DISubprogramTest, get) {
>     EXPECT_EQ(VirtualIndex, N->getVirtualIndex());
>     EXPECT_EQ(Flags, N->getFlags());
>     EXPECT_EQ(IsOptimized, N->isOptimized());
> +  EXPECT_EQ(Unit, N->getUnit());
>     EXPECT_EQ(TemplateParams, N->getTemplateParams().get());
>     EXPECT_EQ(Declaration, N->getDeclaration());
>     EXPECT_EQ(Variables, N->getVariables().get());
>     EXPECT_EQ(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>
>     EXPECT_NE(N, DISubprogram::get(Context, getCompositeType(), Name, LinkageName,
>                                    File, Line, Type, IsLocalToUnit, IsDefinition,
>                                    ScopeLine, ContainingType, Virtuality,
> -                                 VirtualIndex, Flags, IsOptimized,
> +                                 VirtualIndex, Flags, IsOptimized, Unit,
>                                    TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, "other", LinkageName, File,
>                                    Line, Type, IsLocalToUnit, IsDefinition,
>                                    ScopeLine, ContainingType, Virtuality,
> -                                 VirtualIndex, Flags, IsOptimized,
> +                                 VirtualIndex, Flags, IsOptimized, Unit,
>                                    TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, "other", File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, getFile(),
>                                    Line, Type, IsLocalToUnit, IsDefinition,
>                                    ScopeLine, ContainingType, Virtuality,
> -                                 VirtualIndex, Flags, IsOptimized,
> +                                 VirtualIndex, Flags, IsOptimized, Unit,
>                                    TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File,
>                                    Line + 1, Type, IsLocalToUnit, IsDefinition,
>                                    ScopeLine, ContainingType, Virtuality,
> -                                 VirtualIndex, Flags, IsOptimized,
> +                                 VirtualIndex, Flags, IsOptimized, Unit,
>                                    TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    getSubroutineType(), IsLocalToUnit,
>                                    IsDefinition, ScopeLine, ContainingType,
>                                    Virtuality, VirtualIndex, Flags, IsOptimized,
> -                                 TemplateParams, Declaration, Variables));
> +                                 Unit, TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, !IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, !IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition,
>                                    ScopeLine + 1, ContainingType, Virtuality,
> -                                 VirtualIndex, Flags, IsOptimized,
> +                                 VirtualIndex, Flags, IsOptimized, Unit,
>                                    TemplateParams, Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    getCompositeType(), Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality + 1, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex + 1,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 NotFlags, IsOptimized, TemplateParams,
> +                                 NotFlags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, !IsOptimized, TemplateParams,
> +                                 Flags, !IsOptimized, Unit, TemplateParams,
> +                                 Declaration, Variables));
> +  EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
> +                                 Type, IsLocalToUnit, IsDefinition, ScopeLine,
> +                                 ContainingType, Virtuality, VirtualIndex,
> +                                 Flags, IsOptimized, nullptr, TemplateParams,
> +                                 Declaration, Variables));
> +  EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
> +                                 Type, IsLocalToUnit, IsDefinition, ScopeLine,
> +                                 ContainingType, Virtuality, VirtualIndex,
> +                                 Flags, IsOptimized, Unit, getTuple(),
>                                    Declaration, Variables));
> -  EXPECT_NE(N,
> -            DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
> -                              Type, IsLocalToUnit, IsDefinition, ScopeLine,
> -                              ContainingType, Virtuality, VirtualIndex, Flags,
> -                              IsOptimized, getTuple(), Declaration, Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    getSubprogram(), Variables));
>     EXPECT_NE(N, DISubprogram::get(Context, Scope, Name, LinkageName, File, Line,
>                                    Type, IsLocalToUnit, IsDefinition, ScopeLine,
>                                    ContainingType, Virtuality, VirtualIndex,
> -                                 Flags, IsOptimized, TemplateParams,
> +                                 Flags, IsOptimized, Unit, TemplateParams,
>                                    Declaration, getTuple()));
>
>     TempDISubprogram Temp = N->clone();
>
> Modified: llvm/trunk/unittests/Transforms/Utils/Cloning.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Transforms/Utils/Cloning.cpp?rev=266446&r1=266445&r2=266446&view=diff
> ==============================================================================
> --- llvm/trunk/unittests/Transforms/Utils/Cloning.cpp (original)
> +++ llvm/trunk/unittests/Transforms/Utils/Cloning.cpp Fri Apr 15 10:57:41 2016
> @@ -314,21 +314,6 @@ TEST_F(CloneFunc, Subprogram) {
>         (Sub1 == NewFunc->getSubprogram() && Sub2 == OldFunc->getSubprogram()));
>   }
>
> -// Test that the new subprogram entry was not added to the CU which doesn't
> -// contain the old subprogram entry.
> -TEST_F(CloneFunc, SubprogramInRightCU) {
> -  EXPECT_FALSE(verifyModule(*M));
> -
> -  EXPECT_EQ(2U, Finder->compile_unit_count());
> -
> -  auto Iter = Finder->compile_units().begin();
> -  auto *CU1 = cast<DICompileUnit>(*Iter);
> -  Iter++;
> -  auto *CU2 = cast<DICompileUnit>(*Iter);
> -  EXPECT_TRUE(CU1->getSubprograms().size() == 0 ||
> -              CU2->getSubprograms().size() == 0);
> -}
> -
>   // Test that instructions in the old function still belong to it in the
>   // metadata, while instruction in the new function belong to the new one.
>   TEST_F(CloneFunc, InstructionOwnership) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>



More information about the llvm-commits mailing list