| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -passes='simple-loop-unswitch<nontrivial>' -S < %s | FileCheck %s |
| |
| ; If we try to replace uses of `true` outside of `@foo`, we'll see it here. |
| define i1 @bar() { |
| ; CHECK-LABEL: @bar( |
| ; CHECK-NEXT: ret i1 true |
| ; |
| ret i1 true |
| } |
| |
| ; We shouldn't unswitch this loop. |
| define void @foo() { |
| ; CHECK-LABEL: @foo( |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: br label [[HEADER:%.*]] |
| ; CHECK: header: |
| ; CHECK-NEXT: [[VAL:%.*]] = select i1 true, i1 true, i1 false |
| ; CHECK-NEXT: br i1 true, label [[EXIT:%.*]], label [[HEADER]] |
| ; CHECK: exit: |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| br label %header |
| |
| header: |
| %val = select i1 true, i1 true, i1 false |
| br i1 %val, label %exit, label %header |
| |
| exit: |
| ret void |
| } |