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). test/hotspot/jtreg/compiler/valhalla/inlinetypes/TestPushThroughPhiNotification.java line 34: > 32: * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions > -XX:+UnlockDiagnosticVMOptions > 33: * -XX:-TieredCompilation -Xbatch > 34: * -XX:VerifyIterativeGVN=1110 -XX:+StressIGVN Not setting a fixed seed here because this always reproduces after a low number of iterations. ------------- PR Review Comment: https://git.openjdk.org/valhalla/pull/2593#discussion_r3492438638
