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

Saranya Natarajan snatarajan at openjdk.org
Tue Jun 24 16:39:28 UTC 2025


On Tue, 24 Jun 2025 16:32:11 GMT, Saranya Natarajan <snatarajan at openjdk.org> wrote:

>> 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

I did a force push without having read the guide properly. However, please note that the commit [fc434b6](https://github.com/openjdk/jdk/commit/fc434b6a2d3d1affa8599450e25ec983b73b6fee) was merge with master with no changes from me and force push commit [939be78](https://github.com/openjdk/jdk/commit/939be78b0aaa24b00b8d63b36460bcd210774def) was just changing the commit message. I am really sorry for this.

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

PR Comment: https://git.openjdk.org/jdk/pull/25682#issuecomment-3001161136


More information about the hotspot-compiler-dev mailing list