[jdk17] RFR: 8269746: C2: assert(!in->is_CFG()) failed: CFG Node with no controlling input?

Christian Hagedorn chagedorn at openjdk.java.net
Wed Jul 7 09:53:50 UTC 2021


On Wed, 7 Jul 2021 07:37:55 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> The backedge and the exit test of an inner strip mined loop are
> removed. A safepoint is right above the inner loop exit test when that
> happens. The outer strip mined loop safepoint is then processed by
> igvn which finds the other safepoint. This causes the outer loop
> safepoint to be replaced by the safepoint that was in the inner
> loop. Then the outer loop back edge is removed by igvn. This is done
> by replacing the loop exit by the control of the outer loop
> safepoint. Given the outer loop safepoint was replaced by a dominating
> safepoint, that logic replaces the oiter loop exit with the dominating
> safepoint control input. That must be harmless most of the time, but
> in this particular case a Store was between the 2 safepoints. That
> Store is still reachable in the graph but its control is not.
> 
> Note: test case not included because the crash no longer reproduces (supposedly because order of node processing by igvn matters)

Looks good!

Have you tried playing around with `-XX:+StressIGVN` to trigger it again?

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

Marked as reviewed by chagedorn (Reviewer).

PR: https://git.openjdk.java.net/jdk17/pull/222


More information about the hotspot-compiler-dev mailing list