|
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