RFR: 8263303: C2 compilation fails with assert(found_sfpt) failed: no node in loop that's not input to safepoint [v2]
Roland Westrelin
roland at openjdk.java.net
Wed Jun 9 09:09:42 UTC 2021
> 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.
Roland Westrelin has updated the pull request incrementally with one additional commit since the last revision:
remove useless line from test
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/4278/files
- new: https://git.openjdk.java.net/jdk/pull/4278/files/92264e39..474d374b
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4278&range=01
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4278&range=00-01
Stats: 2 lines in 1 file changed: 0 ins; 2 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/4278.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/4278/head:pull/4278
PR: https://git.openjdk.java.net/jdk/pull/4278
More information about the hotspot-compiler-dev
mailing list