|
2 | 2 |
|
3 | 3 | declare void @llvm.assume(i1) |
4 | 4 |
|
5 | | -define void @pr120442() { |
| 5 | +; Checks that the presence of assumptions does not interfere with |
| 6 | +; exiting loop guard collection via following loop predecessors. |
| 7 | +define void @pr120442(i1 %c.1, i1 %c.2) { |
6 | 8 | ; CHECK-LABEL: 'pr120442' |
7 | 9 | ; CHECK-NEXT: Determining loop execution counts for: @pr120442 |
8 | | -; CHECK-NEXT: Loop %bb2: backedge-taken count is i32 0 |
9 | | -; CHECK-NEXT: Loop %bb2: constant max backedge-taken count is i32 0 |
10 | | -; CHECK-NEXT: Loop %bb2: symbolic max backedge-taken count is i32 0 |
11 | | -; CHECK-NEXT: Loop %bb2: Trip multiple is 1 |
12 | | -; CHECK-NEXT: Loop %bb1: <multiple exits> Unpredictable backedge-taken count. |
13 | | -; CHECK-NEXT: Loop %bb1: Unpredictable constant max backedge-taken count. |
14 | | -; CHECK-NEXT: Loop %bb1: Unpredictable symbolic max backedge-taken count. |
15 | | -bb: |
16 | | - call void @llvm.assume(i1 false) |
17 | | - call void @llvm.assume(i1 false) |
18 | | - br label %bb6 |
| 10 | +; CHECK-NEXT: Loop %inner.header: backedge-taken count is i32 0 |
| 11 | +; CHECK-NEXT: Loop %inner.header: constant max backedge-taken count is i32 0 |
| 12 | +; CHECK-NEXT: Loop %inner.header: symbolic max backedge-taken count is i32 0 |
| 13 | +; CHECK-NEXT: Loop %inner.header: Trip multiple is 1 |
| 14 | +entry: |
| 15 | + call void @llvm.assume(i1 %c.1) |
| 16 | + call void @llvm.assume(i1 %c.2) |
| 17 | + br label %outer.header |
| 18 | + |
| 19 | +outer.header: |
| 20 | + %phi7 = phi i32 [ 0, %bb ], [ 0, %entry ] |
| 21 | + br label %inner.header |
19 | 22 |
|
20 | | -bb1: |
21 | | - br label %bb2 |
| 23 | +bb: |
| 24 | + br i1 false, label %outer.header, label %bb |
22 | 25 |
|
23 | | -bb2: |
24 | | - %phi = phi i32 [ %add, %bb2 ], [ 0, %bb1 ] |
| 26 | +inner.header: |
| 27 | + %phi = phi i32 [ %add, %inner.header ], [ 0, %outer.header ] |
25 | 28 | %add = add i32 %phi, 1 |
26 | 29 | %icmp = icmp ugt i32 %add, 0 |
27 | | - br i1 %icmp, label %bb1, label %bb2 |
28 | | - |
29 | | -bb5: |
30 | | - br i1 false, label %bb6, label %bb5 |
| 30 | + br i1 %icmp, label %exit, label %inner.header |
31 | 31 |
|
32 | | -bb6: |
33 | | - %phi7 = phi i32 [ 0, %bb5 ], [ 0, %bb ] |
34 | | - br label %bb1 |
| 32 | +exit: |
| 33 | + ret void |
35 | 34 | } |
0 commit comments