On Tue, 30 Jun 2026 08:30:01 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).
>
> Tobias Hartmann has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Update 
> test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestPushThroughPhiNotification.java
>   
>   Co-authored-by: Christian Hagedorn <[email protected]>

src/hotspot/share/opto/phaseX.cpp line 2493:

> 2491:   for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
> 2492:     Node* u = n->fast_out(i);
> 2493:     if (u != n) {

I see that `replace_edge()` will bail out in the `u == n` case, but we still 
call `rehash_node_delayed` and delete the hash which is probably not be 
necessary. But I guess that does not hurt much.

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2593#discussion_r3497254736

Reply via email to