; RUN: opt %loadPolly -polly-scops -analyze -polly-delinearize < %s | FileCheck %s

; void foo(long n, long m, long o, double A[n][m][o]) {
;   for (long i = 0; i < n-3; i++)
;     for (long j = 4; j < m; j++)
;       for (long k = 0; k < o-7; k++) {
;         A[i+3][j-4][k+7] = 1.0;
;         A[i][0][k] = 2.0;
;       }
; }

; CHECK: [n, m, o] -> { Stmt_for_body6[i0, i1, i2] -> MemRef_A[3 + i0, i1, 7 + i2] };
; CHECK: [n, m, o] -> { Stmt_for_body6[i0, i1, i2] -> MemRef_A[i0, 0, i2] };

target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; Function Attrs: nounwind uwtable
define void @foo(i64 %n, i64 %m, i64 %o, double* nocapture %A) {
entry:
  %cmp35 = icmp sgt i64 %n, 0
  br i1 %cmp35, label %for.cond1.preheader.lr.ph, label %for.end18

for.cond1.preheader.lr.ph:                        ; preds = %entry
  %cmp233 = icmp sgt i64 %m, 0
  %cmp531 = icmp sgt i64 %o, 0
  %0 = mul nuw i64 %o, %m
  br label %for.cond1.preheader

for.cond1.preheader:                              ; preds = %for.inc16, %for.cond1.preheader.lr.ph
  %i.036 = phi i64 [ 0, %for.cond1.preheader.lr.ph ], [ %inc17, %for.inc16 ]
  br i1 %cmp233, label %for.cond4.preheader.lr.ph, label %for.inc16

for.cond4.preheader.lr.ph:                        ; preds = %for.cond1.preheader
  %add7 = add nsw i64 %i.036, 3
  %1 = mul nsw i64 %add7, %0
  %add = add i64 %1, 7
  %2 = mul nsw i64 %i.036, %0
  br label %for.cond4.preheader

for.cond4.preheader:                              ; preds = %for.inc13, %for.cond4.preheader.lr.ph
  %j.034 = phi i64 [ 4, %for.cond4.preheader.lr.ph ], [ %inc14, %for.inc13 ]
  br i1 %cmp531, label %for.body6.lr.ph, label %for.inc13

for.body6.lr.ph:                                  ; preds = %for.cond4.preheader
  %sub = add nsw i64 %j.034, -4
  %3 = mul nsw i64 %sub, %o
  %arrayidx.sum = add i64 %add, %3
  br label %for.body6

for.body6:                                        ; preds = %for.body6, %for.body6.lr.ph
  %k.032 = phi i64 [ 0, %for.body6.lr.ph ], [ %inc, %for.body6 ]
  %arrayidx8.sum = add i64 %arrayidx.sum, %k.032
  %arrayidx9 = getelementptr inbounds double* %A, i64 %arrayidx8.sum
  store double 1.000000e+00, double* %arrayidx9, align 8
  %arrayidx10.sum = add i64 %k.032, %2
  %arrayidx12 = getelementptr inbounds double* %A, i64 %arrayidx10.sum
  store double 2.000000e+00, double* %arrayidx12, align 8
  %inc = add nsw i64 %k.032, 1
  %osub = sub nsw i64 %o, 7
  %exitcond = icmp eq i64 %inc, %osub
  br i1 %exitcond, label %for.inc13, label %for.body6

for.inc13:                                        ; preds = %for.body6, %for.cond4.preheader
  %inc14 = add nsw i64 %j.034, 1
  %exitcond37 = icmp eq i64 %inc14, %m
  br i1 %exitcond37, label %for.inc16, label %for.cond4.preheader

for.inc16:                                        ; preds = %for.inc13, %for.cond1.preheader
  %inc17 = add nsw i64 %i.036, 1
  %nsub = sub nsw i64 %n, 3
  %exitcond38 = icmp eq i64 %inc17, %nsub
  br i1 %exitcond38, label %for.end18, label %for.cond1.preheader

for.end18:                                        ; preds = %for.inc16, %entry
  ret void
}
