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 6 7declare i32 @a() 8declare i32 @b() 9declare i32 @c() 10 11; TRIVIAL-NOT: loop_begin.us: 12; NONTRIVIAL: loop_begin.us: 13 14define i32 @test1(ptr %ptr, i1 %cond1, i1 %cond2) { 15entry: 16 br label %loop_begin 17 18loop_begin: 19 br i1 %cond1, label %loop_a, label %loop_b 20 21loop_a: 22 call i32 @a() 23 br label %latch 24 25loop_b: 26 br i1 %cond2, label %loop_b_a, label %loop_b_b 27 28loop_b_a: 29 call i32 @b() 30 br label %latch 31 32loop_b_b: 33 call i32 @c() 34 br label %latch 35 36latch: 37 %v = load i1, ptr %ptr 38 br i1 %v, label %loop_begin, label %loop_exit 39 40loop_exit: 41 ret i32 0 42} 43 44; CHECK-NOT: loop2_begin.us: 45define i32 @test2(ptr %ptr, i1 %cond1, i1 %cond2) optsize { 46entry: 47 br label %loop2_begin 48 49loop2_begin: 50 br i1 %cond1, label %loop2_a, label %loop2_b 51 52loop2_a: 53 call i32 @a() 54 br label %latch2 55 56loop2_b: 57 br i1 %cond2, label %loop2_b_a, label %loop2_b_b 58 59loop2_b_a: 60 call i32 @b() 61 br label %latch2 62 63loop2_b_b: 64 call i32 @c() 65 br label %latch2 66 67latch2: 68 %v = load i1, ptr %ptr 69 br i1 %v, label %loop2_begin, label %loop2_exit 70 71loop2_exit: 72 ret i32 0 73} 74