
; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s --check-prefix=AST
;
;    void f(int *A, int c, int N) {
;      switch (c) {
;      case -1: {
;        for (int j = N; j > 0; j--)
;          A[j] += A[j - 1];
;        break;
;      }
;      case 1: {
;        for (int j = 1; j <= N; j++)
;          A[j] += A[j - 1];
;        break;
;      }
;      }
;    }
;
; CHECK:    Statements {
; CHECK:      Stmt_for_body
; CHECK:            Domain :=
; CHECK:                [c, N] -> { Stmt_for_body[i0] : c = -1 and i0 >= 0 and i0 <= -1 + N };
; CHECK:            Schedule :=
; CHECK:                [c, N] -> { Stmt_for_body[i0] -> [1, i0] };
; CHECK:      Stmt_for_body_7
; CHECK:            Domain :=
; CHECK:                [c, N] -> { Stmt_for_body_7[i0] : c = 1 and i0 >= 0 and i0 <= -1 + N };
; CHECK:            Schedule :=
; CHECK:                [c, N] -> { Stmt_for_body_7[i0] -> [0, i0] };
; CHECK:    }
;
; AST:  if (1)
;
; AST:      if (c == 1) {
; AST:        for (int c0 = 0; c0 < N; c0 += 1)
; AST:          Stmt_for_body_7(c0);
; AST:      } else if (c == -1)
; AST:        for (int c0 = 0; c0 < N; c0 += 1)
; AST:          Stmt_for_body(c0);
;
; AST:  else
; AST:      {  /* original code */ }
;
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

define void @f(i32* %A, i32 %c, i32 %N) {
entry:
  br label %entry.split

entry.split:
  switch i32 %c, label %sw.epilog [
    i32 -1, label %sw.bb
    i32 1, label %sw.bb.3
  ]

sw.bb:                                            ; preds = %entry
  %tmp = sext i32 %N to i64
  br label %for.cond

for.cond:                                         ; preds = %for.inc, %sw.bb
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ %tmp, %sw.bb ]
  %j.0 = phi i32 [ %N, %sw.bb ], [ %dec, %for.inc ]
  %cmp = icmp sgt i64 %indvars.iv, 0
  br i1 %cmp, label %for.body, label %for.end

for.body:                                         ; preds = %for.cond
  %sub = add nsw i32 %j.0, -1
  %idxprom = sext i32 %sub to i64
  %arrayidx = getelementptr inbounds i32, i32* %A, i64 %idxprom
  %tmp6 = load i32, i32* %arrayidx, align 4
  %arrayidx2 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv
  %tmp7 = load i32, i32* %arrayidx2, align 4
  %add = add nsw i32 %tmp7, %tmp6
  store i32 %add, i32* %arrayidx2, align 4
  br label %for.inc

for.inc:                                          ; preds = %for.body
  %dec = add nsw i32 %j.0, -1
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  br label %for.cond

for.end:                                          ; preds = %for.cond
  br label %sw.epilog

sw.bb.3:                                          ; preds = %entry
  %tmp8 = sext i32 %N to i64
  br label %for.cond.5

for.cond.5:                                       ; preds = %for.inc.14, %sw.bb.3
  %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc.14 ], [ 1, %sw.bb.3 ]
  %cmp6 = icmp sgt i64 %indvars.iv3, %tmp8
  br i1 %cmp6, label %for.end.15, label %for.body.7

for.body.7:                                       ; preds = %for.cond.5
  %tmp9 = add nsw i64 %indvars.iv3, -1
  %arrayidx10 = getelementptr inbounds i32, i32* %A, i64 %tmp9
  %tmp10 = load i32, i32* %arrayidx10, align 4
  %arrayidx12 = getelementptr inbounds i32, i32* %A, i64 %indvars.iv3
  %tmp11 = load i32, i32* %arrayidx12, align 4
  %add13 = add nsw i32 %tmp11, %tmp10
  store i32 %add13, i32* %arrayidx12, align 4
  br label %for.inc.14

for.inc.14:                                       ; preds = %for.body.7
  %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
  br label %for.cond.5

for.end.15:                                       ; preds = %for.cond.5
  br label %sw.epilog

sw.epilog:                                        ; preds = %for.end.15, %for.end, %entry
  ret void
}
