1; RUN: opt < %s -loop-extract -disable-output
2
3define void @solve() {
4entry:
5	br label %loopentry.0
6
7loopentry.0:		; preds = %endif.0, %entry
8	br i1 false, label %no_exit.0, label %loopexit.0
9
10no_exit.0:		; preds = %loopentry.0
11	br i1 false, label %then.0, label %endif.0
12
13then.0:		; preds = %no_exit.0
14	br i1 false, label %shortcirc_done, label %shortcirc_next
15
16shortcirc_next:		; preds = %then.0
17	br label %shortcirc_done
18
19shortcirc_done:		; preds = %shortcirc_next, %then.0
20	br i1 false, label %then.1, label %endif.1
21
22then.1:		; preds = %shortcirc_done
23	br i1 false, label %cond_true, label %cond_false
24
25cond_true:		; preds = %then.1
26	br label %cond_continue
27
28cond_false:		; preds = %then.1
29	br label %cond_continue
30
31cond_continue:		; preds = %cond_false, %cond_true
32	br label %return
33
34after_ret.0:		; No predecessors!
35	br label %endif.1
36
37endif.1:		; preds = %after_ret.0, %shortcirc_done
38	br label %endif.0
39
40endif.0:		; preds = %endif.1, %no_exit.0
41	br label %loopentry.0
42
43loopexit.0:		; preds = %loopentry.0
44	br i1 false, label %then.2, label %endif.2
45
46then.2:		; preds = %loopexit.0
47	br i1 false, label %then.3, label %endif.3
48
49then.3:		; preds = %then.2
50	br label %return
51
52after_ret.1:		; No predecessors!
53	br label %endif.3
54
55endif.3:		; preds = %after_ret.1, %then.2
56	br label %endif.2
57
58endif.2:		; preds = %endif.3, %loopexit.0
59	br label %loopentry.1
60
61loopentry.1:		; preds = %no_exit.1, %endif.2
62	br i1 false, label %no_exit.1, label %loopexit.1
63
64no_exit.1:		; preds = %loopentry.1
65	br label %loopentry.1
66
67loopexit.1:		; preds = %loopentry.1
68	br label %return
69
70after_ret.2:		; No predecessors!
71	br label %return
72
73return:		; preds = %after_ret.2, %loopexit.1, %then.3, %cond_continue
74	ret void
75}
76