RFR: 8283466: C2: missing skeleton predicates in peeled loop
Roland Westrelin
roland at openjdk.java.net
Tue May 31 07:48:53 UTC 2022
On Thu, 19 May 2022 08:56:22 GMT, Emanuel Peter <duke at openjdk.java.net> wrote:
> Implemented initializing skeleton predicates for the peeled loop.
>
> We have some predicates / checks before loops that are dependent on the range of the loop, they are checked at runtime. When we split a loop (eg. peeling, pre/main/post, unswitching) one of the sub-loops may get impossible data types and remove the data flow. For static type analysis for the control flow, we need so called skeleton predicates that implement these loop checks before each split off loop. If we do not do this static analysis we generally get `bad graph` asserts, as only removing data flow and not control flow leads to broken graphs.
>
> This was already implemented for pre/main/post loops and loop unswitching, but not for peeling.
>
> Ran large test suite.
> Manual inspection shows that the instantiated skeleton predicate indeed collapses, in the provided regression test.
>
> Rerunning some tests now...
Looks good to me.
-------------
Marked as reviewed by roland (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/8783
More information about the hotspot-compiler-dev
mailing list