[polly] r307660 - [Simplify] Also remove redundant writes which originally came from PHI nodes

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 18 07:19:48 PDT 2017


A post-commit review.


2017-07-11 16:29 GMT+02:00 Tobias Grosser via llvm-commits
<llvm-commits at lists.llvm.org>:
> Author: grosser
> Date: Tue Jul 11 07:29:39 2017
> New Revision: 307660
>
> URL: http://llvm.org/viewvc/llvm-project?rev=307660&view=rev
> Log:
> [Simplify] Also remove redundant writes which originally came from PHI nodes
>
> Modified:
>     polly/trunk/lib/Transform/Simplify.cpp
>     polly/trunk/test/Simplify/gemm.ll
>
> Modified: polly/trunk/lib/Transform/Simplify.cpp
> URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Transform/Simplify.cpp?rev=307660&r1=307659&r2=307660&view=diff
> ==============================================================================
> --- polly/trunk/lib/Transform/Simplify.cpp (original)
> +++ polly/trunk/lib/Transform/Simplify.cpp Tue Jul 11 07:29:39 2017
> @@ -235,10 +235,17 @@ private:
>            continue;
>          if (!WA->isLatestArrayKind())
>            continue;
> -        if (!isa<StoreInst>(WA->getAccessInstruction()))
> +        if (!isa<StoreInst>(WA->getAccessInstruction()) && !WA->isPHIKind())

Would isAnyPHIKind() work as well?

>            continue;
>
>          auto ReadingValue = WA->getAccessValue();
> +

A comment here about what it is doing would have been nice.

> +        if (WA->isPHIKind()) {
> +          PHINode *PHI = cast<PHINode>(WA->getAccessValue());
> +          BasicBlock *BB = Stmt.getBasicBlock();
> +          ReadingValue = PHI->getIncomingValueForBlock(BB);

This is not a good way to get the written value of a PHI.
getBasicBlock() returns nullptr if it is a region statement. Also,
region statements can have multiple return values.

Use MemoryAccess::getIncoming() to get the written value. I suggest to
just `continue` if there is more than one value.

> +        }
> +
>          if (!ReadingValue)
>            continue;
>
>
> Modified: polly/trunk/test/Simplify/gemm.ll
> URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Simplify/gemm.ll?rev=307660&r1=307659&r2=307660&view=diff
> ==============================================================================
> --- polly/trunk/test/Simplify/gemm.ll (original)
> +++ polly/trunk/test/Simplify/gemm.ll Tue Jul 11 07:29:39 2017
> @@ -13,12 +13,6 @@
>  ;    }
>
>  ; CHECK:      After accesses {
> -; CHECK-NEXT:     Stmt_bb8
> -; CHECK-NEXT:             ReadAccess :=        [Reduction Type: NONE] [Scalar: 0]
> -; CHECK-NEXT:                 { Stmt_bb8[i0, i1] -> MemRef_C[i0, i1] };
> -; CHECK-NEXT:             MustWriteAccess :=   [Reduction Type: NONE] [Scalar: 1]
> -; CHECK-NEXT:                 { Stmt_bb8[i0, i1] -> MemRef_tmp_0__phi[] };
> -; CHECK-NEXT:            new: { Stmt_bb8[i0, i1] -> MemRef_C[i0, i1] };
>  ; CHECK-NEXT:     Stmt_bb10
>  ; CHECK-NEXT:             ReadAccess :=        [Reduction Type: NONE] [Scalar: 1]
>  ; CHECK-NEXT:                 { Stmt_bb10[i0, i1, i2] -> MemRef_tmp_0__phi[] };
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list