xref: /llvm-project/llvm/test/Transforms/LCSSA/2006-06-12-MultipleExitsSameBlock.ll (revision 3528e63d89305907b3d6e0f59f7b03b94a12dacc)
1; RUN: opt < %s -passes=lcssa -S | FileCheck %s
2
3declare i1 @c1()
4
5declare i1 @c2()
6
7define i32 @foo() {
8; CHECK-LABEL: @foo
9entry:
10	br label %loop_begin
11loop_begin:		; preds = %loop_body.2, %entry
12	br i1 true, label %loop_body.1, label %loop_exit2
13loop_body.1:		; preds = %loop_begin
14	%X.1 = add i32 0, 1		; <i32> [#uses=1]
15	%rel.1 = call i1 @c1( )		; <i1> [#uses=1]
16	br i1 %rel.1, label %loop_exit, label %loop_body.2
17loop_body.2:		; preds = %loop_body.1
18	%rel.2 = call i1 @c2( )		; <i1> [#uses=1]
19	br i1 %rel.2, label %loop_exit, label %loop_begin
20loop_exit:		; preds = %loop_body.2, %loop_body.1
21; CHECK: %X.1.lcssa = phi
22	ret i32 %X.1
23loop_exit2:		; preds = %loop_begin
24	ret i32 1
25; CHECK-NOT: %X.1.lcssa1
26}
27
28