RFR: 8305189: C2 failed "assert(_outcnt==1) failed: not unique" [v4]
Roland Westrelin
roland at openjdk.org
Tue May 23 15:32:01 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 incrementally with two additional commits since the last revision:
- Update src/hotspot/share/opto/loopnode.cpp
Co-authored-by: Christian Hagedorn <christian.hagedorn at oracle.com>
- review
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13901/files
- new: https://git.openjdk.org/jdk/pull/13901/files/8f37817c..5e26e81d
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13901&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13901&range=02-03
Stats: 33 lines in 3 files changed: 22 ins; 5 del; 6 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