1; RUN: opt %loadNPMPolly -polly-allow-nonaffine-branches '-passes=print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s 2; 3; void f(float *A) { 4; for (int i = 0; i < 1024; i++) 5; if (A[i] == A[i - 1]) 6; A[i]++; 7; } 8; 9; CHECK: Function: f 10; CHECK-NEXT: Region: %bb1---%bb14 11; CHECK-NEXT: Max Loop Depth: 1 12; CHECK-NEXT: Invariant Accesses: { 13; CHECK-NEXT: } 14; CHECK-NEXT: Context: 15; CHECK-NEXT: { : } 16; CHECK-NEXT: Assumed Context: 17; CHECK-NEXT: { : } 18; CHECK-NEXT: Invalid Context: 19; CHECK-NEXT: { : false } 20; CHECK: Arrays { 21; CHECK-NEXT: float MemRef_A[*]; // Element size 4 22; CHECK-NEXT: } 23; CHECK-NEXT: Arrays (Bounds as pw_affs) { 24; CHECK-NEXT: float MemRef_A[*]; // Element size 4 25; CHECK-NEXT: } 26; CHECK-NEXT: Alias Groups (0): 27; CHECK-NEXT: n/a 28; CHECK-NEXT: Statements { 29; CHECK-NEXT: Stmt_bb2__TO__bb12 30; CHECK-NEXT: Domain := 31; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] : 0 <= i0 <= 1023 }; 32; CHECK-NEXT: Schedule := 33; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] -> [i0] }; 34; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] 35; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] -> MemRef_A[i0] }; 36; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] 37; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] -> MemRef_A[-1 + i0] }; 38; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] 39; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] -> MemRef_A[i0] }; 40; CHECK-NEXT: MayWriteAccess := [Reduction Type: NONE] [Scalar: 0] 41; CHECK-NEXT: { Stmt_bb2__TO__bb12[i0] -> MemRef_A[i0] }; 42; CHECK-NEXT: } 43target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 44 45define void @f(ptr %A) { 46bb: 47 br label %bb1 48 49bb1: ; preds = %bb13, %bb 50 %indvars.iv = phi i64 [ %indvars.iv.next, %bb13 ], [ 0, %bb ] 51 %exitcond = icmp ne i64 %indvars.iv, 1024 52 br i1 %exitcond, label %bb2, label %bb14 53 54bb2: ; preds = %bb1 55 %tmp = getelementptr inbounds float, ptr %A, i64 %indvars.iv 56 %tmp3 = load float, ptr %tmp, align 4 57 %tmp4 = add nsw i64 %indvars.iv, -1 58 %tmp5 = getelementptr inbounds float, ptr %A, i64 %tmp4 59 %tmp6 = load float, ptr %tmp5, align 4 60 %tmp7 = fcmp oeq float %tmp3, %tmp6 61 br i1 %tmp7, label %bb8, label %bb12 62 63bb8: ; preds = %bb2 64 %tmp9 = getelementptr inbounds float, ptr %A, i64 %indvars.iv 65 %tmp10 = load float, ptr %tmp9, align 4 66 %tmp11 = fadd float %tmp10, 1.000000e+00 67 store float %tmp11, ptr %tmp9, align 4 68 br label %bb12 69 70bb12: ; preds = %bb8, %bb2 71 br label %bb13 72 73bb13: ; preds = %bb12 74 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 75 br label %bb1 76 77bb14: ; preds = %bb1 78 ret void 79} 80