1 ; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \
3 ; RUN: opt < %s -analyze -basicaa -da | FileCheck %s
5 ; ModuleID = 'ExactRDIV.bc'
6 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
7 target triple = "x86_64-apple-macosx10.6.0"
10 ;; for (long int i = 0; i < 10; i++)
12 ;; for (long int j = 0; j < 10; j++)
15 define void @rdiv0(i32* %A, i32* %B) nounwind uwtable ssp {
19 ; CHECK: da analyze - none!
20 ; CHECK: da analyze - none!
21 ; CHECK: da analyze - confused!
22 ; CHECK: da analyze - none!
23 ; CHECK: da analyze - confused!
24 ; CHECK: da analyze - none!
26 for.body: ; preds = %entry, %for.body
27 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
28 %conv = trunc i64 %i.03 to i32
29 %mul = shl nsw i64 %i.03, 2
30 %add = add nsw i64 %mul, 10
31 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
32 store i32 %conv, i32* %arrayidx, align 4
33 %inc = add nsw i64 %i.03, 1
34 %exitcond5 = icmp ne i64 %inc, 10
35 br i1 %exitcond5, label %for.body, label %for.body4.preheader
37 for.body4.preheader: ; preds = %for.body
40 for.body4: ; preds = %for.body4.preheader, %for.body4
41 %j.02 = phi i64 [ %inc9, %for.body4 ], [ 0, %for.body4.preheader ]
42 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
43 %mul5 = shl nsw i64 %j.02, 1
44 %add64 = or i64 %mul5, 1
45 %arrayidx7 = getelementptr inbounds i32, i32* %A, i64 %add64
46 %0 = load i32, i32* %arrayidx7, align 4
47 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
48 store i32 %0, i32* %B.addr.01, align 4
49 %inc9 = add nsw i64 %j.02, 1
50 %exitcond = icmp ne i64 %inc9, 10
51 br i1 %exitcond, label %for.body4, label %for.end10
53 for.end10: ; preds = %for.body4
58 ;; for (long int i = 0; i < 5; i++)
60 ;; for (long int j = 0; j < 10; j++)
63 define void @rdiv1(i32* %A, i32* %B) nounwind uwtable ssp {
67 ; CHECK: da analyze - none!
68 ; CHECK: da analyze - none!
69 ; CHECK: da analyze - confused!
70 ; CHECK: da analyze - none!
71 ; CHECK: da analyze - confused!
72 ; CHECK: da analyze - none!
74 for.body: ; preds = %entry, %for.body
75 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
76 %conv = trunc i64 %i.03 to i32
77 %mul = mul nsw i64 %i.03, 11
78 %sub = add nsw i64 %mul, -45
79 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
80 store i32 %conv, i32* %arrayidx, align 4
81 %inc = add nsw i64 %i.03, 1
82 %exitcond4 = icmp ne i64 %inc, 5
83 br i1 %exitcond4, label %for.body, label %for.body4.preheader
85 for.body4.preheader: ; preds = %for.body
88 for.body4: ; preds = %for.body4.preheader, %for.body4
89 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
90 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
91 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
92 %0 = load i32, i32* %arrayidx5, align 4
93 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
94 store i32 %0, i32* %B.addr.01, align 4
95 %inc7 = add nsw i64 %j.02, 1
96 %exitcond = icmp ne i64 %inc7, 10
97 br i1 %exitcond, label %for.body4, label %for.end8
99 for.end8: ; preds = %for.body4
104 ;; for (long int i = 0; i <= 5; i++)
106 ;; for (long int j = 0; j < 10; j++)
109 define void @rdiv2(i32* %A, i32* %B) nounwind uwtable ssp {
113 ; CHECK: da analyze - none!
114 ; CHECK: da analyze - none!
115 ; CHECK: da analyze - confused!
116 ; CHECK: da analyze - none!
117 ; CHECK: da analyze - confused!
118 ; CHECK: da analyze - none!
120 for.body: ; preds = %entry, %for.body
121 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
122 %conv = trunc i64 %i.03 to i32
123 %mul = mul nsw i64 %i.03, 11
124 %sub = add nsw i64 %mul, -45
125 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
126 store i32 %conv, i32* %arrayidx, align 4
127 %inc = add nsw i64 %i.03, 1
128 %exitcond4 = icmp ne i64 %inc, 6
129 br i1 %exitcond4, label %for.body, label %for.body4.preheader
131 for.body4.preheader: ; preds = %for.body
134 for.body4: ; preds = %for.body4.preheader, %for.body4
135 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
136 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
137 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
138 %0 = load i32, i32* %arrayidx5, align 4
139 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
140 store i32 %0, i32* %B.addr.01, align 4
141 %inc7 = add nsw i64 %j.02, 1
142 %exitcond = icmp ne i64 %inc7, 10
143 br i1 %exitcond, label %for.body4, label %for.end8
145 for.end8: ; preds = %for.body4
150 ;; for (long int i = 0; i < 5; i++)
152 ;; for (long int j = 0; j <= 10; j++)
155 define void @rdiv3(i32* %A, i32* %B) nounwind uwtable ssp {
159 ; CHECK: da analyze - none!
160 ; CHECK: da analyze - none!
161 ; CHECK: da analyze - confused!
162 ; CHECK: da analyze - none!
163 ; CHECK: da analyze - confused!
164 ; CHECK: da analyze - none!
166 for.body: ; preds = %entry, %for.body
167 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
168 %conv = trunc i64 %i.03 to i32
169 %mul = mul nsw i64 %i.03, 11
170 %sub = add nsw i64 %mul, -45
171 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
172 store i32 %conv, i32* %arrayidx, align 4
173 %inc = add nsw i64 %i.03, 1
174 %exitcond4 = icmp ne i64 %inc, 5
175 br i1 %exitcond4, label %for.body, label %for.body4.preheader
177 for.body4.preheader: ; preds = %for.body
180 for.body4: ; preds = %for.body4.preheader, %for.body4
181 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
182 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
183 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
184 %0 = load i32, i32* %arrayidx5, align 4
185 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
186 store i32 %0, i32* %B.addr.01, align 4
187 %inc7 = add nsw i64 %j.02, 1
188 %exitcond = icmp ne i64 %inc7, 11
189 br i1 %exitcond, label %for.body4, label %for.end8
191 for.end8: ; preds = %for.body4
196 ;; for (long int i = 0; i <= 5; i++)
198 ;; for (long int j = 0; j <= 10; j++)
201 define void @rdiv4(i32* %A, i32* %B) nounwind uwtable ssp {
205 ; CHECK: da analyze - none!
206 ; CHECK: da analyze - flow [|<]!
207 ; CHECK: da analyze - confused!
208 ; CHECK: da analyze - none!
209 ; CHECK: da analyze - confused!
210 ; CHECK: da analyze - none!
212 for.body: ; preds = %entry, %for.body
213 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
214 %conv = trunc i64 %i.03 to i32
215 %mul = mul nsw i64 %i.03, 11
216 %sub = add nsw i64 %mul, -45
217 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
218 store i32 %conv, i32* %arrayidx, align 4
219 %inc = add nsw i64 %i.03, 1
220 %exitcond4 = icmp ne i64 %inc, 6
221 br i1 %exitcond4, label %for.body, label %for.body4.preheader
223 for.body4.preheader: ; preds = %for.body
226 for.body4: ; preds = %for.body4.preheader, %for.body4
227 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
228 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
229 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %j.02
230 %0 = load i32, i32* %arrayidx5, align 4
231 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
232 store i32 %0, i32* %B.addr.01, align 4
233 %inc7 = add nsw i64 %j.02, 1
234 %exitcond = icmp ne i64 %inc7, 11
235 br i1 %exitcond, label %for.body4, label %for.end8
237 for.end8: ; preds = %for.body4
242 ;; for (long int i = 0; i < 5; i++)
243 ;; A[-11*i + 45] = i;
244 ;; for (long int j = 0; j < 10; j++)
247 define void @rdiv5(i32* %A, i32* %B) nounwind uwtable ssp {
251 ; CHECK: da analyze - none!
252 ; CHECK: da analyze - none!
253 ; CHECK: da analyze - confused!
254 ; CHECK: da analyze - none!
255 ; CHECK: da analyze - confused!
256 ; CHECK: da analyze - none!
258 for.body: ; preds = %entry, %for.body
259 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
260 %conv = trunc i64 %i.03 to i32
261 %mul = mul nsw i64 %i.03, -11
262 %add = add nsw i64 %mul, 45
263 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
264 store i32 %conv, i32* %arrayidx, align 4
265 %inc = add nsw i64 %i.03, 1
266 %exitcond4 = icmp ne i64 %inc, 5
267 br i1 %exitcond4, label %for.body, label %for.body4.preheader
269 for.body4.preheader: ; preds = %for.body
272 for.body4: ; preds = %for.body4.preheader, %for.body4
273 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
274 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
275 %sub = sub nsw i64 0, %j.02
276 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
277 %0 = load i32, i32* %arrayidx5, align 4
278 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
279 store i32 %0, i32* %B.addr.01, align 4
280 %inc7 = add nsw i64 %j.02, 1
281 %exitcond = icmp ne i64 %inc7, 10
282 br i1 %exitcond, label %for.body4, label %for.end8
284 for.end8: ; preds = %for.body4
289 ;; for (long int i = 0; i <= 5; i++)
290 ;; A[-11*i + 45] = i;
291 ;; for (long int j = 0; j < 10; j++)
294 define void @rdiv6(i32* %A, i32* %B) nounwind uwtable ssp {
298 ; CHECK: da analyze - none!
299 ; CHECK: da analyze - none!
300 ; CHECK: da analyze - confused!
301 ; CHECK: da analyze - none!
302 ; CHECK: da analyze - confused!
303 ; CHECK: da analyze - none!
305 for.body: ; preds = %entry, %for.body
306 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
307 %conv = trunc i64 %i.03 to i32
308 %mul = mul nsw i64 %i.03, -11
309 %add = add nsw i64 %mul, 45
310 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
311 store i32 %conv, i32* %arrayidx, align 4
312 %inc = add nsw i64 %i.03, 1
313 %exitcond4 = icmp ne i64 %inc, 6
314 br i1 %exitcond4, label %for.body, label %for.body4.preheader
316 for.body4.preheader: ; preds = %for.body
319 for.body4: ; preds = %for.body4.preheader, %for.body4
320 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
321 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
322 %sub = sub nsw i64 0, %j.02
323 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
324 %0 = load i32, i32* %arrayidx5, align 4
325 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
326 store i32 %0, i32* %B.addr.01, align 4
327 %inc7 = add nsw i64 %j.02, 1
328 %exitcond = icmp ne i64 %inc7, 10
329 br i1 %exitcond, label %for.body4, label %for.end8
331 for.end8: ; preds = %for.body4
336 ;; for (long int i = 0; i < 5; i++)
337 ;; A[-11*i + 45] = i;
338 ;; for (long int j = 0; j <= 10; j++)
341 define void @rdiv7(i32* %A, i32* %B) nounwind uwtable ssp {
345 ; CHECK: da analyze - none!
346 ; CHECK: da analyze - none!
347 ; CHECK: da analyze - confused!
348 ; CHECK: da analyze - none!
349 ; CHECK: da analyze - confused!
350 ; CHECK: da analyze - none!
352 for.body: ; preds = %entry, %for.body
353 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
354 %conv = trunc i64 %i.03 to i32
355 %mul = mul nsw i64 %i.03, -11
356 %add = add nsw i64 %mul, 45
357 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
358 store i32 %conv, i32* %arrayidx, align 4
359 %inc = add nsw i64 %i.03, 1
360 %exitcond4 = icmp ne i64 %inc, 5
361 br i1 %exitcond4, label %for.body, label %for.body4.preheader
363 for.body4.preheader: ; preds = %for.body
366 for.body4: ; preds = %for.body4.preheader, %for.body4
367 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
368 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
369 %sub = sub nsw i64 0, %j.02
370 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
371 %0 = load i32, i32* %arrayidx5, align 4
372 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
373 store i32 %0, i32* %B.addr.01, align 4
374 %inc7 = add nsw i64 %j.02, 1
375 %exitcond = icmp ne i64 %inc7, 11
376 br i1 %exitcond, label %for.body4, label %for.end8
378 for.end8: ; preds = %for.body4
383 ;; for (long int i = 0; i <= 5; i++)
384 ;; A[-11*i + 45] = i;
385 ;; for (long int j = 0; j <= 10; j++)
388 define void @rdiv8(i32* %A, i32* %B) nounwind uwtable ssp {
392 ; CHECK: da analyze - none!
393 ; CHECK: da analyze - flow [|<]!
394 ; CHECK: da analyze - confused!
395 ; CHECK: da analyze - none!
396 ; CHECK: da analyze - confused!
397 ; CHECK: da analyze - none!
399 for.body: ; preds = %entry, %for.body
400 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
401 %conv = trunc i64 %i.03 to i32
402 %mul = mul nsw i64 %i.03, -11
403 %add = add nsw i64 %mul, 45
404 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %add
405 store i32 %conv, i32* %arrayidx, align 4
406 %inc = add nsw i64 %i.03, 1
407 %exitcond4 = icmp ne i64 %inc, 6
408 br i1 %exitcond4, label %for.body, label %for.body4.preheader
410 for.body4.preheader: ; preds = %for.body
413 for.body4: ; preds = %for.body4.preheader, %for.body4
414 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
415 %B.addr.01 = phi i32* [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
416 %sub = sub nsw i64 0, %j.02
417 %arrayidx5 = getelementptr inbounds i32, i32* %A, i64 %sub
418 %0 = load i32, i32* %arrayidx5, align 4
419 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.01, i64 1
420 store i32 %0, i32* %B.addr.01, align 4
421 %inc7 = add nsw i64 %j.02, 1
422 %exitcond = icmp ne i64 %inc7, 11
423 br i1 %exitcond, label %for.body4, label %for.end8
425 for.end8: ; preds = %for.body4
430 ;; for (long int i = 0; i < 5; i++)
431 ;; for (long int j = 0; j < 10; j++) {
435 define void @rdiv9(i32* %A, i32* %B) nounwind uwtable ssp {
437 br label %for.cond1.preheader
439 ; CHECK: da analyze - none!
440 ; CHECK: da analyze - none!
441 ; CHECK: da analyze - confused!
442 ; CHECK: da analyze - consistent input [S S]!
443 ; CHECK: da analyze - confused!
444 ; CHECK: da analyze - none!
446 for.cond1.preheader: ; preds = %entry, %for.inc5
447 %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
448 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
451 for.body3: ; preds = %for.cond1.preheader, %for.body3
452 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
453 %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
454 %conv = trunc i64 %i.03 to i32
455 %mul = mul nsw i64 %i.03, 11
456 %sub = sub nsw i64 %mul, %j.02
457 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
458 store i32 %conv, i32* %arrayidx, align 4
459 %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
460 %0 = load i32, i32* %arrayidx4, align 4
461 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
462 store i32 %0, i32* %B.addr.11, align 4
463 %inc = add nsw i64 %j.02, 1
464 %exitcond = icmp ne i64 %inc, 10
465 br i1 %exitcond, label %for.body3, label %for.inc5
467 for.inc5: ; preds = %for.body3
468 %scevgep = getelementptr i32, i32* %B.addr.04, i64 10
469 %inc6 = add nsw i64 %i.03, 1
470 %exitcond5 = icmp ne i64 %inc6, 5
471 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
473 for.end7: ; preds = %for.inc5
479 ;; for (long int i = 0; i <= 5; i++)
480 ;; for (long int j = 0; j < 10; j++) {
484 define void @rdiv10(i32* %A, i32* %B) nounwind uwtable ssp {
486 br label %for.cond1.preheader
488 ; CHECK: da analyze - none!
489 ; CHECK: da analyze - none!
490 ; CHECK: da analyze - confused!
491 ; CHECK: da analyze - consistent input [S S]!
492 ; CHECK: da analyze - confused!
493 ; CHECK: da analyze - none!
495 for.cond1.preheader: ; preds = %entry, %for.inc5
496 %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
497 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
500 for.body3: ; preds = %for.cond1.preheader, %for.body3
501 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
502 %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
503 %conv = trunc i64 %i.03 to i32
504 %mul = mul nsw i64 %i.03, 11
505 %sub = sub nsw i64 %mul, %j.02
506 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
507 store i32 %conv, i32* %arrayidx, align 4
508 %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
509 %0 = load i32, i32* %arrayidx4, align 4
510 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
511 store i32 %0, i32* %B.addr.11, align 4
512 %inc = add nsw i64 %j.02, 1
513 %exitcond = icmp ne i64 %inc, 10
514 br i1 %exitcond, label %for.body3, label %for.inc5
516 for.inc5: ; preds = %for.body3
517 %scevgep = getelementptr i32, i32* %B.addr.04, i64 10
518 %inc6 = add nsw i64 %i.03, 1
519 %exitcond5 = icmp ne i64 %inc6, 6
520 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
522 for.end7: ; preds = %for.inc5
527 ;; for (long int i = 0; i < 5; i++)
528 ;; for (long int j = 0; j <= 10; j++) {
532 define void @rdiv11(i32* %A, i32* %B) nounwind uwtable ssp {
534 br label %for.cond1.preheader
536 ; CHECK: da analyze - none!
537 ; CHECK: da analyze - none!
538 ; CHECK: da analyze - confused!
539 ; CHECK: da analyze - consistent input [S S]!
540 ; CHECK: da analyze - confused!
541 ; CHECK: da analyze - none!
543 for.cond1.preheader: ; preds = %entry, %for.inc5
544 %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
545 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
548 for.body3: ; preds = %for.cond1.preheader, %for.body3
549 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
550 %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
551 %conv = trunc i64 %i.03 to i32
552 %mul = mul nsw i64 %i.03, 11
553 %sub = sub nsw i64 %mul, %j.02
554 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
555 store i32 %conv, i32* %arrayidx, align 4
556 %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
557 %0 = load i32, i32* %arrayidx4, align 4
558 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
559 store i32 %0, i32* %B.addr.11, align 4
560 %inc = add nsw i64 %j.02, 1
561 %exitcond = icmp ne i64 %inc, 11
562 br i1 %exitcond, label %for.body3, label %for.inc5
564 for.inc5: ; preds = %for.body3
565 %scevgep = getelementptr i32, i32* %B.addr.04, i64 11
566 %inc6 = add nsw i64 %i.03, 1
567 %exitcond5 = icmp ne i64 %inc6, 5
568 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
570 for.end7: ; preds = %for.inc5
575 ;; for (long int i = 0; i <= 5; i++)
576 ;; for (long int j = 0; j <= 10; j++) {
580 define void @rdiv12(i32* %A, i32* %B) nounwind uwtable ssp {
582 br label %for.cond1.preheader
584 ; CHECK: da analyze - none!
585 ; CHECK: da analyze - flow [* *|<]!
586 ; CHECK: da analyze - confused!
587 ; CHECK: da analyze - consistent input [S S]!
588 ; CHECK: da analyze - confused!
589 ; CHECK: da analyze - none!
591 for.cond1.preheader: ; preds = %entry, %for.inc5
592 %B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc5 ]
593 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
596 for.body3: ; preds = %for.cond1.preheader, %for.body3
597 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
598 %B.addr.11 = phi i32* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
599 %conv = trunc i64 %i.03 to i32
600 %mul = mul nsw i64 %i.03, 11
601 %sub = sub nsw i64 %mul, %j.02
602 %arrayidx = getelementptr inbounds i32, i32* %A, i64 %sub
603 store i32 %conv, i32* %arrayidx, align 4
604 %arrayidx4 = getelementptr inbounds i32, i32* %A, i64 45
605 %0 = load i32, i32* %arrayidx4, align 4
606 %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.11, i64 1
607 store i32 %0, i32* %B.addr.11, align 4
608 %inc = add nsw i64 %j.02, 1
609 %exitcond = icmp ne i64 %inc, 11
610 br i1 %exitcond, label %for.body3, label %for.inc5
612 for.inc5: ; preds = %for.body3
613 %scevgep = getelementptr i32, i32* %B.addr.04, i64 11
614 %inc6 = add nsw i64 %i.03, 1
615 %exitcond5 = icmp ne i64 %inc6, 6
616 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
618 for.end7: ; preds = %for.inc5