On Mon, 29 Jun 2026 14:26:28 GMT, Tobias Hartmann <[email protected]> wrote:

> The `PushInlineTypeDown` implementation from 
> [JDK-8302217](https://bugs.openjdk.org/browse/JDK-8302217) rewires `PhiNode` 
> uses to a new `InlineTypeNode` but only adds direct users to the IGVN 
> worklist. Nodes whose transformations depend on deeper input type changes 
> might not be re-enqueued.
> 
> In the failing case, the offending shape looks like this:
> ```CmpL(OrL(CastP2X(phi_or_inline_type), CastP2X(other)), 0L)```
> 
> After the Phi input is replaced by a scalarized inline type or a not-null 
> value, 
> [CmpLNode::Ideal](https://github.com/openjdk/valhalla/blob/a0dc49c20ee6d20e925a107b0d3dabc7e0ba8863/src/hotspot/share/opto/subnode.cpp#L899-L922)
>  can fold the corresponding `CastP2X` to the null marker or `1L`. Without 
> notifying users through the normal IGVN replacement path, 
> `VerifyIterativeGVN` will report a missed `CmpL` idealization.
> 
> The fix makes `replace_in_uses` notify users before rewiring, and uses it 
> from `PushInlineTypeDown`.
> 
> Thanks,
> Tobias
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

This pull request has now been integrated.

Changeset: 05767f0f
Author:    Tobias Hartmann <[email protected]>
URL:       
https://git.openjdk.org/valhalla/commit/05767f0f84b7d4ea0ef09739a9a2ef0e5aab234f
Stats:     77 lines in 3 files changed: 66 ins; 7 del; 4 mod

8386067: [lworld] C2 asserts with "Missed Ideal optimization opportunity in 
PhaseIterGVN for CmpL"

Reviewed-by: chagedorn

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

PR: https://git.openjdk.org/valhalla/pull/2593

Reply via email to