Wei Mi | ebb9327 | 2017-08-29 21:45:11 +0000 | [diff] [blame] | 1 | ; REQUIRES: asserts |
| 2 | ; RUN: opt < %s -loop-unswitch -disable-output -stats 2>&1| FileCheck %s |
| 3 | |
| 4 | ; Check the select statement in the loop will be unswitched. |
| 5 | ; CHECK: 1 loop-unswitch - Number of selects unswitched |
| 6 | define i32 @test(i1 zeroext %x, i32 %a) local_unnamed_addr #0 { |
| 7 | entry: |
| 8 | br label %while.cond |
| 9 | |
| 10 | while.cond: ; preds = %while.body, %entry |
| 11 | %i.0 = phi i32 [ 0, %entry ], [ %inc, %while.body ] |
| 12 | %s.0 = phi i32 [ %a, %entry ], [ %add, %while.body ] |
| 13 | %cmp = icmp slt i32 %i.0, 10000 |
| 14 | br i1 %cmp, label %while.body, label %while.end |
| 15 | |
| 16 | while.body: ; preds = %while.cond |
| 17 | %cond = select i1 %x, i32 %a, i32 %i.0 |
| 18 | %add = add nsw i32 %s.0, %cond |
| 19 | %inc = add nsw i32 %i.0, 1 |
| 20 | br label %while.cond |
| 21 | |
| 22 | while.end: ; preds = %while.cond |
| 23 | %s.0.lcssa = phi i32 [ %s.0, %while.cond ] |
| 24 | ret i32 %s.0.lcssa |
| 25 | } |
| 26 | |