RFR: 8347273: C2: VerifyIterativeGVN for Ideal and Identity
Emanuel Peter
epeter at openjdk.org
Mon Jun 9 10:28:30 UTC 2025
**Past Work**
With https://github.com/openjdk/jdk/pull/11775 / [JDK-8298952](https://bugs.openjdk.org/browse/JDK-8298952) we added `Node::Value` verification.
**This PR**
I'm now adding verification for `Ideal` and `Identity`. I'm adding two bits to the flag `VerifyIterativeGVN`.
I found many many node types that hit my verification assert, i.e. that could still be optimized after IGVN is over, just because these nodes were not put on the worklist any more.
My approach was to aggressively bail-out for all nodes that had an issue. This way, we can address one by one in follow-up RFEs. For many, I did some initial assessment, and left some comments about what issues I encountered.
**Future Work:**
In many cases, the issue is just a missing notification when inputs of inputs are changed. These would be good starter tasks. But there are probably also more complicated cases. And there are surely cases where verification will be impossible, because it is possible that the Idea / Identity optimizations traverse longer paths, and we cannot expect that notification makes it down that path. For those cases, we will have to leave the exception and document it well.
Testing passed tier1-3, with extra timeout factor 20.
-------------
Commit messages:
- missing return false
- StoreNode Identity
- StrEquals
- rm rehash for Load, we have a general exception already
- Merge branch 'master' into JDK-8347273-verify-IGVN-Ideal-Identity
- CallJava in general
- CallDynamicJava
- Check unique, handle CmpP
- fix Region and add worklist empty checks
- fix a few more cases
- ... and 58 more: https://git.openjdk.org/jdk/compare/65fda5c0...a12d49a0
Changes: https://git.openjdk.org/jdk/pull/22970/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=22970&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8347273
Stats: 859 lines in 5 files changed: 844 ins; 0 del; 15 mod
Patch: https://git.openjdk.org/jdk/pull/22970.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/22970/head:pull/22970
PR: https://git.openjdk.org/jdk/pull/22970
More information about the hotspot-dev
mailing list