11# RUN: llc %s --start-before=branch-folder --stop-after=branch-folder -o - | FileCheck %s
22
33# # Check that common instructions hoisted from `if.then` and `if.else` into
4- # # common pred `entry` get merged debug locations. The debug instructions from
5- # # both branches should get hoisted and killed.
6- # #
7- # # The MIR debug instructions have been modified by hand in order to check they
8- # # can be killed.
4+ # # common pred `entry` get merged debug locations.
5+
6+ # # FIXME: The debug instructions handling here is wrong.
97
108# CHECK: bb.0
119# CHECK: CALL64pcrel32 @f, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
12- # # --- Start splice from bb.2.if.else (and debug instructions from bb.1.if.then) ---
13- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(), debug-location ![[#]]
14- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(), debug-location ![[#]]
15- # CHECK-NEXT: $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 2, debug-location !DILocation(line: 0, scope: ![[#]])
16- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(DW_OP_LLVM_arg, 0), debug-location ![[#]]
17- # CHECK-NEXT: DBG_VALUE $noreg, $noreg, ![[#]], !DIExpression(DW_OP_LLVM_arg, 0), debug-location ![[#]]
18- # # --- 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 --------------
1914# CHECK-NEXT: TEST64rr killed renamable $rax, renamable $rax, implicit-def $eflags
2015# CHECK-NEXT: JCC_1 %bb.2, 9, implicit killed $eflags
2116# CHECK: bb.1
7873...
7974---
8075name : g
81- tracksRegLiveness : true
82- isSSA : false
8376body : |
8477 bb.0 (%ir-block.0):
8578 successors: %bb.1(0x40000000), %bb.2(0x40000000)
@@ -93,21 +86,22 @@ body: |
9386
9487 bb.1.if.then:
9588 successors: %bb.3(0x80000000)
96- DBG_VALUE $esi, $noreg, !11, !DIExpression(), debug-location !13
97- $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 1, debug-location !14
98- DBG_INSTR_REF !11, !DIExpression(DW_OP_LLVM_arg, 0), dbg-instr-ref(1, 0) , debug-location !13
89+
90+ DBG_VALUE 0, $noreg, !11, !DIExpression(), debug-location !13
91+ $edi = MOV32r0 implicit-def dead $eflags , debug-location !14
9992 $esi = MOV32r0 implicit-def dead $eflags, debug-location !14
10093 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
10195 JMP_1 %bb.3, debug-location !15
10296
10397 bb.2.if.else:
10498 successors: %bb.3(0x80000000)
10599
106- DBG_VALUE $esp, $noreg, !11, !DIExpression(), debug-location !13
107- $edi = MOV32r0 implicit-def dead $eflags, debug-instr-number 2, debug-location !16
108- 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
109102 $esi = MOV32ri 1, debug-location !16
110103 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
111105
112106 bb.3.if.end:
113107 $eax = MOV32ri 2
0 commit comments