|
| 1 | +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
1 | 2 | ; RUN: opt < %s -indvars -loop-deletion -simplifycfg -S | FileCheck %s
|
2 | 3 |
|
3 | 4 | ; Testcase distilled from 256.bzip2
|
4 |
| -; CHECK-LABEL: @test1 |
5 |
| -; CHECK-NOT: br |
6 | 5 | define i32 @test1() {
|
| 6 | +; CHECK-LABEL: @test1( |
| 7 | +; CHECK-NEXT: entry: |
| 8 | +; CHECK-NEXT: ret i32 364 |
| 9 | +; |
7 | 10 | entry:
|
8 |
| - br label %loopentry |
| 11 | + br label %loopentry |
9 | 12 |
|
10 | 13 | loopentry: ; preds = %loopentry, %entry
|
11 |
| - %indvar1 = phi i32 [ 0, %entry ], [ %indvar.next2, %loopentry ] ; <i32> [#uses=1] |
12 |
| - %h.0 = phi i32 [ %tmp.2, %loopentry ], [ 4, %entry ] ; <i32> [#uses=1] |
13 |
| - %tmp.1 = mul i32 %h.0, 3 ; <i32> [#uses=1] |
14 |
| - %tmp.2 = add i32 %tmp.1, 1 ; <i32> [#uses=2] |
15 |
| - %indvar.next2 = add i32 %indvar1, 1 ; <i32> [#uses=2] |
16 |
| - %exitcond3 = icmp ne i32 %indvar.next2, 4 ; <i1> [#uses=1] |
17 |
| - br i1 %exitcond3, label %loopentry, label %loopexit |
| 14 | + %indvar1 = phi i32 [ 0, %entry ], [ %indvar.next2, %loopentry ] ; <i32> [#uses=1] |
| 15 | + %h.0 = phi i32 [ %tmp.2, %loopentry ], [ 4, %entry ] ; <i32> [#uses=1] |
| 16 | + %tmp.1 = mul i32 %h.0, 3 ; <i32> [#uses=1] |
| 17 | + %tmp.2 = add i32 %tmp.1, 1 ; <i32> [#uses=2] |
| 18 | + %indvar.next2 = add i32 %indvar1, 1 ; <i32> [#uses=2] |
| 19 | + %exitcond3 = icmp ne i32 %indvar.next2, 4 ; <i1> [#uses=1] |
| 20 | + br i1 %exitcond3, label %loopentry, label %loopexit |
18 | 21 |
|
19 | 22 | loopexit: ; preds = %loopentry
|
20 |
| - ret i32 %tmp.2 |
| 23 | + ret i32 %tmp.2 |
21 | 24 | }
|
22 | 25 |
|
23 |
| - |
24 | 26 | ; PR12377
|
25 |
| -; CHECK-LABEL: @test2 |
26 |
| -; CHECK: [[VAR1:%.+]] = add i32 %arg, -11 |
27 |
| -; CHECK: [[VAR2:%.+]] = lshr i32 [[VAR1]], 1 |
28 |
| -; CHECK: [[VAR3:%.+]] = add nuw i32 [[VAR2]], 1 |
29 |
| -; CHECK: [[VAR4:%.+]] = phi i32 [ 0, %bb ], [ [[VAR3]], %bb1.preheader ] |
30 |
| -; CHECK: ret i32 [[VAR4]] |
31 | 27 | define i32 @test2(i32 %arg) {
|
| 28 | +; CHECK-LABEL: @test2( |
| 29 | +; CHECK-NEXT: bb: |
| 30 | +; CHECK-NEXT: [[TMP:%.*]] = icmp ugt i32 [[ARG:%.*]], 10 |
| 31 | +; CHECK-NEXT: br i1 [[TMP]], label [[BB1_PREHEADER:%.*]], label [[BB7:%.*]] |
| 32 | +; CHECK: bb1.preheader: |
| 33 | +; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[ARG]], -11 |
| 34 | +; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[TMP0]], 1 |
| 35 | +; CHECK-NEXT: [[TMP2:%.*]] = add nuw i32 [[TMP1]], 1 |
| 36 | +; CHECK-NEXT: br label [[BB7]] |
| 37 | +; CHECK: bb7: |
| 38 | +; CHECK-NEXT: [[TMP8:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ [[TMP2]], [[BB1_PREHEADER]] ] |
| 39 | +; CHECK-NEXT: ret i32 [[TMP8]] |
| 40 | +; |
32 | 41 | bb:
|
33 | 42 | %tmp = icmp ugt i32 %arg, 10
|
34 | 43 | br i1 %tmp, label %bb1, label %bb7
|
|
0 commit comments