| ; RUN: opt -passes='simple-loop-unswitch<no-trivial>' -S < %s | FileCheck %s --check-prefix=NOTRIVIAL | |
| ; RUN: opt -passes='simple-loop-unswitch' -S < %s | FileCheck %s --check-prefix=TRIVIAL | |
| ; RUN: opt -passes='simple-loop-unswitch<trivial>' -S < %s | FileCheck %s --check-prefix=TRIVIAL | |
| declare void @some_func() noreturn | |
| ; NOTRIVIAL-NOT: split | |
| ; TRIVIAL: split | |
| define i32 @test1(ptr %var, i1 %cond1, i1 %cond2) { | |
| entry: | |
| br label %loop_begin | |
| loop_begin: | |
| br i1 %cond1, label %continue, label %loop_exit ; first trivial condition | |
| continue: | |
| %var_val = load i32, ptr %var | |
| br i1 %cond2, label %do_something, label %loop_exit ; second trivial condition | |
| do_something: | |
| call void @some_func() noreturn nounwind | |
| br label %loop_begin | |
| loop_exit: | |
| ret i32 0 | |
| } |