1; RUN: opt %loadPolly -basic-aa -polly-scops -analyze < %s | FileCheck %s 2; 3; void f(int N, int * restrict sums, int * restrict escape) { 4; int i, j; 5; for (i = 0; i < 1024; i++) { 6; for (j = 0; j < 1024; j++) { 7; sums[i] += 5; 8; escape[N - i + j] = sums[i]; 9; } 10; } 11; } 12; 13; CHECK: Reduction Type: NONE 14; CHECK: sums 15; CHECK: Reduction Type: NONE 16; CHECK: sums 17; CHECK: Reduction Type: NONE 18; CHECK: escape 19target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64" 20 21define void @f(i32 %N, i32* noalias %sums, i32* noalias %escape) { 22entry: 23 br label %for.cond 24 25for.cond: ; preds = %for.inc7, %entry 26 %i.0 = phi i32 [ 0, %entry ], [ %inc8, %for.inc7 ] 27 %exitcond1 = icmp ne i32 %i.0, 1024 28 br i1 %exitcond1, label %for.body, label %for.end9 29 30for.body: ; preds = %for.cond 31 br label %for.cond1 32 33for.cond1: ; preds = %for.inc, %for.body 34 %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ] 35 %exitcond = icmp ne i32 %j.0, 1024 36 br i1 %exitcond, label %for.body3, label %for.end 37 38for.body3: ; preds = %for.cond1 39 %arrayidx = getelementptr inbounds i32, i32* %sums, i32 %i.0 40 %tmp = load i32, i32* %arrayidx, align 4 41 %add = add nsw i32 %tmp, 5 42 store i32 %add, i32* %arrayidx, align 4 43 %sub = sub nsw i32 %N, %i.0 44 %add5 = add nsw i32 %sub, %j.0 45 %arrayidx6 = getelementptr inbounds i32, i32* %escape, i32 %add5 46 store i32 %add, i32* %arrayidx6, align 4 47 br label %for.inc 48 49for.inc: ; preds = %for.body3 50 %inc = add nsw i32 %j.0, 1 51 br label %for.cond1 52 53for.end: ; preds = %for.cond1 54 br label %for.inc7 55 56for.inc7: ; preds = %for.end 57 %inc8 = add nsw i32 %i.0, 1 58 br label %for.cond 59 60for.end9: ; preds = %for.cond 61 ret void 62} 63