RFR: 8256385: C2: fatal error: modified node is not on IGVN._worklist

Tobias Hartmann thartmann at openjdk.java.net
Tue Nov 17 08:54:19 UTC 2020


`PhaseIdealLoop::find_safepoint` creates a temporary MergeMemNode that is not removed if we bail out from the optimization early (see `return NULL` statements). The fix is to simply add the MergeMem to the worklist to make sure it is always reclaimed by IGVN.

Interestingly this code path was not triggered by any of our tests but only with a test case generated by the Java Fuzzer. I've added a simplified version of that test case.

Thanks,
Tobias

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

Commit messages:
 - 8256385: C2: fatal error: modified node is not on IGVN._worklist

Changes: https://git.openjdk.java.net/jdk/pull/1252/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1252&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256385
  Stats: 55 lines in 2 files changed: 55 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1252.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1252/head:pull/1252

PR: https://git.openjdk.java.net/jdk/pull/1252


More information about the hotspot-compiler-dev mailing list