An initial attempt was made in JDK-8233033. However, the fix assumed wrongly that partially peeled statements always have a dependency inside the loop to be unswitched (i.e. when following their outputs eventually a phi node is hit belonging to either the slow or the fast loop). This is not always the case (JDK-8235984).
The fix forJDK-8233033 was replaced in JDK-8235984 by a simple bailout for JDK-14. A proper fix could be targeted for JDK-15.
The fix for
- relates to
-
JDK-8233033 C2 produces wrong result while unswitching a loop due to lost control dependencies
-
- Closed
-
-
JDK-8235984 C2: assert(out->in(PhiNode::Region) == head || out->in(PhiNode::Region) == slow_head) failed: phi must be either part of the slow or the fast loop
-
- Closed
-