Integrated: 8367483: C2 crash in PhaseValues::type: assert(t != nullptr) failed: must set before get - missing notification for CastX2P(SubL(x, y))

Emanuel Peter epeter at openjdk.org
Fri Sep 12 12:09:32 UTC 2025


On Fri, 12 Sep 2025 08:18:40 GMT, Emanuel Peter <epeter at openjdk.org> wrote:

> `CastX2PNode::Ideal` optimizes cases:
> 
> CastX2P(AddX(x, y)) -> AddP(CastX2P(x), y)
> CastX2P(SubL(x, y)) -> AddP(CastX2P(x), SubL(0, y))
> 
> 
> But the notification code `PhaseIterGVN::add_users_of_use_to_worklist` only adds `CastX2P` to the worklist for the `AddX` and not the `SubX` cases.
> 
> ---------------------------------------
> 
> A little brag: this is the second (unrelated, i.e. non aliasing) bug that `TestAliasingFuzzer.java` found. Fuzzing access to native MemorySegment seems to trigger new/rare patterns.

This pull request has now been integrated.

Changeset: 02d7281b
Author:    Emanuel Peter <epeter at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/02d7281b93296e7700e215804cb9e2f8341cab06
Stats:     63 lines in 2 files changed: 62 ins; 0 del; 1 mod

8367483: C2 crash in  PhaseValues::type: assert(t != nullptr) failed: must set before get - missing notification for CastX2P(SubL(x, y))

Reviewed-by: chagedorn, bmaillard

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

PR: https://git.openjdk.org/jdk/pull/27249


More information about the hotspot-compiler-dev mailing list