1 ; RUN: opt < %s -disable-output "-passes=print<da>" -aa-pipeline=basic-aa 2>&1 \
4 ; ModuleID = 'ExactRDIV.bc'
5 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"
6 target triple = "x86_64-apple-macosx10.6.0"
9 ;; for (long int i = 0; i < 10; i++)
11 ;; for (long int j = 0; j < 10; j++)
14 define void @rdiv0(ptr %A, ptr %B) nounwind uwtable ssp {
18 ; CHECK: da analyze - none!
19 ; CHECK: da analyze - none!
20 ; CHECK: da analyze - confused!
21 ; CHECK: da analyze - none!
22 ; CHECK: da analyze - confused!
23 ; CHECK: da analyze - none!
25 for.body: ; preds = %entry, %for.body
26 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
27 %conv = trunc i64 %i.03 to i32
28 %mul = shl nsw i64 %i.03, 2
29 %add = add nsw i64 %mul, 10
30 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
31 store i32 %conv, ptr %arrayidx, align 4
32 %inc = add nsw i64 %i.03, 1
33 %exitcond5 = icmp ne i64 %inc, 10
34 br i1 %exitcond5, label %for.body, label %for.body4.preheader
36 for.body4.preheader: ; preds = %for.body
39 for.body4: ; preds = %for.body4.preheader, %for.body4
40 %j.02 = phi i64 [ %inc9, %for.body4 ], [ 0, %for.body4.preheader ]
41 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
42 %mul5 = shl nsw i64 %j.02, 1
43 %add64 = or disjoint i64 %mul5, 1
44 %arrayidx7 = getelementptr inbounds i32, ptr %A, i64 %add64
45 %0 = load i32, ptr %arrayidx7, align 4
46 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
47 store i32 %0, ptr %B.addr.01, align 4
48 %inc9 = add nsw i64 %j.02, 1
49 %exitcond = icmp ne i64 %inc9, 10
50 br i1 %exitcond, label %for.body4, label %for.end10
52 for.end10: ; preds = %for.body4
57 ;; for (long int i = 0; i < 5; i++)
59 ;; for (long int j = 0; j < 10; j++)
62 define void @rdiv1(ptr %A, ptr %B) nounwind uwtable ssp {
66 ; CHECK: da analyze - none!
67 ; CHECK: da analyze - none!
68 ; CHECK: da analyze - confused!
69 ; CHECK: da analyze - none!
70 ; CHECK: da analyze - confused!
71 ; CHECK: da analyze - none!
73 for.body: ; preds = %entry, %for.body
74 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
75 %conv = trunc i64 %i.03 to i32
76 %mul = mul nsw i64 %i.03, 11
77 %sub = add nsw i64 %mul, -45
78 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
79 store i32 %conv, ptr %arrayidx, align 4
80 %inc = add nsw i64 %i.03, 1
81 %exitcond4 = icmp ne i64 %inc, 5
82 br i1 %exitcond4, label %for.body, label %for.body4.preheader
84 for.body4.preheader: ; preds = %for.body
87 for.body4: ; preds = %for.body4.preheader, %for.body4
88 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
89 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
90 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02
91 %0 = load i32, ptr %arrayidx5, align 4
92 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
93 store i32 %0, ptr %B.addr.01, align 4
94 %inc7 = add nsw i64 %j.02, 1
95 %exitcond = icmp ne i64 %inc7, 10
96 br i1 %exitcond, label %for.body4, label %for.end8
98 for.end8: ; preds = %for.body4
103 ;; for (long int i = 0; i <= 5; i++)
105 ;; for (long int j = 0; j < 10; j++)
108 define void @rdiv2(ptr %A, ptr %B) nounwind uwtable ssp {
112 ; CHECK: da analyze - none!
113 ; CHECK: da analyze - none!
114 ; CHECK: da analyze - confused!
115 ; CHECK: da analyze - none!
116 ; CHECK: da analyze - confused!
117 ; CHECK: da analyze - none!
119 for.body: ; preds = %entry, %for.body
120 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
121 %conv = trunc i64 %i.03 to i32
122 %mul = mul nsw i64 %i.03, 11
123 %sub = add nsw i64 %mul, -45
124 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
125 store i32 %conv, ptr %arrayidx, align 4
126 %inc = add nsw i64 %i.03, 1
127 %exitcond4 = icmp ne i64 %inc, 6
128 br i1 %exitcond4, label %for.body, label %for.body4.preheader
130 for.body4.preheader: ; preds = %for.body
133 for.body4: ; preds = %for.body4.preheader, %for.body4
134 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
135 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
136 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02
137 %0 = load i32, ptr %arrayidx5, align 4
138 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
139 store i32 %0, ptr %B.addr.01, align 4
140 %inc7 = add nsw i64 %j.02, 1
141 %exitcond = icmp ne i64 %inc7, 10
142 br i1 %exitcond, label %for.body4, label %for.end8
144 for.end8: ; preds = %for.body4
149 ;; for (long int i = 0; i < 5; i++)
151 ;; for (long int j = 0; j <= 10; j++)
154 define void @rdiv3(ptr %A, ptr %B) nounwind uwtable ssp {
158 ; CHECK: da analyze - none!
159 ; CHECK: da analyze - none!
160 ; CHECK: da analyze - confused!
161 ; CHECK: da analyze - none!
162 ; CHECK: da analyze - confused!
163 ; CHECK: da analyze - none!
165 for.body: ; preds = %entry, %for.body
166 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
167 %conv = trunc i64 %i.03 to i32
168 %mul = mul nsw i64 %i.03, 11
169 %sub = add nsw i64 %mul, -45
170 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
171 store i32 %conv, ptr %arrayidx, align 4
172 %inc = add nsw i64 %i.03, 1
173 %exitcond4 = icmp ne i64 %inc, 5
174 br i1 %exitcond4, label %for.body, label %for.body4.preheader
176 for.body4.preheader: ; preds = %for.body
179 for.body4: ; preds = %for.body4.preheader, %for.body4
180 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
181 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
182 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02
183 %0 = load i32, ptr %arrayidx5, align 4
184 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
185 store i32 %0, ptr %B.addr.01, align 4
186 %inc7 = add nsw i64 %j.02, 1
187 %exitcond = icmp ne i64 %inc7, 11
188 br i1 %exitcond, label %for.body4, label %for.end8
190 for.end8: ; preds = %for.body4
195 ;; for (long int i = 0; i <= 5; i++)
197 ;; for (long int j = 0; j <= 10; j++)
200 define void @rdiv4(ptr %A, ptr %B) nounwind uwtable ssp {
204 ; CHECK: da analyze - none!
205 ; CHECK: da analyze - flow [|<]!
206 ; CHECK: da analyze - confused!
207 ; CHECK: da analyze - none!
208 ; CHECK: da analyze - confused!
209 ; CHECK: da analyze - none!
211 for.body: ; preds = %entry, %for.body
212 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
213 %conv = trunc i64 %i.03 to i32
214 %mul = mul nsw i64 %i.03, 11
215 %sub = add nsw i64 %mul, -45
216 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
217 store i32 %conv, ptr %arrayidx, align 4
218 %inc = add nsw i64 %i.03, 1
219 %exitcond4 = icmp ne i64 %inc, 6
220 br i1 %exitcond4, label %for.body, label %for.body4.preheader
222 for.body4.preheader: ; preds = %for.body
225 for.body4: ; preds = %for.body4.preheader, %for.body4
226 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
227 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
228 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %j.02
229 %0 = load i32, ptr %arrayidx5, align 4
230 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
231 store i32 %0, ptr %B.addr.01, align 4
232 %inc7 = add nsw i64 %j.02, 1
233 %exitcond = icmp ne i64 %inc7, 11
234 br i1 %exitcond, label %for.body4, label %for.end8
236 for.end8: ; preds = %for.body4
241 ;; for (long int i = 0; i < 5; i++)
242 ;; A[-11*i + 45] = i;
243 ;; for (long int j = 0; j < 10; j++)
246 define void @rdiv5(ptr %A, ptr %B) nounwind uwtable ssp {
250 ; CHECK: da analyze - none!
251 ; CHECK: da analyze - none!
252 ; CHECK: da analyze - confused!
253 ; CHECK: da analyze - none!
254 ; CHECK: da analyze - confused!
255 ; CHECK: da analyze - none!
257 for.body: ; preds = %entry, %for.body
258 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
259 %conv = trunc i64 %i.03 to i32
260 %mul = mul nsw i64 %i.03, -11
261 %add = add nsw i64 %mul, 45
262 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
263 store i32 %conv, ptr %arrayidx, align 4
264 %inc = add nsw i64 %i.03, 1
265 %exitcond4 = icmp ne i64 %inc, 5
266 br i1 %exitcond4, label %for.body, label %for.body4.preheader
268 for.body4.preheader: ; preds = %for.body
271 for.body4: ; preds = %for.body4.preheader, %for.body4
272 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
273 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
274 %sub = sub nsw i64 0, %j.02
275 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub
276 %0 = load i32, ptr %arrayidx5, align 4
277 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
278 store i32 %0, ptr %B.addr.01, align 4
279 %inc7 = add nsw i64 %j.02, 1
280 %exitcond = icmp ne i64 %inc7, 10
281 br i1 %exitcond, label %for.body4, label %for.end8
283 for.end8: ; preds = %for.body4
288 ;; for (long int i = 0; i <= 5; i++)
289 ;; A[-11*i + 45] = i;
290 ;; for (long int j = 0; j < 10; j++)
293 define void @rdiv6(ptr %A, ptr %B) nounwind uwtable ssp {
297 ; CHECK: da analyze - none!
298 ; CHECK: da analyze - none!
299 ; CHECK: da analyze - confused!
300 ; CHECK: da analyze - none!
301 ; CHECK: da analyze - confused!
302 ; CHECK: da analyze - none!
304 for.body: ; preds = %entry, %for.body
305 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
306 %conv = trunc i64 %i.03 to i32
307 %mul = mul nsw i64 %i.03, -11
308 %add = add nsw i64 %mul, 45
309 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
310 store i32 %conv, ptr %arrayidx, align 4
311 %inc = add nsw i64 %i.03, 1
312 %exitcond4 = icmp ne i64 %inc, 6
313 br i1 %exitcond4, label %for.body, label %for.body4.preheader
315 for.body4.preheader: ; preds = %for.body
318 for.body4: ; preds = %for.body4.preheader, %for.body4
319 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
320 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
321 %sub = sub nsw i64 0, %j.02
322 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub
323 %0 = load i32, ptr %arrayidx5, align 4
324 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
325 store i32 %0, ptr %B.addr.01, align 4
326 %inc7 = add nsw i64 %j.02, 1
327 %exitcond = icmp ne i64 %inc7, 10
328 br i1 %exitcond, label %for.body4, label %for.end8
330 for.end8: ; preds = %for.body4
335 ;; for (long int i = 0; i < 5; i++)
336 ;; A[-11*i + 45] = i;
337 ;; for (long int j = 0; j <= 10; j++)
340 define void @rdiv7(ptr %A, ptr %B) nounwind uwtable ssp {
344 ; CHECK: da analyze - none!
345 ; CHECK: da analyze - none!
346 ; CHECK: da analyze - confused!
347 ; CHECK: da analyze - none!
348 ; CHECK: da analyze - confused!
349 ; CHECK: da analyze - none!
351 for.body: ; preds = %entry, %for.body
352 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
353 %conv = trunc i64 %i.03 to i32
354 %mul = mul nsw i64 %i.03, -11
355 %add = add nsw i64 %mul, 45
356 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
357 store i32 %conv, ptr %arrayidx, align 4
358 %inc = add nsw i64 %i.03, 1
359 %exitcond4 = icmp ne i64 %inc, 5
360 br i1 %exitcond4, label %for.body, label %for.body4.preheader
362 for.body4.preheader: ; preds = %for.body
365 for.body4: ; preds = %for.body4.preheader, %for.body4
366 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
367 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
368 %sub = sub nsw i64 0, %j.02
369 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub
370 %0 = load i32, ptr %arrayidx5, align 4
371 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
372 store i32 %0, ptr %B.addr.01, align 4
373 %inc7 = add nsw i64 %j.02, 1
374 %exitcond = icmp ne i64 %inc7, 11
375 br i1 %exitcond, label %for.body4, label %for.end8
377 for.end8: ; preds = %for.body4
382 ;; for (long int i = 0; i <= 5; i++)
383 ;; A[-11*i + 45] = i;
384 ;; for (long int j = 0; j <= 10; j++)
387 define void @rdiv8(ptr %A, ptr %B) nounwind uwtable ssp {
391 ; CHECK: da analyze - none!
392 ; CHECK: da analyze - flow [|<]!
393 ; CHECK: da analyze - confused!
394 ; CHECK: da analyze - none!
395 ; CHECK: da analyze - confused!
396 ; CHECK: da analyze - none!
398 for.body: ; preds = %entry, %for.body
399 %i.03 = phi i64 [ 0, %entry ], [ %inc, %for.body ]
400 %conv = trunc i64 %i.03 to i32
401 %mul = mul nsw i64 %i.03, -11
402 %add = add nsw i64 %mul, 45
403 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %add
404 store i32 %conv, ptr %arrayidx, align 4
405 %inc = add nsw i64 %i.03, 1
406 %exitcond4 = icmp ne i64 %inc, 6
407 br i1 %exitcond4, label %for.body, label %for.body4.preheader
409 for.body4.preheader: ; preds = %for.body
412 for.body4: ; preds = %for.body4.preheader, %for.body4
413 %j.02 = phi i64 [ %inc7, %for.body4 ], [ 0, %for.body4.preheader ]
414 %B.addr.01 = phi ptr [ %incdec.ptr, %for.body4 ], [ %B, %for.body4.preheader ]
415 %sub = sub nsw i64 0, %j.02
416 %arrayidx5 = getelementptr inbounds i32, ptr %A, i64 %sub
417 %0 = load i32, ptr %arrayidx5, align 4
418 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.01, i64 1
419 store i32 %0, ptr %B.addr.01, align 4
420 %inc7 = add nsw i64 %j.02, 1
421 %exitcond = icmp ne i64 %inc7, 11
422 br i1 %exitcond, label %for.body4, label %for.end8
424 for.end8: ; preds = %for.body4
429 ;; for (long int i = 0; i < 5; i++)
430 ;; for (long int j = 0; j < 10; j++) {
434 define void @rdiv9(ptr %A, ptr %B) nounwind uwtable ssp {
436 br label %for.cond1.preheader
438 ; CHECK: da analyze - none!
439 ; CHECK: da analyze - none!
440 ; CHECK: da analyze - confused!
441 ; CHECK: da analyze - consistent input [S S]!
442 ; CHECK: da analyze - confused!
443 ; CHECK: da analyze - none!
445 for.cond1.preheader: ; preds = %entry, %for.inc5
446 %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]
447 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
450 for.body3: ; preds = %for.cond1.preheader, %for.body3
451 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
452 %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
453 %conv = trunc i64 %i.03 to i32
454 %mul = mul nsw i64 %i.03, 11
455 %sub = sub nsw i64 %mul, %j.02
456 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
457 store i32 %conv, ptr %arrayidx, align 4
458 %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45
459 %0 = load i32, ptr %arrayidx4, align 4
460 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1
461 store i32 %0, ptr %B.addr.11, align 4
462 %inc = add nsw i64 %j.02, 1
463 %exitcond = icmp ne i64 %inc, 10
464 br i1 %exitcond, label %for.body3, label %for.inc5
466 for.inc5: ; preds = %for.body3
467 %scevgep = getelementptr i32, ptr %B.addr.04, i64 10
468 %inc6 = add nsw i64 %i.03, 1
469 %exitcond5 = icmp ne i64 %inc6, 5
470 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
472 for.end7: ; preds = %for.inc5
478 ;; for (long int i = 0; i <= 5; i++)
479 ;; for (long int j = 0; j < 10; j++) {
483 define void @rdiv10(ptr %A, ptr %B) nounwind uwtable ssp {
485 br label %for.cond1.preheader
487 ; CHECK: da analyze - none!
488 ; CHECK: da analyze - none!
489 ; CHECK: da analyze - confused!
490 ; CHECK: da analyze - consistent input [S S]!
491 ; CHECK: da analyze - confused!
492 ; CHECK: da analyze - none!
494 for.cond1.preheader: ; preds = %entry, %for.inc5
495 %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]
496 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
499 for.body3: ; preds = %for.cond1.preheader, %for.body3
500 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
501 %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
502 %conv = trunc i64 %i.03 to i32
503 %mul = mul nsw i64 %i.03, 11
504 %sub = sub nsw i64 %mul, %j.02
505 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
506 store i32 %conv, ptr %arrayidx, align 4
507 %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45
508 %0 = load i32, ptr %arrayidx4, align 4
509 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1
510 store i32 %0, ptr %B.addr.11, align 4
511 %inc = add nsw i64 %j.02, 1
512 %exitcond = icmp ne i64 %inc, 10
513 br i1 %exitcond, label %for.body3, label %for.inc5
515 for.inc5: ; preds = %for.body3
516 %scevgep = getelementptr i32, ptr %B.addr.04, i64 10
517 %inc6 = add nsw i64 %i.03, 1
518 %exitcond5 = icmp ne i64 %inc6, 6
519 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
521 for.end7: ; preds = %for.inc5
526 ;; for (long int i = 0; i < 5; i++)
527 ;; for (long int j = 0; j <= 10; j++) {
531 define void @rdiv11(ptr %A, ptr %B) nounwind uwtable ssp {
533 br label %for.cond1.preheader
535 ; CHECK: da analyze - none!
536 ; CHECK: da analyze - none!
537 ; CHECK: da analyze - confused!
538 ; CHECK: da analyze - consistent input [S S]!
539 ; CHECK: da analyze - confused!
540 ; CHECK: da analyze - none!
542 for.cond1.preheader: ; preds = %entry, %for.inc5
543 %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]
544 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
547 for.body3: ; preds = %for.cond1.preheader, %for.body3
548 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
549 %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
550 %conv = trunc i64 %i.03 to i32
551 %mul = mul nsw i64 %i.03, 11
552 %sub = sub nsw i64 %mul, %j.02
553 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
554 store i32 %conv, ptr %arrayidx, align 4
555 %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45
556 %0 = load i32, ptr %arrayidx4, align 4
557 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1
558 store i32 %0, ptr %B.addr.11, align 4
559 %inc = add nsw i64 %j.02, 1
560 %exitcond = icmp ne i64 %inc, 11
561 br i1 %exitcond, label %for.body3, label %for.inc5
563 for.inc5: ; preds = %for.body3
564 %scevgep = getelementptr i32, ptr %B.addr.04, i64 11
565 %inc6 = add nsw i64 %i.03, 1
566 %exitcond5 = icmp ne i64 %inc6, 5
567 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
569 for.end7: ; preds = %for.inc5
574 ;; for (long int i = 0; i <= 5; i++)
575 ;; for (long int j = 0; j <= 10; j++) {
579 define void @rdiv12(ptr %A, ptr %B) nounwind uwtable ssp {
581 br label %for.cond1.preheader
583 ; CHECK: da analyze - none!
584 ; CHECK: da analyze - flow [* *|<]!
585 ; CHECK: da analyze - confused!
586 ; CHECK: da analyze - consistent input [S S]!
587 ; CHECK: da analyze - confused!
588 ; CHECK: da analyze - none!
590 for.cond1.preheader: ; preds = %entry, %for.inc5
591 %B.addr.04 = phi ptr [ %B, %entry ], [ %scevgep, %for.inc5 ]
592 %i.03 = phi i64 [ 0, %entry ], [ %inc6, %for.inc5 ]
595 for.body3: ; preds = %for.cond1.preheader, %for.body3
596 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
597 %B.addr.11 = phi ptr [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
598 %conv = trunc i64 %i.03 to i32
599 %mul = mul nsw i64 %i.03, 11
600 %sub = sub nsw i64 %mul, %j.02
601 %arrayidx = getelementptr inbounds i32, ptr %A, i64 %sub
602 store i32 %conv, ptr %arrayidx, align 4
603 %arrayidx4 = getelementptr inbounds i32, ptr %A, i64 45
604 %0 = load i32, ptr %arrayidx4, align 4
605 %incdec.ptr = getelementptr inbounds i32, ptr %B.addr.11, i64 1
606 store i32 %0, ptr %B.addr.11, align 4
607 %inc = add nsw i64 %j.02, 1
608 %exitcond = icmp ne i64 %inc, 11
609 br i1 %exitcond, label %for.body3, label %for.inc5
611 for.inc5: ; preds = %for.body3
612 %scevgep = getelementptr i32, ptr %B.addr.04, i64 11
613 %inc6 = add nsw i64 %i.03, 1
614 %exitcond5 = icmp ne i64 %inc6, 6
615 br i1 %exitcond5, label %for.cond1.preheader, label %for.end7
617 for.end7: ; preds = %for.inc5