diff options
| author | Shiva Chen <shiva0217@gmail.com> | 2018-05-09 02:40:45 +0000 |
|---|---|---|
| committer | Shiva Chen <shiva0217@gmail.com> | 2018-05-09 02:40:45 +0000 |
| commit | 2c864551df3945f50e1780b2f2c880ec358ae715 (patch) | |
| tree | d82705cf2fd8d7508726df36d2034176d901c2f2 /llvm/test/DebugInfo/AArch64 | |
| parent | 49914cc807a933f3bafd61b88248e75a90101333 (diff) | |
| download | bcm5719-llvm-2c864551df3945f50e1780b2f2c880ec358ae715.tar.gz bcm5719-llvm-2c864551df3945f50e1780b2f2c880ec358ae715.zip | |
[DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label.
In order to set breakpoints on labels and list source code around
labels, we need collect debug information for labels, i.e., label
name, the function label belong, line number in the file, and the
address label located. In order to keep these information in LLVM
IR and to allow backend to generate debug information correctly.
We create a new kind of metadata for labels, DILabel. The format
of DILabel is
!DILabel(scope: !1, name: "foo", file: !2, line: 3)
We hope to keep debug information as much as possible even the
code is optimized. So, we create a new kind of intrinsic for label
metadata to avoid the metadata is eliminated with basic block.
The intrinsic will keep existing if we keep it from optimized out.
The format of the intrinsic is
llvm.dbg.label(metadata !1)
It has only one argument, that is the DILabel metadata. The
intrinsic will follow the label immediately. Backend could get the
label metadata through the intrinsic's parameter.
We also create DIBuilder API for labels to be used by Frontend.
Frontend could use createLabel() to allocate DILabel objects, and use
insertLabel() to insert llvm.dbg.label intrinsic in LLVM IR.
Differential Revision: https://reviews.llvm.org/D45024
Patch by Hsiangkai Wang.
llvm-svn: 331841
Diffstat (limited to 'llvm/test/DebugInfo/AArch64')
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/asan-stack-vars.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll | 4 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/coalescing.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/constant-dbgloc.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/dagcombine-zext.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/dbg-value-i8.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/dwarfdump.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/frameindices.ll | 6 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/inlined-argument.ll | 4 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/prologue_end.ll | 2 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/AArch64/struct_by_value.ll | 2 |
11 files changed, 15 insertions, 15 deletions
diff --git a/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll b/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll index 6e76edd13a3..e7733f4b86d 100644 --- a/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll +++ b/llvm/test/DebugInfo/AArch64/asan-stack-vars.ll @@ -279,7 +279,7 @@ attributes #3 = { nounwind } !11 = !{i32 2, !"Debug Info Version", i32 3} !12 = !{i32 1, !"PIC Level", i32 2} !13 = !{!"clang version 5.0.0 (trunk 295779) (llvm/trunk 295777)"} -!14 = distinct !DISubprogram(name: "+[MyObject doWithSize:]", scope: !1, file: !1, line: 16, type: !15, isLocal: true, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2) +!14 = distinct !DISubprogram(name: "+[MyObject doWithSize:]", scope: !1, file: !1, line: 16, type: !15, isLocal: true, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2) !15 = !DISubroutineType(types: !16) !16 = !{!17, !24, !26, !29} !17 = !DIDerivedType(tag: DW_TAG_typedef, name: "id", file: !1, baseType: !18) diff --git a/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll b/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll index 37730b6794e..f6b0e142a9a 100644 --- a/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll +++ b/llvm/test/DebugInfo/AArch64/cfi-eof-prologue.ll @@ -88,11 +88,11 @@ attributes #3 = { nounwind } !24 = !{null, !25} !25 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !13) !26 = !DISubprogram(name: "~A", line: 3, isLocal: false, isDefinition: false, virtuality: DW_VIRTUALITY_virtual, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 3, file: !5, scope: !13, type: !23, containingType: !13) -!28 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC2Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, variables: !29) +!28 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC2Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, retainedNodes: !29) !29 = !{!30} !30 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !28, type: !31) !31 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !4) -!32 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC1Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, variables: !33) +!32 = distinct !DISubprogram(name: "B", linkageName: "_ZN1BC1Ev", line: 9, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 9, file: !5, scope: !4, type: !9, declaration: !8, retainedNodes: !33) !33 = !{!34} !34 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !32, type: !31) !35 = !{i32 2, !"Dwarf Version", i32 4} diff --git a/llvm/test/DebugInfo/AArch64/coalescing.ll b/llvm/test/DebugInfo/AArch64/coalescing.ll index 31d821054c8..0f65856fcb3 100644 --- a/llvm/test/DebugInfo/AArch64/coalescing.ll +++ b/llvm/test/DebugInfo/AArch64/coalescing.ll @@ -46,7 +46,7 @@ attributes #3 = { nounwind optsize } !0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.6.0 (trunk 223149) (llvm/trunk 223115)", isOptimized: true, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2) !1 = !DIFile(filename: "<stdin>", directory: "") !2 = !{} -!4 = distinct !DISubprogram(name: "start", linkageName: "_Z5startv", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !9) +!4 = distinct !DISubprogram(name: "start", linkageName: "_Z5startv", line: 2, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, retainedNodes: !9) !5 = !DIFile(filename: "test1.c", directory: "") !6 = !DIFile(filename: "test1.c", directory: "") !7 = !DISubroutineType(types: !8) diff --git a/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll b/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll index a3dbf453edb..c55de8ad8b5 100644 --- a/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll +++ b/llvm/test/DebugInfo/AArch64/constant-dbgloc.ll @@ -26,7 +26,7 @@ entry: !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "", isOptimized: false, emissionKind: FullDebug) !1 = !DIFile(filename: "test.c", directory: "/home/user/clang/build") !2 = !{} -!4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2) +!4 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2) !5 = !DISubroutineType(types: !6) !6 = !{!7} !7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) diff --git a/llvm/test/DebugInfo/AArch64/dagcombine-zext.ll b/llvm/test/DebugInfo/AArch64/dagcombine-zext.ll index 74601763389..1413e666c9a 100644 --- a/llvm/test/DebugInfo/AArch64/dagcombine-zext.ll +++ b/llvm/test/DebugInfo/AArch64/dagcombine-zext.ll @@ -46,7 +46,7 @@ attributes #3 = { nobuiltin nounwind } !5 = !{i32 1, !"wchar_size", i32 4} !6 = !{i32 7, !"PIC Level", i32 2} !7 = !{!"clang version 6.0.0 (trunk 317700) (llvm/trunk 317708)"} -!8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !13) +!8 = distinct !DISubprogram(name: "f", scope: !1, file: !1, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 4, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !13) !9 = !DISubroutineType(types: !10) !10 = !{!11, !11} !11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) diff --git a/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll b/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll index f397555d810..6f9af80be7b 100644 --- a/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll +++ b/llvm/test/DebugInfo/AArch64/dbg-value-i8.ll @@ -42,7 +42,7 @@ attributes #2 = { nounwind } !7 = !{i32 2, !"Debug Info Version", i32 3} !8 = !{i32 1, !"wchar_size", i32 4} !9 = !{!"clang version 7.0.0"} -!10 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 16, type: !11, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, variables: !14) +!10 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 16, type: !11, isLocal: false, isDefinition: true, scopeLine: 16, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !14) !11 = !DISubroutineType(types: !12) !12 = !{!5, !13, !5} !13 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !5, size: 64) diff --git a/llvm/test/DebugInfo/AArch64/dwarfdump.ll b/llvm/test/DebugInfo/AArch64/dwarfdump.ll index ea76a53b148..6ce5f023445 100644 --- a/llvm/test/DebugInfo/AArch64/dwarfdump.ll +++ b/llvm/test/DebugInfo/AArch64/dwarfdump.ll @@ -29,7 +29,7 @@ attributes #0 = { nounwind } !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.3 ", isOptimized: false, emissionKind: FullDebug, file: !9, enums: !1, retainedTypes: !1, globals: !1, imports: !1) !1 = !{} -!3 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !9, scope: !4, type: !5, variables: !1) +!3 = distinct !DISubprogram(name: "main", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, isOptimized: false, unit: !0, scopeLine: 1, file: !9, scope: !4, type: !5, retainedNodes: !1) !4 = !DIFile(filename: "tmp.c", directory: "/home/tim/llvm/build") !5 = !DISubroutineType(types: !6) !6 = !{!7} diff --git a/llvm/test/DebugInfo/AArch64/frameindices.ll b/llvm/test/DebugInfo/AArch64/frameindices.ll index 0751370a87e..18cd54afbc4 100644 --- a/llvm/test/DebugInfo/AArch64/frameindices.ll +++ b/llvm/test/DebugInfo/AArch64/frameindices.ll @@ -192,7 +192,7 @@ attributes #4 = { builtin } !29 = !{i32 2, !"Dwarf Version", i32 2} !30 = !{i32 2, !"Debug Info Version", i32 3} !31 = !{!"clang version 3.7.0 "} -!32 = distinct !DISubprogram(name: "f13", linkageName: "_Z3f131A", scope: !2, file: !2, line: 13, type: !33, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !35) +!32 = distinct !DISubprogram(name: "f13", linkageName: "_Z3f131A", scope: !2, file: !2, line: 13, type: !33, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !35) !33 = !DISubroutineType(types: !34) !34 = !{null, !12} !35 = !{!36} @@ -214,7 +214,7 @@ attributes #4 = { builtin } !51 = !{!"bool", !42, i64 0} !52 = !DILocation(line: 15, column: 3, scope: !32) !53 = !DILocation(line: 16, column: 1, scope: !32) -!54 = distinct !DISubprogram(name: "f11", linkageName: "_Z3f111A", scope: !2, file: !2, line: 17, type: !33, isLocal: false, isDefinition: true, scopeLine: 17, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !55) +!54 = distinct !DISubprogram(name: "f11", linkageName: "_Z3f111A", scope: !2, file: !2, line: 17, type: !33, isLocal: false, isDefinition: true, scopeLine: 17, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !55) !55 = !{!56} !56 = !DILocalVariable(name: "p1", arg: 1, scope: !54, file: !2, line: 17, type: !12) !57 = !DILocation(line: 17, column: 12, scope: !54) @@ -228,7 +228,7 @@ attributes #4 = { builtin } !65 = !DILocation(line: 15, column: 3, scope: !32, inlinedAt: !60) !66 = !DILocation(line: 16, column: 1, scope: !32, inlinedAt: !60) !67 = !DILocation(line: 17, column: 27, scope: !54) -!68 = distinct !DISubprogram(name: "f16", linkageName: "_Z3f16v", scope: !2, file: !2, line: 18, type: !69, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !8, variables: !71) +!68 = distinct !DISubprogram(name: "f16", linkageName: "_Z3f16v", scope: !2, file: !2, line: 18, type: !69, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !8, retainedNodes: !71) !69 = !DISubroutineType(types: !70) !70 = !{null} !71 = !{!72, !73} diff --git a/llvm/test/DebugInfo/AArch64/inlined-argument.ll b/llvm/test/DebugInfo/AArch64/inlined-argument.ll index 868efc28f6a..b9de3a48419 100644 --- a/llvm/test/DebugInfo/AArch64/inlined-argument.ll +++ b/llvm/test/DebugInfo/AArch64/inlined-argument.ll @@ -105,7 +105,7 @@ attributes #1 = { nounwind readnone speculatable } !17 = !{i32 2, !"Debug Info Version", i32 3} !18 = !{i32 1, !"wchar_size", i32 4} !19 = !{!"clang version 6.0.0 (trunk 317516) (llvm/trunk 317518)"} -!20 = distinct !DISubprogram(name: "g", scope: !3, file: !3, line: 18, type: !21, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !25) +!20 = distinct !DISubprogram(name: "g", scope: !3, file: !3, line: 18, type: !21, isLocal: false, isDefinition: true, scopeLine: 18, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !25) !21 = !DISubroutineType(types: !22) !22 = !{!23, !24, !15} !23 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) @@ -117,7 +117,7 @@ attributes #1 = { nounwind readnone speculatable } !29 = !DILocation(line: 18, column: 11, scope: !20) !30 = !DILocation(line: 18, column: 33, scope: !20) !31 = !DILocalVariable(name: "t", arg: 1, scope: !32, file: !3, line: 9, type: !24) -!32 = distinct !DISubprogram(name: "find", scope: !3, file: !3, line: 9, type: !33, isLocal: true, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !2, variables: !36) +!32 = distinct !DISubprogram(name: "find", scope: !3, file: !3, line: 9, type: !33, isLocal: true, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: true, unit: !2, retainedNodes: !36) !33 = !DISubroutineType(types: !34) !34 = !{!35, !24, !15} !35 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) diff --git a/llvm/test/DebugInfo/AArch64/prologue_end.ll b/llvm/test/DebugInfo/AArch64/prologue_end.ll index 5e6e59dedaf..0187032e138 100644 --- a/llvm/test/DebugInfo/AArch64/prologue_end.ll +++ b/llvm/test/DebugInfo/AArch64/prologue_end.ll @@ -30,7 +30,7 @@ declare i32 @func() !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.7.0 (trunk 242129)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) !1 = !DIFile(filename: "foo.c", directory: "/tmp") !2 = !{} -!4 = distinct !DISubprogram(name: "prologue_end_test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, variables: !2) +!4 = distinct !DISubprogram(name: "prologue_end_test", scope: !1, file: !1, line: 2, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: false, unit: !0, retainedNodes: !2) !5 = !DISubroutineType(types: !6) !6 = !{null} !7 = !{i32 2, !"Dwarf Version", i32 2} diff --git a/llvm/test/DebugInfo/AArch64/struct_by_value.ll b/llvm/test/DebugInfo/AArch64/struct_by_value.ll index 9262831649c..690f1b46a70 100644 --- a/llvm/test/DebugInfo/AArch64/struct_by_value.ll +++ b/llvm/test/DebugInfo/AArch64/struct_by_value.ll @@ -51,7 +51,7 @@ attributes #1 = { nounwind readnone } !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "LLVM version 3.4 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2) !1 = !DIFile(filename: "struct_by_value.c", directory: "") !2 = !{} -!4 = distinct !DISubprogram(name: "return_five_int", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 14, file: !1, scope: !5, type: !6, variables: !2) +!4 = distinct !DISubprogram(name: "return_five_int", line: 13, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 14, file: !1, scope: !5, type: !6, retainedNodes: !2) !5 = !DIFile(filename: "struct_by_value.c", directory: "") !6 = !DISubroutineType(types: !7) !7 = !{!8, !9} |

