JDK-8278231 : C2: Cleanup loop invariance handling for data nodes dependent on projection into the loop
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 18
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • Submitted: 2021-12-03
  • Updated: 2021-12-03
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Relates :  
Relates :  
Description
JDK-8146792 added code to treat data nodes which are dependent on the projection into the loop (after all predicates) as non-loop invariant. This avoids that a predicate is created with nodes that are still pinned further down at the projection into a loop (leads to a broken graph). A follow-up fix was required to fix some edge cases not covered by JDK-8146792 (JDK-8277529). However, the entire special handling for such data nodes should be revisited: We should directly compute the invariance based on other nodes and not preset them as non-invariant in the constructor. This makes it less error-prone and avoids surprises in the future when other new nodes are created which did not get the special check in the constructor.