; RUN: opt %loadPolly -pass-remarks-analysis="polly-scops" -polly-scops -disable-output < %s 2>&1 | FileCheck %s
; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s --check-prefix=SCOP
;
; CHECK:      remark: <unknown>:0:0: SCoP begins here.
; CHECK-NEXT: remark: <unknown>:0:0: Use user assumption: [M, N] -> {  : N <= 2147483647 - M }
; CHECK-NEXT: remark: <unknown>:0:0: Use user assumption: [M, N] -> {  : -2147483648 - M <= N <= 2147483647 - M }
; CHECK-NEXT: remark: <unknown>:0:0: Use user assumption: [M, N, Debug] -> {  : Debug = 0 and 0 < M <= 100 and -2147483648 - M <= N <= 2147483647 - M }
; CHECK-NEXT: remark: <unknown>:0:0: Use user assumption: [M, N, Debug] -> {  : Debug = 0 and 0 < M <= 100 and 0 < N <= 2147483647 - M }
; CHECK-NEXT: remark: <unknown>:0:0: SCoP ends here.

; SCOP:      Context:
; SCOP-NEXT: [N, M, Debug] -> { : Debug = 0 and N > 0 and 0 < M <= 2147483647 - N and M <= 100 }
; SCOP:      Assumed Context:
; SCOP-NEXT: [N, M, Debug] -> {  :  }
; SCOP:      Invalid Context:
; SCOP-NEXT: [N, M, Debug] -> {  : false }
;
;    #include <stdio.h>
;
;    void valid(int * restrict A, int * restrict B, int N, int M, int C[100][100], int Debug) {
;      __builtin_assume(M <= 2147483647 - N);
;      __builtin_assume(M >= -2147483648 - N);
;      __builtin_assume(Debug == 0 && M <= 100 && M >= 1 && N >= 1);
;      if (N + M == -1)
;        C[0][0] = 0;
;
;      for (int i = 0; i < N; i++) {
;        for (int j = 0; j != M; j++) {
;          C[i][j] += A[i * M + j] + B[i + j];
;        }
;
;        if (Debug)
;          printf("Printf!");
;      }
;    }
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

@.str = private unnamed_addr constant [8 x i8] c"Printf!\00", align 1

define void @valid(i32* noalias %A, i32* noalias %B, i32 %N, i32 %M, [100 x i32]* %C, i32 %Debug) {
entry:
  %sub = sub nsw i32 2147483647, %N
  %cmp = icmp sge i32 %sub, %M
  call void @llvm.assume(i1 %cmp)
  %conv = sext i32 %M to i64
  %conv1 = sext i32 %N to i64
  %sub2 = sub nsw i64 -2147483648, %conv1
  %cmp3 = icmp sge i64 %conv, %sub2
  call void @llvm.assume(i1 %cmp3)
  %cmp5 = icmp eq i32 %Debug, 0
  %cmp7 = icmp slt i32 %M, 101
  %or.cond = and i1 %cmp5, %cmp7
  %cmp10 = icmp sgt i32 %M, 0
  %or.cond1 = and i1 %or.cond, %cmp10
  %cmp12 = icmp sgt i32 %N, 0
  call void @llvm.assume(i1 %or.cond1)
  call void @llvm.assume(i1 %cmp12)
  %add = add nsw i32 %N, %M
  %cmp14 = icmp eq i32 %add, -1
  br label %entry.split

entry.split:
  br i1 %cmp14, label %if.then, label %if.end

if.then:                                          ; preds = %entry
  %arrayidx16 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 0, i64 0
  store i32 0, i32* %arrayidx16, align 4
  br label %if.end

if.end:                                           ; preds = %if.then, %entry
  %M64 = sext i32 %M to i64
  %N64 = sext i32 %N to i64
  br label %for.cond

for.cond:                                         ; preds = %for.inc.36, %if.end
  %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc.36 ], [ 0, %if.end ]
  %cmp17 = icmp slt i64 %indvars.iv3, %N64
  br i1 %cmp17, label %for.cond.19, label %for.end.38

for.cond.19:                                      ; preds = %for.cond, %for.body.22
  %indvars.iv = phi i64 [ %indvars.iv.next, %for.body.22 ], [ 0, %for.cond ]
  %cmp20 = icmp eq i64 %indvars.iv, %M64
  br i1 %cmp20, label %for.end, label %for.body.22

for.body.22:                                      ; preds = %for.cond.19
  %tmp9 = mul nsw i64 %indvars.iv3, %M64
  %tmp10 = add nsw i64 %tmp9, %indvars.iv
  %arrayidx24 = getelementptr inbounds i32, i32* %A, i64 %tmp10
  %tmp11 = load i32, i32* %arrayidx24, align 4
  %tmp12 = add nuw nsw i64 %indvars.iv3, %indvars.iv
  %arrayidx27 = getelementptr inbounds i32, i32* %B, i64 %tmp12
  %tmp13 = load i32, i32* %arrayidx27, align 4
  %add28 = add nsw i32 %tmp11, %tmp13
  %arrayidx32 = getelementptr inbounds [100 x i32], [100 x i32]* %C, i64 %indvars.iv3, i64 %indvars.iv
  %tmp14 = load i32, i32* %arrayidx32, align 4
  %add33 = add nsw i32 %tmp14, %add28
  store i32 %add33, i32* %arrayidx32, align 4
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br label %for.cond.19

for.end:                                          ; preds = %for.cond.19
  %tobool = icmp eq i32 %Debug, 0
  br i1 %tobool, label %for.inc.36, label %if.then.34

if.then.34:                                       ; preds = %for.end
  %call = call i32 (i8*, ...) @printf(i8* nonnull getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
  br label %for.inc.36

for.inc.36:                                       ; preds = %for.end, %if.then.34
  %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
  br label %for.cond

for.end.38:                                       ; preds = %for.cond
  ret void
}

; Function Attrs: nounwind
declare void @llvm.assume(i1) #0

declare i32 @printf(i8*, ...)

attributes #0 = { nounwind }
