RFR: 8305189: C2 failed "assert(_outcnt==1) failed: not unique" [v3]

Roland Westrelin roland at openjdk.org
Mon May 22 15:10:33 UTC 2023


> pre/main/post loops are created for an inner loop of a loop nest but
> assert predicates cause the main and post loops to be removed. The
> OpaqueZeroTripGuard nodes for the loops are not removed: there's no
> logic to trigger removal of the opaque nodes once the loops are no
> longer there. With the inner loops gone, the outer loop becomes
> candidate for optimizations and is unrolled which causes the zero trip
> guards of the now removed loops to be duplicated and the opaque nodes
> to have more than one use.
> 
> The fix I propose is, using logic similar to
> `PhaseIdealLoop::eliminate_useless_predicates()`, to check during loop
> opts if every OpaqueZeroTripGuard node guards a loop and if not,
> remove it.

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 four additional commits since the last revision:

 - test failure
 - Merge branch 'master' into JDK-8305189
 - review
 - fix & test

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/13901/files
  - new: https://git.openjdk.org/jdk/pull/13901/files/d360f92a..8f37817c

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

  Stats: 141494 lines in 2421 files changed: 107547 ins; 17403 del; 16544 mod
  Patch: https://git.openjdk.org/jdk/pull/13901.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13901/head:pull/13901

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


More information about the hotspot-compiler-dev mailing list