xref: /llvm-project/llvm/test/Transforms/ObjCARC/path-overflow.ll (revision 9bf6365237f3a8a401afc0a69d2fb6d1b809ce68)
1; RUN: opt -passes=objc-arc -S < %s
2; rdar://12277446
3; rdar://12480535
4; rdar://14590914
5; rdar://15377890
6
7; The total number of paths grows exponentially with the number of branches, and a
8; computation of this number can overflow any reasonable fixed-sized
9; integer. This can occur in both the addition phase when we are adding up the
10; total bottomup/topdown paths and when we multiply them together at the end.
11
12target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
13target triple = "thumbv7-apple-ios5.0.0"
14
15%struct.NSConstantString = type { ptr, i32, ptr, i32 }
16%struct.CGPoint = type { float, float }
17
18@_unnamed_cfstring = external constant %struct.NSConstantString, section "__DATA,__cfstring"
19@_unnamed_cfstring_2 = external constant %struct.NSConstantString, section "__DATA,__cfstring"
20
21declare ptr @llvm.objc.retain(ptr) nonlazybind
22declare ptr @llvm.objc.retainAutoreleasedReturnValue(ptr) nonlazybind
23declare void @llvm.objc.release(ptr) nonlazybind
24declare ptr @returner()
25declare ptr @objc_msgSend(ptr, ptr, ...) nonlazybind
26declare void @NSLog(ptr, ...)
27declare void @objc_msgSend_stret(ptr, ptr, ...)
28declare i32 @__gxx_personality_sj0(...)
29declare i32 @__objc_personality_v0(...)
30
31
32define hidden void @test1(i1 %arg) personality ptr @__gxx_personality_sj0 {
33entry:
34  br i1 %arg, label %msgSend.nullinit, label %msgSend.call
35
36msgSend.call:                                     ; preds = %entry
37  br label %msgSend.cont
38
39msgSend.nullinit:                                 ; preds = %entry
40  br label %msgSend.cont
41
42msgSend.cont:                                     ; preds = %msgSend.nullinit, %msgSend.call
43  %0 = call ptr @llvm.objc.retain(ptr @_unnamed_cfstring) nounwind
44  br i1 %arg, label %msgSend.nullinit33, label %msgSend.call32
45
46msgSend.call32:                                   ; preds = %if.end10
47  br label %msgSend.cont34
48
49msgSend.nullinit33:                               ; preds = %if.end10
50  br label %msgSend.cont34
51
52msgSend.cont34:                                   ; preds = %msgSend.nullinit33, %msgSend.call32
53  br i1 %arg, label %msgSend.nullinit38, label %msgSend.call37
54
55msgSend.call37:                                   ; preds = %msgSend.cont34
56  br label %msgSend.cont39
57
58msgSend.nullinit38:                               ; preds = %msgSend.cont34
59  br label %msgSend.cont39
60
61msgSend.cont39:                                   ; preds = %msgSend.nullinit38, %msgSend.call37
62  br i1 %arg, label %msgSend.nullinit49, label %msgSend.call48
63
64msgSend.call48:                                   ; preds = %msgSend.cont39
65  br label %msgSend.cont50
66
67msgSend.nullinit49:                               ; preds = %msgSend.cont39
68  br label %msgSend.cont50
69
70msgSend.cont50:                                   ; preds = %msgSend.nullinit49, %msgSend.call48
71  br i1 %arg, label %msgSend.nullinit61, label %msgSend.call60
72
73msgSend.call60:                                   ; preds = %msgSend.cont50
74  br label %msgSend.cont62
75
76msgSend.nullinit61:                               ; preds = %msgSend.cont50
77  br label %msgSend.cont62
78
79msgSend.cont62:                                   ; preds = %msgSend.nullinit61, %msgSend.call60
80  br i1 %arg, label %msgSend.nullinit67, label %msgSend.call66
81
82msgSend.call66:                                   ; preds = %msgSend.cont62
83  br label %msgSend.cont68
84
85msgSend.nullinit67:                               ; preds = %msgSend.cont62
86  br label %msgSend.cont68
87
88msgSend.cont68:                                   ; preds = %msgSend.nullinit67, %msgSend.call66
89  br i1 %arg, label %msgSend.nullinit84, label %msgSend.call83
90
91msgSend.call83:                                   ; preds = %msgSend.cont68
92  br label %msgSend.cont85
93
94msgSend.nullinit84:                               ; preds = %msgSend.cont68
95  br label %msgSend.cont85
96
97msgSend.cont85:                                   ; preds = %msgSend.nullinit84, %msgSend.call83
98  br i1 %arg, label %msgSend.nullinit90, label %msgSend.call89
99
100msgSend.call89:                                   ; preds = %msgSend.cont85
101  br label %msgSend.cont91
102
103msgSend.nullinit90:                               ; preds = %msgSend.cont85
104  br label %msgSend.cont91
105
106msgSend.cont91:                                   ; preds = %msgSend.nullinit90, %msgSend.call89
107  br i1 %arg, label %msgSend.nullinit104, label %msgSend.call103
108
109msgSend.call103:                                  ; preds = %msgSend.cont91
110  br label %msgSend.cont105
111
112msgSend.nullinit104:                              ; preds = %msgSend.cont91
113  br label %msgSend.cont105
114
115msgSend.cont105:                                  ; preds = %msgSend.nullinit104, %msgSend.call103
116  br i1 %arg, label %land.lhs.true, label %if.end123
117
118land.lhs.true:                                    ; preds = %msgSend.cont105
119  br i1 %arg, label %if.then117, label %if.end123
120
121if.then117:                                       ; preds = %land.lhs.true
122  br label %if.end123
123
124if.end123:                                        ; preds = %if.then117, %land.lhs.true, %msgSend.cont105
125  br i1 %arg, label %msgSend.nullinit132, label %msgSend.call131
126
127msgSend.call131:                                  ; preds = %if.end123
128  br label %msgSend.cont133
129
130msgSend.nullinit132:                              ; preds = %if.end123
131  br label %msgSend.cont133
132
133msgSend.cont133:                                  ; preds = %msgSend.nullinit132, %msgSend.call131
134  br i1 %arg, label %msgSend.nullinit139, label %msgSend.call138
135
136msgSend.call138:                                  ; preds = %msgSend.cont133
137  br label %msgSend.cont140
138
139msgSend.nullinit139:                              ; preds = %msgSend.cont133
140  br label %msgSend.cont140
141
142msgSend.cont140:                                  ; preds = %msgSend.nullinit139, %msgSend.call138
143  br i1 %arg, label %if.then151, label %if.end157
144
145if.then151:                                       ; preds = %msgSend.cont140
146  br label %if.end157
147
148if.end157:                                        ; preds = %if.then151, %msgSend.cont140
149  br i1 %arg, label %msgSend.nullinit164, label %msgSend.call163
150
151msgSend.call163:                                  ; preds = %if.end157
152  br label %msgSend.cont165
153
154msgSend.nullinit164:                              ; preds = %if.end157
155  br label %msgSend.cont165
156
157msgSend.cont165:                                  ; preds = %msgSend.nullinit164, %msgSend.call163
158  br i1 %arg, label %msgSend.nullinit176, label %msgSend.call175
159
160msgSend.call175:                                  ; preds = %msgSend.cont165
161  br label %msgSend.cont177
162
163msgSend.nullinit176:                              ; preds = %msgSend.cont165
164  br label %msgSend.cont177
165
166msgSend.cont177:                                  ; preds = %msgSend.nullinit176, %msgSend.call175
167  br i1 %arg, label %land.lhs.true181, label %if.end202
168
169land.lhs.true181:                                 ; preds = %msgSend.cont177
170  br i1 %arg, label %if.then187, label %if.end202
171
172if.then187:                                       ; preds = %land.lhs.true181
173  br i1 %arg, label %msgSend.nullinit199, label %msgSend.call198
174
175msgSend.call198:                                  ; preds = %if.then187
176  br label %msgSend.cont200
177
178msgSend.nullinit199:                              ; preds = %if.then187
179  br label %msgSend.cont200
180
181msgSend.cont200:                                  ; preds = %msgSend.nullinit199, %msgSend.call198
182  br label %if.end202
183
184if.end202:                                        ; preds = %msgSend.cont200, %land.lhs.true181, %msgSend.cont177
185  br i1 %arg, label %msgSend.nullinit236, label %msgSend.call235
186
187msgSend.call235:                                  ; preds = %if.end202
188  br label %msgSend.cont237
189
190msgSend.nullinit236:                              ; preds = %if.end202
191  br label %msgSend.cont237
192
193msgSend.cont237:                                  ; preds = %msgSend.nullinit236, %msgSend.call235
194  br i1 %arg, label %msgSend.nullinit254, label %msgSend.call253
195
196msgSend.call253:                                  ; preds = %msgSend.cont237
197  br label %msgSend.cont255
198
199msgSend.nullinit254:                              ; preds = %msgSend.cont237
200  br label %msgSend.cont255
201
202msgSend.cont255:                                  ; preds = %msgSend.nullinit254, %msgSend.call253
203  br i1 %arg, label %msgSend.nullinit269, label %msgSend.call268
204
205msgSend.call268:                                  ; preds = %msgSend.cont255
206  br label %msgSend.cont270
207
208msgSend.nullinit269:                              ; preds = %msgSend.cont255
209  br label %msgSend.cont270
210
211msgSend.cont270:                                  ; preds = %msgSend.nullinit269, %msgSend.call268
212  br i1 %arg, label %msgSend.nullinit281, label %msgSend.call280
213
214msgSend.call280:                                  ; preds = %msgSend.cont270
215  br label %msgSend.cont282
216
217msgSend.nullinit281:                              ; preds = %msgSend.cont270
218  br label %msgSend.cont282
219
220msgSend.cont282:                                  ; preds = %msgSend.nullinit281, %msgSend.call280
221  br i1 %arg, label %msgSend.nullinit287, label %msgSend.call286
222
223msgSend.call286:                                  ; preds = %msgSend.cont282
224  br label %msgSend.cont288
225
226msgSend.nullinit287:                              ; preds = %msgSend.cont282
227  br label %msgSend.cont288
228
229msgSend.cont288:                                  ; preds = %msgSend.nullinit287, %msgSend.call286
230  br i1 %arg, label %msgSend.nullinit303, label %msgSend.call302
231
232msgSend.call302:                                  ; preds = %msgSend.cont288
233  br label %msgSend.cont304
234
235msgSend.nullinit303:                              ; preds = %msgSend.cont288
236  br label %msgSend.cont304
237
238msgSend.cont304:                                  ; preds = %msgSend.nullinit303, %msgSend.call302
239  br i1 %arg, label %msgSend.nullinit344, label %msgSend.call343
240
241msgSend.call343:                                  ; preds = %msgSend.cont304
242  br label %msgSend.cont345
243
244msgSend.nullinit344:                              ; preds = %msgSend.cont304
245  br label %msgSend.cont345
246
247msgSend.cont345:                                  ; preds = %msgSend.nullinit344, %msgSend.call343
248  br i1 %arg, label %msgSend.nullinit350, label %msgSend.call349
249
250msgSend.call349:                                  ; preds = %msgSend.cont345
251  br label %msgSend.cont351
252
253msgSend.nullinit350:                              ; preds = %msgSend.cont345
254  br label %msgSend.cont351
255
256msgSend.cont351:                                  ; preds = %msgSend.nullinit350, %msgSend.call349
257  br i1 %arg, label %msgSend.nullinit366, label %msgSend.call365
258
259msgSend.call365:                                  ; preds = %msgSend.cont351
260  br label %msgSend.cont367
261
262msgSend.nullinit366:                              ; preds = %msgSend.cont351
263  br label %msgSend.cont367
264
265msgSend.cont367:                                  ; preds = %msgSend.nullinit366, %msgSend.call365
266  br i1 %arg, label %msgSend.nullinit376, label %msgSend.call375
267
268msgSend.call375:                                  ; preds = %msgSend.cont367
269  br label %msgSend.cont377
270
271msgSend.nullinit376:                              ; preds = %msgSend.cont367
272  br label %msgSend.cont377
273
274msgSend.cont377:                                  ; preds = %msgSend.nullinit376, %msgSend.call375
275  br i1 %arg, label %if.then384, label %if.else401
276
277if.then384:                                       ; preds = %msgSend.cont377
278  br i1 %arg, label %msgSend.nullinit392, label %msgSend.call391
279
280msgSend.call391:                                  ; preds = %if.then384
281  br label %msgSend.cont393
282
283msgSend.nullinit392:                              ; preds = %if.then384
284  br label %msgSend.cont393
285
286msgSend.cont393:                                  ; preds = %msgSend.nullinit392, %msgSend.call391
287  br label %if.end418
288
289if.else401:                                       ; preds = %msgSend.cont377
290  br i1 %arg, label %msgSend.nullinit409, label %msgSend.call408
291
292msgSend.call408:                                  ; preds = %if.else401
293  br label %msgSend.cont410
294
295msgSend.nullinit409:                              ; preds = %if.else401
296  br label %msgSend.cont410
297
298msgSend.cont410:                                  ; preds = %msgSend.nullinit409, %msgSend.call408
299  br label %if.end418
300
301if.end418:                                        ; preds = %msgSend.cont410, %msgSend.cont393
302  br i1 %arg, label %msgSend.nullinit470, label %msgSend.call469
303
304msgSend.call469:                                  ; preds = %if.end418
305  br label %msgSend.cont471
306
307msgSend.nullinit470:                              ; preds = %if.end418
308  br label %msgSend.cont471
309
310msgSend.cont471:                                  ; preds = %msgSend.nullinit470, %msgSend.call469
311  br i1 %arg, label %msgSend.nullinit484, label %msgSend.call483
312
313msgSend.call483:                                  ; preds = %msgSend.cont471
314  br label %msgSend.cont485
315
316msgSend.nullinit484:                              ; preds = %msgSend.cont471
317  br label %msgSend.cont485
318
319msgSend.cont485:                                  ; preds = %msgSend.nullinit484, %msgSend.call483
320  br i1 %arg, label %msgSend.nullinit500, label %msgSend.call499
321
322msgSend.call499:                                  ; preds = %msgSend.cont485
323  br label %msgSend.cont501
324
325msgSend.nullinit500:                              ; preds = %msgSend.cont485
326  br label %msgSend.cont501
327
328msgSend.cont501:                                  ; preds = %msgSend.nullinit500, %msgSend.call499
329  br i1 %arg, label %msgSend.nullinit506, label %msgSend.call505
330
331msgSend.call505:                                  ; preds = %msgSend.cont501
332  br label %msgSend.cont507
333
334msgSend.nullinit506:                              ; preds = %msgSend.cont501
335  br label %msgSend.cont507
336
337msgSend.cont507:                                  ; preds = %msgSend.nullinit506, %msgSend.call505
338  call void @llvm.objc.release(ptr @_unnamed_cfstring) nounwind, !clang.imprecise_release !0
339  ret void
340}
341
342; Function Attrs: optsize ssp uwtable
343define void @test2(i1 %arg) unnamed_addr align 2 personality ptr @__gxx_personality_sj0 {
344bb:
345  br i1 %arg, label %bb3, label %bb2
346
347bb2:                                              ; preds = %bb
348  br label %bb3
349
350bb3:                                              ; preds = %bb2, %bb
351  br i1 %arg, label %bb5, label %bb4
352
353bb4:                                              ; preds = %bb3
354  br label %bb5
355
356bb5:                                              ; preds = %bb4, %bb3
357  br i1 %arg, label %bb7, label %bb6
358
359bb6:                                              ; preds = %bb5
360  br label %bb7
361
362bb7:                                              ; preds = %bb6, %bb5
363  br i1 %arg, label %bb9, label %bb8
364
365bb8:                                              ; preds = %bb7
366  unreachable
367
368bb9:                                              ; preds = %bb7
369  br i1 %arg, label %bb11, label %bb10
370
371bb10:                                             ; preds = %bb9
372  br label %bb11
373
374bb11:                                             ; preds = %bb10, %bb9
375  br i1 %arg, label %bb13, label %bb12
376
377bb12:                                             ; preds = %bb11
378  br label %bb13
379
380bb13:                                             ; preds = %bb12, %bb11
381  br i1 %arg, label %bb15, label %bb14
382
383bb14:                                             ; preds = %bb13
384  br label %bb15
385
386bb15:                                             ; preds = %bb14, %bb13
387  br i1 %arg, label %bb17, label %bb16
388
389bb16:                                             ; preds = %bb15
390  br label %bb17
391
392bb17:                                             ; preds = %bb16, %bb15
393  br i1 %arg, label %bb19, label %bb18
394
395bb18:                                             ; preds = %bb17
396  br label %bb19
397
398bb19:                                             ; preds = %bb18, %bb17
399  br i1 %arg, label %bb222, label %bb20
400
401bb20:                                             ; preds = %bb19
402  br i1 %arg, label %bb222, label %bb21
403
404bb21:                                             ; preds = %bb20
405  br i1 %arg, label %bb22, label %bb30
406
407bb22:                                             ; preds = %bb21
408  br i1 %arg, label %bb23, label %bb32
409
410bb23:                                             ; preds = %bb22
411  br i1 %arg, label %bb24, label %bb34
412
413bb24:                                             ; preds = %bb23
414  br i1 %arg, label %bb26, label %bb25
415
416bb25:                                             ; preds = %bb24
417  br label %bb27
418
419bb26:                                             ; preds = %bb24
420  br label %bb27
421
422bb27:                                             ; preds = %bb26, %bb25
423  br i1 %arg, label %bb28, label %bb42
424
425bb28:                                             ; preds = %bb27
426  br i1 %arg, label %bb36, label %bb29
427
428bb29:                                             ; preds = %bb28
429  br label %bb36
430
431bb30:                                             ; preds = %bb210, %bb207, %bb203, %bb199, %bb182, %bb176, %bb174, %bb171, %bb136, %bb132, %bb21
432  br label %bb213
433
434bb32:                                             ; preds = %bb22
435  unreachable
436
437bb34:                                             ; preds = %bb23
438  unreachable
439
440bb36:                                             ; preds = %bb29, %bb28
441  br i1 %arg, label %bb38, label %bb37
442
443bb37:                                             ; preds = %bb36
444  br label %bb39
445
446bb38:                                             ; preds = %bb36
447  br label %bb39
448
449bb39:                                             ; preds = %bb38, %bb37
450  br i1 %arg, label %bb41, label %bb40
451
452bb40:                                             ; preds = %bb39
453  unreachable
454
455bb41:                                             ; preds = %bb39
456  br label %bb42
457
458bb42:                                             ; preds = %bb41, %bb27
459  br i1 %arg, label %bb43, label %bb214
460
461bb43:                                             ; preds = %bb42
462  br i1 %arg, label %bb47, label %bb45
463
464bb45:                                             ; preds = %bb130, %bb128, %bb126, %bb124, %bb122, %bb120, %bb118, %bb116, %bb114, %bb112, %bb110, %bb108, %bb105, %bb102, %bb100, %bb96, %bb94, %bb90, %bb88, %bb84, %bb82, %bb78, %bb76, %bb72, %bb70, %bb66, %bb64, %bb60, %bb58, %bb54, %bb51, %bb43
465  unreachable
466
467bb47:                                             ; preds = %bb43
468  br i1 %arg, label %bb48, label %bb106
469
470bb48:                                             ; preds = %bb47
471  br i1 %arg, label %bb50, label %bb49
472
473bb49:                                             ; preds = %bb48
474  br label %bb51
475
476bb50:                                             ; preds = %bb48
477  br label %bb51
478
479bb51:                                             ; preds = %bb50, %bb49
480  br i1 %arg, label %bb53, label %bb45
481
482bb53:                                             ; preds = %bb51
483  br i1 %arg, label %bb54, label %bb134
484
485bb54:                                             ; preds = %bb53
486  br i1 %arg, label %bb55, label %bb45
487
488bb55:                                             ; preds = %bb54
489  br i1 %arg, label %bb57, label %bb56
490
491bb56:                                             ; preds = %bb55
492  br label %bb58
493
494bb57:                                             ; preds = %bb55
495  br label %bb58
496
497bb58:                                             ; preds = %bb57, %bb56
498  br i1 %arg, label %bb60, label %bb45
499
500bb60:                                             ; preds = %bb58
501  br i1 %arg, label %bb61, label %bb45
502
503bb61:                                             ; preds = %bb60
504  br i1 %arg, label %bb63, label %bb62
505
506bb62:                                             ; preds = %bb61
507  br label %bb64
508
509bb63:                                             ; preds = %bb61
510  br label %bb64
511
512bb64:                                             ; preds = %bb63, %bb62
513  br i1 %arg, label %bb66, label %bb45
514
515bb66:                                             ; preds = %bb64
516  br i1 %arg, label %bb67, label %bb45
517
518bb67:                                             ; preds = %bb66
519  br i1 %arg, label %bb69, label %bb68
520
521bb68:                                             ; preds = %bb67
522  br label %bb70
523
524bb69:                                             ; preds = %bb67
525  br label %bb70
526
527bb70:                                             ; preds = %bb69, %bb68
528  br i1 %arg, label %bb72, label %bb45
529
530bb72:                                             ; preds = %bb70
531  br i1 %arg, label %bb73, label %bb45
532
533bb73:                                             ; preds = %bb72
534  br i1 %arg, label %bb75, label %bb74
535
536bb74:                                             ; preds = %bb73
537  br label %bb76
538
539bb75:                                             ; preds = %bb73
540  br label %bb76
541
542bb76:                                             ; preds = %bb75, %bb74
543  br i1 %arg, label %bb78, label %bb45
544
545bb78:                                             ; preds = %bb76
546  br i1 %arg, label %bb79, label %bb45
547
548bb79:                                             ; preds = %bb78
549  br i1 %arg, label %bb81, label %bb80
550
551bb80:                                             ; preds = %bb79
552  br label %bb82
553
554bb81:                                             ; preds = %bb79
555  br label %bb82
556
557bb82:                                             ; preds = %bb81, %bb80
558  br i1 %arg, label %bb84, label %bb45
559
560bb84:                                             ; preds = %bb82
561  br i1 %arg, label %bb85, label %bb45
562
563bb85:                                             ; preds = %bb84
564  br i1 %arg, label %bb87, label %bb86
565
566bb86:                                             ; preds = %bb85
567  br label %bb88
568
569bb87:                                             ; preds = %bb85
570  br label %bb88
571
572bb88:                                             ; preds = %bb87, %bb86
573  br i1 %arg, label %bb90, label %bb45
574
575bb90:                                             ; preds = %bb88
576  br i1 %arg, label %bb91, label %bb45
577
578bb91:                                             ; preds = %bb90
579  br i1 %arg, label %bb93, label %bb92
580
581bb92:                                             ; preds = %bb91
582  br label %bb94
583
584bb93:                                             ; preds = %bb91
585  br label %bb94
586
587bb94:                                             ; preds = %bb93, %bb92
588  br i1 %arg, label %bb96, label %bb45
589
590bb96:                                             ; preds = %bb94
591  br i1 %arg, label %bb97, label %bb45
592
593bb97:                                             ; preds = %bb96
594  br i1 %arg, label %bb99, label %bb98
595
596bb98:                                             ; preds = %bb97
597  br label %bb100
598
599bb99:                                             ; preds = %bb97
600  br label %bb100
601
602bb100:                                            ; preds = %bb99, %bb98
603  br i1 %arg, label %bb102, label %bb45
604
605bb102:                                            ; preds = %bb100
606  br i1 %arg, label %bb104, label %bb45
607
608bb104:                                            ; preds = %bb102
609  br i1 %arg, label %bb108, label %bb105
610
611bb105:                                            ; preds = %bb104
612  br i1 %arg, label %bb108, label %bb45
613
614bb106:                                            ; preds = %bb47
615  unreachable
616
617bb108:                                            ; preds = %bb105, %bb104
618  br i1 %arg, label %bb110, label %bb45
619
620bb110:                                            ; preds = %bb108
621  br i1 %arg, label %bb112, label %bb45
622
623bb112:                                            ; preds = %bb110
624  br i1 %arg, label %bb114, label %bb45
625
626bb114:                                            ; preds = %bb112
627  br i1 %arg, label %bb116, label %bb45
628
629bb116:                                            ; preds = %bb114
630  br i1 %arg, label %bb118, label %bb45
631
632bb118:                                            ; preds = %bb116
633  br i1 %arg, label %bb120, label %bb45
634
635bb120:                                            ; preds = %bb118
636  br i1 %arg, label %bb122, label %bb45
637
638bb122:                                            ; preds = %bb120
639  br i1 %arg, label %bb124, label %bb45
640
641bb124:                                            ; preds = %bb122
642  br i1 %arg, label %bb126, label %bb45
643
644bb126:                                            ; preds = %bb124
645  br i1 %arg, label %bb128, label %bb45
646
647bb128:                                            ; preds = %bb126
648  br i1 %arg, label %bb130, label %bb45
649
650bb130:                                            ; preds = %bb128
651  br i1 %arg, label %bb132, label %bb45
652
653bb132:                                            ; preds = %bb130
654  br i1 %arg, label %bb135, label %bb30
655
656bb134:                                            ; preds = %bb53
657  unreachable
658
659bb135:                                            ; preds = %bb132
660  br i1 %arg, label %bb139, label %bb136
661
662bb136:                                            ; preds = %bb135
663  br i1 %arg, label %bb138, label %bb30
664
665bb138:                                            ; preds = %bb136
666  br label %bb139
667
668bb139:                                            ; preds = %bb138, %bb135
669  br i1 %arg, label %bb140, label %bb141
670
671bb140:                                            ; preds = %bb139
672  unreachable
673
674bb141:                                            ; preds = %bb139
675  br i1 %arg, label %bb142, label %bb215
676
677bb142:                                            ; preds = %bb141
678  br i1 %arg, label %bb144, label %bb143
679
680bb143:                                            ; preds = %bb142
681  br label %bb145
682
683bb144:                                            ; preds = %bb142
684  br label %bb145
685
686bb145:                                            ; preds = %bb144, %bb143
687  br i1 %arg, label %bb146, label %bb151
688
689bb146:                                            ; preds = %bb145
690  br i1 %arg, label %bb148, label %bb153
691
692bb148:                                            ; preds = %bb146
693  br i1 %arg, label %bb155, label %bb149
694
695bb149:                                            ; preds = %bb148
696  br i1 %arg, label %bb150, label %bb153
697
698bb150:                                            ; preds = %bb149
699  br label %bb155
700
701bb151:                                            ; preds = %bb145
702  unreachable
703
704bb153:                                            ; preds = %bb158, %bb149, %bb146
705  unreachable
706
707bb155:                                            ; preds = %bb150, %bb148
708  br i1 %arg, label %bb157, label %bb156
709
710bb156:                                            ; preds = %bb155
711  br label %bb158
712
713bb157:                                            ; preds = %bb155
714  br label %bb158
715
716bb158:                                            ; preds = %bb157, %bb156
717  br i1 %arg, label %bb160, label %bb153
718
719bb160:                                            ; preds = %bb158
720  br i1 %arg, label %bb162, label %bb161
721
722bb161:                                            ; preds = %bb160
723  br label %bb163
724
725bb162:                                            ; preds = %bb160
726  br label %bb163
727
728bb163:                                            ; preds = %bb162, %bb161
729  br i1 %arg, label %bb165, label %bb164
730
731bb164:                                            ; preds = %bb163
732  br label %bb165
733
734bb165:                                            ; preds = %bb164, %bb163
735  br i1 %arg, label %bb170, label %bb166
736
737bb166:                                            ; preds = %bb165
738  br i1 %arg, label %bb167, label %bb168
739
740bb167:                                            ; preds = %bb166
741  unreachable
742
743bb168:                                            ; preds = %bb166
744  unreachable
745
746bb170:                                            ; preds = %bb165
747  br i1 %arg, label %bb215, label %bb171
748
749bb171:                                            ; preds = %bb170
750  br i1 %arg, label %bb173, label %bb30
751
752bb173:                                            ; preds = %bb171
753  br i1 %arg, label %bb174, label %bb215
754
755bb174:                                            ; preds = %bb173
756  br i1 %arg, label %bb176, label %bb30
757
758bb176:                                            ; preds = %bb174
759  br i1 %arg, label %bb178, label %bb30
760
761bb178:                                            ; preds = %bb176
762  br i1 %arg, label %bb179, label %bb193
763
764bb179:                                            ; preds = %bb178
765  br i1 %arg, label %bb181, label %bb180
766
767bb180:                                            ; preds = %bb179
768  br label %bb182
769
770bb181:                                            ; preds = %bb179
771  br label %bb182
772
773bb182:                                            ; preds = %bb181, %bb180
774  br i1 %arg, label %bb184, label %bb30
775
776bb184:                                            ; preds = %bb182
777  %tmp185 = call ptr @returner()
778  br i1 %arg, label %bb186, label %bb195
779
780bb186:                                            ; preds = %bb184
781  %tmp188 = call ptr @llvm.objc.retainAutoreleasedReturnValue(ptr %tmp185)
782  %tmp189 = call ptr @llvm.objc.retain(ptr %tmp188)
783  call void @llvm.objc.release(ptr %tmp189), !clang.imprecise_release !0
784  br i1 %arg, label %bb197, label %bb190
785
786bb190:                                            ; preds = %bb186
787  br i1 %arg, label %bb192, label %bb195
788
789bb192:                                            ; preds = %bb190
790  br i1 %arg, label %bb197, label %bb195
791
792bb193:                                            ; preds = %bb178
793  br label %bb213
794
795bb195:                                            ; preds = %bb192, %bb190, %bb184
796  unreachable
797
798bb197:                                            ; preds = %bb192, %bb186
799  br i1 %arg, label %bb198, label %bb215
800
801bb198:                                            ; preds = %bb197
802  br i1 %arg, label %bb202, label %bb199
803
804bb199:                                            ; preds = %bb198
805  br i1 %arg, label %bb201, label %bb30
806
807bb201:                                            ; preds = %bb199
808  br label %bb202
809
810bb202:                                            ; preds = %bb201, %bb198
811  br i1 %arg, label %bb206, label %bb203
812
813bb203:                                            ; preds = %bb202
814  br i1 %arg, label %bb205, label %bb30
815
816bb205:                                            ; preds = %bb203
817  br label %bb206
818
819bb206:                                            ; preds = %bb205, %bb202
820  br i1 %arg, label %bb210, label %bb207
821
822bb207:                                            ; preds = %bb206
823  br i1 %arg, label %bb209, label %bb30
824
825bb209:                                            ; preds = %bb207
826  br label %bb210
827
828bb210:                                            ; preds = %bb209, %bb206
829  br i1 %arg, label %bb212, label %bb30
830
831bb212:                                            ; preds = %bb210
832  unreachable
833
834bb213:                                            ; preds = %bb193, %bb30
835  resume { ptr, i32 } undef
836
837bb214:                                            ; preds = %bb42
838  br label %bb219
839
840bb215:                                            ; preds = %bb197, %bb173, %bb170, %bb141
841  br i1 %arg, label %bb217, label %bb216
842
843bb216:                                            ; preds = %bb215
844  br label %bb217
845
846bb217:                                            ; preds = %bb216, %bb215
847  br i1 %arg, label %bb219, label %bb218
848
849bb218:                                            ; preds = %bb217
850  br label %bb219
851
852bb219:                                            ; preds = %bb218, %bb217, %bb214
853  br i1 %arg, label %bb221, label %bb220
854
855bb220:                                            ; preds = %bb219
856  unreachable
857
858bb221:                                            ; preds = %bb219
859  unreachable
860
861bb222:                                            ; preds = %bb20, %bb19
862  ret void
863}
864
865; Function Attrs: ssp
866define void @test3(i1 %arg) #1 personality ptr @__gxx_personality_sj0 {
867entry:
868  %call2 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
869          to label %invoke.cont unwind label %lpad
870
871invoke.cont:                                      ; preds = %entry
872  %call5 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef)
873          to label %invoke.cont4 unwind label %lpad3
874
875invoke.cont4:                                     ; preds = %invoke.cont
876  br i1 %arg, label %land.end, label %land.rhs
877
878land.rhs:                                         ; preds = %invoke.cont4
879  %call7 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
880          to label %land.end unwind label %lpad3
881
882land.end:                                         ; preds = %land.rhs, %invoke.cont4
883  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
884          to label %invoke.cont.i unwind label %lpad.i
885
886invoke.cont.i:                                    ; preds = %land.end
887  br i1 %arg, label %invoke.cont8, label %if.then.i
888
889if.then.i:                                        ; preds = %invoke.cont.i
890  br label %invoke.cont8
891
892lpad.i:                                           ; preds = %land.end
893  %tmp13 = landingpad { ptr, i32 }
894          cleanup
895  unreachable
896
897invoke.cont8:                                     ; preds = %if.then.i, %invoke.cont.i
898  %call18 = invoke ptr (ptr, ptr, ptr, ...) @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring, ptr undef)
899          to label %invoke.cont17 unwind label %lpad16
900
901invoke.cont17:                                    ; preds = %invoke.cont8
902  %call22 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
903          to label %invoke.cont21 unwind label %lpad20
904
905invoke.cont21:                                    ; preds = %invoke.cont17
906  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
907          to label %invoke.cont.i1980 unwind label %lpad.i1982
908
909invoke.cont.i1980:                                ; preds = %invoke.cont21
910  br i1 %arg, label %invoke.cont24, label %if.then.i1981
911
912if.then.i1981:                                    ; preds = %invoke.cont.i1980
913  br label %invoke.cont24
914
915lpad.i1982:                                       ; preds = %invoke.cont21
916  %tmp28 = landingpad { ptr, i32 }
917          cleanup
918  unreachable
919
920invoke.cont24:                                    ; preds = %if.then.i1981, %invoke.cont.i1980
921  %call37 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef)
922          to label %invoke.cont36 unwind label %lpad35
923
924invoke.cont36:                                    ; preds = %invoke.cont24
925  br i1 %arg, label %land.end43, label %land.rhs39
926
927land.rhs39:                                       ; preds = %invoke.cont36
928  %call41 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
929          to label %land.end43 unwind label %lpad35
930
931land.end43:                                       ; preds = %land.rhs39, %invoke.cont36
932  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
933          to label %invoke.cont.i1986 unwind label %lpad.i1988
934
935invoke.cont.i1986:                                ; preds = %land.end43
936  br i1 %arg, label %invoke.cont44, label %if.then.i1987
937
938if.then.i1987:                                    ; preds = %invoke.cont.i1986
939  br label %invoke.cont44
940
941lpad.i1988:                                       ; preds = %land.end43
942  %tmp42 = landingpad { ptr, i32 }
943          cleanup
944  unreachable
945
946invoke.cont44:                                    ; preds = %if.then.i1987, %invoke.cont.i1986
947  %call53 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
948          to label %invoke.cont52 unwind label %lpad51
949
950invoke.cont52:                                    ; preds = %invoke.cont44
951  br i1 %arg, label %land.end70, label %land.rhs58
952
953land.rhs58:                                       ; preds = %invoke.cont52
954  %call63 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 42)
955          to label %invoke.cont62 unwind label %lpad61
956
957invoke.cont62:                                    ; preds = %land.rhs58
958  %call68 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr undef)
959          to label %land.end70 unwind label %lpad66.body.thread
960
961land.end70:                                       ; preds = %invoke.cont62, %invoke.cont52
962  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
963          to label %invoke.cont.i1992 unwind label %lpad66.body
964
965invoke.cont.i1992:                                ; preds = %land.end70
966  br i1 %arg, label %invoke.cont71, label %if.then.i1993
967
968if.then.i1993:                                    ; preds = %invoke.cont.i1992
969  br label %invoke.cont71
970
971invoke.cont71:                                    ; preds = %if.then.i1993, %invoke.cont.i1992
972  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
973          to label %invoke.cont.i1998 unwind label %lpad.i2000
974
975invoke.cont.i1998:                                ; preds = %invoke.cont71
976  br i1 %arg, label %invoke.cont91, label %if.then.i1999
977
978if.then.i1999:                                    ; preds = %invoke.cont.i1998
979  br label %invoke.cont91
980
981lpad.i2000:                                       ; preds = %invoke.cont71
982  %tmp74 = landingpad { ptr, i32 }
983          cleanup
984  br label %ehcleanup102
985
986invoke.cont91:                                    ; preds = %if.then.i1999, %invoke.cont.i1998
987  %call96 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
988          to label %invoke.cont95 unwind label %lpad94
989
990invoke.cont95:                                    ; preds = %invoke.cont91
991  %call98 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr %call96)
992          to label %invoke.cont97 unwind label %lpad94
993
994invoke.cont97:                                    ; preds = %invoke.cont95
995  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
996          to label %invoke.cont.i2004 unwind label %lpad.i2006
997
998invoke.cont.i2004:                                ; preds = %invoke.cont97
999  br i1 %arg, label %invoke.cont100, label %if.then.i2005
1000
1001if.then.i2005:                                    ; preds = %invoke.cont.i2004
1002  br label %invoke.cont100
1003
1004lpad.i2006:                                       ; preds = %invoke.cont97
1005  %tmp82 = landingpad { ptr, i32 }
1006          cleanup
1007  unreachable
1008
1009invoke.cont100:                                   ; preds = %if.then.i2005, %invoke.cont.i2004
1010  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1011          to label %invoke.cont110 unwind label %lpad109
1012
1013invoke.cont110:                                   ; preds = %invoke.cont100
1014  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1015          to label %invoke.cont.i2010 unwind label %lpad.i2012
1016
1017invoke.cont.i2010:                                ; preds = %invoke.cont110
1018  br i1 %arg, label %invoke.cont117, label %if.then.i2011
1019
1020if.then.i2011:                                    ; preds = %invoke.cont.i2010
1021  br label %invoke.cont117
1022
1023lpad.i2012:                                       ; preds = %invoke.cont110
1024  %tmp98 = landingpad { ptr, i32 }
1025          cleanup
1026  unreachable
1027
1028invoke.cont117:                                   ; preds = %if.then.i2011, %invoke.cont.i2010
1029  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1030          to label %invoke.cont.i2022 unwind label %lpad156.body
1031
1032lpad:                                             ; preds = %entry
1033  %tmp118 = landingpad { ptr, i32 }
1034          cleanup
1035  br label %ehcleanup
1036
1037lpad3:                                            ; preds = %land.rhs, %invoke.cont
1038  %tmp119 = landingpad { ptr, i32 }
1039          cleanup
1040  br label %ehcleanup
1041
1042ehcleanup:                                        ; preds = %lpad3, %lpad
1043  unreachable
1044
1045lpad16:                                           ; preds = %invoke.cont8
1046  %tmp121 = landingpad { ptr, i32 }
1047          cleanup
1048  br label %ehcleanup26
1049
1050lpad20:                                           ; preds = %invoke.cont17
1051  %tmp122 = landingpad { ptr, i32 }
1052          cleanup
1053  br label %ehcleanup26
1054
1055ehcleanup26:                                      ; preds = %lpad20, %lpad16
1056  unreachable
1057
1058lpad35:                                           ; preds = %land.rhs39, %invoke.cont24
1059  %tmp124 = landingpad { ptr, i32 }
1060          cleanup
1061  unreachable
1062
1063lpad51:                                           ; preds = %invoke.cont44
1064  %tmp125 = landingpad { ptr, i32 }
1065          cleanup
1066  unreachable
1067
1068lpad61:                                           ; preds = %land.rhs58
1069  %tmp127 = landingpad { ptr, i32 }
1070          cleanup
1071  unreachable
1072
1073lpad66.body.thread:                               ; preds = %invoke.cont62
1074  %tmp128 = landingpad { ptr, i32 }
1075          cleanup
1076  unreachable
1077
1078lpad66.body:                                      ; preds = %land.end70
1079  %tmp129 = landingpad { ptr, i32 }
1080          cleanup
1081  unreachable
1082
1083lpad94:                                           ; preds = %invoke.cont95, %invoke.cont91
1084  %tmp133 = landingpad { ptr, i32 }
1085          cleanup
1086  br label %ehcleanup102
1087
1088ehcleanup102:                                     ; preds = %lpad94, %lpad.i2000
1089  unreachable
1090
1091lpad109:                                          ; preds = %invoke.cont100
1092  %tmp134 = landingpad { ptr, i32 }
1093          cleanup
1094  unreachable
1095
1096invoke.cont.i2022:                                ; preds = %invoke.cont117
1097  br i1 %arg, label %invoke.cont157, label %if.then.i2023
1098
1099if.then.i2023:                                    ; preds = %invoke.cont.i2022
1100  br label %invoke.cont157
1101
1102invoke.cont157:                                   ; preds = %if.then.i2023, %invoke.cont.i2022
1103  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1104          to label %invoke.cont.i2028 unwind label %lpad164.body
1105
1106invoke.cont.i2028:                                ; preds = %invoke.cont157
1107  br i1 %arg, label %invoke.cont165, label %if.then.i2029
1108
1109if.then.i2029:                                    ; preds = %invoke.cont.i2028
1110  br label %invoke.cont165
1111
1112invoke.cont165:                                   ; preds = %if.then.i2029, %invoke.cont.i2028
1113  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef)
1114          to label %invoke.cont184 unwind label %lpad183
1115
1116invoke.cont184:                                   ; preds = %invoke.cont165
1117  %call186 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1118          to label %invoke.cont185 unwind label %lpad183
1119
1120invoke.cont185:                                   ; preds = %invoke.cont184
1121  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1122          to label %invoke.cont.i2034 unwind label %lpad.i2036
1123
1124invoke.cont.i2034:                                ; preds = %invoke.cont185
1125  br i1 %arg, label %invoke.cont190, label %if.then.i2035
1126
1127if.then.i2035:                                    ; preds = %invoke.cont.i2034
1128  br label %invoke.cont190
1129
1130lpad.i2036:                                       ; preds = %invoke.cont185
1131  %tmp168 = landingpad { ptr, i32 }
1132          cleanup
1133  br label %lpad183.body
1134
1135invoke.cont190:                                   ; preds = %if.then.i2035, %invoke.cont.i2034
1136  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1137          to label %invoke.cont197 unwind label %lpad196
1138
1139invoke.cont197:                                   ; preds = %invoke.cont190
1140  %call202 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1141          to label %invoke.cont201 unwind label %lpad200
1142
1143invoke.cont201:                                   ; preds = %invoke.cont197
1144  %call205 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1145          to label %invoke.cont204 unwind label %lpad203
1146
1147invoke.cont204:                                   ; preds = %invoke.cont201
1148  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1149          to label %invoke.cont.i2040 unwind label %lpad.i2042
1150
1151invoke.cont.i2040:                                ; preds = %invoke.cont204
1152  br i1 %arg, label %invoke.cont207, label %if.then.i2041
1153
1154if.then.i2041:                                    ; preds = %invoke.cont.i2040
1155  br label %invoke.cont207
1156
1157lpad.i2042:                                       ; preds = %invoke.cont204
1158  %tmp181 = landingpad { ptr, i32 }
1159          cleanup
1160  unreachable
1161
1162invoke.cont207:                                   ; preds = %if.then.i2041, %invoke.cont.i2040
1163  %call209 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1164          to label %invoke.cont208 unwind label %lpad203
1165
1166invoke.cont208:                                   ; preds = %invoke.cont207
1167  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1168          to label %invoke.cont.i2046 unwind label %lpad212.body
1169
1170invoke.cont.i2046:                                ; preds = %invoke.cont208
1171  br i1 %arg, label %invoke.cont213, label %if.then.i2047
1172
1173if.then.i2047:                                    ; preds = %invoke.cont.i2046
1174  br label %invoke.cont213
1175
1176invoke.cont213:                                   ; preds = %if.then.i2047, %invoke.cont.i2046
1177  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1178          to label %invoke.cont221 unwind label %lpad220
1179
1180invoke.cont221:                                   ; preds = %invoke.cont213
1181  %call229 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1182          to label %invoke.cont228 unwind label %lpad227
1183
1184invoke.cont228:                                   ; preds = %invoke.cont221
1185  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1186          to label %invoke.cont.i2052 unwind label %lpad.i2054
1187
1188invoke.cont.i2052:                                ; preds = %invoke.cont228
1189  br i1 %arg, label %invoke.cont231, label %if.then.i2053
1190
1191if.then.i2053:                                    ; preds = %invoke.cont.i2052
1192  br label %invoke.cont231
1193
1194lpad.i2054:                                       ; preds = %invoke.cont228
1195  %tmp198 = landingpad { ptr, i32 }
1196          cleanup
1197  unreachable
1198
1199invoke.cont231:                                   ; preds = %if.then.i2053, %invoke.cont.i2052
1200  %call233 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1201          to label %invoke.cont232 unwind label %lpad227
1202
1203invoke.cont232:                                   ; preds = %invoke.cont231
1204  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1205          to label %invoke.cont.i2058 unwind label %lpad236.body
1206
1207invoke.cont.i2058:                                ; preds = %invoke.cont232
1208  br i1 %arg, label %invoke.cont237, label %if.then.i2059
1209
1210if.then.i2059:                                    ; preds = %invoke.cont.i2058
1211  br label %invoke.cont237
1212
1213invoke.cont237:                                   ; preds = %if.then.i2059, %invoke.cont.i2058
1214  %call246 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1215          to label %invoke.cont245 unwind label %lpad244
1216
1217invoke.cont245:                                   ; preds = %invoke.cont237
1218  %call248 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 13)
1219          to label %invoke.cont247 unwind label %lpad244
1220
1221invoke.cont247:                                   ; preds = %invoke.cont245
1222  %call251 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 2)
1223          to label %invoke.cont250 unwind label %lpad249
1224
1225invoke.cont250:                                   ; preds = %invoke.cont247
1226  %call254 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 7)
1227          to label %invoke.cont253 unwind label %lpad252
1228
1229invoke.cont253:                                   ; preds = %invoke.cont250
1230  %call257 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef, i32 3)
1231          to label %invoke.cont256 unwind label %lpad255
1232
1233invoke.cont256:                                   ; preds = %invoke.cont253
1234  %call260 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr undef)
1235          to label %invoke.cont259 unwind label %lpad258
1236
1237invoke.cont259:                                   ; preds = %invoke.cont256
1238  %call267 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1239          to label %invoke.cont266 unwind label %lpad265
1240
1241invoke.cont266:                                   ; preds = %invoke.cont259
1242  %call275 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef)
1243          to label %invoke.cont274 unwind label %lpad273
1244
1245invoke.cont274:                                   ; preds = %invoke.cont266
1246  %call279 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
1247          to label %invoke.cont278 unwind label %lpad277
1248
1249invoke.cont278:                                   ; preds = %invoke.cont274
1250  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1251          to label %invoke.cont.i2064 unwind label %lpad.i2066
1252
1253invoke.cont.i2064:                                ; preds = %invoke.cont278
1254  br i1 %arg, label %invoke.cont281, label %if.then.i2065
1255
1256if.then.i2065:                                    ; preds = %invoke.cont.i2064
1257  br label %invoke.cont281
1258
1259lpad.i2066:                                       ; preds = %invoke.cont278
1260  %tmp253 = landingpad { ptr, i32 }
1261          cleanup
1262  unreachable
1263
1264invoke.cont281:                                   ; preds = %if.then.i2065, %invoke.cont.i2064
1265  %call291 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1266          to label %invoke.cont290 unwind label %lpad289
1267
1268invoke.cont290:                                   ; preds = %invoke.cont281
1269  %call303 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 8)
1270          to label %invoke.cont302 unwind label %lpad301
1271
1272invoke.cont302:                                   ; preds = %invoke.cont290
1273  %call310 = invoke ptr @objc_msgSend(ptr undef, ptr undef, double 5.000000e-01)
1274          to label %invoke.cont309 unwind label %lpad308
1275
1276invoke.cont309:                                   ; preds = %invoke.cont302
1277  %call313 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 42)
1278          to label %invoke.cont312 unwind label %lpad311
1279
1280invoke.cont312:                                   ; preds = %invoke.cont309
1281  %call316 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr undef, i32 2)
1282          to label %invoke.cont315 unwind label %lpad314
1283
1284invoke.cont315:                                   ; preds = %invoke.cont312
1285  %call322 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef)
1286          to label %invoke.cont321 unwind label %lpad320
1287
1288invoke.cont321:                                   ; preds = %invoke.cont315
1289  br i1 %arg, label %land.end344, label %land.rhs335
1290
1291land.rhs335:                                      ; preds = %invoke.cont321
1292  %call342 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1293          to label %land.end344 unwind label %lpad340.body.thread
1294
1295land.end344:                                      ; preds = %land.rhs335, %invoke.cont321
1296  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1297          to label %invoke.cont.i2070 unwind label %lpad340.body
1298
1299invoke.cont.i2070:                                ; preds = %land.end344
1300  br i1 %arg, label %invoke.cont345, label %if.then.i2071
1301
1302if.then.i2071:                                    ; preds = %invoke.cont.i2070
1303  br label %invoke.cont345
1304
1305invoke.cont345:                                   ; preds = %if.then.i2071, %invoke.cont.i2070
1306  %call362 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr undef)
1307          to label %invoke.cont361 unwind label %lpad360
1308
1309invoke.cont361:                                   ; preds = %invoke.cont345
1310  %call365 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1311          to label %invoke.cont364 unwind label %lpad363
1312
1313invoke.cont364:                                   ; preds = %invoke.cont361
1314  %call371 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
1315          to label %invoke.cont370 unwind label %lpad369
1316
1317invoke.cont370:                                   ; preds = %invoke.cont364
1318  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1319          to label %invoke.cont.i2076 unwind label %lpad.i2078
1320
1321invoke.cont.i2076:                                ; preds = %invoke.cont370
1322  br i1 %arg, label %invoke.cont373, label %if.then.i2077
1323
1324if.then.i2077:                                    ; preds = %invoke.cont.i2076
1325  br label %invoke.cont373
1326
1327lpad.i2078:                                       ; preds = %invoke.cont370
1328  %tmp340 = landingpad { ptr, i32 }
1329          cleanup
1330  unreachable
1331
1332invoke.cont373:                                   ; preds = %if.then.i2077, %invoke.cont.i2076
1333  %call377 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 42, ptr undef)
1334          to label %invoke.cont376 unwind label %lpad363
1335
1336invoke.cont376:                                   ; preds = %invoke.cont373
1337  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, i32 5)
1338          to label %invoke.cont382 unwind label %lpad381
1339
1340invoke.cont382:                                   ; preds = %invoke.cont376
1341  %call384 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1342          to label %invoke.cont383 unwind label %lpad381
1343
1344invoke.cont383:                                   ; preds = %invoke.cont382
1345  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1346          to label %invoke.cont.i2082 unwind label %lpad.i2084
1347
1348invoke.cont.i2082:                                ; preds = %invoke.cont383
1349  br i1 %arg, label %invoke.cont392, label %if.then.i2083
1350
1351if.then.i2083:                                    ; preds = %invoke.cont.i2082
1352  br label %invoke.cont392
1353
1354lpad.i2084:                                       ; preds = %invoke.cont383
1355  %tmp360 = landingpad { ptr, i32 }
1356          cleanup
1357  unreachable
1358
1359invoke.cont392:                                   ; preds = %if.then.i2083, %invoke.cont.i2082
1360  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, i32 -2)
1361          to label %invoke.cont395 unwind label %lpad381
1362
1363invoke.cont395:                                   ; preds = %invoke.cont392
1364  %call397 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1365          to label %invoke.cont396 unwind label %lpad381
1366
1367invoke.cont396:                                   ; preds = %invoke.cont395
1368  %call400 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1369          to label %invoke.cont399 unwind label %lpad398
1370
1371invoke.cont399:                                   ; preds = %invoke.cont396
1372  %call403 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
1373          to label %invoke.cont402 unwind label %lpad401
1374
1375invoke.cont402:                                   ; preds = %invoke.cont399
1376  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1377          to label %invoke.cont.i2088 unwind label %lpad.i2090
1378
1379invoke.cont.i2088:                                ; preds = %invoke.cont402
1380  br i1 %arg, label %invoke.cont405, label %if.then.i2089
1381
1382if.then.i2089:                                    ; preds = %invoke.cont.i2088
1383  br label %invoke.cont405
1384
1385lpad.i2090:                                       ; preds = %invoke.cont402
1386  %tmp370 = landingpad { ptr, i32 }
1387          cleanup
1388  unreachable
1389
1390invoke.cont405:                                   ; preds = %if.then.i2089, %invoke.cont.i2088
1391  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, i32 -1)
1392          to label %invoke.cont408 unwind label %lpad381
1393
1394invoke.cont408:                                   ; preds = %invoke.cont405
1395  %call410 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1396          to label %invoke.cont409 unwind label %lpad381
1397
1398invoke.cont409:                                   ; preds = %invoke.cont408
1399  %call413 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1400          to label %invoke.cont412 unwind label %lpad411
1401
1402invoke.cont412:                                   ; preds = %invoke.cont409
1403  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1404          to label %invoke.cont.i2094 unwind label %lpad.i2096
1405
1406invoke.cont.i2094:                                ; preds = %invoke.cont412
1407  br i1 %arg, label %invoke.cont418, label %if.then.i2095
1408
1409if.then.i2095:                                    ; preds = %invoke.cont.i2094
1410  br label %invoke.cont418
1411
1412lpad.i2096:                                       ; preds = %invoke.cont412
1413  %tmp380 = landingpad { ptr, i32 }
1414          cleanup
1415  unreachable
1416
1417invoke.cont418:                                   ; preds = %if.then.i2095, %invoke.cont.i2094
1418  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, i32 0)
1419          to label %invoke.cont422 unwind label %lpad381
1420
1421invoke.cont422:                                   ; preds = %invoke.cont418
1422  %call424 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1423          to label %invoke.cont423 unwind label %lpad381
1424
1425invoke.cont423:                                   ; preds = %invoke.cont422
1426  %call427 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1427          to label %invoke.cont426 unwind label %lpad425
1428
1429invoke.cont426:                                   ; preds = %invoke.cont423
1430  %call430 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
1431          to label %invoke.cont429 unwind label %lpad428
1432
1433invoke.cont429:                                   ; preds = %invoke.cont426
1434  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1435          to label %invoke.cont.i2100 unwind label %lpad.i2102
1436
1437invoke.cont.i2100:                                ; preds = %invoke.cont429
1438  br i1 %arg, label %invoke.cont432, label %if.then.i2101
1439
1440if.then.i2101:                                    ; preds = %invoke.cont.i2100
1441  br label %invoke.cont432
1442
1443lpad.i2102:                                       ; preds = %invoke.cont429
1444  %tmp390 = landingpad { ptr, i32 }
1445          cleanup
1446  unreachable
1447
1448invoke.cont432:                                   ; preds = %if.then.i2101, %invoke.cont.i2100
1449  %call436 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 0)
1450          to label %invoke.cont435 unwind label %lpad381
1451
1452invoke.cont435:                                   ; preds = %invoke.cont432
1453  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1454          to label %invoke.cont.i2106 unwind label %lpad.i2108
1455
1456invoke.cont.i2106:                                ; preds = %invoke.cont435
1457  %call444 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 5)
1458          to label %invoke.cont443 unwind label %lpad381
1459
1460lpad.i2108:                                       ; preds = %invoke.cont435
1461  %tmp396 = landingpad { ptr, i32 }
1462          cleanup
1463  unreachable
1464
1465invoke.cont443:                                   ; preds = %invoke.cont.i2106
1466  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1467          to label %invoke.cont.i2112 unwind label %lpad.i2114
1468
1469invoke.cont.i2112:                                ; preds = %invoke.cont443
1470  br i1 %arg, label %invoke.cont449, label %if.then.i2113
1471
1472if.then.i2113:                                    ; preds = %invoke.cont.i2112
1473  br label %invoke.cont449
1474
1475lpad.i2114:                                       ; preds = %invoke.cont443
1476  %tmp402 = landingpad { ptr, i32 }
1477          cleanup
1478  unreachable
1479
1480invoke.cont449:                                   ; preds = %if.then.i2113, %invoke.cont.i2112
1481  %call453 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 -2)
1482          to label %invoke.cont452 unwind label %lpad381
1483
1484invoke.cont452:                                   ; preds = %invoke.cont449
1485  %call456 = invoke i32 @objc_msgSend(ptr undef, ptr undef)
1486          to label %invoke.cont455 unwind label %lpad454
1487
1488invoke.cont455:                                   ; preds = %invoke.cont452
1489  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1490          to label %invoke.cont.i2118 unwind label %lpad.i2120
1491
1492invoke.cont.i2118:                                ; preds = %invoke.cont455
1493  br i1 %arg, label %invoke.cont458, label %if.then.i2119
1494
1495if.then.i2119:                                    ; preds = %invoke.cont.i2118
1496  br label %invoke.cont458
1497
1498lpad.i2120:                                       ; preds = %invoke.cont455
1499  %tmp408 = landingpad { ptr, i32 }
1500          cleanup
1501  unreachable
1502
1503invoke.cont458:                                   ; preds = %if.then.i2119, %invoke.cont.i2118
1504  %call461 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 -1)
1505          to label %invoke.cont460 unwind label %lpad381
1506
1507invoke.cont460:                                   ; preds = %invoke.cont458
1508  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1509          to label %invoke.cont.i2124 unwind label %lpad.i2126
1510
1511invoke.cont.i2124:                                ; preds = %invoke.cont460
1512  br i1 %arg, label %invoke.cont466, label %if.then.i2125
1513
1514if.then.i2125:                                    ; preds = %invoke.cont.i2124
1515  br label %invoke.cont466
1516
1517lpad.i2126:                                       ; preds = %invoke.cont460
1518  %tmp414 = landingpad { ptr, i32 }
1519          cleanup
1520  br label %ehcleanup477
1521
1522invoke.cont466:                                   ; preds = %if.then.i2125, %invoke.cont.i2124
1523  %call470 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 0)
1524          to label %invoke.cont469 unwind label %lpad381
1525
1526invoke.cont469:                                   ; preds = %invoke.cont466
1527  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1528          to label %invoke.cont.i2130 unwind label %lpad.i2132
1529
1530invoke.cont.i2130:                                ; preds = %invoke.cont469
1531  br i1 %arg, label %invoke.cont475, label %if.then.i2131
1532
1533if.then.i2131:                                    ; preds = %invoke.cont.i2130
1534  br label %invoke.cont475
1535
1536lpad.i2132:                                       ; preds = %invoke.cont469
1537  %tmp420 = landingpad { ptr, i32 }
1538          cleanup
1539  br label %ehcleanup477
1540
1541invoke.cont475:                                   ; preds = %if.then.i2131, %invoke.cont.i2130
1542  %call491 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 1)
1543          to label %invoke.cont490 unwind label %lpad489
1544
1545invoke.cont490:                                   ; preds = %invoke.cont475
1546  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1547          to label %invoke.cont499 unwind label %lpad498
1548
1549invoke.cont499:                                   ; preds = %invoke.cont490
1550  %call504 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1551          to label %invoke.cont503 unwind label %lpad489
1552
1553invoke.cont503:                                   ; preds = %invoke.cont499
1554  %call507 = invoke ptr @objc_msgSend(ptr undef, ptr undef, i32 3)
1555          to label %invoke.cont506 unwind label %lpad505
1556
1557invoke.cont506:                                   ; preds = %invoke.cont503
1558  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1559          to label %invoke.cont509 unwind label %lpad508
1560
1561invoke.cont509:                                   ; preds = %invoke.cont506
1562  %call513 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1563          to label %invoke.cont512 unwind label %lpad489
1564
1565invoke.cont512:                                   ; preds = %invoke.cont509
1566  br i1 %arg, label %msgSend.null-receiver, label %msgSend.call
1567
1568msgSend.call:                                     ; preds = %invoke.cont512
1569  invoke void @objc_msgSend_stret(ptr sret(%struct.CGPoint) undef, ptr undef, ptr undef)
1570          to label %msgSend.cont unwind label %lpad514
1571
1572msgSend.null-receiver:                            ; preds = %invoke.cont512
1573  br label %msgSend.cont
1574
1575msgSend.cont:                                     ; preds = %msgSend.null-receiver, %msgSend.call
1576  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1577          to label %invoke.cont.i2136 unwind label %lpad.i2138
1578
1579invoke.cont.i2136:                                ; preds = %msgSend.cont
1580  br i1 %arg, label %invoke.cont521, label %if.then.i2137
1581
1582if.then.i2137:                                    ; preds = %invoke.cont.i2136
1583  br label %invoke.cont521
1584
1585lpad.i2138:                                       ; preds = %msgSend.cont
1586  %tmp468 = landingpad { ptr, i32 }
1587          cleanup
1588  unreachable
1589
1590invoke.cont521:                                   ; preds = %if.then.i2137, %invoke.cont.i2136
1591  invoke void @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring, ptr undef)
1592          to label %invoke.cont528 unwind label %lpad527
1593
1594invoke.cont528:                                   ; preds = %invoke.cont521
1595  %call532 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1596          to label %invoke.cont531 unwind label %lpad489
1597
1598invoke.cont531:                                   ; preds = %invoke.cont528
1599  %call535 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1600          to label %invoke.cont534 unwind label %lpad533
1601
1602invoke.cont534:                                   ; preds = %invoke.cont531
1603  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr undef, ptr @_unnamed_cfstring)
1604          to label %invoke.cont.i2142 unwind label %lpad.i2144
1605
1606invoke.cont.i2142:                                ; preds = %invoke.cont534
1607  br i1 %arg, label %invoke.cont540, label %if.then.i2143
1608
1609if.then.i2143:                                    ; preds = %invoke.cont.i2142
1610  br label %invoke.cont540
1611
1612lpad.i2144:                                       ; preds = %invoke.cont534
1613  %tmp486 = landingpad { ptr, i32 }
1614          cleanup
1615  unreachable
1616
1617invoke.cont540:                                   ; preds = %if.then.i2143, %invoke.cont.i2142
1618  %call544 = invoke ptr @objc_msgSend(ptr @_unnamed_cfstring, ptr undef, i32 3)
1619          to label %invoke.cont543 unwind label %lpad489
1620
1621invoke.cont543:                                   ; preds = %invoke.cont540
1622  invoke void @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring, ptr undef)
1623          to label %invoke.cont546 unwind label %lpad545
1624
1625invoke.cont546:                                   ; preds = %invoke.cont543
1626  %call549 = invoke ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1627          to label %invoke.cont548 unwind label %lpad489
1628
1629invoke.cont548:                                   ; preds = %invoke.cont546
1630  %call555 = invoke signext i8 @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring)
1631          to label %invoke.cont554 unwind label %lpad553
1632
1633invoke.cont554:                                   ; preds = %invoke.cont548
1634  %tmp499 = call ptr @llvm.objc.retain(ptr @_unnamed_cfstring) #3
1635  invoke void (ptr, ...) @NSLog(ptr @_unnamed_cfstring, ptr %tmp499, ptr @_unnamed_cfstring)
1636          to label %invoke.cont.i2148 unwind label %lpad.i2150
1637
1638invoke.cont.i2148:                                ; preds = %invoke.cont554
1639  call void @llvm.objc.release(ptr %tmp499) #3, !clang.imprecise_release !0
1640  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1641          to label %invoke.cont566 unwind label %lpad565
1642
1643lpad.i2150:                                       ; preds = %invoke.cont554
1644  %tmp500 = landingpad { ptr, i32 }
1645          cleanup
1646  call void @llvm.objc.release(ptr %tmp499) #3, !clang.imprecise_release !0
1647  unreachable
1648
1649invoke.cont566:                                   ; preds = %invoke.cont.i2148
1650  invoke void @objc_msgSend(ptr undef, ptr undef, ptr undef, ptr @_unnamed_cfstring)
1651          to label %invoke.cont572 unwind label %lpad571
1652
1653invoke.cont572:                                   ; preds = %invoke.cont566
1654  %call582 = invoke ptr @objc_msgSend(ptr undef, ptr undef)
1655          to label %invoke.cont581 unwind label %lpad580
1656
1657invoke.cont581:                                   ; preds = %invoke.cont572
1658  unreachable
1659
1660lpad156.body:                                     ; preds = %invoke.cont117
1661  %tmp1157 = landingpad { ptr, i32 }
1662          cleanup
1663  unreachable
1664
1665lpad164.body:                                     ; preds = %invoke.cont157
1666  %tmp1158 = landingpad { ptr, i32 }
1667          cleanup
1668  unreachable
1669
1670lpad183:                                          ; preds = %invoke.cont184, %invoke.cont165
1671  %tmp1159 = landingpad { ptr, i32 }
1672          cleanup
1673  br label %lpad183.body
1674
1675lpad183.body:                                     ; preds = %lpad183, %lpad.i2036
1676  unreachable
1677
1678lpad196:                                          ; preds = %invoke.cont190
1679  %tmp1160 = landingpad { ptr, i32 }
1680          cleanup
1681  unreachable
1682
1683lpad200:                                          ; preds = %invoke.cont197
1684  %tmp1161 = landingpad { ptr, i32 }
1685          cleanup
1686  unreachable
1687
1688lpad203:                                          ; preds = %invoke.cont207, %invoke.cont201
1689  %tmp1162 = landingpad { ptr, i32 }
1690          cleanup
1691  unreachable
1692
1693lpad212.body:                                     ; preds = %invoke.cont208
1694  %tmp1163 = landingpad { ptr, i32 }
1695          cleanup
1696  unreachable
1697
1698lpad220:                                          ; preds = %invoke.cont213
1699  %tmp1164 = landingpad { ptr, i32 }
1700          cleanup
1701  br label %eh.resume
1702
1703lpad227:                                          ; preds = %invoke.cont231, %invoke.cont221
1704  %tmp1166 = landingpad { ptr, i32 }
1705          cleanup
1706  br label %ehcleanup239
1707
1708lpad236.body:                                     ; preds = %invoke.cont232
1709  %tmp1167 = landingpad { ptr, i32 }
1710          cleanup
1711  br label %ehcleanup239
1712
1713ehcleanup239:                                     ; preds = %lpad236.body, %lpad227
1714  unreachable
1715
1716lpad244:                                          ; preds = %invoke.cont245, %invoke.cont237
1717  %tmp1168 = landingpad { ptr, i32 }
1718          cleanup
1719  unreachable
1720
1721lpad249:                                          ; preds = %invoke.cont247
1722  %tmp1169 = landingpad { ptr, i32 }
1723          cleanup
1724  unreachable
1725
1726lpad252:                                          ; preds = %invoke.cont250
1727  %tmp1170 = landingpad { ptr, i32 }
1728          cleanup
1729  br label %ehcleanup263
1730
1731lpad255:                                          ; preds = %invoke.cont253
1732  %tmp1171 = landingpad { ptr, i32 }
1733          cleanup
1734  br label %ehcleanup263
1735
1736lpad258:                                          ; preds = %invoke.cont256
1737  %tmp1172 = landingpad { ptr, i32 }
1738          cleanup
1739  unreachable
1740
1741ehcleanup263:                                     ; preds = %lpad255, %lpad252
1742  unreachable
1743
1744lpad265:                                          ; preds = %invoke.cont259
1745  %tmp1173 = landingpad { ptr, i32 }
1746          cleanup
1747  unreachable
1748
1749lpad273:                                          ; preds = %invoke.cont266
1750  %tmp1175 = landingpad { ptr, i32 }
1751          cleanup
1752  unreachable
1753
1754lpad277:                                          ; preds = %invoke.cont274
1755  %tmp1176 = landingpad { ptr, i32 }
1756          cleanup
1757  unreachable
1758
1759lpad289:                                          ; preds = %invoke.cont281
1760  %tmp1177 = landingpad { ptr, i32 }
1761          cleanup
1762  unreachable
1763
1764lpad301:                                          ; preds = %invoke.cont290
1765  %tmp1180 = landingpad { ptr, i32 }
1766          cleanup
1767  unreachable
1768
1769lpad308:                                          ; preds = %invoke.cont302
1770  %tmp1182 = landingpad { ptr, i32 }
1771          cleanup
1772  unreachable
1773
1774lpad311:                                          ; preds = %invoke.cont309
1775  %tmp1183 = landingpad { ptr, i32 }
1776          cleanup
1777  unreachable
1778
1779lpad314:                                          ; preds = %invoke.cont312
1780  %tmp1184 = landingpad { ptr, i32 }
1781          cleanup
1782  unreachable
1783
1784lpad320:                                          ; preds = %invoke.cont315
1785  %tmp1186 = landingpad { ptr, i32 }
1786          cleanup
1787  unreachable
1788
1789lpad340.body.thread:                              ; preds = %land.rhs335
1790  %tmp1188 = landingpad { ptr, i32 }
1791          cleanup
1792  unreachable
1793
1794lpad340.body:                                     ; preds = %land.end344
1795  %tmp1189 = landingpad { ptr, i32 }
1796          cleanup
1797  unreachable
1798
1799lpad360:                                          ; preds = %invoke.cont345
1800  %tmp1191 = landingpad { ptr, i32 }
1801          cleanup
1802  br label %eh.resume
1803
1804lpad363:                                          ; preds = %invoke.cont373, %invoke.cont361
1805  %tmp1192 = landingpad { ptr, i32 }
1806          cleanup
1807  unreachable
1808
1809lpad369:                                          ; preds = %invoke.cont364
1810  %tmp1194 = landingpad { ptr, i32 }
1811          cleanup
1812  unreachable
1813
1814lpad381:                                          ; preds = %invoke.cont466, %invoke.cont458, %invoke.cont449, %invoke.cont.i2106, %invoke.cont432, %invoke.cont422, %invoke.cont418, %invoke.cont408, %invoke.cont405, %invoke.cont395, %invoke.cont392, %invoke.cont382, %invoke.cont376
1815  %tmp1196 = landingpad { ptr, i32 }
1816          cleanup
1817  br label %ehcleanup477
1818
1819lpad398:                                          ; preds = %invoke.cont396
1820  %tmp1199 = landingpad { ptr, i32 }
1821          cleanup
1822  unreachable
1823
1824lpad401:                                          ; preds = %invoke.cont399
1825  %tmp1200 = landingpad { ptr, i32 }
1826          cleanup
1827  unreachable
1828
1829lpad411:                                          ; preds = %invoke.cont409
1830  %tmp1201 = landingpad { ptr, i32 }
1831          cleanup
1832  unreachable
1833
1834lpad425:                                          ; preds = %invoke.cont423
1835  %tmp1203 = landingpad { ptr, i32 }
1836          cleanup
1837  br label %ehcleanup477
1838
1839lpad428:                                          ; preds = %invoke.cont426
1840  %tmp1204 = landingpad { ptr, i32 }
1841          cleanup
1842  unreachable
1843
1844lpad454:                                          ; preds = %invoke.cont452
1845  %tmp1207 = landingpad { ptr, i32 }
1846          cleanup
1847  unreachable
1848
1849ehcleanup477:                                     ; preds = %lpad425, %lpad381, %lpad.i2132, %lpad.i2126
1850  unreachable
1851
1852lpad489:                                          ; preds = %invoke.cont546, %invoke.cont540, %invoke.cont528, %invoke.cont509, %invoke.cont499, %invoke.cont475
1853  %tmp1211 = landingpad { ptr, i32 }
1854          cleanup
1855  br label %ehcleanup560
1856
1857lpad498:                                          ; preds = %invoke.cont490
1858  %tmp1214 = landingpad { ptr, i32 }
1859          cleanup
1860  unreachable
1861
1862lpad505:                                          ; preds = %invoke.cont503
1863  %tmp1215 = landingpad { ptr, i32 }
1864          cleanup
1865  unreachable
1866
1867lpad508:                                          ; preds = %invoke.cont506
1868  %tmp1216 = landingpad { ptr, i32 }
1869          cleanup
1870  unreachable
1871
1872lpad514:                                          ; preds = %msgSend.call
1873  %tmp1217 = landingpad { ptr, i32 }
1874          cleanup
1875  unreachable
1876
1877lpad527:                                          ; preds = %invoke.cont521
1878  %tmp1219 = landingpad { ptr, i32 }
1879          cleanup
1880  br label %ehcleanup560
1881
1882lpad533:                                          ; preds = %invoke.cont531
1883  %tmp1220 = landingpad { ptr, i32 }
1884          cleanup
1885  unreachable
1886
1887lpad545:                                          ; preds = %invoke.cont543
1888  %tmp1222 = landingpad { ptr, i32 }
1889          cleanup
1890  unreachable
1891
1892lpad553:                                          ; preds = %invoke.cont548
1893  %tmp1224 = landingpad { ptr, i32 }
1894          cleanup
1895  unreachable
1896
1897ehcleanup560:                                     ; preds = %lpad527, %lpad489
1898  br label %eh.resume
1899
1900lpad565:                                          ; preds = %invoke.cont.i2148
1901  %tmp1225 = landingpad { ptr, i32 }
1902          cleanup
1903  unreachable
1904
1905lpad571:                                          ; preds = %invoke.cont566
1906  %tmp1227 = landingpad { ptr, i32 }
1907          cleanup
1908  unreachable
1909
1910lpad580:                                          ; preds = %invoke.cont572
1911  %tmp1228 = landingpad { ptr, i32 }
1912          cleanup
1913  br label %eh.resume
1914
1915eh.resume:                                        ; preds = %lpad580, %ehcleanup560, %lpad360, %lpad220
1916  resume { ptr, i32 } undef
1917}
1918
1919@"OBJC_EHTYPE_$_NSException" = external global i8
1920
1921define void @test4(i1 %arg) personality ptr @__objc_personality_v0 {
1922entry:
1923  br i1 %arg, label %if.end13, label %if.then10
1924
1925if.then10:                                        ; preds = %entry
1926  br label %if.end13
1927
1928if.end13:                                         ; preds = %if.then10, %entry
1929  %0 = call ptr @objc_msgSend(ptr undef, ptr undef, ptr @_unnamed_cfstring, i64 2, ptr @_unnamed_cfstring_2, i8 signext 0), !clang.arc.no_objc_arc_exceptions !0
1930  br i1 %arg, label %if.then17, label %if.end18
1931
1932if.then17:                                        ; preds = %if.end13
1933  br label %if.end18
1934
1935if.end18:                                         ; preds = %if.then17, %if.end13
1936  br i1 %arg, label %if.then64, label %if.end73
1937
1938if.then64:                                        ; preds = %if.end18
1939  br i1 %arg, label %cond.end71, label %cond.true68
1940
1941cond.true68:                                      ; preds = %if.then64
1942  br label %cond.end71
1943
1944cond.end71:                                       ; preds = %cond.true68, %if.then64
1945  br i1 %arg, label %cleanup.action, label %cleanup.done
1946
1947cleanup.action:                                   ; preds = %cond.end71
1948  br label %cleanup.done
1949
1950cleanup.done:                                     ; preds = %cleanup.action, %cond.end71
1951  br label %if.end73
1952
1953if.end73:                                         ; preds = %cleanup.done, %if.end18
1954  br i1 %arg, label %forcoll.empty, label %forcoll.loopinit
1955
1956forcoll.loopinit:                                 ; preds = %if.end73
1957  br label %forcoll.loopbody.outer
1958
1959forcoll.loopbody.outer:                           ; preds = %forcoll.refetch, %forcoll.loopinit
1960  br label %forcoll.loopbody
1961
1962forcoll.loopbody:                                 ; preds = %forcoll.notmutated, %forcoll.loopbody.outer
1963  br i1 %arg, label %forcoll.notmutated, label %forcoll.mutated
1964
1965forcoll.mutated:                                  ; preds = %forcoll.loopbody
1966  br label %forcoll.notmutated
1967
1968forcoll.notmutated:                               ; preds = %forcoll.mutated, %forcoll.loopbody
1969  br i1 %arg, label %forcoll.loopbody, label %forcoll.refetch
1970
1971forcoll.refetch:                                  ; preds = %forcoll.notmutated
1972  br i1 %arg, label %forcoll.empty, label %forcoll.loopbody.outer
1973
1974forcoll.empty:                                    ; preds = %forcoll.refetch, %if.end73
1975  br i1 %arg, label %if.end85, label %if.then82
1976
1977if.then82:                                        ; preds = %forcoll.empty
1978  br label %if.end85
1979
1980if.end85:                                         ; preds = %if.then82, %forcoll.empty
1981  br i1 %arg, label %if.then87, label %if.end102
1982
1983if.then87:                                        ; preds = %if.end85
1984  br i1 %arg, label %if.end94, label %if.then91
1985
1986if.then91:                                        ; preds = %if.then87
1987  br label %if.end94
1988
1989if.end94:                                         ; preds = %if.then91, %if.then87
1990  br i1 %arg, label %if.end101, label %if.then98
1991
1992if.then98:                                        ; preds = %if.end94
1993  br label %if.end101
1994
1995if.end101:                                        ; preds = %if.then98, %if.end94
1996  br label %if.end102
1997
1998if.end102:                                        ; preds = %if.end101, %if.end85
1999  br i1 %arg, label %do.body113, label %if.then107
2000
2001if.then107:                                       ; preds = %if.end102
2002  br label %do.body113
2003
2004do.body113:                                       ; preds = %if.then107, %if.end102
2005  br i1 %arg, label %if.then116, label %if.end117
2006
2007if.then116:                                       ; preds = %do.body113
2008  br label %if.end117
2009
2010if.end117:                                        ; preds = %if.then116, %do.body113
2011  br i1 %arg, label %if.then125, label %if.end126
2012
2013if.then125:                                       ; preds = %if.end117
2014  br label %if.end126
2015
2016if.end126:                                        ; preds = %if.then125, %if.end117
2017  br i1 %arg, label %do.end166, label %cond.true132
2018
2019cond.true132:                                     ; preds = %if.end126
2020  br i1 %arg, label %do.body148, label %cond.true151
2021
2022do.body148:                                       ; preds = %cond.true132
2023  br i1 %arg, label %do.end166, label %cond.true151
2024
2025cond.true151:                                     ; preds = %do.body148, %cond.true132
2026  br i1 %arg, label %if.then162, label %do.end166
2027
2028if.then162:                                       ; preds = %cond.true151
2029  br label %do.end166
2030
2031do.end166:                                        ; preds = %if.then162, %cond.true151, %do.body148, %if.end126
2032  br i1 %arg, label %if.then304, label %if.then170
2033
2034if.then170:                                       ; preds = %do.end166
2035  br i1 %arg, label %do.end193, label %cond.true179
2036
2037cond.true179:                                     ; preds = %if.then170
2038  br i1 %arg, label %if.then190, label %do.end193
2039
2040if.then190:                                       ; preds = %cond.true179
2041  br label %do.end193
2042
2043do.end193:                                        ; preds = %if.then190, %cond.true179, %if.then170
2044  br i1 %arg, label %do.body200, label %do.body283
2045
2046do.body200:                                       ; preds = %do.end193
2047  br i1 %arg, label %do.end254, label %cond.true203
2048
2049cond.true203:                                     ; preds = %do.body200
2050  br i1 %arg, label %do.body218, label %cond.true221
2051
2052do.body218:                                       ; preds = %cond.true203
2053  br i1 %arg, label %do.end254, label %cond.true221
2054
2055cond.true221:                                     ; preds = %do.body218, %cond.true203
2056  br i1 %arg, label %if.then232, label %do.body236
2057
2058if.then232:                                       ; preds = %cond.true221
2059  br label %do.body236
2060
2061do.body236:                                       ; preds = %if.then232, %cond.true221
2062  br i1 %arg, label %do.end254, label %cond.true239
2063
2064cond.true239:                                     ; preds = %do.body236
2065  br i1 %arg, label %if.then250, label %do.end254
2066
2067if.then250:                                       ; preds = %cond.true239
2068  br label %do.end254
2069
2070do.end254:                                        ; preds = %if.then250, %cond.true239, %do.body236, %do.body218, %do.body200
2071  br i1 %arg, label %do.end277, label %cond.true263
2072
2073cond.true263:                                     ; preds = %do.end254
2074  br i1 %arg, label %if.then274, label %do.end277
2075
2076if.then274:                                       ; preds = %cond.true263
2077  unreachable
2078
2079do.end277:                                        ; preds = %cond.true263, %do.end254
2080  br i1 %arg, label %if.then280, label %do.body283
2081
2082if.then280:                                       ; preds = %do.end277
2083  br label %do.body283
2084
2085do.body283:                                       ; preds = %if.then280, %do.end277, %do.end193
2086  br i1 %arg, label %if.end301, label %cond.true286
2087
2088cond.true286:                                     ; preds = %do.body283
2089  br i1 %arg, label %if.then297, label %if.end301
2090
2091if.then297:                                       ; preds = %cond.true286
2092  br label %if.end301
2093
2094if.end301:                                        ; preds = %if.then297, %cond.true286, %do.body283
2095  br i1 %arg, label %if.then304, label %do.body351
2096
2097if.then304:                                       ; preds = %if.end301, %do.end166
2098  br i1 %arg, label %do.body309.lr.ph, label %do.body351
2099
2100do.body309.lr.ph:                                 ; preds = %if.then304
2101  br label %do.body309
2102
2103do.body309:                                       ; preds = %for.cond.backedge, %do.body309.lr.ph
2104  br i1 %arg, label %do.end328, label %cond.true312
2105
2106cond.true312:                                     ; preds = %do.body309
2107  br i1 %arg, label %if.then323, label %do.end328
2108
2109if.then323:                                       ; preds = %cond.true312
2110  br label %do.end328
2111
2112do.end328:                                        ; preds = %if.then323, %cond.true312, %do.body309
2113  br i1 %arg, label %for.cond.backedge, label %cond.true335
2114
2115for.cond.backedge:                                ; preds = %if.then346, %cond.true335, %do.end328
2116  br i1 %arg, label %do.body309, label %do.body351
2117
2118cond.true335:                                     ; preds = %do.end328
2119  br i1 %arg, label %if.then346, label %for.cond.backedge
2120
2121if.then346:                                       ; preds = %cond.true335
2122  br label %for.cond.backedge
2123
2124do.body351:                                       ; preds = %for.cond.backedge, %if.then304, %if.end301
2125  br i1 %arg, label %if.then354, label %if.end355
2126
2127if.then354:                                       ; preds = %do.body351
2128  br label %if.end355
2129
2130if.end355:                                        ; preds = %if.then354, %do.body351
2131  br i1 %arg, label %if.else, label %if.then364
2132
2133if.then364:                                       ; preds = %if.end355
2134  br label %do.body366
2135
2136if.else:                                          ; preds = %if.end355
2137  br label %do.body366
2138
2139do.body366:                                       ; preds = %if.else, %if.then364
2140  br i1 %arg, label %if.then369, label %if.end377.critedge
2141
2142if.then369:                                       ; preds = %do.body366
2143  br label %if.end377
2144
2145if.end377.critedge:                               ; preds = %do.body366
2146  br label %if.end377
2147
2148if.end377:                                        ; preds = %if.end377.critedge, %if.then369
2149  br i1 %arg, label %if.then383, label %if.end392.critedge
2150
2151if.then383:                                       ; preds = %if.end377
2152  br label %if.end392
2153
2154if.end392.critedge:                               ; preds = %if.end377
2155  br label %if.end392
2156
2157if.end392:                                        ; preds = %if.end392.critedge, %if.then383
2158  br i1 %arg, label %if.then398, label %if.end399
2159
2160if.then398:                                       ; preds = %if.end392
2161  br label %if.end399
2162
2163if.end399:                                        ; preds = %if.then398, %if.end392
2164  invoke void @objc_msgSend(ptr undef, ptr undef)
2165          to label %eh.cont unwind label %lpad, !clang.arc.no_objc_arc_exceptions !0
2166
2167eh.cont:                                          ; preds = %if.end399
2168  br i1 %arg, label %if.then430, label %if.end439.critedge
2169
2170if.then430:                                       ; preds = %eh.cont
2171  %1 = call ptr @llvm.objc.retain(ptr %0)
2172  br label %if.end439
2173
2174lpad:                                             ; preds = %if.end399
2175  %2 = landingpad { ptr, i32 }
2176          catch ptr @"OBJC_EHTYPE_$_NSException"
2177  unreachable
2178
2179if.end439.critedge:                               ; preds = %eh.cont
2180  %3 = call ptr @llvm.objc.retain(ptr %0)
2181  br label %if.end439
2182
2183if.end439:                                        ; preds = %if.end439.critedge, %if.then430
2184  call void @llvm.objc.release(ptr %0), !clang.imprecise_release !0
2185  unreachable
2186
2187return:                                           ; No predecessors!
2188  ret void
2189}
2190
2191
2192!0 = !{}
2193