1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/test/DebugInfo/X86/live-debug-vars-index.mir
Matthias Braun 08fbde827c MachineOperand/MIParser: Do not print debug-use flag, infer it
The debug-use flag must be set exactly for uses on DBG_VALUEs.  This is
so obvious that it can be trivially inferred while parsing. This will
reduce noise when printing while omitting an information that has little
value to the user.

The parser will keep recognizing the flag for compatibility with old
`.mir` files.

Differential Revision: https://reviews.llvm.org/D53903

llvm-svn: 345671
2018-10-30 23:28:27 +00:00

54 lines
2.0 KiB
YAML

# After adding new debug instruction for labels, it is possible to have
# debug instructions before DBG_VALUE. When querying DBG_VALUE's slot
# index using previous instruction and the previous instruction is debug
# instruction, it will trigger an assertion as using debug instruction
# to get slot index. This test is to emulate the case when DBG_VALUE's
# previous instruction is DBG_LABEL in LiveDebugVariables pass.
#
# RUN: llc -run-pass=livedebugvars -run-pass=virtregrewriter -o - %s | FileCheck %s
--- |
target triple = "x86_64-unknown-linux-gnu"
define i32 @foo(i32 %a, i32 %b) !dbg !4 {
entry:
ret i32 0, !dbg !12
}
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3}
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "debug-var-slot.c", directory: "./")
!2 = !{}
!3 = !{i32 2, !"Debug Info Version", i32 3}
!4 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 2, isOptimized: true, unit: !0, retainedNodes: !2)
!5 = !DISubroutineType(types: !6)
!6 = !{!7, !7, !7}
!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!8 = !DILabel(scope: !4, name: "top", file: !1, line: 4)
!9 = !DILocation(line: 4, column: 1, scope: !4)
!10 = !DILocalVariable(name: "local_var", scope: !4, file: !1, line: 7, type: !7)
!11 = !DILocation(line: 7, column: 1, scope: !4)
!12 = !DILocation(line: 8, column: 3, scope: !4)
!13 = !DILocalVariable(name: "local_var2", scope: !4, file: !1, line: 7, type: !7)
...
---
name: foo
tracksRegLiveness: true
body: |
bb.0:
DBG_VALUE $esi, $noreg, !13, !DIExpression(), debug-location !11
DBG_LABEL !8, debug-location !9
DBG_VALUE $edi, $noreg, !10, !DIExpression(), debug-location !11
RET 0, undef $eax, debug-location !12
...
# CHECK-LABEL: name: foo
# CHECK: bb.0:
# CHECK-DAG: DBG_LABEL
# CHECK-DAG: DBG_VALUE $esi
# CHECK-DAG: DBG_VALUE $edi