[sanitizer] Improve FreeBSD ASLR detection
[llvm-project.git] / llvm / test / Transforms / SCCP / pr49582-iterator-invalidation.ll
blobb6dfc155ae121896c36cf29c74a2df200593bb57
1 ; RUN: opt < %s -passes=ipsccp -disable-output
2 ; PR49582: This test checks for an iterator invalidation issue, which only gets
3 ; exposed on a large-enough test case. We intentionally do not check the output.
5 @c = external dso_local global i32*, align 8
6 @d = external dso_local global i32, align 4
8 define void @f(i32 %i) {
9 entry:
10   br label %for.cond
12 for.cond:                                         ; preds = %if.end628, %entry
13   %e.0 = phi i32 [ 1, %entry ], [ %e.15, %if.end628 ]
14   %cmp = icmp slt i32 %e.0, %i
15   call void @llvm.assume(i1 %cmp)
16   %0 = load i32*, i32** @c, align 8
17   %tobool = icmp ne i32* %0, null
18   br i1 %tobool, label %if.then, label %if.end628
20 if.then:                                          ; preds = %for.cond
21   %1 = load i32, i32* %0, align 4
22   %tobool1 = icmp ne i32 %1, 0
23   br i1 %tobool1, label %if.then2, label %if.else78
25 if.then2:                                         ; preds = %if.then
26   %add = add nsw i32 %e.0, 1
27   %cmp3 = icmp sge i32 %add, %i
28   br i1 %cmp3, label %if.then4, label %if.end
30 if.then4:                                         ; preds = %if.then2
31   %idxprom = sext i32 %add to i64
32   br label %if.end
34 if.end:                                           ; preds = %if.then4, %if.then2
35   br i1 %cmp3, label %if.then9, label %if.end13
37 if.then9:                                         ; preds = %if.end
38   %idxprom11 = sext i32 %add to i64
39   br label %if.end13
41 if.end13:                                         ; preds = %if.then9, %if.end
42   br i1 %cmp3, label %if.then16, label %if.end20
44 if.then16:                                        ; preds = %if.end13
45   %idxprom18 = sext i32 %add to i64
46   br label %if.end20
48 if.end20:                                         ; preds = %if.then16, %if.end13
49   %add21 = add nsw i32 %e.0, 3
50   %cmp22 = icmp sge i32 %add21, %i
51   br i1 %cmp22, label %if.then23, label %if.end25
53 if.then23:                                        ; preds = %if.end20
54   br label %if.end25
56 if.end25:                                         ; preds = %if.then23, %if.end20
57   %e.1 = phi i32 [ %add21, %if.then23 ], [ %e.0, %if.end20 ]
58   %cmp26 = icmp sge i32 %e.1, %i
59   br i1 %cmp26, label %if.then27, label %if.end28
61 if.then27:                                        ; preds = %if.end25
62   %inc = add nsw i32 %e.1, 1
63   br label %if.end28
65 if.end28:                                         ; preds = %if.then27, %if.end25
66   %e.2 = phi i32 [ %inc, %if.then27 ], [ %e.1, %if.end25 ]
67   %add29 = add nsw i32 %e.2, 2
68   %cmp30 = icmp sge i32 %add29, %i
69   br i1 %cmp30, label %if.then31, label %if.end33
71 if.then31:                                        ; preds = %if.end28
72   br label %if.end33
74 if.end33:                                         ; preds = %if.then31, %if.end28
75   %e.3 = phi i32 [ %add29, %if.then31 ], [ %e.2, %if.end28 ]
76   %cmp34 = icmp sge i32 %e.3, %i
77   br i1 %cmp34, label %if.then35, label %if.end38
79 if.then35:                                        ; preds = %if.end33
80   %idxprom36 = sext i32 %e.3 to i64
81   br label %if.end38
83 if.end38:                                         ; preds = %if.then35, %if.end33
84   br i1 %cmp34, label %if.then40, label %if.end43
86 if.then40:                                        ; preds = %if.end38
87   %idxprom41 = sext i32 %e.3 to i64
88   br label %if.end43
90 if.end43:                                         ; preds = %if.then40, %if.end38
91   br i1 %cmp34, label %if.then45, label %if.end47
93 if.then45:                                        ; preds = %if.end43
94   %inc46 = add nsw i32 %e.3, 1
95   br label %if.end47
97 if.end47:                                         ; preds = %if.then45, %if.end43
98   %e.4 = phi i32 [ %inc46, %if.then45 ], [ %e.3, %if.end43 ]
99   %cmp48 = icmp sge i32 %e.4, %i
100   br i1 %cmp48, label %if.then49, label %if.end51
102 if.then49:                                        ; preds = %if.end47
103   %inc50 = add nsw i32 %e.4, 1
104   br label %if.end51
106 if.end51:                                         ; preds = %if.then49, %if.end47
107   %e.5 = phi i32 [ %inc50, %if.then49 ], [ %e.4, %if.end47 ]
108   %2 = load i32*, i32** @c, align 8
109   %tobool52 = icmp ne i32* %2, null
110   br i1 %tobool52, label %if.then53, label %if.else
112 if.then53:                                        ; preds = %if.end51
113   %cmp54 = icmp sge i32 %e.5, %i
114   br i1 %cmp54, label %if.then55, label %if.end628
116 if.then55:                                        ; preds = %if.then53
117   unreachable
119 if.else:                                          ; preds = %if.end51
120   %3 = load i32, i32* @d, align 4
121   %tobool57 = icmp ne i32 %3, 0
122   br i1 %tobool57, label %if.then58, label %if.else68
124 if.then58:                                        ; preds = %if.else
125   %cmp59 = icmp sge i32 %e.5, %i
126   br i1 %cmp59, label %if.then60, label %if.end62
128 if.then60:                                        ; preds = %if.then58
129   %inc61 = add nsw i32 %e.5, 1
130   br label %if.end62
132 if.end62:                                         ; preds = %if.then60, %if.then58
133   %e.6 = phi i32 [ %inc61, %if.then60 ], [ %e.5, %if.then58 ]
134   %add63 = add nsw i32 %e.6, 1
135   %cmp64 = icmp sge i32 %add63, %i
136   br i1 %cmp64, label %if.then65, label %if.end628
138 if.then65:                                        ; preds = %if.end62
139   br label %if.end628
141 if.else68:                                        ; preds = %if.else
142   %add69 = add nsw i32 %e.5, 2
143   %cmp70 = icmp sge i32 %add69, %i
144   br i1 %cmp70, label %if.then71, label %if.end628
146 if.then71:                                        ; preds = %if.else68
147   %idxprom73 = sext i32 %add69 to i64
148   br label %if.end628
150 if.else78:                                        ; preds = %if.then
151   %call = call i32 @g()
152   %tobool79 = icmp ne i32 %call, 0
153   br i1 %tobool79, label %if.then80, label %if.else123
155 if.then80:                                        ; preds = %if.else78
156   %add81 = add nsw i32 %e.0, 3
157   %cmp82 = icmp sge i32 %add81, %i
158   br i1 %cmp82, label %if.then83, label %if.end87
160 if.then83:                                        ; preds = %if.then80
161   %idxprom85 = sext i32 %add81 to i64
162   br label %if.end87
164 if.end87:                                         ; preds = %if.then83, %if.then80
165   br i1 %cmp82, label %if.then90, label %if.end94
167 if.then90:                                        ; preds = %if.end87
168   %idxprom92 = sext i32 %add81 to i64
169   br label %if.end94
171 if.end94:                                         ; preds = %if.then90, %if.end87
172   br i1 %cmp82, label %if.then97, label %if.end99
174 if.then97:                                        ; preds = %if.end94
175   br label %if.end99
177 if.end99:                                         ; preds = %if.then97, %if.end94
178   %e.7 = phi i32 [ %add81, %if.then97 ], [ %e.0, %if.end94 ]
179   %cmp100 = icmp sge i32 %e.7, %i
180   br i1 %cmp100, label %if.then101, label %if.end103
182 if.then101:                                       ; preds = %if.end99
183   %inc102 = add nsw i32 %e.7, 1
184   br label %if.end103
186 if.end103:                                        ; preds = %if.then101, %if.end99
187   %e.8 = phi i32 [ %inc102, %if.then101 ], [ %e.7, %if.end99 ]
188   %add104 = add nsw i32 %e.8, 1
189   %cmp105 = icmp sge i32 %add104, %i
190   br i1 %cmp105, label %if.then106, label %if.end108
192 if.then106:                                       ; preds = %if.end103
193   br label %if.end108
195 if.end108:                                        ; preds = %if.then106, %if.end103
196   %e.9 = phi i32 [ %add104, %if.then106 ], [ %e.8, %if.end103 ]
197   %cmp109 = icmp sge i32 %e.9, %i
198   br i1 %cmp109, label %if.then110, label %if.end113
200 if.then110:                                       ; preds = %if.end108
201   %idxprom111 = sext i32 %e.9 to i64
202   br label %if.end113
204 if.end113:                                        ; preds = %if.then110, %if.end108
205   br i1 %cmp109, label %if.then115, label %if.end118
207 if.then115:                                       ; preds = %if.end113
208   %idxprom116 = sext i32 %e.9 to i64
209   unreachable
211 if.end118:                                        ; preds = %if.end113
212   br i1 %cmp109, label %if.then120, label %if.end628
214 if.then120:                                       ; preds = %if.end118
215   br label %if.end628
217 if.else123:                                       ; preds = %if.else78
218   %call124 = call i32 @g()
219   %tobool125 = icmp ne i32 %call124, 0
220   br i1 %tobool125, label %if.then126, label %if.end628
222 if.then126:                                       ; preds = %if.else123
223   %call127 = call i32 @g()
224   %tobool128 = icmp ne i32 %call127, 0
225   br i1 %tobool128, label %if.then129, label %if.else164
227 if.then129:                                       ; preds = %if.then126
228   %add130 = add nsw i32 %e.0, 1
229   %cmp131 = icmp sge i32 %add130, %i
230   br i1 %cmp131, label %if.then132, label %if.end134
232 if.then132:                                       ; preds = %if.then129
233   br label %if.end134
235 if.end134:                                        ; preds = %if.then132, %if.then129
236   %e.10 = phi i32 [ %add130, %if.then132 ], [ %e.0, %if.then129 ]
237   %cmp135 = icmp sge i32 %e.10, %i
238   br i1 %cmp135, label %if.then136, label %if.end139
240 if.then136:                                       ; preds = %if.end134
241   %idxprom137 = sext i32 %e.10 to i64
242   br label %if.end139
244 if.end139:                                        ; preds = %if.then136, %if.end134
245   br i1 %cmp135, label %if.then141, label %if.end144
247 if.then141:                                       ; preds = %if.end139
248   %idxprom142 = sext i32 %e.10 to i64
249   br label %if.end144
251 if.end144:                                        ; preds = %if.then141, %if.end139
252   br i1 %cmp135, label %if.then146, label %if.end149
254 if.then146:                                       ; preds = %if.end144
255   %idxprom147 = sext i32 %e.10 to i64
256   br label %if.end149
258 if.end149:                                        ; preds = %if.then146, %if.end144
259   br i1 %cmp135, label %if.then151, label %if.else154
261 if.then151:                                       ; preds = %if.end149
262   %idxprom152 = sext i32 %e.10 to i64
263   br label %if.end160
265 if.else154:                                       ; preds = %if.end149
266   %idxprom157 = sext i32 %e.10 to i64
267   br label %if.end160
269 if.end160:                                        ; preds = %if.else154, %if.then151
270   br i1 %cmp135, label %if.then162, label %if.end628
272 if.then162:                                       ; preds = %if.end160
273   unreachable
275 if.else164:                                       ; preds = %if.then126
276   %4 = load i32*, i32** @c, align 8
277   %tobool165 = icmp ne i32* %4, null
278   br i1 %tobool165, label %if.then166, label %if.else195
280 if.then166:                                       ; preds = %if.else164
281   %add167 = add nsw i32 %e.0, 1
282   %cmp168 = icmp sge i32 %add167, %i
283   br i1 %cmp168, label %if.then169, label %if.end173
285 if.then169:                                       ; preds = %if.then166
286   %idxprom171 = sext i32 %add167 to i64
287   br label %if.end173
289 if.end173:                                        ; preds = %if.then169, %if.then166
290   br i1 %cmp168, label %if.then176, label %if.end180
292 if.then176:                                       ; preds = %if.end173
293   %idxprom178 = sext i32 %add167 to i64
294   unreachable
296 if.end180:                                        ; preds = %if.end173
297   br i1 %cmp168, label %if.then183, label %if.end187
299 if.then183:                                       ; preds = %if.end180
300   %idxprom185 = sext i32 %add167 to i64
301   unreachable
303 if.end187:                                        ; preds = %if.end180
304   br i1 %cmp168, label %if.then190, label %if.end628
306 if.then190:                                       ; preds = %if.end187
307   br label %if.end628
309 if.else195:                                       ; preds = %if.else164
310   %5 = load i32, i32* @d, align 4
311   %tobool196 = icmp ne i32 %5, 0
312   br i1 %tobool196, label %if.then197, label %if.else205
314 if.then197:                                       ; preds = %if.else195
315   %add198 = add nsw i32 %e.0, 1
316   %cmp199 = icmp sge i32 %add198, %i
317   br i1 %cmp199, label %if.then200, label %if.end628
319 if.then200:                                       ; preds = %if.then197
320   %idxprom202 = sext i32 %add198 to i64
321   br label %if.end628
323 if.else205:                                       ; preds = %if.else195
324   %call206 = call i32 @h()
325   %tobool207 = icmp ne i32 %call206, 0
326   br i1 %tobool207, label %if.then208, label %if.else217
328 if.then208:                                       ; preds = %if.else205
329   %add209 = add nsw i32 %e.0, 1
330   %cmp210 = icmp sge i32 %add209, %i
331   br i1 %cmp210, label %if.then211, label %if.end215
333 if.then211:                                       ; preds = %if.then208
334   %idxprom213 = sext i32 %add209 to i64
335   unreachable
337 if.end215:                                        ; preds = %if.then208
338   %6 = zext i32 %add209 to i64
339   br label %if.end628
341 if.else217:                                       ; preds = %if.else205
342   %7 = load i32*, i32** @c, align 8
343   %tobool218 = icmp ne i32* %7, null
344   br i1 %tobool218, label %if.then219, label %if.else227
346 if.then219:                                       ; preds = %if.else217
347   %add220 = add nsw i32 %e.0, 1
348   %cmp221 = icmp sge i32 %add220, %i
349   br i1 %cmp221, label %if.then222, label %if.end628
351 if.then222:                                       ; preds = %if.then219
352   %idxprom224 = sext i32 %add220 to i64
353   br label %if.end628
355 if.else227:                                       ; preds = %if.else217
356   %call228 = call i32 @g()
357   %tobool229 = icmp ne i32 %call228, 0
358   br i1 %tobool229, label %if.then230, label %if.else245
360 if.then230:                                       ; preds = %if.else227
361   %add231 = add nsw i32 %e.0, 1
362   %cmp232 = icmp sge i32 %add231, %i
363   br i1 %cmp232, label %if.then233, label %if.end237
365 if.then233:                                       ; preds = %if.then230
366   %idxprom235 = sext i32 %add231 to i64
367   br label %if.end237
369 if.end237:                                        ; preds = %if.then233, %if.then230
370   br i1 %cmp232, label %if.then240, label %if.end628
372 if.then240:                                       ; preds = %if.end237
373   %idxprom242 = sext i32 %add231 to i64
374   br label %if.end628
376 if.else245:                                       ; preds = %if.else227
377   %8 = load i32*, i32** @c, align 8
378   %tobool246 = icmp ne i32* %8, null
379   br i1 %tobool246, label %if.then247, label %if.else258
381 if.then247:                                       ; preds = %if.else245
382   %add248 = add nsw i32 %e.0, 1
383   %cmp249 = icmp sge i32 %add248, %i
384   br i1 %cmp249, label %if.then250, label %if.end254
386 if.then250:                                       ; preds = %if.then247
387   %idxprom252 = sext i32 %add248 to i64
388   unreachable
390 if.end254:                                        ; preds = %if.then247
391   %9 = zext i32 %add248 to i64
392   br label %if.end628
394 if.else258:                                       ; preds = %if.else245
395   %10 = load i32, i32* @d, align 4
396   %tobool259 = icmp ne i32 %10, 0
397   br i1 %tobool259, label %if.then260, label %if.else268
399 if.then260:                                       ; preds = %if.else258
400   %add261 = add nsw i32 %e.0, 1
401   %cmp262 = icmp sge i32 %add261, %i
402   br i1 %cmp262, label %if.then263, label %if.end628
404 if.then263:                                       ; preds = %if.then260
405   %idxprom265 = sext i32 %add261 to i64
406   br label %if.end628
408 if.else268:                                       ; preds = %if.else258
409   %call269 = call i32 @h()
410   %tobool270 = icmp ne i32 %call269, 0
411   br i1 %tobool270, label %if.then271, label %if.else279
413 if.then271:                                       ; preds = %if.else268
414   %add272 = add nsw i32 %e.0, 1
415   %cmp273 = icmp sge i32 %add272, %i
416   br i1 %cmp273, label %if.then274, label %if.end628
418 if.then274:                                       ; preds = %if.then271
419   %idxprom276 = sext i32 %add272 to i64
420   br label %if.end628
422 if.else279:                                       ; preds = %if.else268
423   %11 = load i32*, i32** @c, align 8
424   %tobool280 = icmp ne i32* %11, null
425   br i1 %tobool280, label %if.then281, label %if.else287
427 if.then281:                                       ; preds = %if.else279
428   %add282 = add nsw i32 %e.0, 2
429   %cmp283 = icmp sge i32 %add282, %i
430   br i1 %cmp283, label %if.then284, label %if.end628
432 if.then284:                                       ; preds = %if.then281
433   br label %if.end628
435 if.else287:                                       ; preds = %if.else279
436   %call288 = call i32 @g()
437   %tobool289 = icmp ne i32 %call288, 0
438   br i1 %tobool289, label %if.then290, label %if.else307
440 if.then290:                                       ; preds = %if.else287
441   %12 = load i32*, i32** @c, align 8
442   %tobool291 = icmp ne i32* %12, null
443   br i1 %tobool291, label %if.then292, label %if.else298
445 if.then292:                                       ; preds = %if.then290
446   %add293 = add nsw i32 %e.0, 3
447   %cmp294 = icmp sge i32 %add293, %i
448   br i1 %cmp294, label %if.then295, label %if.end628
450 if.then295:                                       ; preds = %if.then292
451   br label %if.end628
453 if.else298:                                       ; preds = %if.then290
454   %add299 = add nsw i32 %e.0, 4
455   %cmp300 = icmp sge i32 %add299, %i
456   br i1 %cmp300, label %if.then301, label %if.end628
458 if.then301:                                       ; preds = %if.else298
459   %idxprom303 = sext i32 %add299 to i64
460   br label %if.end628
462 if.else307:                                       ; preds = %if.else287
463   %13 = load i32*, i32** @c, align 8
464   %tobool308 = icmp ne i32* %13, null
465   br i1 %tobool308, label %if.then309, label %if.else324
467 if.then309:                                       ; preds = %if.else307
468   %add310 = add nsw i32 %e.0, 1
469   %cmp311 = icmp sge i32 %add310, %i
470   br i1 %cmp311, label %if.then312, label %if.else316
472 if.then312:                                       ; preds = %if.then309
473   %idxprom314 = sext i32 %add310 to i64
474   br label %if.end628
476 if.else316:                                       ; preds = %if.then309
477   br i1 undef, label %if.then318, label %if.end628
479 if.then318:                                       ; preds = %if.else316
480   %idxprom320 = sext i32 %add310 to i64
481   br label %if.end628
483 if.else324:                                       ; preds = %if.else307
484   %call325 = call i32 @g()
485   %tobool326 = icmp ne i32 %call325, 0
486   br i1 %tobool326, label %if.then327, label %if.else475
488 if.then327:                                       ; preds = %if.else324
489   %add328 = add nsw i32 %e.0, 2
490   %cmp329 = icmp sge i32 %add328, %i
491   br i1 %cmp329, label %if.then330, label %if.end332
493 if.then330:                                       ; preds = %if.then327
494   br label %if.end332
496 if.end332:                                        ; preds = %if.then330, %if.then327
497   %e.11 = phi i32 [ %add328, %if.then330 ], [ %e.0, %if.then327 ]
498   %cmp333 = icmp sge i32 %e.11, %i
499   br i1 %cmp333, label %if.then334, label %if.end336
501 if.then334:                                       ; preds = %if.end332
502   %inc335 = add nsw i32 %e.11, 1
503   br label %if.end336
505 if.end336:                                        ; preds = %if.then334, %if.end332
506   %e.12 = phi i32 [ %inc335, %if.then334 ], [ %e.11, %if.end332 ]
507   %cmp337 = icmp sge i32 %e.12, %i
508   br i1 %cmp337, label %if.then338, label %if.end340
510 if.then338:                                       ; preds = %if.end336
511   %inc339 = add nsw i32 %e.12, 1
512   br label %if.end340
514 if.end340:                                        ; preds = %if.then338, %if.end336
515   %e.13 = phi i32 [ %inc339, %if.then338 ], [ %e.12, %if.end336 ]
516   %cmp341 = icmp sge i32 %e.13, %i
517   br i1 %cmp341, label %if.then342, label %if.end344
519 if.then342:                                       ; preds = %if.end340
520   %inc343 = add nsw i32 %e.13, 1
521   br label %if.end344
523 if.end344:                                        ; preds = %if.then342, %if.end340
524   %e.14 = phi i32 [ %inc343, %if.then342 ], [ %e.13, %if.end340 ]
525   %call345 = call i32 @g()
526   %tobool346 = icmp ne i32 %call345, 0
527   br i1 %tobool346, label %if.then347, label %if.else398
529 if.then347:                                       ; preds = %if.end344
530   %cmp348 = icmp sge i32 %e.14, %i
531   br i1 %cmp348, label %if.then349, label %if.end352
533 if.then349:                                       ; preds = %if.then347
534   %idxprom350 = sext i32 %e.14 to i64
535   br label %if.end352
537 if.end352:                                        ; preds = %if.then349, %if.then347
538   br i1 %cmp348, label %if.then354, label %if.else357
540 if.then354:                                       ; preds = %if.end352
541   %idxprom355 = sext i32 %e.14 to i64
542   br label %if.end361
544 if.else357:                                       ; preds = %if.end352
545   %idxprom359 = sext i32 %e.14 to i64
546   br label %if.end361
548 if.end361:                                        ; preds = %if.else357, %if.then354
549   br i1 %cmp348, label %if.then363, label %if.end366
551 if.then363:                                       ; preds = %if.end361
552   %idxprom364 = sext i32 %e.14 to i64
553   br label %if.end366
555 if.end366:                                        ; preds = %if.then363, %if.end361
556   br i1 %cmp348, label %if.then368, label %if.end371
558 if.then368:                                       ; preds = %if.end366
559   %idxprom369 = sext i32 %e.14 to i64
560   br label %if.end371
562 if.end371:                                        ; preds = %if.then368, %if.end366
563   br i1 %cmp348, label %if.then373, label %if.end376
565 if.then373:                                       ; preds = %if.end371
566   %idxprom374 = sext i32 %e.14 to i64
567   br label %if.end376
569 if.end376:                                        ; preds = %if.then373, %if.end371
570   br i1 %cmp348, label %if.then378, label %if.end381
572 if.then378:                                       ; preds = %if.end376
573   %idxprom379 = sext i32 %e.14 to i64
574   br label %if.end381
576 if.end381:                                        ; preds = %if.then378, %if.end376
577   br i1 %cmp348, label %if.then383, label %if.else386
579 if.then383:                                       ; preds = %if.end381
580   %idxprom384 = sext i32 %e.14 to i64
581   br label %if.end390
583 if.else386:                                       ; preds = %if.end381
584   %idxprom388 = sext i32 %e.14 to i64
585   br label %if.end390
587 if.end390:                                        ; preds = %if.else386, %if.then383
588   %add391 = add nsw i32 %e.14, 1
589   %cmp392 = icmp sge i32 %add391, %i
590   br i1 %cmp392, label %if.then393, label %if.end628
592 if.then393:                                       ; preds = %if.end390
593   %idxprom395 = sext i32 %add391 to i64
594   br label %if.end628
596 if.else398:                                       ; preds = %if.end344
597   %call399 = call i32 @h()
598   %tobool400 = icmp ne i32 %call399, 0
599   br i1 %tobool400, label %if.then401, label %if.else409
601 if.then401:                                       ; preds = %if.else398
602   %add402 = add nsw i32 %e.14, 1
603   %cmp403 = icmp sge i32 %add402, %i
604   br i1 %cmp403, label %if.then404, label %if.end628
606 if.then404:                                       ; preds = %if.then401
607   %idxprom406 = sext i32 %add402 to i64
608   br label %if.end628
610 if.else409:                                       ; preds = %if.else398
611   %call410 = call i32 @h()
612   %tobool411 = icmp ne i32 %call410, 0
613   br i1 %tobool411, label %if.then412, label %if.else420
615 if.then412:                                       ; preds = %if.else409
616   %add413 = add nsw i32 %e.14, 1
617   %cmp414 = icmp sge i32 %add413, %i
618   br i1 %cmp414, label %if.then415, label %if.end628
620 if.then415:                                       ; preds = %if.then412
621   %idxprom417 = sext i32 %add413 to i64
622   br label %if.end628
624 if.else420:                                       ; preds = %if.else409
625   %call421 = call i32 @h()
626   %tobool422 = icmp ne i32 %call421, 0
627   br i1 %tobool422, label %if.then423, label %if.else431
629 if.then423:                                       ; preds = %if.else420
630   %add424 = add nsw i32 %e.14, 3
631   %cmp425 = icmp sge i32 %add424, %i
632   br i1 %cmp425, label %if.then426, label %if.end628
634 if.then426:                                       ; preds = %if.then423
635   %idxprom428 = sext i32 %add424 to i64
636   br label %if.end628
638 if.else431:                                       ; preds = %if.else420
639   %call432 = call i32 @h()
640   %tobool433 = icmp ne i32 %call432, 0
641   br i1 %tobool433, label %if.then434, label %if.else440
643 if.then434:                                       ; preds = %if.else431
644   %add435 = add nsw i32 %e.14, 1
645   %cmp436 = icmp sge i32 %add435, %i
646   br i1 %cmp436, label %if.then437, label %if.end628
648 if.then437:                                       ; preds = %if.then434
649   br label %if.end628
651 if.else440:                                       ; preds = %if.else431
652   %call441 = call i32 @h()
653   %tobool442 = icmp ne i32 %call441, 0
654   br i1 %tobool442, label %if.then443, label %if.else451
656 if.then443:                                       ; preds = %if.else440
657   %tobool444 = icmp ne i32 %e.14, 0
658   br i1 %tobool444, label %if.then445, label %if.end628
660 if.then445:                                       ; preds = %if.then443
661   %cmp446 = icmp sge i32 %e.14, %i
662   br i1 %cmp446, label %if.then447, label %if.end628
664 if.then447:                                       ; preds = %if.then445
665   br label %if.end628
667 if.else451:                                       ; preds = %if.else440
668   %call452 = call i32 @h()
669   %tobool453 = icmp ne i32 %call452, 0
670   br i1 %tobool453, label %if.then454, label %if.else460
672 if.then454:                                       ; preds = %if.else451
673   %add455 = add nsw i32 %e.14, 1
674   %cmp456 = icmp sge i32 %add455, %i
675   br i1 %cmp456, label %if.then457, label %if.end628
677 if.then457:                                       ; preds = %if.then454
678   br label %if.end628
680 if.else460:                                       ; preds = %if.else451
681   %add461 = add nsw i32 %e.14, 2
682   %cmp462 = icmp sge i32 %add461, %i
683   br i1 %cmp462, label %if.then463, label %if.end628
685 if.then463:                                       ; preds = %if.else460
686   %idxprom465 = sext i32 %add461 to i64
687   br label %if.end628
689 if.else475:                                       ; preds = %if.else324
690   %call476 = call i32 @g()
691   %tobool477 = icmp ne i32 %call476, 0
692   br i1 %tobool477, label %if.then478, label %if.else509
694 if.then478:                                       ; preds = %if.else475
695   %call479 = call i32 @h()
696   %tobool480 = icmp ne i32 %call479, 0
697   br i1 %tobool480, label %if.then481, label %if.else487
699 if.then481:                                       ; preds = %if.then478
700   %add482 = add nsw i32 %e.0, 1
701   %cmp483 = icmp sge i32 %add482, %i
702   br i1 %cmp483, label %if.then484, label %if.end628
704 if.then484:                                       ; preds = %if.then481
705   br label %if.end628
707 if.else487:                                       ; preds = %if.then478
708   %call488 = call i32 @h()
709   %tobool489 = icmp ne i32 %call488, 0
710   br i1 %tobool489, label %if.then490, label %if.else496
712 if.then490:                                       ; preds = %if.else487
713   %add491 = add nsw i32 %e.0, 1
714   %cmp492 = icmp sge i32 %add491, %i
715   br i1 %cmp492, label %if.then493, label %if.end628
717 if.then493:                                       ; preds = %if.then490
718   br label %if.end628
720 if.else496:                                       ; preds = %if.else487
721   %add497 = add nsw i32 %e.0, 1
722   %cmp498 = icmp sge i32 %add497, %i
723   br i1 %cmp498, label %if.then499, label %if.else501
725 if.then499:                                       ; preds = %if.else496
726   br label %if.end628
728 if.else501:                                       ; preds = %if.else496
729   br i1 undef, label %if.then503, label %if.end628
731 if.then503:                                       ; preds = %if.else501
732   br label %if.end628
734 if.else509:                                       ; preds = %if.else475
735   %call510 = call i32 @g()
736   %tobool511 = icmp ne i32 %call510, 0
737   br i1 %tobool511, label %if.then512, label %if.else565
739 if.then512:                                       ; preds = %if.else509
740   %add513 = add nsw i32 %e.0, 1
741   %cmp514 = icmp sge i32 %add513, %i
742   br i1 %cmp514, label %if.then515, label %if.end519
744 if.then515:                                       ; preds = %if.then512
745   %idxprom517 = sext i32 %add513 to i64
746   br label %if.end519
748 if.end519:                                        ; preds = %if.then515, %if.then512
749   br i1 %cmp514, label %if.then522, label %if.end526
751 if.then522:                                       ; preds = %if.end519
752   %idxprom524 = sext i32 %add513 to i64
753   br label %if.end526
755 if.end526:                                        ; preds = %if.then522, %if.end519
756   br i1 %cmp514, label %if.then529, label %if.end533
758 if.then529:                                       ; preds = %if.end526
759   %idxprom531 = sext i32 %add513 to i64
760   br label %if.end533
762 if.end533:                                        ; preds = %if.then529, %if.end526
763   %add534 = add nsw i32 %e.0, 2
764   %cmp535 = icmp sge i32 %add534, %i
765   br i1 %cmp535, label %if.then536, label %if.end540
767 if.then536:                                       ; preds = %if.end533
768   %idxprom538 = sext i32 %add534 to i64
769   br label %if.end540
771 if.end540:                                        ; preds = %if.then536, %if.end533
772   br i1 %cmp535, label %if.then543, label %if.end547
774 if.then543:                                       ; preds = %if.end540
775   %idxprom545 = sext i32 %add534 to i64
776   unreachable
778 if.end547:                                        ; preds = %if.end540
779   br i1 %cmp514, label %if.then550, label %if.else554
781 if.then550:                                       ; preds = %if.end547
782   %idxprom552 = sext i32 %add513 to i64
783   br label %if.end559
785 if.else554:                                       ; preds = %if.end547
786   %idxprom557 = sext i32 %add513 to i64
787   br label %if.end559
789 if.end559:                                        ; preds = %if.else554, %if.then550
790   br i1 %cmp514, label %if.then562, label %if.end628
792 if.then562:                                       ; preds = %if.end559
793   br label %if.end628
795 if.else565:                                       ; preds = %if.else509
796   %call566 = call i32 @g()
797   %tobool567 = icmp ne i32 %call566, 0
798   br i1 %tobool567, label %if.then568, label %if.else590
800 if.then568:                                       ; preds = %if.else565
801   %add569 = add nsw i32 %e.0, 2
802   %cmp570 = icmp sge i32 %add569, %i
803   br i1 %cmp570, label %if.then571, label %if.else575
805 if.then571:                                       ; preds = %if.then568
806   %idxprom573 = sext i32 %add569 to i64
807   br label %if.end582
809 if.else575:                                       ; preds = %if.then568
810   %idxprom579 = sext i32 %add569 to i64
811   br label %if.end582
813 if.end582:                                        ; preds = %if.else575, %if.then571
814   %add583 = add nsw i32 %e.0, 1
815   %cmp584 = icmp sge i32 %add583, %i
816   br i1 %cmp584, label %if.then585, label %if.end628
818 if.then585:                                       ; preds = %if.end582
819   %idxprom587 = sext i32 %add583 to i64
820   br label %if.end628
822 if.else590:                                       ; preds = %if.else565
823   %call591 = call i32 @g()
824   %tobool592 = icmp ne i32 %call591, 0
825   br i1 %tobool592, label %if.then593, label %if.end628
827 if.then593:                                       ; preds = %if.else590
828   %add594 = add nsw i32 %e.0, 1
829   %cmp595 = icmp sge i32 %add594, %i
830   br i1 %cmp595, label %if.then596, label %if.else600
832 if.then596:                                       ; preds = %if.then593
833   %idxprom598 = sext i32 %add594 to i64
834   br label %if.end628
836 if.else600:                                       ; preds = %if.then593
837   br i1 undef, label %if.then602, label %if.end628
839 if.then602:                                       ; preds = %if.else600
840   %idxprom604 = sext i32 %add594 to i64
841   br label %if.end628
843 if.end628:                                        ; preds = %if.then602, %if.else600, %if.then596, %if.else590, %if.then585, %if.end582, %if.then562, %if.end559, %if.then503, %if.else501, %if.then499, %if.then493, %if.then490, %if.then484, %if.then481, %if.then463, %if.else460, %if.then457, %if.then454, %if.then447, %if.then445, %if.then443, %if.then437, %if.then434, %if.then426, %if.then423, %if.then415, %if.then412, %if.then404, %if.then401, %if.then393, %if.end390, %if.then318, %if.else316, %if.then312, %if.then301, %if.else298, %if.then295, %if.then292, %if.then284, %if.then281, %if.then274, %if.then271, %if.then263, %if.then260, %if.end254, %if.then240, %if.end237, %if.then222, %if.then219, %if.end215, %if.then200, %if.then197, %if.then190, %if.end187, %if.end160, %if.else123, %if.then120, %if.end118, %if.then71, %if.else68, %if.then65, %if.end62, %if.then53, %for.cond
844   %e.15 = phi i32 [ %e.5, %if.then53 ], [ %add63, %if.then65 ], [ %e.6, %if.end62 ], [ %e.5, %if.then71 ], [ %e.5, %if.else68 ], [ %e.9, %if.then120 ], [ %e.9, %if.end118 ], [ %e.10, %if.end160 ], [ %e.0, %if.then190 ], [ %e.0, %if.end187 ], [ %e.0, %if.then200 ], [ %e.0, %if.then197 ], [ %e.0, %if.end215 ], [ %e.0, %if.then222 ], [ %e.0, %if.then219 ], [ %e.0, %if.then240 ], [ %e.0, %if.end237 ], [ %e.0, %if.end254 ], [ %e.0, %if.then263 ], [ %e.0, %if.then260 ], [ %e.0, %if.then274 ], [ %e.0, %if.then271 ], [ %add282, %if.then284 ], [ %e.0, %if.then281 ], [ %add293, %if.then295 ], [ %e.0, %if.then292 ], [ %e.0, %if.then301 ], [ %e.0, %if.else298 ], [ %e.0, %if.then312 ], [ %e.0, %if.then318 ], [ %e.0, %if.else316 ], [ %e.14, %if.then393 ], [ %e.14, %if.end390 ], [ %e.14, %if.then404 ], [ %e.14, %if.then401 ], [ %e.14, %if.then415 ], [ %e.14, %if.then412 ], [ %e.14, %if.then426 ], [ %e.14, %if.then423 ], [ %add435, %if.then437 ], [ %e.14, %if.then434 ], [ %e.14, %if.then447 ], [ %e.14, %if.then445 ], [ %e.14, %if.then443 ], [ %add455, %if.then457 ], [ %e.14, %if.then454 ], [ %e.14, %if.then463 ], [ %e.14, %if.else460 ], [ %add482, %if.then484 ], [ %e.0, %if.then481 ], [ %add491, %if.then493 ], [ %e.0, %if.then490 ], [ %add497, %if.then499 ], [ %add497, %if.then503 ], [ %e.0, %if.else501 ], [ %add513, %if.then562 ], [ %e.0, %if.end559 ], [ %e.0, %if.then585 ], [ %e.0, %if.end582 ], [ %e.0, %if.then596 ], [ %e.0, %if.then602 ], [ %e.0, %if.else600 ], [ %e.0, %if.else590 ], [ %e.0, %if.else123 ], [ %e.0, %for.cond ]
845   br label %for.cond
848 declare i32 @g()
850 declare i32 @h()
852 ; Function Attrs: nofree nosync nounwind willreturn
853 declare void @llvm.assume(i1 noundef)