RFR: 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 08:44:24 UTC 2025


`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.

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

Commit messages:
 - move test
 - Apply suggestions from code review
 - JDK-8367483

Changes: https://git.openjdk.org/jdk/pull/27249/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27249&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8367483
  Stats: 63 lines in 2 files changed: 62 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/27249.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27249/head:pull/27249

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


More information about the hotspot-compiler-dev mailing list