RFR: 8286451: C2: assert(nb == 1) failed: only when the head is not shared
Roland Westrelin
roland at openjdk.java.net
Mon May 30 13:59:12 UTC 2022
nb counts the number of loops that share a single head. The assert
that fires is in code that handles the case of a self loop (a loop
composed of a single block). There can be a self loop and multiple
loops that share a head: the assert makes little sense and I propose
to simply remove it.
I think there's another issue with this code: in the case of a self
loop and multiple loops that share a head, the self loop can be any of
the loop for which the head is cloned not only the one that's passed
as argument to ciTypeFlow::clone_loop_head(). As a consequence, I
moved the logic for self loops in the loop that's applied to all loops
that share the loop head.
-------------
Commit messages:
- fix & test
Changes: https://git.openjdk.java.net/jdk/pull/8947/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8947&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8286451
Stats: 79 lines in 2 files changed: 65 ins; 14 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/8947.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/8947/head:pull/8947
PR: https://git.openjdk.java.net/jdk/pull/8947
More information about the hotspot-compiler-dev
mailing list