Integrated: 8313672: C2: PhaseCCP does not correctly track analysis dependencies involving shift, convert, and mask

Daniel Lundén duke at openjdk.org
Wed Nov 15 09:22:53 UTC 2023


On Tue, 31 Oct 2023 07:14:07 GMT, Daniel Lundén <duke at openjdk.org> wrote:

> This changeset fixes an issue where the `PhaseCCP` analysis stopped before fixpoint due to `Value`-updates for `AndL` nodes involving shift, convert, and mask (`MulNode::AndIL_shift_and_mask_is_always_zero`). Such updates did not previously repopulate the `PhaseCCP` worklist correctly.
> 
> Changes:
> - Fix the issue by adding the missing pattern to `PhaseCCP::push_and`.
> - Generalize `visit_uncasted_uses` to `visit_uses` to enable the functionality required in `PhaseCCP::push_and`.
> - Update the `assert` error message that reported the issue to better describe the problem. The `PhaseCCP` analysis is optimistic, and the previous error message seemed to indicate the opposite ("Missed optimization opportunity"). If the assert triggers, it could be that the analysis result leads to unsound transformations later on.
> - Add a regression test
> 
> Result after `PhaseCCP` analysis (without fix, note `long:0` for node 116):
> ![before](https://github.com/openjdk/jdk/assets/4222397/3f2343da-8573-464d-9352-a147d0faeab8)
> 
> Result after `PhaseCCP` analysis (with fix, note `long` for node 116):
> ![after](https://github.com/openjdk/jdk/assets/4222397/6bf44964-cff8-49db-9825-4a4667f4e769)
> 
> ### Testing
> `tier1`, `tier2`, `tier3`, `tier4`, `tier5` (windows-x64, linux-x64, linux-aarch64, macosx-x64, macosx-aarch64)

This pull request has now been integrated.

Changeset: bad69996
Author:    Daniel Lundén <daniel.lunden at oracle.com>
Committer: Roberto Castañeda Lozano <rcastanedalo at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/bad6999634686dcfd04c88ddab855aa202cf35b9
Stats:     131 lines in 4 files changed: 105 ins; 22 del; 4 mod

8313672: C2: PhaseCCP does not correctly track analysis dependencies involving shift, convert, and mask

Reviewed-by: epeter, rcastanedalo, thartmann

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

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


More information about the hotspot-compiler-dev mailing list