RFR: 8348572: C2 compilation asserts due to unexpected irreducible loop [v2]
Vladimir Kozlov
kvn at openjdk.org
Tue Feb 4 17:30:19 UTC 2025
On Tue, 4 Feb 2025 07:20:22 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> First, I am fine with this "band-aid" change. I understand that it simple replaces assert with bailout which is fine.
>> But I am trying to understand what it does.
>>
>> There are few states when we come to this part of code:
>> - `l` is or not marked as irreducible
>> - `m` is or not marked with MaybeIrreducibleEntry (is it set only for not Loop?)
>> - `m` is or not Loop
>>
>> So we have 8 combinations. I would like to hear reasons in which cases we should bailout and in which not.
>
> @vnkozlov Does that help you, or do you have more questions?
Yes, thank you for explaining this to me. I think I got it finally.
So default `Region` state is `NeverIrreducibleEntry` and it set to `MaybeIrreducibleEntry` when we find it inside irreducible loop during parsing. And that is the only valid state (MaybeIrreducibleEntry) we allow in this part of code.
Yes, `Loop` node can't be irreducible and we should not allow it here too.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23363#discussion_r1941597842
More information about the hotspot-compiler-dev
mailing list