RFR: 8257575: C2: "failed: only phis" assert failure in loop strip mining verfication

Nils Eliasson neliasso at openjdk.java.net
Fri Dec 4 08:41:54 UTC 2020


On Wed, 2 Dec 2020 08:17:42 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> The loop in the test is a counted loop with a load pinned on the
> backedge. The loop is strip mined. When the outer loop is expanded, it
> ends up with a load on the backedge too as it must mirror the inner
> loop. The load is input to a Phi. After expansion, the load on the
> backedge of the outer loop is found to be rendundant with a dominating
> load. That causes the Phi to be eliminated. The load on the backedge
> of the inner loop is not eliminated. As a result, verification code
> finds the inner and outer loops to have a different number of Phis
> which is unexpected.
> 
> The load on the backedge of the inner loop could be eliminated. It's
> not because it's not enqueued to be processed by the IGVN after loop
> strip mining expansion. But beyond this immediate problem, because
> IGVN processes each load separately, I think it's possible that it
> succeeds in eliminating one of the loads but not the other (the graph
> could have changed too much in the meantime). Because of that concern
> and because it's a corner case, I think the most robust fix is to
> relax the assert.

Marked as reviewed by neliasso (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/1555


More information about the hotspot-compiler-dev mailing list