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