RFR: 8348572: C2 compilation asserts due to unexpected irreducible loop [v2]
Tobias Hartmann
thartmann at openjdk.org
Wed Feb 5 12:18:10 UTC 2025
On Wed, 5 Feb 2025 12:13:18 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> src/hotspot/share/opto/loopnode.cpp line 5648:
>>
>>> 5646: if (!head->can_be_irreducible_entry()) {
>>> 5647: assert(!VerifyNoNewIrreducibleLoops, "A new irreducible loop was created after parsing.");
>>> 5648: C->record_method_not_compilable("A new irreducible loop was created after parsing.");
>>
>> If you haven't done that yet, I would suggest to hardcode these bailouts to "always bail" out and run testing to check if the bailout always works. You'll of course get all kinds of test failures but the VM should not crash/assert (you can filter for these in the test results and ignore anything else).
>
> As discussed offline:
> There is another bailout below, for the case of irreducible loops that are also infinite. And that one also triggers regularly, and as far as I remember even with the fuzzer. So I'd say he bailout path is sufficiently covered.
Yes, makes sense. Thanks for checking.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23363#discussion_r1942771243
More information about the hotspot-compiler-dev
mailing list