| ; 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 | |
| } |