RFR: 8364970: Redo JDK-8327381 by updating the CmpU type instead of the Bool type [v3]

Francisco Ferrari Bihurriet fferrari at openjdk.org
Thu Aug 14 06:08:22 UTC 2025


> Hi, this pull request is a second take of 1383fec41756322bf2832c55633e46395b937b40, by updating the `CmpUNode` type as either `TypeInt::CC_LE` (case 1a) or `TypeInt::CC_LT` (case 1b) instead of updating the `BoolNode` type as `TypeInt::ONE`.
> 
> With this approach a56cd371a2c497e4323756f8b8a08a0bba059bf2 becomes unnecessary. Additionally, having the right type in `CmpUNode` could potentially enable further optimizations.
> 
> #### Testing
> 
> In order to evaluate the changes, the following testing has been performed:
> 
> * `jdk:tier1` (see [GitHub Actions run](https://github.com/franferrax/jdk/actions/runs/16789994433))
> * [`TestBoolNodeGVN.java`](https://github.com/openjdk/jdk/blob/jdk-26+9/test/hotspot/jtreg/compiler/c2/gvn/TestBoolNodeGVN.java), created for [JDK-8327381: Refactor type-improving transformations in BoolNode::Ideal to BoolNode::Value](https://bugs.openjdk.org/browse/JDK-8327381) (1383fec41756322bf2832c55633e46395b937b40)
>     * I also checked it breaks if I remove the `CmpUNode::Value_cmpu_and_mask` call
> * Private reproducer for [JDK-8349584: Improve compiler processing](https://bugs.openjdk.org/browse/JDK-8349584) (a56cd371a2c497e4323756f8b8a08a0bba059bf2)
> * A local slowdebug run of the `test/hotspot/jtreg/compiler/c2` category on _Fedora Linux x86_64_
>     * Same results as with `master` (f95af744b07a9ec87e2507b3d584cbcddc827bbd)

Francisco Ferrari Bihurriet has updated the pull request incrementally with three additional commits since the last revision:

 - Improve the IR test to add the new covered cases
   
   I also checked the test is now failing in the master branch (at
   f95af744b07a9ec87e2507b3d584cbcddc827bbd).
 - Remove IR test inverted asserts
   
   According to my IGV observations, these inversions aren't necessarily
   effective. Also, I assume it is safe to remove them because if I apply
   this change to the master branch, the test still passes (tested at
   f95af744b07a9ec87e2507b3d584cbcddc827bbd).
 - Add requested comments from the reviews
   
   Add a comment with the BoolTest::cc2logical inferences tables, as
   suggested by @tabjy.
   
   Also, add a comment explaining how PhaseCCP::push_cmpu is handling
   grandparent updates in the case 1b, as agreed with @chhagedorn.

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/26666/files
  - new: https://git.openjdk.org/jdk/pull/26666/files/27ed1a31..e6b1cb89

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=26666&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26666&range=01-02

  Stats: 279 lines in 2 files changed: 261 ins; 0 del; 18 mod
  Patch: https://git.openjdk.org/jdk/pull/26666.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26666/head:pull/26666

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


More information about the hotspot-compiler-dev mailing list