xref: /llvm-project/polly/test/ScopInfo/NonAffine/modulo_backedge.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s
2;
3; CHECK: Domain :=
4; CHECK:   { Stmt_for_body[i0] : 0 <= i0 <= 6 };
5;
6;    void foo(float *A) {
7;      for (long i = 1;; i++) {
8;        A[i] += 1;
9;        if (i % 7 == 0)
10;          break;
11;      }
12;    }
13;
14target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
15
16define void @foo(ptr %A) {
17entry:
18  br label %for.cond
19
20for.cond:                                         ; preds = %for.inc, %entry
21  %i.0 = phi i64 [ 1, %entry ], [ %inc, %for.inc ]
22  br label %for.body
23
24for.body:                                         ; preds = %for.cond
25  %arrayidx0 = getelementptr inbounds float, ptr %A, i64 %i.0
26  %tmp0 = load float, ptr %arrayidx0, align 4
27  %add0 = fadd float %tmp0, 2.000000e+00
28  store float %add0, ptr %arrayidx0, align 4
29  %rem1 = srem i64 %i.0, 7
30  %tobool = icmp eq i64 %rem1, 0
31  br i1 %tobool, label %for.end, label %if.end
32
33if.end:                                           ; preds = %for.body, %if.then
34  br label %for.inc
35
36for.inc:                                          ; preds = %if.end
37  %inc = add nuw nsw i64 %i.0, 1
38  br label %for.cond
39
40for.end:                                          ; preds = %for.cond
41  ret void
42}
43