xref: /llvm-project/llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll (revision 5f5cf6029852d703e850c5c16b386284d048dd91)
139e6d242SArthur Eubanks; RUN: opt < %s -S -passes="default<O1>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
239e6d242SArthur Eubanks; RUN: opt < %s -S -passes="default<O2>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
339e6d242SArthur Eubanks; RUN: opt < %s -S -passes="default<O3>" | FileCheck %s -check-prefixes=NONTRIVIAL,CHECK
439e6d242SArthur Eubanks; RUN: opt < %s -S -passes="default<Os>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
539e6d242SArthur Eubanks; RUN: opt < %s -S -passes="default<Oz>" | FileCheck %s -check-prefixes=TRIVIAL,CHECK
6f748e922SArthur Eubanks
7f748e922SArthur Eubanksdeclare i32 @a()
8f748e922SArthur Eubanksdeclare i32 @b()
9f748e922SArthur Eubanksdeclare i32 @c()
10f748e922SArthur Eubanks
1139e6d242SArthur Eubanks; TRIVIAL-NOT: loop_begin.us:
1239e6d242SArthur Eubanks; NONTRIVIAL: loop_begin.us:
13f748e922SArthur Eubanks
14*2f79f543SNikita Popovdefine i32 @test1(ptr %ptr, i1 %cond1, i1 %cond2) {
15f748e922SArthur Eubanksentry:
16f748e922SArthur Eubanks  br label %loop_begin
17f748e922SArthur Eubanks
18f748e922SArthur Eubanksloop_begin:
19f748e922SArthur Eubanks  br i1 %cond1, label %loop_a, label %loop_b
20f748e922SArthur Eubanks
21f748e922SArthur Eubanksloop_a:
22f748e922SArthur Eubanks  call i32 @a()
23f748e922SArthur Eubanks  br label %latch
24f748e922SArthur Eubanks
25f748e922SArthur Eubanksloop_b:
26f748e922SArthur Eubanks  br i1 %cond2, label %loop_b_a, label %loop_b_b
27f748e922SArthur Eubanks
28f748e922SArthur Eubanksloop_b_a:
29f748e922SArthur Eubanks  call i32 @b()
30f748e922SArthur Eubanks  br label %latch
31f748e922SArthur Eubanks
32f748e922SArthur Eubanksloop_b_b:
33f748e922SArthur Eubanks  call i32 @c()
34f748e922SArthur Eubanks  br label %latch
35f748e922SArthur Eubanks
36f748e922SArthur Eubankslatch:
37*2f79f543SNikita Popov  %v = load i1, ptr %ptr
38f748e922SArthur Eubanks  br i1 %v, label %loop_begin, label %loop_exit
39f748e922SArthur Eubanks
40f748e922SArthur Eubanksloop_exit:
41f748e922SArthur Eubanks  ret i32 0
42f748e922SArthur Eubanks}
4339e6d242SArthur Eubanks
4439e6d242SArthur Eubanks; CHECK-NOT: loop2_begin.us:
45*2f79f543SNikita Popovdefine i32 @test2(ptr %ptr, i1 %cond1, i1 %cond2) optsize {
4639e6d242SArthur Eubanksentry:
4739e6d242SArthur Eubanks  br label %loop2_begin
4839e6d242SArthur Eubanks
4939e6d242SArthur Eubanksloop2_begin:
5039e6d242SArthur Eubanks  br i1 %cond1, label %loop2_a, label %loop2_b
5139e6d242SArthur Eubanks
5239e6d242SArthur Eubanksloop2_a:
5339e6d242SArthur Eubanks  call i32 @a()
5439e6d242SArthur Eubanks  br label %latch2
5539e6d242SArthur Eubanks
5639e6d242SArthur Eubanksloop2_b:
5739e6d242SArthur Eubanks  br i1 %cond2, label %loop2_b_a, label %loop2_b_b
5839e6d242SArthur Eubanks
5939e6d242SArthur Eubanksloop2_b_a:
6039e6d242SArthur Eubanks  call i32 @b()
6139e6d242SArthur Eubanks  br label %latch2
6239e6d242SArthur Eubanks
6339e6d242SArthur Eubanksloop2_b_b:
6439e6d242SArthur Eubanks  call i32 @c()
6539e6d242SArthur Eubanks  br label %latch2
6639e6d242SArthur Eubanks
6739e6d242SArthur Eubankslatch2:
68*2f79f543SNikita Popov  %v = load i1, ptr %ptr
6939e6d242SArthur Eubanks  br i1 %v, label %loop2_begin, label %loop2_exit
7039e6d242SArthur Eubanks
7139e6d242SArthur Eubanksloop2_exit:
7239e6d242SArthur Eubanks  ret i32 0
7339e6d242SArthur Eubanks}
74