Integrated: 8361702: C2: assert(is_dominator(compute_early_ctrl(limit, limit_ctrl), pre_end)) failed: node pinned on loop exit test?

Roland Westrelin roland at openjdk.org
Mon Sep 15 18:16:07 UTC 2025


On Tue, 22 Jul 2025 08:25:08 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> A node in a pre loop only has uses out of the loop dominated by the
> loop exit. `PhaseIdealLoop::try_sink_out_of_loop()` sets its control
> to the loop exit projection. A range check in the main loop has this
> node as input (through a chain of some other nodes). Range check
> elimination needs to update the exit condition of the pre loop with an
> expression that depends on the node pinned on its exit: that's
> impossible and the assert fires. This is a variant of 8314024 (this
> one was for a node with uses out of the pre loop on multiple paths). I
> propose the same fix: leave the node with control in the pre loop in
> this case.

This pull request has now been integrated.

Changeset: f8ba02f2
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/f8ba02f2296f0ef0227f90e0e1ed116121e68231
Stats:     184 lines in 4 files changed: 166 ins; 7 del; 11 mod

8361702: C2: assert(is_dominator(compute_early_ctrl(limit, limit_ctrl), pre_end)) failed: node pinned on loop exit test?

Reviewed-by: epeter, chagedorn, mhaessig

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

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


More information about the hotspot-compiler-dev mailing list