1; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' \ 2; RUN: -S < %s | FileCheck %s 3; 4; void non-affine-update(double A[], double C[], double B[]) { 5; for (int i = 0; i < 10; i++) { 6; if (A[i] >= 6) 7; B[i] += 42; 8; else 9; C[i] += 3; 10; } 11; } 12 13; Verify that all changed memory access functions are correctly code generated. 14; At some point this did not work due to memory access identifiers not being 15; unique within non-affine scop statements. 16 17; CHECK: polly.stmt.bb2: 18; CHECK: %[[offset:.*]] = shl nuw nsw i64 %polly.indvar, 3 19; CHECK: %scevgep = getelementptr i8, ptr %A, i64 %[[offset]] 20 21; CHECK: polly.stmt.bb9: 22; CHECK: %polly.access.C{{.*}} = getelementptr double, ptr %C, i64 42 23; CHECK: %polly.access.C{{.*}} = getelementptr double, ptr %C, i64 42 24 25; CHECK: polly.stmt.bb5: 26; CHECK: %polly.access.B{{.*}} = getelementptr double, ptr %B, i64 113 27; CHECK: %polly.access.B{{.*}} = getelementptr double, ptr %B, i64 113 28 29 30target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 31 32define void @non-affine-update(ptr %A, ptr %C, ptr %B) { 33bb: 34 br label %bb1 35 36bb1: ; preds = %bb14, %bb 37 %indvars.iv = phi i64 [ %indvars.iv.next, %bb14 ], [ 0, %bb ] 38 %exitcond = icmp ne i64 %indvars.iv, 10 39 br i1 %exitcond, label %bb2, label %bb15 40 41bb2: ; preds = %bb1 42 %tmp = getelementptr inbounds double, ptr %A, i64 %indvars.iv 43 %tmp3 = load double, ptr %tmp, align 8 44 %tmp4 = fcmp ult double %tmp3, 6.000000e+00 45 br i1 %tmp4, label %bb9, label %bb5 46 47bb5: ; preds = %bb2 48 %tmp6 = getelementptr inbounds double, ptr %B, i64 %indvars.iv 49 %tmp7 = load double, ptr %tmp6, align 8 50 %tmp8 = fadd double %tmp7, 4.200000e+01 51 store double %tmp8, ptr %tmp6, align 8 52 br label %bb13 53 54bb9: ; preds = %bb2 55 %tmp10 = getelementptr inbounds double, ptr %C, i64 %indvars.iv 56 %tmp11 = load double, ptr %tmp10, align 8 57 %tmp12 = fadd double %tmp11, 3.000000e+00 58 store double %tmp12, ptr %tmp10, align 8 59 br label %bb13 60 61bb13: ; preds = %bb9, %bb5 62 br label %bb14 63 64bb14: ; preds = %bb13 65 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 66 br label %bb1 67 68bb15: ; preds = %bb1 69 ret void 70} 71