RFR: 8303279: C2 Compiler crash (triggered by Kotlin 1.8.10)

Roland Westrelin roland at openjdk.org
Tue Jun 27 14:48:33 UTC 2023


The crash occurs because at split if during IGVN, a `SubTypeCheck` is
created with null as input. That happens because the control path the
`SubTypeCheck` is cloned for is dead. To fix that I propose delaying
split if until dead paths are collapsed.

I added an assert to check a nullable first input to `SubTypeCheck`
nodes (which should be impossible because it should be null
checked). When I ran testing, a number of cases showed up with known
non null values non properly marked as non null. I fixed them.

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

Commit messages:
 - fix & test

Changes: https://git.openjdk.org/jdk/pull/14678/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14678&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8303279
  Stats: 103 lines in 6 files changed: 89 ins; 1 del; 13 mod
  Patch: https://git.openjdk.org/jdk/pull/14678.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14678/head:pull/14678

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


More information about the hotspot-compiler-dev mailing list