1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck %s -match-full-lines 2; 3; Remove a dead PHI write/read pair 4; (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 %for 17 18for: 19 %j = phi i32 [0, %entry], [%j.inc, %inc] 20 %j.cmp = icmp slt i32 %j, %n 21 br i1 %j.cmp, label %body, label %exit 22 23 body: 24 br label %body_succ 25 26 body_succ: 27 %phi = phi double [42.0, %body] 28 store double 42.0, ptr %A 29 br label %inc 30 31inc: 32 %j.inc = add nuw nsw i32 %j, 1 33 br label %for 34 35exit: 36 br label %return 37 38return: 39 ret void 40} 41 42 43; CHECK: Statistics { 44; CHECK: Dead accesses removed: 2 45; CHECK: Dead instructions removed: 1 46; CHECK: Stmts removed: 1 47; CHECK: } 48 49; CHECK: After accesses { 50; CHECK-NEXT: Stmt_body_succ 51; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0] 52; CHECK-NEXT: [n] -> { Stmt_body_succ[i0] -> MemRef_A[0] }; 53; CHECK-NEXT: } 54