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