| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
| ; RUN: opt -S -passes="simplifycfg<forward-switch-cond;no-keep-loops>" < %s | FileCheck %s | |
| define i8 @test() { | |
| ; CHECK-LABEL: @test( | |
| ; CHECK-NEXT: entry: | |
| ; CHECK-NEXT: br label [[LOOP2:%.*]] | |
| ; CHECK: loop2: | |
| ; CHECK-NEXT: [[PHI2:%.*]] = phi i8 [ [[SPEC_SELECT:%.*]], [[LOOP2]] ], [ 0, [[ENTRY:%.*]] ] | |
| ; CHECK-NEXT: [[COND:%.*]] = icmp eq i8 [[PHI2]], 0 | |
| ; CHECK-NEXT: [[SPEC_SELECT]] = select i1 [[COND]], i8 0, i8 [[PHI2]] | |
| ; CHECK-NEXT: br label [[LOOP2]] | |
| ; | |
| entry: | |
| br label %loop | |
| loop: | |
| %phi1 = phi i8 [ 0, %entry ], [ %phi2, %loop2 ] | |
| br label %loop2 | |
| loop2: | |
| %phi2 = phi i8 [ %phi1, %loop ], [ 0, %loop2 ] | |
| switch i8 %phi2, label %loop [ | |
| i8 0, label %loop2 | |
| i8 1, label %exit | |
| ] | |
| exit: | |
| ret i8 0 | |
| } |