8252372: Check if cloning is required to move loads out of loops in PhaseIdealLoop::split_if_with_blocks_post() #3689
Sinking data nodes out of a loop when all uses are out of a loop has
1- Only non control uses are considered which makes little sense (why
2- Sinking of Loads is broken because of the handling of
3- For data nodes for which a control edge can't be set, commoning of
This patch tries to address all issues:
1- it looks at all uses, not only non control uses
2- anti-dependences are computed for each use independently
3- Cast nodes are used to pin clones out of loop
2- requires refactoring of the PhaseIdealLoop::get_late_ctrl()
The existing logic for sinking loads calls clear_dom_lca_tags() for
For anti-dependence analysis to return a correct result, early control
The existing logic pins cloned nodes next to their use. The logic I
For 3-, I added extra Cast nodes for float types. If a chain of data
The text was updated successfully, but these errors were encountered:
I didn't look at this in detail yet but gave it a quick run through our testing. I'm seeing many of the following failures with the
@rwestrel This change now passes all automated pre-integration checks.
After integration, the commit message for the final commit will be:
At the time when this comment was updated there had been 94 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.
@rwestrel Since your change was applied there have been 141 commits pushed to the
Your commit was automatically rebased without conflicts.
Pushed as commit 9d305b9.