Integrated: 8263303: C2 compilation fails with assert(found_sfpt) failed: no node in loop that's not input to safepoint

Roland Westrelin roland at openjdk.java.net
Thu Jun 10 06:59:20 UTC 2021


On Tue, 1 Jun 2021 08:30:48 GMT, Roland Westrelin <roland at openjdk.org> wrote:

> The loop strip mining verification code catches a node which is pinned
> in the outer strip mined loop but not referenced from the safepoint
> node.
> 
> The test case is an example of how this could happen. The array[i]
> load is referenced from the safepoint initially through:
> 
> (j - 10) * array[i]
> 
> It is sunk out of the inner loop and pinned in the outer loop. A
> following loop opts round causes j - 10 to constant fold to 0 and as a
> consequence the array load is no longer referenced from the safepoint
> but pinned in the outer strip mined loop.
> 
> I tried to find a way to preserve the invariant that all nodes in the
> outer strip mined loop are referenced from the safepoint but found no
> robust way for that. So the fix removes that part of the verification
> code.
> 
> This requires loop cloning code to be adjusted for nodes pinned in the
> outer strip mined loop but not referenced from the safepoint.

This pull request has now been integrated.

Changeset: d4377afb
Author:    Roland Westrelin <roland at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/d4377afb999f4f03d384ded97771c83ea1c1f513
Stats:     103 lines in 3 files changed: 74 ins; 28 del; 1 mod

8263303: C2 compilation fails with assert(found_sfpt) failed: no node in loop that's not input to safepoint

Reviewed-by: chagedorn, kvn

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

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


More information about the hotspot-compiler-dev mailing list