1 ; RUN: opt -objc-arc -S < %s 2 ; rdar://12277446 3 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. 6 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" 9 10 %struct.NSConstantString.11.33.55.77.99.121.143.332.1130.1340.2768 = type { i32*, i32, i8*, i32 } 11 12 @_unnamed_cfstring_591 = external constant %struct.NSConstantString.11.33.55.77.99.121.143.332.1130.1340.2768, section "__DATA,__cfstring" 13 14 declare i8* @objc_retain(i8*) nonlazybind 15 16 declare void @objc_release(i8*) nonlazybind 17 18 define hidden void @foo() { 19 entry: 20 br i1 undef, label %msgSend.nullinit, label %msgSend.call 21 22 msgSend.call: ; preds = %entry 23 br label %msgSend.cont 24 25 msgSend.nullinit: ; preds = %entry 26 br label %msgSend.cont 27 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 32 33 msgSend.call32: ; preds = %if.end10 34 br label %msgSend.cont34 35 36 msgSend.nullinit33: ; preds = %if.end10 37 br label %msgSend.cont34 38 39 msgSend.cont34: ; preds = %msgSend.nullinit33, %msgSend.call32 40 br i1 undef, label %msgSend.nullinit38, label %msgSend.call37 41 42 msgSend.call37: ; preds = %msgSend.cont34 43 br label %msgSend.cont39 44 45 msgSend.nullinit38: ; preds = %msgSend.cont34 46 br label %msgSend.cont39 47 48 msgSend.cont39: ; preds = %msgSend.nullinit38, %msgSend.call37 49 br i1 undef, label %msgSend.nullinit49, label %msgSend.call48 50 51 msgSend.call48: ; preds = %msgSend.cont39 52 br label %msgSend.cont50 53 54 msgSend.nullinit49: ; preds = %msgSend.cont39 55 br label %msgSend.cont50 56 57 msgSend.cont50: ; preds = %msgSend.nullinit49, %msgSend.call48 58 br i1 undef, label %msgSend.nullinit61, label %msgSend.call60 59 60 msgSend.call60: ; preds = %msgSend.cont50 61 br label %msgSend.cont62 62 63 msgSend.nullinit61: ; preds = %msgSend.cont50 64 br label %msgSend.cont62 65 66 msgSend.cont62: ; preds = %msgSend.nullinit61, %msgSend.call60 67 br i1 undef, label %msgSend.nullinit67, label %msgSend.call66 68 69 msgSend.call66: ; preds = %msgSend.cont62 70 br label %msgSend.cont68 71 72 msgSend.nullinit67: ; preds = %msgSend.cont62 73 br label %msgSend.cont68 74 75 msgSend.cont68: ; preds = %msgSend.nullinit67, %msgSend.call66 76 br i1 undef, label %msgSend.nullinit84, label %msgSend.call83 77 78 msgSend.call83: ; preds = %msgSend.cont68 79 br label %msgSend.cont85 80 81 msgSend.nullinit84: ; preds = %msgSend.cont68 82 br label %msgSend.cont85 83 84 msgSend.cont85: ; preds = %msgSend.nullinit84, %msgSend.call83 85 br i1 undef, label %msgSend.nullinit90, label %msgSend.call89 86 87 msgSend.call89: ; preds = %msgSend.cont85 88 br label %msgSend.cont91 89 90 msgSend.nullinit90: ; preds = %msgSend.cont85 91 br label %msgSend.cont91 92 93 msgSend.cont91: ; preds = %msgSend.nullinit90, %msgSend.call89 94 br i1 undef, label %msgSend.nullinit104, label %msgSend.call103 95 96 msgSend.call103: ; preds = %msgSend.cont91 97 br label %msgSend.cont105 98 99 msgSend.nullinit104: ; preds = %msgSend.cont91 100 br label %msgSend.cont105 101 102 msgSend.cont105: ; preds = %msgSend.nullinit104, %msgSend.call103 103 br i1 undef, label %land.lhs.true, label %if.end123 104 105 land.lhs.true: ; preds = %msgSend.cont105 106 br i1 undef, label %if.then117, label %if.end123 107 108 if.then117: ; preds = %land.lhs.true 109 br label %if.end123 110 111 if.end123: ; preds = %if.then117, %land.lhs.true, %msgSend.cont105 112 br i1 undef, label %msgSend.nullinit132, label %msgSend.call131 113 114 msgSend.call131: ; preds = %if.end123 115 br label %msgSend.cont133 116 117 msgSend.nullinit132: ; preds = %if.end123 118 br label %msgSend.cont133 119 120 msgSend.cont133: ; preds = %msgSend.nullinit132, %msgSend.call131 121 br i1 undef, label %msgSend.nullinit139, label %msgSend.call138 122 123 msgSend.call138: ; preds = %msgSend.cont133 124 br label %msgSend.cont140 125 126 msgSend.nullinit139: ; preds = %msgSend.cont133 127 br label %msgSend.cont140 128 129 msgSend.cont140: ; preds = %msgSend.nullinit139, %msgSend.call138 130 br i1 undef, label %if.then151, label %if.end157 131 132 if.then151: ; preds = %msgSend.cont140 133 br label %if.end157 134 135 if.end157: ; preds = %if.then151, %msgSend.cont140 136 br i1 undef, label %msgSend.nullinit164, label %msgSend.call163 137 138 msgSend.call163: ; preds = %if.end157 139 br label %msgSend.cont165 140 141 msgSend.nullinit164: ; preds = %if.end157 142 br label %msgSend.cont165 143 144 msgSend.cont165: ; preds = %msgSend.nullinit164, %msgSend.call163 145 br i1 undef, label %msgSend.nullinit176, label %msgSend.call175 146 147 msgSend.call175: ; preds = %msgSend.cont165 148 br label %msgSend.cont177 149 150 msgSend.nullinit176: ; preds = %msgSend.cont165 151 br label %msgSend.cont177 152 153 msgSend.cont177: ; preds = %msgSend.nullinit176, %msgSend.call175 154 br i1 undef, label %land.lhs.true181, label %if.end202 155 156 land.lhs.true181: ; preds = %msgSend.cont177 157 br i1 undef, label %if.then187, label %if.end202 158 159 if.then187: ; preds = %land.lhs.true181 160 br i1 undef, label %msgSend.nullinit199, label %msgSend.call198 161 162 msgSend.call198: ; preds = %if.then187 163 br label %msgSend.cont200 164 165 msgSend.nullinit199: ; preds = %if.then187 166 br label %msgSend.cont200 167 168 msgSend.cont200: ; preds = %msgSend.nullinit199, %msgSend.call198 169 br label %if.end202 170 171 if.end202: ; preds = %msgSend.cont200, %land.lhs.true181, %msgSend.cont177 172 br i1 undef, label %msgSend.nullinit236, label %msgSend.call235 173 174 msgSend.call235: ; preds = %if.end202 175 br label %msgSend.cont237 176 177 msgSend.nullinit236: ; preds = %if.end202 178 br label %msgSend.cont237 179 180 msgSend.cont237: ; preds = %msgSend.nullinit236, %msgSend.call235 181 br i1 undef, label %msgSend.nullinit254, label %msgSend.call253 182 183 msgSend.call253: ; preds = %msgSend.cont237 184 br label %msgSend.cont255 185 186 msgSend.nullinit254: ; preds = %msgSend.cont237 187 br label %msgSend.cont255 188 189 msgSend.cont255: ; preds = %msgSend.nullinit254, %msgSend.call253 190 br i1 undef, label %msgSend.nullinit269, label %msgSend.call268 191 192 msgSend.call268: ; preds = %msgSend.cont255 193 br label %msgSend.cont270 194 195 msgSend.nullinit269: ; preds = %msgSend.cont255 196 br label %msgSend.cont270 197 198 msgSend.cont270: ; preds = %msgSend.nullinit269, %msgSend.call268 199 br i1 undef, label %msgSend.nullinit281, label %msgSend.call280 200 201 msgSend.call280: ; preds = %msgSend.cont270 202 br label %msgSend.cont282 203 204 msgSend.nullinit281: ; preds = %msgSend.cont270 205 br label %msgSend.cont282 206 207 msgSend.cont282: ; preds = %msgSend.nullinit281, %msgSend.call280 208 br i1 undef, label %msgSend.nullinit287, label %msgSend.call286 209 210 msgSend.call286: ; preds = %msgSend.cont282 211 br label %msgSend.cont288 212 213 msgSend.nullinit287: ; preds = %msgSend.cont282 214 br label %msgSend.cont288 215 216 msgSend.cont288: ; preds = %msgSend.nullinit287, %msgSend.call286 217 br i1 undef, label %msgSend.nullinit303, label %msgSend.call302 218 219 msgSend.call302: ; preds = %msgSend.cont288 220 br label %msgSend.cont304 221 222 msgSend.nullinit303: ; preds = %msgSend.cont288 223 br label %msgSend.cont304 224 225 msgSend.cont304: ; preds = %msgSend.nullinit303, %msgSend.call302 226 br i1 undef, label %msgSend.nullinit344, label %msgSend.call343 227 228 msgSend.call343: ; preds = %msgSend.cont304 229 br label %msgSend.cont345 230 231 msgSend.nullinit344: ; preds = %msgSend.cont304 232 br label %msgSend.cont345 233 234 msgSend.cont345: ; preds = %msgSend.nullinit344, %msgSend.call343 235 br i1 undef, label %msgSend.nullinit350, label %msgSend.call349 236 237 msgSend.call349: ; preds = %msgSend.cont345 238 br label %msgSend.cont351 239 240 msgSend.nullinit350: ; preds = %msgSend.cont345 241 br label %msgSend.cont351 242 243 msgSend.cont351: ; preds = %msgSend.nullinit350, %msgSend.call349 244 br i1 undef, label %msgSend.nullinit366, label %msgSend.call365 245 246 msgSend.call365: ; preds = %msgSend.cont351 247 br label %msgSend.cont367 248 249 msgSend.nullinit366: ; preds = %msgSend.cont351 250 br label %msgSend.cont367 251 252 msgSend.cont367: ; preds = %msgSend.nullinit366, %msgSend.call365 253 br i1 undef, label %msgSend.nullinit376, label %msgSend.call375 254 255 msgSend.call375: ; preds = %msgSend.cont367 256 br label %msgSend.cont377 257 258 msgSend.nullinit376: ; preds = %msgSend.cont367 259 br label %msgSend.cont377 260 261 msgSend.cont377: ; preds = %msgSend.nullinit376, %msgSend.call375 262 br i1 undef, label %if.then384, label %if.else401 263 264 if.then384: ; preds = %msgSend.cont377 265 br i1 undef, label %msgSend.nullinit392, label %msgSend.call391 266 267 msgSend.call391: ; preds = %if.then384 268 br label %msgSend.cont393 269 270 msgSend.nullinit392: ; preds = %if.then384 271 br label %msgSend.cont393 272 273 msgSend.cont393: ; preds = %msgSend.nullinit392, %msgSend.call391 274 br label %if.end418 275 276 if.else401: ; preds = %msgSend.cont377 277 br i1 undef, label %msgSend.nullinit409, label %msgSend.call408 278 279 msgSend.call408: ; preds = %if.else401 280 br label %msgSend.cont410 281 282 msgSend.nullinit409: ; preds = %if.else401 283 br label %msgSend.cont410 284 285 msgSend.cont410: ; preds = %msgSend.nullinit409, %msgSend.call408 286 br label %if.end418 287 288 if.end418: ; preds = %msgSend.cont410, %msgSend.cont393 289 br i1 undef, label %msgSend.nullinit470, label %msgSend.call469 290 291 msgSend.call469: ; preds = %if.end418 292 br label %msgSend.cont471 293 294 msgSend.nullinit470: ; preds = %if.end418 295 br label %msgSend.cont471 296 297 msgSend.cont471: ; preds = %msgSend.nullinit470, %msgSend.call469 298 br i1 undef, label %msgSend.nullinit484, label %msgSend.call483 299 300 msgSend.call483: ; preds = %msgSend.cont471 301 br label %msgSend.cont485 302 303 msgSend.nullinit484: ; preds = %msgSend.cont471 304 br label %msgSend.cont485 305 306 msgSend.cont485: ; preds = %msgSend.nullinit484, %msgSend.call483 307 br i1 undef, label %msgSend.nullinit500, label %msgSend.call499 308 309 msgSend.call499: ; preds = %msgSend.cont485 310 br label %msgSend.cont501 311 312 msgSend.nullinit500: ; preds = %msgSend.cont485 313 br label %msgSend.cont501 314 315 msgSend.cont501: ; preds = %msgSend.nullinit500, %msgSend.call499 316 br i1 undef, label %msgSend.nullinit506, label %msgSend.call505 317 318 msgSend.call505: ; preds = %msgSend.cont501 319 br label %msgSend.cont507 320 321 msgSend.nullinit506: ; preds = %msgSend.cont501 322 br label %msgSend.cont507 323 324 msgSend.cont507: ; preds = %msgSend.nullinit506, %msgSend.call505 325 call void @objc_release(i8* %0) nounwind, !clang.imprecise_release !0 326 ret void 327 } 328 329 !0 = metadata !{} 330