RFR: 8346184: C2: assert(has_node(i)) failed during split thru phi [v2]

Roland Westrelin roland at openjdk.org
Wed Jan 8 13:42:18 UTC 2025


> The assert fires during split thru phi because a call to `Identity`
> returns a new node (a constant null pointer). That happens because a
> `Load`, once pushed thru phi, can be constant folded because it loads
> from a newly allocated array. `Identity` shouldn't return new
> nodes. When split thru phi runs, in this case, `Value` should be the
> one returning constant null, not `Identity`. There is logic for that
> in `LoadNode::Value` but it's after some other checks that cause
> `Value` to return too early.
> 
> To fix this, I propose reordering checks in `LoadNode::Value`.

Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:

 - more
 - Merge branch 'master' into JDK-8346184
 - more
 - test
 - fix

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/22818/files
  - new: https://git.openjdk.org/jdk/pull/22818/files/64c538b2..f768e40b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=22818&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=22818&range=00-01

  Stats: 24483 lines in 1154 files changed: 17153 ins; 4126 del; 3204 mod
  Patch: https://git.openjdk.org/jdk/pull/22818.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/22818/head:pull/22818

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


More information about the hotspot-compiler-dev mailing list