74 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom<delicm>' -polly-print-delicm -disable-output < %s | FileCheck %s2;3; void func(double *A) {4; for (int j = 0; j < 2; j += 1) { /* outer */5; double phi = 0.0;6; for (int i = 0; i < 4; i += 1) /* reduction */7; phi += 4.2;8; dummy = A[j];9; A[j] = phi;10; }11; }12;13; Check that A[j] is not used for mapping as it is still in use.14;15define void @func(ptr noalias nonnull %A) {16entry:17 %fsomeval = fadd double 21.0, 21.018 br label %outer.preheader19 20outer.preheader:21 br label %outer.for22 23outer.for:24 %j = phi i32 [0, %outer.preheader], [%j.inc, %outer.inc]25 %j.cmp = icmp slt i32 %j, 226 br i1 %j.cmp, label %reduction.preheader, label %outer.exit27 28 29 reduction.preheader:30 br label %reduction.for31 32 reduction.for:33 %i = phi i32 [0, %reduction.preheader], [%i.inc, %reduction.inc]34 %phi = phi double [0.0, %reduction.preheader], [%add, %reduction.inc]35 %i.cmp = icmp slt i32 %i, 436 br i1 %i.cmp, label %body, label %reduction.exit37 38 39 40 body:41 %add = fadd double %phi, 4.242 br label %reduction.inc43 44 45 46 reduction.inc:47 %i.inc = add nuw nsw i32 %i, 148 br label %reduction.for49 50 reduction.exit:51 %A_idx = getelementptr inbounds double, ptr %A, i32 %j52 %dummy = load double, ptr %A_idx53 store double %phi, ptr %A_idx54 br label %outer.inc55 56 57 58outer.inc:59 %j.inc = add nuw nsw i32 %j, 160 br label %outer.for61 62outer.exit:63 br label %return64 65return:66 ret void67}68 69 70; CHECK: Statistics {71; CHECK: Compatible overwrites: 172; CHECK: }73; CHECK: No modification has been made74