RFR: 8318049: C2: assert(!failure) failed: Missed optimization opportunity in PhaseIterGVN [v2]

Jasmine Karthikeyan jkarthikeyan at openjdk.org
Thu Oct 19 12:05:57 UTC 2023


> This patch fixes [JDK-8318049](https://bugs.openjdk.org/browse/JDK-8318049) by informing XorI and XorL nodes in addition to sub and phi nodes when Cast nodes are updated during IGVN. 
> 
> The bug manifests when loop optimizations change the IR:
> ![image](https://github.com/openjdk/jdk/assets/25208576/5274f2cc-a6fb-4ce6-89f4-4a638577901c)
> 
> To the following form:
> ![image](https://github.com/openjdk/jdk/assets/25208576/07bcbec3-f0bb-4d6a-b312-6a459e6b8c0c)
> 
> XorI nodes check for that form in their `Value` call, to do the `x ^ x => 0` transformation, checking through casts. As the cast node didn't inform the Xor when it changes, the transformation doesn't have a chance to run.
> https://github.com/openjdk/jdk/blob/5bd10521eb5e51e76b20e955addd45f76abba6f7/src/hotspot/share/opto/addnode.cpp#L947-L950
> 
> I've attached a reduced version of the test found in the bug. Reviews would be appreciated!

Jasmine Karthikeyan has updated the pull request incrementally with one additional commit since the last revision:

  Changes from code review

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/16214/files
  - new: https://git.openjdk.org/jdk/pull/16214/files/06669ce4..2880daa7

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

  Stats: 4 lines in 2 files changed: 1 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/16214.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16214/head:pull/16214

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


More information about the hotspot-compiler-dev mailing list