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