Integrated: 8306997: C2: "malformed control flow" assert due to missing safepoint on backedge with a switch

Roland Westrelin roland at openjdk.org
Wed May 3 08:32:30 UTC 2023


On Thu, 27 Apr 2023 11:27:30 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> The assert fires because a self loop (a `Loop` whose second input is
> itself) is removed by loop opts. That loop comes from a switch where
> the default case is a loop head (a code shape I couldn't get javac to
> produce). That `Loop` should at the very least have a `Safepoint` but
> the logic at parse time only looks for backedges in the non default
> cases. With that fixed, the `Loop` is no longer considered dead code.

This pull request has now been integrated.

Changeset: e0774bed
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/e0774bed2d2fcd850f5ca6884dd7aeb45f0bdaef
Stats:     106 lines in 3 files changed: 104 ins; 0 del; 2 mod

8306997: C2: "malformed control flow" assert due to missing safepoint on backedge with a switch

Reviewed-by: thartmann, kvn

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

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


More information about the hotspot-compiler-dev mailing list