RFR: 8350563: C2 compilation fails because PhaseCCP does not reach a fixpoint
Emanuel Peter
epeter at openjdk.org
Thu Mar 6 09:05:53 UTC 2025
On Mon, 3 Mar 2025 18:45:52 GMT, Liam Miller-Cushon <cushon at openjdk.org> wrote:
> Hello, please consider this fix for [JDK-8350563](https://bugs.openjdk.org/browse/JDK-8350563) contributed by my colleague Matthias Ernst.
>
> https://github.com/openjdk/jdk/pull/22856 introduced a new `Value()` optimization for the pattern `AndIL(Con, Mask)`.
> This optimization can look through CastNodes, and therefore requires additional logic in CCP to push these
> transitive uses to the worklist.
>
> The optimization is closely related to analogous optimizations for SHIFT nodes, and we also extend the existing logic for
> CCP worklist handling: the current logic is "if the shift input to a SHIFT node changes, push indirect AND node uses to the CCP worklist".
> We extend it by adding "if the (new) type of a node is an IntegerType that `is_con, ...` to the predicate.
src/hotspot/share/opto/phaseX.cpp line 2022:
> 2020: }
> 2021: };
> 2022: to_push->visit_uses(push_and_uses_to_worklist, is_boundary);
And why not just call this line in two places, rather than having to work with `to_push`? Would that not be less code?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23871#discussion_r1982961208
More information about the hotspot-compiler-dev
mailing list