RFR: 8350563: C2 compilation fails because PhaseCCP does not reach a fixpoint [v8]
Liam Miller-Cushon
cushon at openjdk.org
Sat Apr 5 18:51:35 UTC 2025
> 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.
Liam Miller-Cushon has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision:
- Add -XX:+UnlockDiagnosticVMOptions
- Check type before uncasting
A child phi node may transition from con to non-con, making the AND node transition back from "0" to its current type. If that current type is still TOP we're in violation of monotonicity. Therefore, don't apply optimization if AND is not integer yet.
- Merge commit '9bb804b14e1' into JDK-8350563
- Explicitly check for OP_Con instead of TypeInteger::is_con.
322 Phi === 303 119 255 [[ 399 388 351 751 366 377 ]] #int:-256..127 !jvms: Integer::parseInt @ bci:151 (line 625)
While this Phi dumps as "#int:-256..127", `phase->type(expr)` returns a type that is_con -256.
- Update test/hotspot/jtreg/compiler/ccp/TestAndConZeroCCP.java
Co-authored-by: Christian Hagedorn <christian.hagedorn at oracle.com>
- Merge remote-tracking branch 'origin/master' into JDK-8350563
- Reformat test and update package to ccp
- Review comments
- Update test/hotspot/jtreg/compiler/c2/TestAndConZeroCCP.java
Co-authored-by: Emanuel Peter <emanuel.peter at oracle.com>
- copyright
- ... and 5 more: https://git.openjdk.org/jdk/compare/e3f535dd...23119e18
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/23871/files
- new: https://git.openjdk.org/jdk/pull/23871/files/b064c47b..23119e18
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=23871&range=07
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=23871&range=06-07
Stats: 100210 lines in 2709 files changed: 41543 ins; 47635 del; 11032 mod
Patch: https://git.openjdk.org/jdk/pull/23871.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/23871/head:pull/23871
PR: https://git.openjdk.org/jdk/pull/23871
More information about the hotspot-compiler-dev
mailing list