|
21 | 21 | # As a consequence we could end up merging blocks at the end of a converted |
22 | 22 | # diamond/triangle and while doing that we messed up when fixing up the CFG |
23 | 23 | # related to fallthrough edges. For the test cases below we incorrectly ended |
24 | | -# up ended up with a fallthrough from the MBBs with two Bcc instructions to |
25 | | -# the MBB with the STRH after if conversion. |
| 24 | +# up with a fallthrough from the MBBs with two Bcc instructions to the MBB |
| 25 | +# with the STRH after if conversion. |
26 | 26 | # |
27 | 27 | --- |
28 | 28 | name: avoidMergeBlockDiamond |
29 | 29 | body: | |
30 | 30 | ; CHECK-LABEL: name: avoidMergeBlockDiamond |
31 | 31 | ; CHECK: bb.0: |
32 | | - ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 32 | + ; CHECK-NEXT: successors: %bb.1(0x80000000) |
33 | 33 | ; CHECK-NEXT: {{ $}} |
34 | 34 | ; CHECK-NEXT: $sp = tADDspi $sp, 2, 1 /* CC::ne */, $cpsr |
35 | 35 | ; CHECK-NEXT: $sp = tADDspi $sp, 1, 0 /* CC::eq */, $cpsr, implicit $sp |
36 | 36 | ; CHECK-NEXT: $sp = tADDspi $sp, 3, 14 /* CC::al */, $noreg |
37 | | - ; CHECK-NEXT: tBcc %bb.2, 1 /* CC::ne */, $cpsr |
38 | | - ; CHECK-NEXT: tBcc %bb.2, 1 /* CC::ne */, $cpsr |
| 37 | + ; CHECK-NEXT: tBcc %bb.1, 1 /* CC::ne */, $cpsr |
| 38 | + ; CHECK-NEXT: tBcc %bb.1, 1 /* CC::ne */, $cpsr |
39 | 39 | ; CHECK-NEXT: {{ $}} |
40 | 40 | ; CHECK-NEXT: bb.1: |
41 | | - ; CHECK-NEXT: successors: %bb.1(0x80000000) |
42 | | - ; CHECK-NEXT: {{ $}} |
43 | | - ; CHECK-NEXT: STRH $sp, $sp, $noreg, 0, 14 /* CC::al */, $noreg |
44 | | - ; CHECK-NEXT: tB %bb.1, 14 /* CC::al */, $noreg |
| 41 | + ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg |
45 | 42 | ; CHECK-NEXT: {{ $}} |
46 | 43 | ; CHECK-NEXT: bb.2: |
47 | | - ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg |
| 44 | + ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 45 | + ; CHECK-NEXT: {{ $}} |
| 46 | + ; CHECK-NEXT: STRH $sp, $sp, $noreg, 0, 14 /* CC::al */, $noreg |
| 47 | + ; CHECK-NEXT: tB %bb.2, 14 /* CC::al */, $noreg |
48 | 48 | bb.0: |
49 | 49 | tBcc %bb.2, 1, $cpsr |
50 | 50 |
|
@@ -76,21 +76,21 @@ name: avoidMergeBlockTriangle |
76 | 76 | body: | |
77 | 77 | ; CHECK-LABEL: name: avoidMergeBlockTriangle |
78 | 78 | ; CHECK: bb.0: |
79 | | - ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 79 | + ; CHECK-NEXT: successors: %bb.1(0x80000000) |
80 | 80 | ; CHECK-NEXT: {{ $}} |
81 | 81 | ; CHECK-NEXT: $sp = tADDspi $sp, 1, 1 /* CC::ne */, $cpsr |
82 | 82 | ; CHECK-NEXT: $sp = tADDspi $sp, 2, 14 /* CC::al */, $noreg |
83 | | - ; CHECK-NEXT: tBcc %bb.2, 1 /* CC::ne */, $cpsr |
84 | | - ; CHECK-NEXT: tBcc %bb.2, 1 /* CC::ne */, $cpsr |
| 83 | + ; CHECK-NEXT: tBcc %bb.1, 1 /* CC::ne */, $cpsr |
| 84 | + ; CHECK-NEXT: tBcc %bb.1, 1 /* CC::ne */, $cpsr |
85 | 85 | ; CHECK-NEXT: {{ $}} |
86 | 86 | ; CHECK-NEXT: bb.1: |
87 | | - ; CHECK-NEXT: successors: %bb.1(0x80000000) |
88 | | - ; CHECK-NEXT: {{ $}} |
89 | | - ; CHECK-NEXT: STRH $sp, $sp, $noreg, 0, 14 /* CC::al */, $noreg |
90 | | - ; CHECK-NEXT: tB %bb.1, 14 /* CC::al */, $noreg |
| 87 | + ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg |
91 | 88 | ; CHECK-NEXT: {{ $}} |
92 | 89 | ; CHECK-NEXT: bb.2: |
93 | | - ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg |
| 90 | + ; CHECK-NEXT: successors: %bb.2(0x80000000) |
| 91 | + ; CHECK-NEXT: {{ $}} |
| 92 | + ; CHECK-NEXT: STRH $sp, $sp, $noreg, 0, 14 /* CC::al */, $noreg |
| 93 | + ; CHECK-NEXT: tB %bb.2, 14 /* CC::al */, $noreg |
94 | 94 | bb.0: |
95 | 95 | tBcc %bb.1, 1, $cpsr |
96 | 96 | tB %bb.3, 14, $noreg |
|
0 commit comments