1- # RUN: llc %s --start-before=branch-folder --stop-after=branch-folder -o - \
2- # RUN: | FileCheck %s --implicit-check-not=DBG_PHI
1+ # RUN: llc %s --start-before=branch-folder --stop-after=branch-folder -o - | FileCheck %s
32
43# # Check that common instructions hoisted from `if.then` and `if.else` into
5- # # common pred `entry` get merged debug locations. The debug instructions from
6- # # both branches should get hoisted and killed.
7- # #
8- # # The MIR debug instructions have been modified by hand in order to check they
9- # # can be killed.
10- # #
11- # # Check DBG_PHIs are deleted rather than hoisted (implicit-check-not).
4+ # # common pred `entry` get merged debug locations.
5+
6+ # # FIXME: The debug instructions handling here is wrong.
127
138# CHECK: bb.0
149# CHECK: CALL64pcrel32 @f, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
15- # # --- Start splice from bb.2.if.else (and debug instructions from bb.1.if.then) ---
16- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(), debug-location ![[#]]
17- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(), debug-location ![[#]]
18- # CHECK-NEXT: $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 2, debug-location !DILocation(line: 0, scope: ![[#]])
19- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(DW_OP_LLVM_arg, 0), debug-location ![[#]]
20- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(DW_OP_LLVM_arg, 0), debug-location ![[#]]
21- # # --- End splice ------------------------------------------------------------------
10+ # # --- Start splice from bb.2.if.else ---
11+ # CHECK-NEXT: DBG_VALUE 2, $noreg, ![[#]], !DIExpression(), debug-location ![[#]]
12+ # CHECK-NEXT: $edi = MOV32r0 implicit-def dead $eflags, debug-location !DILocation(line: 0, scope: ![[#]])
13+ # # --- End splice --------------
2214# CHECK-NEXT: TEST64rr killed renamable $rax, renamable $rax, implicit-def $eflags
2315# CHECK-NEXT: JCC_1 %bb.2, 9, implicit killed $eflags
2416# CHECK: bb.1
8173...
8274---
8375name : g
84- tracksRegLiveness : true
85- isSSA : false
8676body : |
8777 bb.0 (%ir-block.0):
8878 successors: %bb.1(0x40000000), %bb.2(0x40000000)
@@ -97,23 +87,21 @@ body: |
9787 bb.1.if.then:
9888 successors: %bb.3(0x80000000)
9989
100- DBG_PHI $esp, 3
101- DBG_VALUE $esi, $noreg, !11, !DIExpression(), debug-location !13
102- $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 1, debug-location !14
103- DBG_INSTR_REF !11, !DIExpression(DW_OP_LLVM_arg, 0), dbg-instr-ref(1, 0), debug-location !13
90+ DBG_VALUE 0, $noreg, !11, !DIExpression(), debug-location !13
91+ $edi = MOV32r0 implicit-def dead $eflags, debug-location !14
10492 $esi = MOV32r0 implicit-def dead $eflags, debug-location !14
10593 CALL64pcrel32 target-flags(x86-plt) @_Z3fooii, csr_64, implicit $rsp, implicit $ssp, implicit killed $edi, implicit killed $esi, implicit-def $rsp, implicit-def $ssp, debug-location !14
94+ DBG_VALUE 1, $noreg, !11, !DIExpression(), debug-location !13
10695 JMP_1 %bb.3, debug-location !15
10796
10897 bb.2.if.else:
10998 successors: %bb.3(0x80000000)
11099
111- DBG_PHI $esp, 4
112- DBG_VALUE $esp, $noreg, !11, !DIExpression(), debug-location !13
113- $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 2, debug-location !16
114- DBG_INSTR_REF !11, !DIExpression(DW_OP_LLVM_arg, 0), dbg-instr-ref(2, 0), debug-location !13
100+ DBG_VALUE 2, $noreg, !11, !DIExpression(), debug-location !13
101+ $edi = MOV32r0 implicit-def dead $eflags, debug-location !16
115102 $esi = MOV32ri 1, debug-location !16
116103 CALL64pcrel32 target-flags(x86-plt) @_Z3barii, csr_64, implicit $rsp, implicit $ssp, implicit killed $edi, implicit killed $esi, implicit-def $rsp, implicit-def $ssp, debug-location !16
104+ DBG_VALUE 3, $noreg, !11, !DIExpression(), debug-location !13
117105
118106 bb.3.if.end:
119107 $eax = MOV32ri 2
0 commit comments