RFR: 8302459: Missing late inline cleanup causes compiler/vectorapi/VectorLogicalOpIdentityTest.java IR failure [v5]
Damon Fenacci
dfenacci at openjdk.org
Mon Mar 24 12:18:12 UTC 2025
On Mon, 24 Mar 2025 08:47:22 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
>> The difference is whether a call can be scheduled for a repeated inlining attempt in the future.
>>
>> `cg->call_node()->set_generator(cg)` reinitializes `cg` in `CallNode` and lets IGVN to submit it for incremental inlining during future passes.
>>
>> The first check guards against a situation when the call node is already on IGVN list (so, it will be automatically rescheduled for inlining during the next IGVN pass causing an infinite loop in incremental inlining).
>>
>> The second assert catches a suspicious situation when the call node disappears from IGVN worklist during failed inlining attempt. IMO it should not happens, hence the assert. But it is benign to allow repeated inlining in such case.
>
> Okay, thanks for the background. If we keep both asserts, some comments explaining this would be helpful.
Thanks for the suggestion!
I've added a couple of comments to the asserts.
I've also changed the second assert into `assert(!is_scheduled_for_igvn_before || is_scheduled_for_igvn_after, "call node removed from IGVN list during inlining pass");`. The final result is the same but the expression matches what the message says 1-1.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21682#discussion_r2010063495
More information about the hotspot-compiler-dev
mailing list