1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
| ;RUN: opt < %s -codegenprepare -S | FileCheck %s
;CHECK: define void @foo()
;CHECK-NEXT: entry:
;CHECK-NEXT: ret void
;CHECK: cond_next475:
;CHECK-NEXT: br label %cond_next475
define void @foo() {
entry:
br i1 false, label %cond_next31, label %cond_true
cond_true: ; preds = %entry
br i1 false, label %cond_true19, label %cond_next31
cond_true19: ; preds = %cond_true
br i1 false, label %bb510, label %cond_next31
cond_next31: ; preds = %cond_true19, %cond_true, %entry
br i1 false, label %cond_true61, label %cond_next78
cond_true61: ; preds = %cond_next31
br label %cond_next78
cond_next78: ; preds = %cond_true61, %cond_next31
br i1 false, label %cond_true93, label %bb.preheader
cond_true93: ; preds = %cond_next78
br label %bb.preheader
bb.preheader: ; preds = %cond_true93, %cond_next78
%iftmp.11.0.ph.ph = phi i16 [ 0, %cond_true93 ], [ 0, %cond_next78 ] ; <i16> [#uses=1]
br label %bb
bb: ; preds = %cond_next499, %bb.preheader
%n.1 = phi i16 [ %iftmp.11.0.ph.ph, %cond_next499 ], [ 0, %bb.preheader ] ; <i16> [#uses=0]
br i1 false, label %bb148.preheader, label %bb493
bb148.preheader: ; preds = %bb
br label %bb148
bb148: ; preds = %cond_next475, %bb148.preheader
br i1 false, label %cond_next175, label %bb184
cond_next175: ; preds = %bb148
br i1 false, label %bb184, label %bb185
bb184: ; preds = %cond_next175, %bb148
br label %bb185
bb185: ; preds = %bb184, %cond_next175
br i1 false, label %bb420.preheader, label %cond_true198
bb420.preheader: ; preds = %bb185
br label %bb420
cond_true198: ; preds = %bb185
br i1 false, label %bb294, label %cond_next208
cond_next208: ; preds = %cond_true198
br i1 false, label %cond_next249, label %cond_true214
cond_true214: ; preds = %cond_next208
br i1 false, label %bb294, label %cond_next262
cond_next249: ; preds = %cond_next208
br i1 false, label %bb294, label %cond_next262
cond_next262: ; preds = %cond_next249, %cond_true214
br label %bb269
bb269: ; preds = %cond_next285, %cond_next262
br i1 false, label %cond_next285, label %cond_true279
cond_true279: ; preds = %bb269
br label %cond_next285
cond_next285: ; preds = %cond_true279, %bb269
br i1 false, label %bb269, label %cond_next446.loopexit
bb294: ; preds = %cond_next249, %cond_true214, %cond_true198
br i1 false, label %cond_next336, label %cond_true301
cond_true301: ; preds = %bb294
br i1 false, label %cond_false398, label %cond_true344
cond_next336: ; preds = %bb294
br i1 false, label %cond_false398, label %cond_true344
cond_true344: ; preds = %cond_next336, %cond_true301
br i1 false, label %cond_false381, label %cond_true351
cond_true351: ; preds = %cond_true344
br label %cond_next387
cond_false381: ; preds = %cond_true344
br label %cond_next387
cond_next387: ; preds = %cond_false381, %cond_true351
br label %cond_next401
cond_false398: ; preds = %cond_next336, %cond_true301
br label %cond_next401
cond_next401: ; preds = %cond_false398, %cond_next387
br i1 false, label %cond_next475, label %cond_true453
bb420: ; preds = %cond_next434, %bb420.preheader
br i1 false, label %cond_next434, label %cond_true428
cond_true428: ; preds = %bb420
br label %cond_next434
cond_next434: ; preds = %cond_true428, %bb420
br i1 false, label %bb420, label %cond_next446.loopexit1
cond_next446.loopexit: ; preds = %cond_next285
br label %cond_next446
cond_next446.loopexit1: ; preds = %cond_next434
br label %cond_next446
cond_next446: ; preds = %cond_next446.loopexit1, %cond_next446.loopexit
br i1 false, label %cond_next475, label %cond_true453
cond_true453: ; preds = %cond_next446, %cond_next401
br i1 false, label %cond_true458, label %cond_next475
cond_true458: ; preds = %cond_true453
br label %cond_next475
cond_next475: ; preds = %cond_true458, %cond_true453, %cond_next446, %cond_next401
br i1 false, label %bb493.loopexit, label %bb148
bb493.loopexit: ; preds = %cond_next475
br label %bb493
bb493: ; preds = %bb493.loopexit, %bb
br i1 false, label %cond_next499, label %bb510.loopexit
cond_next499: ; preds = %bb493
br label %bb
bb510.loopexit: ; preds = %bb493
br label %bb510
bb510: ; preds = %bb510.loopexit, %cond_true19
br i1 false, label %cond_next524, label %cond_true517
cond_true517: ; preds = %bb510
br label %cond_next524
cond_next524: ; preds = %cond_true517, %bb510
br i1 false, label %cond_next540, label %cond_true533
cond_true533: ; preds = %cond_next524
br label %cond_next540
cond_next540: ; preds = %cond_true533, %cond_next524
br i1 false, label %cond_true554, label %cond_next560
cond_true554: ; preds = %cond_next540
br label %cond_next560
cond_next560: ; preds = %cond_true554, %cond_next540
br i1 false, label %cond_true566, label %cond_next572
cond_true566: ; preds = %cond_next560
br label %cond_next572
cond_next572: ; preds = %cond_true566, %cond_next560
br i1 false, label %bb608.preheader, label %bb791.preheader
bb608.preheader: ; preds = %cond_next797.us, %cond_next572
br label %bb608
bb608: ; preds = %cond_next771, %bb608.preheader
br i1 false, label %cond_false627, label %cond_true613
cond_true613: ; preds = %bb608
br label %cond_next640
cond_false627: ; preds = %bb608
br label %cond_next640
cond_next640: ; preds = %cond_false627, %cond_true613
br i1 false, label %cond_true653, label %cond_next671
cond_true653: ; preds = %cond_next640
br label %cond_next671
cond_next671: ; preds = %cond_true653, %cond_next640
br i1 false, label %cond_true683, label %cond_next724
cond_true683: ; preds = %cond_next671
br i1 false, label %cond_next724, label %L1
cond_next724: ; preds = %cond_true683, %cond_next671
br i1 false, label %cond_true735, label %L1
cond_true735: ; preds = %cond_next724
br label %L1
L1: ; preds = %cond_true735, %cond_next724, %cond_true683
br i1 false, label %cond_true745, label %cond_next771
cond_true745: ; preds = %L1
br label %cond_next771
cond_next771: ; preds = %cond_true745, %L1
br i1 false, label %bb608, label %bb791.preheader.loopexit
bb791.preheader.loopexit: ; preds = %cond_next771
br label %bb791.preheader
bb791.preheader: ; preds = %bb791.preheader.loopexit, %cond_next572
br i1 false, label %cond_next797.us, label %bb809.split
cond_next797.us: ; preds = %bb791.preheader
br label %bb608.preheader
bb809.split: ; preds = %bb791.preheader
br i1 false, label %cond_next827, label %cond_true820
cond_true820: ; preds = %bb809.split
br label %cond_next827
cond_next827: ; preds = %cond_true820, %bb809.split
br i1 false, label %cond_true833, label %cond_next840
cond_true833: ; preds = %cond_next827
br label %cond_next840
cond_next840: ; preds = %cond_true833, %cond_next827
br i1 false, label %bb866, label %bb1245
bb866: ; preds = %bb1239, %cond_next840
br i1 false, label %cond_true875, label %bb911
cond_true875: ; preds = %bb866
br label %cond_next1180
bb911: ; preds = %bb866
switch i32 0, label %bb1165 [
i32 0, label %bb915
i32 1, label %bb932
i32 2, label %bb941
i32 3, label %bb1029
i32 4, label %bb1036
i32 5, label %bb1069
i32 6, label %L3
]
bb915: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1171, label %cond_next1180
bb932: ; preds = %cond_next1171, %bb911
br label %L1970
bb941: ; preds = %cond_next1171, %bb911
br label %L1970
L1970: ; preds = %bb941, %bb932
br label %bb1165
bb1029: ; preds = %cond_next1171, %bb911
br label %L4
bb1036: ; preds = %cond_next1171, %bb911
br label %L4
bb1069: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1121, label %cond_true1108
L3: ; preds = %cond_next1171, %bb911
br i1 false, label %cond_next1121, label %cond_true1108
cond_true1108: ; preds = %L3, %bb1069
br label %L4
cond_next1121: ; preds = %L3, %bb1069
br label %L4
L4: ; preds = %cond_next1121, %cond_true1108, %bb1036, %bb1029
br label %bb1165
bb1165: ; preds = %cond_next1171, %L4, %L1970, %bb911
br i1 false, label %cond_next1171, label %cond_next1180
cond_next1171: ; preds = %bb1165, %bb915
switch i32 0, label %bb1165 [
i32 0, label %bb915
i32 1, label %bb932
i32 2, label %bb941
i32 3, label %bb1029
i32 4, label %bb1036
i32 5, label %bb1069
i32 6, label %L3
]
cond_next1180: ; preds = %bb1165, %bb915, %cond_true875
br label %bb1239
bb1239: ; preds = %cond_next1251, %cond_next1180
br i1 false, label %bb866, label %bb1245
bb1245: ; preds = %bb1239, %cond_next840
br i1 false, label %cond_next1251, label %bb1257
cond_next1251: ; preds = %bb1245
br label %bb1239
bb1257: ; preds = %bb1245
ret void
}
|