xref: /aosp_15_r20/external/llvm/test/Transforms/LCSSA/2006-10-31-UnreachableBlock-2.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -lcssa -disable-output -verify-dom-info -verify-loop-info
2*9880d681SAndroid Build Coastguard Worker; PR977
3*9880d681SAndroid Build Coastguard Worker; END.
4*9880d681SAndroid Build Coastguard Workerdeclare i32 @opost_block()
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @write_chan() {
7*9880d681SAndroid Build Coastguard Workerentry:
8*9880d681SAndroid Build Coastguard Worker	br i1 false, label %shortcirc_next.0, label %shortcirc_done.0
9*9880d681SAndroid Build Coastguard Workershortcirc_next.0:		; preds = %entry
10*9880d681SAndroid Build Coastguard Worker	br label %shortcirc_done.0
11*9880d681SAndroid Build Coastguard Workershortcirc_done.0:		; preds = %shortcirc_next.0, %entry
12*9880d681SAndroid Build Coastguard Worker	br i1 false, label %shortcirc_next.1, label %shortcirc_done.1
13*9880d681SAndroid Build Coastguard Workershortcirc_next.1:		; preds = %shortcirc_done.0
14*9880d681SAndroid Build Coastguard Worker	br label %shortcirc_done.1
15*9880d681SAndroid Build Coastguard Workershortcirc_done.1:		; preds = %shortcirc_next.1, %shortcirc_done.0
16*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.0, label %endif.0
17*9880d681SAndroid Build Coastguard Workerthen.0:		; preds = %shortcirc_done.1
18*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.1, label %endif.1
19*9880d681SAndroid Build Coastguard Workerthen.1:		; preds = %then.0
20*9880d681SAndroid Build Coastguard Worker	br label %return
21*9880d681SAndroid Build Coastguard Workerafter_ret.0:		; No predecessors!
22*9880d681SAndroid Build Coastguard Worker	br label %endif.1
23*9880d681SAndroid Build Coastguard Workerendif.1:		; preds = %after_ret.0, %then.0
24*9880d681SAndroid Build Coastguard Worker	br label %endif.0
25*9880d681SAndroid Build Coastguard Workerendif.0:		; preds = %endif.1, %shortcirc_done.1
26*9880d681SAndroid Build Coastguard Worker	br label %loopentry.0
27*9880d681SAndroid Build Coastguard Workerloopentry.0:		; preds = %endif.12, %endif.0
28*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.2, label %endif.2
29*9880d681SAndroid Build Coastguard Workerthen.2:		; preds = %loopentry.0
30*9880d681SAndroid Build Coastguard Worker	br label %loopexit.0
31*9880d681SAndroid Build Coastguard Workerdead_block_after_break.0:		; No predecessors!
32*9880d681SAndroid Build Coastguard Worker	br label %endif.2
33*9880d681SAndroid Build Coastguard Workerendif.2:		; preds = %dead_block_after_break.0, %loopentry.0
34*9880d681SAndroid Build Coastguard Worker	br i1 false, label %shortcirc_done.2, label %shortcirc_next.2
35*9880d681SAndroid Build Coastguard Workershortcirc_next.2:		; preds = %endif.2
36*9880d681SAndroid Build Coastguard Worker	br i1 false, label %shortcirc_next.3, label %shortcirc_done.3
37*9880d681SAndroid Build Coastguard Workershortcirc_next.3:		; preds = %shortcirc_next.2
38*9880d681SAndroid Build Coastguard Worker	br label %shortcirc_done.3
39*9880d681SAndroid Build Coastguard Workershortcirc_done.3:		; preds = %shortcirc_next.3, %shortcirc_next.2
40*9880d681SAndroid Build Coastguard Worker	br label %shortcirc_done.2
41*9880d681SAndroid Build Coastguard Workershortcirc_done.2:		; preds = %shortcirc_done.3, %endif.2
42*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.3, label %endif.3
43*9880d681SAndroid Build Coastguard Workerthen.3:		; preds = %shortcirc_done.2
44*9880d681SAndroid Build Coastguard Worker	br label %loopexit.0
45*9880d681SAndroid Build Coastguard Workerdead_block_after_break.1:		; No predecessors!
46*9880d681SAndroid Build Coastguard Worker	br label %endif.3
47*9880d681SAndroid Build Coastguard Workerendif.3:		; preds = %dead_block_after_break.1, %shortcirc_done.2
48*9880d681SAndroid Build Coastguard Worker	br i1 false, label %shortcirc_next.4, label %shortcirc_done.4
49*9880d681SAndroid Build Coastguard Workershortcirc_next.4:		; preds = %endif.3
50*9880d681SAndroid Build Coastguard Worker	br label %shortcirc_done.4
51*9880d681SAndroid Build Coastguard Workershortcirc_done.4:		; preds = %shortcirc_next.4, %endif.3
52*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.4, label %else
53*9880d681SAndroid Build Coastguard Workerthen.4:		; preds = %shortcirc_done.4
54*9880d681SAndroid Build Coastguard Worker	br label %loopentry.1
55*9880d681SAndroid Build Coastguard Workerloopentry.1:		; preds = %endif.8, %then.4
56*9880d681SAndroid Build Coastguard Worker	br i1 false, label %no_exit, label %loopexit.1
57*9880d681SAndroid Build Coastguard Workerno_exit:		; preds = %loopentry.1
58*9880d681SAndroid Build Coastguard Worker	%tmp.94 = call i32 @opost_block( )		; <i32> [#uses=1]
59*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.5, label %endif.5
60*9880d681SAndroid Build Coastguard Workerthen.5:		; preds = %no_exit
61*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.6, label %endif.6
62*9880d681SAndroid Build Coastguard Workerthen.6:		; preds = %then.5
63*9880d681SAndroid Build Coastguard Worker	br label %loopexit.1
64*9880d681SAndroid Build Coastguard Workerdead_block_after_break.2:		; No predecessors!
65*9880d681SAndroid Build Coastguard Worker	br label %endif.6
66*9880d681SAndroid Build Coastguard Workerendif.6:		; preds = %dead_block_after_break.2, %then.5
67*9880d681SAndroid Build Coastguard Worker	br label %break_out
68*9880d681SAndroid Build Coastguard Workerdead_block_after_goto.0:		; No predecessors!
69*9880d681SAndroid Build Coastguard Worker	br label %endif.5
70*9880d681SAndroid Build Coastguard Workerendif.5:		; preds = %dead_block_after_goto.0, %no_exit
71*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.7, label %endif.7
72*9880d681SAndroid Build Coastguard Workerthen.7:		; preds = %endif.5
73*9880d681SAndroid Build Coastguard Worker	br label %loopexit.1
74*9880d681SAndroid Build Coastguard Workerdead_block_after_break.3:		; No predecessors!
75*9880d681SAndroid Build Coastguard Worker	br label %endif.7
76*9880d681SAndroid Build Coastguard Workerendif.7:		; preds = %dead_block_after_break.3, %endif.5
77*9880d681SAndroid Build Coastguard Worker	switch i32 1, label %switchexit [
78*9880d681SAndroid Build Coastguard Worker		 i32 4, label %label.2
79*9880d681SAndroid Build Coastguard Worker		 i32 2, label %label.1
80*9880d681SAndroid Build Coastguard Worker		 i32 1, label %label.0
81*9880d681SAndroid Build Coastguard Worker	]
82*9880d681SAndroid Build Coastguard Workerlabel.0:		; preds = %endif.7
83*9880d681SAndroid Build Coastguard Worker	br label %switchexit
84*9880d681SAndroid Build Coastguard Workerdead_block_after_break.4:		; No predecessors!
85*9880d681SAndroid Build Coastguard Worker	br label %label.1
86*9880d681SAndroid Build Coastguard Workerlabel.1:		; preds = %dead_block_after_break.4, %endif.7
87*9880d681SAndroid Build Coastguard Worker	br label %switchexit
88*9880d681SAndroid Build Coastguard Workerdead_block_after_break.5:		; No predecessors!
89*9880d681SAndroid Build Coastguard Worker	br label %label.2
90*9880d681SAndroid Build Coastguard Workerlabel.2:		; preds = %dead_block_after_break.5, %endif.7
91*9880d681SAndroid Build Coastguard Worker	br label %switchexit
92*9880d681SAndroid Build Coastguard Workerdead_block_after_break.6:		; No predecessors!
93*9880d681SAndroid Build Coastguard Worker	br label %switchexit
94*9880d681SAndroid Build Coastguard Workerswitchexit:		; preds = %dead_block_after_break.6, %label.2, %label.1, %label.0, %endif.7
95*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.8, label %endif.8
96*9880d681SAndroid Build Coastguard Workerthen.8:		; preds = %switchexit
97*9880d681SAndroid Build Coastguard Worker	br label %loopexit.1
98*9880d681SAndroid Build Coastguard Workerdead_block_after_break.7:		; No predecessors!
99*9880d681SAndroid Build Coastguard Worker	br label %endif.8
100*9880d681SAndroid Build Coastguard Workerendif.8:		; preds = %dead_block_after_break.7, %switchexit
101*9880d681SAndroid Build Coastguard Worker	br label %loopentry.1
102*9880d681SAndroid Build Coastguard Workerloopexit.1:		; preds = %then.8, %then.7, %then.6, %loopentry.1
103*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.9, label %endif.9
104*9880d681SAndroid Build Coastguard Workerthen.9:		; preds = %loopexit.1
105*9880d681SAndroid Build Coastguard Worker	br label %endif.9
106*9880d681SAndroid Build Coastguard Workerendif.9:		; preds = %then.9, %loopexit.1
107*9880d681SAndroid Build Coastguard Worker	br label %endif.4
108*9880d681SAndroid Build Coastguard Workerelse:		; preds = %shortcirc_done.4
109*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.10, label %endif.10
110*9880d681SAndroid Build Coastguard Workerthen.10:		; preds = %else
111*9880d681SAndroid Build Coastguard Worker	br label %break_out
112*9880d681SAndroid Build Coastguard Workerdead_block_after_goto.1:		; No predecessors!
113*9880d681SAndroid Build Coastguard Worker	br label %endif.10
114*9880d681SAndroid Build Coastguard Workerendif.10:		; preds = %dead_block_after_goto.1, %else
115*9880d681SAndroid Build Coastguard Worker	br label %endif.4
116*9880d681SAndroid Build Coastguard Workerendif.4:		; preds = %endif.10, %endif.9
117*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.11, label %endif.11
118*9880d681SAndroid Build Coastguard Workerthen.11:		; preds = %endif.4
119*9880d681SAndroid Build Coastguard Worker	br label %loopexit.0
120*9880d681SAndroid Build Coastguard Workerdead_block_after_break.8:		; No predecessors!
121*9880d681SAndroid Build Coastguard Worker	br label %endif.11
122*9880d681SAndroid Build Coastguard Workerendif.11:		; preds = %dead_block_after_break.8, %endif.4
123*9880d681SAndroid Build Coastguard Worker	br i1 false, label %then.12, label %endif.12
124*9880d681SAndroid Build Coastguard Workerthen.12:		; preds = %endif.11
125*9880d681SAndroid Build Coastguard Worker	br label %loopexit.0
126*9880d681SAndroid Build Coastguard Workerdead_block_after_break.9:		; No predecessors!
127*9880d681SAndroid Build Coastguard Worker	br label %endif.12
128*9880d681SAndroid Build Coastguard Workerendif.12:		; preds = %dead_block_after_break.9, %endif.11
129*9880d681SAndroid Build Coastguard Worker	br label %loopentry.0
130*9880d681SAndroid Build Coastguard Workerloopexit.0:		; preds = %then.12, %then.11, %then.3, %then.2
131*9880d681SAndroid Build Coastguard Worker	br label %break_out
132*9880d681SAndroid Build Coastguard Workerbreak_out:		; preds = %loopexit.0, %then.10, %endif.6
133*9880d681SAndroid Build Coastguard Worker	%retval.3 = phi i32 [ 0, %loopexit.0 ], [ %tmp.94, %endif.6 ], [ 0, %then.10 ]		; <i32> [#uses=0]
134*9880d681SAndroid Build Coastguard Worker	br i1 false, label %cond_true, label %cond_false
135*9880d681SAndroid Build Coastguard Workercond_true:		; preds = %break_out
136*9880d681SAndroid Build Coastguard Worker	br label %cond_continue
137*9880d681SAndroid Build Coastguard Workercond_false:		; preds = %break_out
138*9880d681SAndroid Build Coastguard Worker	br label %cond_continue
139*9880d681SAndroid Build Coastguard Workercond_continue:		; preds = %cond_false, %cond_true
140*9880d681SAndroid Build Coastguard Worker	br label %return
141*9880d681SAndroid Build Coastguard Workerafter_ret.1:		; No predecessors!
142*9880d681SAndroid Build Coastguard Worker	br label %return
143*9880d681SAndroid Build Coastguard Workerreturn:		; preds = %after_ret.1, %cond_continue, %then.1
144*9880d681SAndroid Build Coastguard Worker	ret void
145*9880d681SAndroid Build Coastguard Worker}
146