RFR: 8305189: C2 failed "assert(_outcnt==1) failed: not unique" [v4]

Christian Hagedorn chagedorn at openjdk.org
Tue May 23 15:32:03 UTC 2023


On Tue, 23 May 2023 10:45:05 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.
>
> Roland Westrelin has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Update src/hotspot/share/opto/loopnode.cpp
>    
>    Co-authored-by: Christian Hagedorn <christian.hagedorn at oracle.com>
>  - review

I agree that it is better to be safe here - update looks good!

I'll resubmit some testing.

I agree that it is better to be safe here - update looks good!

I'll resubmit some testing.

src/hotspot/share/opto/loopnode.cpp line 4170:

> 4168:         // unreachable from _ltree_root: zero trip guard is in a newly discovered infinite loop.
> 4169:         // We can't tell if the opaque node is useful or not
> 4170:        assert(guarded_loop == nullptr || guarded_loop->is_in_infinite_subgraph(), "");

Indentation:
Suggestion:

        assert(guarded_loop == nullptr || guarded_loop->is_in_infinite_subgraph(), "");

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

Marked as reviewed by chagedorn (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13901#pullrequestreview-1439241021
PR Review: https://git.openjdk.org/jdk/pull/13901#pullrequestreview-1439258383
PR Review Comment: https://git.openjdk.org/jdk/pull/13901#discussion_r1201972405


More information about the hotspot-compiler-dev mailing list