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). ------------- Commit messages: - JDK-8386067 Changes: https://git.openjdk.org/valhalla/pull/2593/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2593&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8386067 Stats: 71 lines in 3 files changed: 65 ins; 5 del; 1 mod Patch: https://git.openjdk.org/valhalla/pull/2593.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2593/head:pull/2593 PR: https://git.openjdk.org/valhalla/pull/2593
