Fix Polly
[polly-mirror.git] / test / ScopDetect / dot-scops.ll
blob2e9f844422d05809748357427880b8562f72bdcb
1 ; RUN: opt %loadPolly -polly-scops -dot-scops -analyze < %s
3 ; Check that the ScopPrinter does not crash.
4 ; ScopPrinter needs the ScopDetection pass, which should depend on
5 ; ScalarEvolution transitively.
7 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
9 define void @func(i32 %n, i32 %m, double* noalias nonnull %A) {
10 entry:
11   br label %outer.for
13 outer.for:
14   %j = phi i32 [0, %entry], [%j.inc, %outer.inc]
15   %j.cmp = icmp slt i32 %j, %n
16   br i1 %j.cmp, label %inner.for, label %outer.exit
18   inner.for:
19     %i = phi i32 [1, %outer.for], [%i.inc, %inner.inc]
20     %b = phi double [0.0, %outer.for], [%a, %inner.inc]
21     %i.cmp = icmp slt i32 %i, %m
22     br i1 %i.cmp, label %body1, label %inner.exit
24     body1:
25       %A_idx = getelementptr inbounds double, double* %A, i32 %i
26       %a = load double, double* %A_idx
27       store double %a, double* %A_idx
28       br label %inner.inc
30   inner.inc:
31     %i.inc = add nuw nsw i32 %i, 1
32     br label %inner.for
34   inner.exit:
35     br label %outer.inc
37 outer.inc:
38   store double %b, double* %A
39   %j.inc = add nuw nsw i32 %j, 1
40   br label %outer.for
42 outer.exit:
43   br label %return
45 return:
46   ret void