Integrated: 8305189: C2 failed "assert(_outcnt==1) failed: not unique"

Roland Westrelin roland at openjdk.org
Fri May 26 09:09:07 UTC 2023


On Wed, 10 May 2023 11:27:06 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> pre/main/post loops are created for an inner loop of a loop nest but
> assert predicates cause the main and post loops to be removed. The
> OpaqueZeroTripGuard nodes for the loops are not removed: there's no
> logic to trigger removal of the opaque nodes once the loops are no
> longer there. With the inner loops gone, the outer loop becomes
> candidate for optimizations and is unrolled which causes the zero trip
> guards of the now removed loops to be duplicated and the opaque nodes
> to have more than one use.
> 
> The fix I propose is, using logic similar to
> `PhaseIdealLoop::eliminate_useless_predicates()`, to check during loop
> opts if every OpaqueZeroTripGuard node guards a loop and if not,
> remove it.

This pull request has now been integrated.

Changeset: bac02b6e
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/bac02b6e9d9e1e93db27c7888188f29631e07f47
Stats:     154 lines in 5 files changed: 154 ins; 0 del; 0 mod

8305189: C2 failed "assert(_outcnt==1) failed: not unique"

Reviewed-by: chagedorn, thartmann

-------------

PR: https://git.openjdk.org/jdk/pull/13901


More information about the hotspot-compiler-dev mailing list