-
Bug
-
Resolution: Fixed
-
P2
-
11, 12, 13, 14
-
b27
-
Fix failed
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8236303 | 15 | Christian Hagedorn | P2 | Resolved | Fixed | team |
JDK-8246418 | 13.0.4 | Christian Hagedorn | P2 | Resolved | Fixed | b04 |
JDK-8240608 | 11.0.8-oracle | Christian Hagedorn | P2 | Closed | Fixed | b01 |
JDK-8240674 | 11.0.8 | Christian Hagedorn | P2 | Resolved | Fixed | b01 |
The C2 compiled code produces a wrong result for 'iFld' in the attached test case. It is -8 instead of -7. The loop in the test case is partially peeled and then unswitched. The wrong result is produced because a wrong state is transferred to the interpreter when an uncommon trap is hit in the C2 compiled code in the fast version of the unswitched loop.
The problem is when unswitching the loop, we clone the original loop predicates for the slow and fast version of the loop but we do not account for partially peeled statements that are control dependent on the loop predicates (i.e. need to be executed after the predicates). As a result, these are executed before the cloned loop predicates.
- backported by
-
JDK-8236303 C2 produces wrong result while unswitching a loop due to lost control dependencies
- Resolved
-
JDK-8240674 C2 produces wrong result while unswitching a loop due to lost control dependencies
- Resolved
-
JDK-8246418 C2 produces wrong result while unswitching a loop due to lost control dependencies
- Resolved
-
JDK-8240608 C2 produces wrong result while unswitching a loop due to lost control dependencies
- Closed
- relates to
-
JDK-8236722 Extend loop unswitching to handle loop predicates with a control dependency to partially peeled statements
- Open
-
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