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