54 lines · plain
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-custom<simplify>' -polly-print-simplify -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines2;3; Remove a dead PHI write/read pair4; (accesses that are effectively not used)5;6; for (int j = 0; j < n; j += 1) {7; body:8; double phi = 42;9;10; body_succ:11; A[0] = 42.0;12; }13;14define void @func(i32 %n, ptr noalias nonnull %A) {15entry:16 br label %for17 18for:19 %j = phi i32 [0, %entry], [%j.inc, %inc]20 %j.cmp = icmp slt i32 %j, %n21 br i1 %j.cmp, label %body, label %exit22 23 body:24 br label %body_succ25 26 body_succ:27 %phi = phi double [42.0, %body]28 store double 42.0, ptr %A29 br label %inc30 31inc:32 %j.inc = add nuw nsw i32 %j, 133 br label %for34 35exit:36 br label %return37 38return:39 ret void40}41 42 43; CHECK: Statistics {44; CHECK: Dead accesses removed: 245; CHECK: Dead instructions removed: 146; CHECK: Stmts removed: 147; CHECK: }48 49; CHECK: After accesses {50; CHECK-NEXT: Stmt_body_succ51; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]52; CHECK-NEXT: [n] -> { Stmt_body_succ[i0] -> MemRef_A[0] };53; CHECK-NEXT: }54