RFR: 8325478: Restructure the macro expansion compiler phase to not include macro elimination [v7]

Saranya Natarajan snatarajan at openjdk.org
Tue Jun 24 16:32:11 UTC 2025


> This changeset restructures the macro expansion phase to not include macro elimination and also adds a flag StressMacroElimination which randomizes macro elimination ordering for stress testing purposes.
> 
> Changes:
> - Implemented a method `eliminate_opaque_looplimit_macro_nodes` that removes the functionality for eliminating Opaque and LoopLimit nodes from the `expand_macro_nodes ` method. 
> - Introduced compiler phases` PHASE_AFTER_MACRO_ELIMINATION` 
> -  Added a new Ideal phase for individual macro elimination steps. 
> - Implemented the flag `StressMacroElimination`. Added functionality tests for `StressMacroElimination`, similar to previous stress flag `StressMacroExpansion` ([JDK-8317349](https://bugs.openjdk.org/browse/JDK-8317349)).
> 
> Below is a sample screenshot (IGV print level 4 ) mainly showing the new phase .
> ![image](https://github.com/user-attachments/assets/16013cd4-6ec6-4939-ac66-33bb03d59cd6)
> 
> Questions to reviewers: 
> - Is the new macro elimination phase OK, or should we change anything?
> - In `compile.cpp `, `PHASE_ITER_GVN_AFTER_ELIMINATION` follows `PHASE_AFTER_MACRO_ELIMINATION` in the current fix. Should `PHASE_ITER_GVN_AFTER_ELIMINATION` be removed ? 
> 
> Testing:
> GitHub Actions
> tier1 to tier5 on windows-x64, linux-x64, linux-aarch64, macosx-x64, and macosx-aarch64.
> Tested that thousands of graphs are correctly opened and visualized with IGV using the same test used in  ([JDK-8317349](https://bugs.openjdk.org/browse/JDK-8317349))

Saranya Natarajan has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision:

  merge with master
  Merge branch 'master' of https://git.openjdk.org/jdk into JDK-8325478

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/25682/files
  - new: https://git.openjdk.org/jdk/pull/25682/files/fc434b6a..939be78b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25682&range=06
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25682&range=05-06

  Stats: 0 lines in 0 files changed: 0 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/25682.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25682/head:pull/25682

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


More information about the hotspot-compiler-dev mailing list