Hi all,
This patch adds a new pass to consolidate lowering of complex backend-specific 
code patterns, such as `MacroLogicV` and the optimization proposed by #21244. 
Moving these optimizations to backend code can simplify shared code, while also 
making it easier to develop more in-depth optimizations. The linked bug has an 
example of a new optimization this could enable. The new phase does GVN to 
de-duplicate nodes and calls nodes' `Value()` method, but it does not call 
`Identity()` or `Ideal()` to avoid undoing any changes done during lowering. It 
also reuses the IGVN worklist to avoid needing to re-create the notification 
mechanism.

In this PR only the skeleton code for the pass is added, moving `MacroLogicV` 
to this system will be done separately in a future patch. Tier 1 tests pass on 
my linux x64 machine. Feedback on this patch would be greatly appreciated!

-------------

Commit messages:
 - Implement PhaseLowering

Changes: https://git.openjdk.org/jdk/pull/21599/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=21599&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8342662
  Stats: 292 lines in 21 files changed: 279 ins; 12 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/21599.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/21599/head:pull/21599

PR: https://git.openjdk.org/jdk/pull/21599

Reply via email to