Integrated: 8291599: Assertion in PhaseIdealLoop::skeleton_predicate_has_opaque after JDK-8289127
Roland Westrelin
roland at openjdk.org
Mon Sep 12 07:33:25 UTC 2022
On Thu, 25 Aug 2022 12:30:02 GMT, Roland Westrelin <roland at openjdk.org> wrote:
> In TestPhiInSkeletonPredicateExpression.test1():
>
> - Loop predication adds predicates for the null check of array and the
> array range check. It also adds skeleton predicates in case of
> subsequent unrolling.
>
> - One of the skeleton predicate has the following shape:
>
> (Opaque4 (Bool (CmpUL (AddL (AddL (ConvI2L (LoadI (Phi ...))) (ConvI2L (CastII (AddI (OpaqueLoopInit OpaqueLoopStride))))) -1) ...)))
>
> - Split thru phi pushes the null check through the dominating
> region. The skeleton predicate subgraph is transformed to:
>
> (Opaque4 (Bool (CmpUL (Phi ...) ...)))
>
> - Logic that processes skeleton predicate can no longer find the
> OpaqueLoopInit and OpaqueLoopStride nodes because they are now
> behind a phi. That causes the assert to fire.
>
> The fix I propose is to catch cases where part of a skeleton predicate
> expression (a subgraph with a OpaqueLoopInit or OpaqueLoopStride node)
> is being split during split if and to clone the entire skeleton
> predicate subgraph then.
>
> There's a already logic for that currently but it only triggers if
> PhaseIdealLoop::split_up() tries to split an OpaqueLoopInit or
> OpaqueLoopStride. In the case here, the OpaqueLoopInit and
> OpaqueLoopStride nodes have control above the region at which split if
> occurs. So they are never split by PhaseIdealLoop::split_up(). The
> AddL nodes in subgraph are.
This pull request has now been integrated.
Changeset: 37df5f56
Author: Roland Westrelin <roland at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/37df5f56259429482cfdbe38e8b6256f1efaf9e8
Stats: 181 lines in 4 files changed: 155 ins; 23 del; 3 mod
8291599: Assertion in PhaseIdealLoop::skeleton_predicate_has_opaque after JDK-8289127
Reviewed-by: chagedorn, thartmann
-------------
PR: https://git.openjdk.org/jdk/pull/10022
More information about the hotspot-compiler-dev
mailing list