RFR: 8306933: C2: "assert(false) failed: infinite loop" failure [v2]

Christian Hagedorn chagedorn at openjdk.org
Wed May 3 11:11:15 UTC 2023


On Wed, 3 May 2023 08:42:06 GMT, Roland Westrelin <roland at openjdk.org> wrote:

>> The assert fires because an infinite loop appears in the graph after
>> loop opts are over.
>> 
>> After loop opts, the `for(;;)` loop contains a null check and a range
>> check for `array[i]`. So it's not considered an infinite loop (it has
>> exits to uncommon traps). The null check and range check are redundant
>> with the one right before the loop: `int v = array2[k];` IGVN can
>> optimize it but it doesn't happen until after loop opts when a
>> `ConvI2L` for the `array[i]` access is processed as part of post loop
>> opts IGVN. The `for(;;)` loop is then emptied and only contains a
>> `Loop` and a `Safepoint` nodes.
>> 
>> I propose removing the assert (at least for now) as I don't see a way
>> to guarantee no infinite loop can appear after loop opts.
>
> Roland Westrelin has updated the pull request incrementally with one additional commit since the last revision:
> 
>   -XX:+UnlockDiagnosticVMOptions

Update looks good!

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

Marked as reviewed by chagedorn (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/13672#pullrequestreview-1410668978


More information about the hotspot-compiler-dev mailing list