RFR: 8361699: C2: assert(can_reduce_phi(n->as_Phi())) failed: Sanity: previous reducible Phi is no longer reducible before SUT [v4]

Roberto Castañeda Lozano rcastanedalo at openjdk.org
Tue Sep 16 09:55:04 UTC 2025


On Tue, 16 Sep 2025 02:35:01 GMT, Cesar Soares Lucas <cslucas at openjdk.org> wrote:

>> Please, review this patch to fix issue that may occur when reducing allocation merge.
>> 
>> As the assert message describe, the problem is a `Phi` considered reducible during one invocation of  `adjust_scalar_replaceable_state` turned out to be later non-reducible. This situation can happen if a subsequent invocation of the same method causes all inputs to the phi to be NSR; therefore there is no point in reducing the Phi. It can also happen during the propagation of NSR state done by `find_scalar_replaceable_allocs`. 
>> 
>> The change in `revisit_reducible_phi_status` is just a clean-up.
>> The real fix is in `find_scalar_replaceable_allocs`.
>> 
>> Tested on Linux x64/Aarch64 release/fastdebug with JTREG tier1-3.
>
> Cesar Soares Lucas has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Merge remote-tracking branch 'refs/remotes/origin/ram-non-reducible' into ram-non-reducible
>  - Merge consecutive ifs

Looks good, thanks! Please consider addressing [JDK-8367367](https://bugs.openjdk.org/browse/JDK-8367367) as follow-up work, while the context is still available in the higher levels of our memory hierarchy ;)

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

Marked as reviewed by rcastanedalo (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/27063#pullrequestreview-3228800991


More information about the hotspot-compiler-dev mailing list