Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / SimpleLoopUnswitch / pipeline.ll
blob0c65e49dfbbd849a7de8b12c2aed1e131d36de5d
1 ; RUN: opt < %s -S -passes="default<O1>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
2 ; RUN: opt < %s -S -passes="default<O2>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
3 ; RUN: opt < %s -S -passes="default<O3>" | FileCheck %s -check-prefixes=NONTRIVIAL,CHECK
4 ; RUN: opt < %s -S -passes="default<Os>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
5 ; RUN: opt < %s -S -passes="default<Oz>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
7 declare i32 @a()
8 declare i32 @b()
9 declare i32 @c()
11 ; TRIVIAL-NOT: loop_begin.us:
12 ; NONTRIVIAL: loop_begin.us:
14 define i32 @test1(ptr %ptr, i1 %cond1, i1 %cond2) {
15 entry:
16   br label %loop_begin
18 loop_begin:
19   br i1 %cond1, label %loop_a, label %loop_b
21 loop_a:
22   call i32 @a()
23   br label %latch
25 loop_b:
26   br i1 %cond2, label %loop_b_a, label %loop_b_b
28 loop_b_a:
29   call i32 @b()
30   br label %latch
32 loop_b_b:
33   call i32 @c()
34   br label %latch
36 latch:
37   %v = load i1, ptr %ptr
38   br i1 %v, label %loop_begin, label %loop_exit
40 loop_exit:
41   ret i32 0
44 ; CHECK-NOT: loop2_begin.us:
45 define i32 @test2(ptr %ptr, i1 %cond1, i1 %cond2) optsize {
46 entry:
47   br label %loop2_begin
49 loop2_begin:
50   br i1 %cond1, label %loop2_a, label %loop2_b
52 loop2_a:
53   call i32 @a()
54   br label %latch2
56 loop2_b:
57   br i1 %cond2, label %loop2_b_a, label %loop2_b_b
59 loop2_b_a:
60   call i32 @b()
61   br label %latch2
63 loop2_b_b:
64   call i32 @c()
65   br label %latch2
67 latch2:
68   %v = load i1, ptr %ptr
69   br i1 %v, label %loop2_begin, label %loop2_exit
71 loop2_exit:
72   ret i32 0