| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: opt -S -passes=indvars < %s | FileCheck %s |
| |
| define i32 @widget() { |
| ; CHECK-LABEL: define i32 @widget() { |
| ; CHECK-NEXT: [[B:.*:]] |
| ; CHECK-NEXT: br label %[[B1:.*]] |
| ; CHECK: [[B1]]: |
| ; CHECK-NEXT: br i1 true, label %[[B3:.*]], label %[[B8:.*]] |
| ; CHECK: [[B3]]: |
| ; CHECK-NEXT: br i1 true, label %[[B7:.*]], label %[[B5:.*]] |
| ; CHECK: [[B5]]: |
| ; CHECK-NEXT: br label %[[B1]] |
| ; CHECK: [[B7]]: |
| ; CHECK-NEXT: ret i32 5 |
| ; CHECK: [[B8]]: |
| ; CHECK-NEXT: ret i32 7 |
| ; |
| b: |
| br label %b1 |
| |
| b1: |
| %phi = phi i32 [ 0, %b ], [ %udiv6, %b5 ] |
| %phi2 = phi i32 [ 1, %b ], [ %add, %b5 ] |
| %icmp = icmp eq i32 %phi, 0 |
| br i1 %icmp, label %b3, label %b8 |
| |
| b3: |
| %udiv = udiv i32 10, %phi2 |
| %urem = urem i32 %udiv, 10 |
| %icmp4 = icmp eq i32 %urem, 0 |
| br i1 %icmp4, label %b7, label %b5 |
| |
| b5: |
| %udiv6 = udiv i32 %phi2, 0 |
| %add = add i32 %phi2, 1 |
| br label %b1 |
| |
| b7: |
| ret i32 5 |
| |
| b8: |
| ret i32 7 |
| } |