1 ; RUN: opt -objc-arc -S < %s
4 ; The total number of paths grows exponentially with the number of branches, and a
5 ; computation of this number can overflow any reasonable fixed-sized integer.
7 target 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"
8 target triple = "thumbv7-apple-ios5.0.0"
10 %struct.NSConstantString.11.33.55.77.99.121.143.332.1130.1340.2768 = type { i32*, i32, i8*, i32 }
12 @_unnamed_cfstring_591 = external constant %struct.NSConstantString.11.33.55.77.99.121.143.332.1130.1340.2768, section "__DATA,__cfstring"
14 declare i8* @objc_retain(i8*) nonlazybind
16 declare void @objc_release(i8*) nonlazybind
18 define hidden void @foo() {
20 br i1 undef, label %msgSend.nullinit, label %msgSend.call
22 msgSend.call: ; preds = %entry
23 br label %msgSend.cont
25 msgSend.nullinit: ; preds = %entry
26 br label %msgSend.cont
28 msgSend.cont: ; preds = %msgSend.nullinit, %msgSend.call
29 %0 = bitcast %struct.NSConstantString.11.33.55.77.99.121.143.332.1130.1340.2768* @_unnamed_cfstring_591 to i8*
30 %1 = call i8* @objc_retain(i8* %0) nounwind
31 br i1 undef, label %msgSend.nullinit33, label %msgSend.call32
33 msgSend.call32: ; preds = %if.end10
34 br label %msgSend.cont34
36 msgSend.nullinit33: ; preds = %if.end10
37 br label %msgSend.cont34
39 msgSend.cont34: ; preds = %msgSend.nullinit33, %msgSend.call32
40 br i1 undef, label %msgSend.nullinit38, label %msgSend.call37
42 msgSend.call37: ; preds = %msgSend.cont34
43 br label %msgSend.cont39
45 msgSend.nullinit38: ; preds = %msgSend.cont34
46 br label %msgSend.cont39
48 msgSend.cont39: ; preds = %msgSend.nullinit38, %msgSend.call37
49 br i1 undef, label %msgSend.nullinit49, label %msgSend.call48
51 msgSend.call48: ; preds = %msgSend.cont39
52 br label %msgSend.cont50
54 msgSend.nullinit49: ; preds = %msgSend.cont39
55 br label %msgSend.cont50
57 msgSend.cont50: ; preds = %msgSend.nullinit49, %msgSend.call48
58 br i1 undef, label %msgSend.nullinit61, label %msgSend.call60
60 msgSend.call60: ; preds = %msgSend.cont50
61 br label %msgSend.cont62
63 msgSend.nullinit61: ; preds = %msgSend.cont50
64 br label %msgSend.cont62
66 msgSend.cont62: ; preds = %msgSend.nullinit61, %msgSend.call60
67 br i1 undef, label %msgSend.nullinit67, label %msgSend.call66
69 msgSend.call66: ; preds = %msgSend.cont62
70 br label %msgSend.cont68
72 msgSend.nullinit67: ; preds = %msgSend.cont62
73 br label %msgSend.cont68
75 msgSend.cont68: ; preds = %msgSend.nullinit67, %msgSend.call66
76 br i1 undef, label %msgSend.nullinit84, label %msgSend.call83
78 msgSend.call83: ; preds = %msgSend.cont68
79 br label %msgSend.cont85
81 msgSend.nullinit84: ; preds = %msgSend.cont68
82 br label %msgSend.cont85
84 msgSend.cont85: ; preds = %msgSend.nullinit84, %msgSend.call83
85 br i1 undef, label %msgSend.nullinit90, label %msgSend.call89
87 msgSend.call89: ; preds = %msgSend.cont85
88 br label %msgSend.cont91
90 msgSend.nullinit90: ; preds = %msgSend.cont85
91 br label %msgSend.cont91
93 msgSend.cont91: ; preds = %msgSend.nullinit90, %msgSend.call89
94 br i1 undef, label %msgSend.nullinit104, label %msgSend.call103
96 msgSend.call103: ; preds = %msgSend.cont91
97 br label %msgSend.cont105
99 msgSend.nullinit104: ; preds = %msgSend.cont91
100 br label %msgSend.cont105
102 msgSend.cont105: ; preds = %msgSend.nullinit104, %msgSend.call103
103 br i1 undef, label %land.lhs.true, label %if.end123
105 land.lhs.true: ; preds = %msgSend.cont105
106 br i1 undef, label %if.then117, label %if.end123
108 if.then117: ; preds = %land.lhs.true
111 if.end123: ; preds = %if.then117, %land.lhs.true, %msgSend.cont105
112 br i1 undef, label %msgSend.nullinit132, label %msgSend.call131
114 msgSend.call131: ; preds = %if.end123
115 br label %msgSend.cont133
117 msgSend.nullinit132: ; preds = %if.end123
118 br label %msgSend.cont133
120 msgSend.cont133: ; preds = %msgSend.nullinit132, %msgSend.call131
121 br i1 undef, label %msgSend.nullinit139, label %msgSend.call138
123 msgSend.call138: ; preds = %msgSend.cont133
124 br label %msgSend.cont140
126 msgSend.nullinit139: ; preds = %msgSend.cont133
127 br label %msgSend.cont140
129 msgSend.cont140: ; preds = %msgSend.nullinit139, %msgSend.call138
130 br i1 undef, label %if.then151, label %if.end157
132 if.then151: ; preds = %msgSend.cont140
135 if.end157: ; preds = %if.then151, %msgSend.cont140
136 br i1 undef, label %msgSend.nullinit164, label %msgSend.call163
138 msgSend.call163: ; preds = %if.end157
139 br label %msgSend.cont165
141 msgSend.nullinit164: ; preds = %if.end157
142 br label %msgSend.cont165
144 msgSend.cont165: ; preds = %msgSend.nullinit164, %msgSend.call163
145 br i1 undef, label %msgSend.nullinit176, label %msgSend.call175
147 msgSend.call175: ; preds = %msgSend.cont165
148 br label %msgSend.cont177
150 msgSend.nullinit176: ; preds = %msgSend.cont165
151 br label %msgSend.cont177
153 msgSend.cont177: ; preds = %msgSend.nullinit176, %msgSend.call175
154 br i1 undef, label %land.lhs.true181, label %if.end202
156 land.lhs.true181: ; preds = %msgSend.cont177
157 br i1 undef, label %if.then187, label %if.end202
159 if.then187: ; preds = %land.lhs.true181
160 br i1 undef, label %msgSend.nullinit199, label %msgSend.call198
162 msgSend.call198: ; preds = %if.then187
163 br label %msgSend.cont200
165 msgSend.nullinit199: ; preds = %if.then187
166 br label %msgSend.cont200
168 msgSend.cont200: ; preds = %msgSend.nullinit199, %msgSend.call198
171 if.end202: ; preds = %msgSend.cont200, %land.lhs.true181, %msgSend.cont177
172 br i1 undef, label %msgSend.nullinit236, label %msgSend.call235
174 msgSend.call235: ; preds = %if.end202
175 br label %msgSend.cont237
177 msgSend.nullinit236: ; preds = %if.end202
178 br label %msgSend.cont237
180 msgSend.cont237: ; preds = %msgSend.nullinit236, %msgSend.call235
181 br i1 undef, label %msgSend.nullinit254, label %msgSend.call253
183 msgSend.call253: ; preds = %msgSend.cont237
184 br label %msgSend.cont255
186 msgSend.nullinit254: ; preds = %msgSend.cont237
187 br label %msgSend.cont255
189 msgSend.cont255: ; preds = %msgSend.nullinit254, %msgSend.call253
190 br i1 undef, label %msgSend.nullinit269, label %msgSend.call268
192 msgSend.call268: ; preds = %msgSend.cont255
193 br label %msgSend.cont270
195 msgSend.nullinit269: ; preds = %msgSend.cont255
196 br label %msgSend.cont270
198 msgSend.cont270: ; preds = %msgSend.nullinit269, %msgSend.call268
199 br i1 undef, label %msgSend.nullinit281, label %msgSend.call280
201 msgSend.call280: ; preds = %msgSend.cont270
202 br label %msgSend.cont282
204 msgSend.nullinit281: ; preds = %msgSend.cont270
205 br label %msgSend.cont282
207 msgSend.cont282: ; preds = %msgSend.nullinit281, %msgSend.call280
208 br i1 undef, label %msgSend.nullinit287, label %msgSend.call286
210 msgSend.call286: ; preds = %msgSend.cont282
211 br label %msgSend.cont288
213 msgSend.nullinit287: ; preds = %msgSend.cont282
214 br label %msgSend.cont288
216 msgSend.cont288: ; preds = %msgSend.nullinit287, %msgSend.call286
217 br i1 undef, label %msgSend.nullinit303, label %msgSend.call302
219 msgSend.call302: ; preds = %msgSend.cont288
220 br label %msgSend.cont304
222 msgSend.nullinit303: ; preds = %msgSend.cont288
223 br label %msgSend.cont304
225 msgSend.cont304: ; preds = %msgSend.nullinit303, %msgSend.call302
226 br i1 undef, label %msgSend.nullinit344, label %msgSend.call343
228 msgSend.call343: ; preds = %msgSend.cont304
229 br label %msgSend.cont345
231 msgSend.nullinit344: ; preds = %msgSend.cont304
232 br label %msgSend.cont345
234 msgSend.cont345: ; preds = %msgSend.nullinit344, %msgSend.call343
235 br i1 undef, label %msgSend.nullinit350, label %msgSend.call349
237 msgSend.call349: ; preds = %msgSend.cont345
238 br label %msgSend.cont351
240 msgSend.nullinit350: ; preds = %msgSend.cont345
241 br label %msgSend.cont351
243 msgSend.cont351: ; preds = %msgSend.nullinit350, %msgSend.call349
244 br i1 undef, label %msgSend.nullinit366, label %msgSend.call365
246 msgSend.call365: ; preds = %msgSend.cont351
247 br label %msgSend.cont367
249 msgSend.nullinit366: ; preds = %msgSend.cont351
250 br label %msgSend.cont367
252 msgSend.cont367: ; preds = %msgSend.nullinit366, %msgSend.call365
253 br i1 undef, label %msgSend.nullinit376, label %msgSend.call375
255 msgSend.call375: ; preds = %msgSend.cont367
256 br label %msgSend.cont377
258 msgSend.nullinit376: ; preds = %msgSend.cont367
259 br label %msgSend.cont377
261 msgSend.cont377: ; preds = %msgSend.nullinit376, %msgSend.call375
262 br i1 undef, label %if.then384, label %if.else401
264 if.then384: ; preds = %msgSend.cont377
265 br i1 undef, label %msgSend.nullinit392, label %msgSend.call391
267 msgSend.call391: ; preds = %if.then384
268 br label %msgSend.cont393
270 msgSend.nullinit392: ; preds = %if.then384
271 br label %msgSend.cont393
273 msgSend.cont393: ; preds = %msgSend.nullinit392, %msgSend.call391
276 if.else401: ; preds = %msgSend.cont377
277 br i1 undef, label %msgSend.nullinit409, label %msgSend.call408
279 msgSend.call408: ; preds = %if.else401
280 br label %msgSend.cont410
282 msgSend.nullinit409: ; preds = %if.else401
283 br label %msgSend.cont410
285 msgSend.cont410: ; preds = %msgSend.nullinit409, %msgSend.call408
288 if.end418: ; preds = %msgSend.cont410, %msgSend.cont393
289 br i1 undef, label %msgSend.nullinit470, label %msgSend.call469
291 msgSend.call469: ; preds = %if.end418
292 br label %msgSend.cont471
294 msgSend.nullinit470: ; preds = %if.end418
295 br label %msgSend.cont471
297 msgSend.cont471: ; preds = %msgSend.nullinit470, %msgSend.call469
298 br i1 undef, label %msgSend.nullinit484, label %msgSend.call483
300 msgSend.call483: ; preds = %msgSend.cont471
301 br label %msgSend.cont485
303 msgSend.nullinit484: ; preds = %msgSend.cont471
304 br label %msgSend.cont485
306 msgSend.cont485: ; preds = %msgSend.nullinit484, %msgSend.call483
307 br i1 undef, label %msgSend.nullinit500, label %msgSend.call499
309 msgSend.call499: ; preds = %msgSend.cont485
310 br label %msgSend.cont501
312 msgSend.nullinit500: ; preds = %msgSend.cont485
313 br label %msgSend.cont501
315 msgSend.cont501: ; preds = %msgSend.nullinit500, %msgSend.call499
316 br i1 undef, label %msgSend.nullinit506, label %msgSend.call505
318 msgSend.call505: ; preds = %msgSend.cont501
319 br label %msgSend.cont507
321 msgSend.nullinit506: ; preds = %msgSend.cont501
322 br label %msgSend.cont507
324 msgSend.cont507: ; preds = %msgSend.nullinit506, %msgSend.call505
325 call void @objc_release(i8* %0) nounwind, !clang.imprecise_release !0