RFR: 8271202: C1: assert(false) failed: live_in set of first block must be empty

Martin Doerr mdoerr at openjdk.java.net
Thu Oct 7 11:02:10 UTC 2021


On Wed, 28 Jul 2021 06:57:26 GMT, Yi Yang <yyang at openjdk.org> wrote:

> A local variable(smallinvoc) is defined in B3 and only used in B14

This sounds like a bug. B3 doesn't dominate B14, so B14 can't use the variable. Shouldn't the local slot have been invalidated on the path between the two blocks?
Invalidation of local slots usually occurs when the control flow predecessors have different types or a dead value (indicated by `new_value == NULL` in `BlockBegin::try_merge`). 
Maybe it's a case which C1 can't handle. If so, bailing out would be the right choice IMHO.

test/hotspot/jtreg/compiler/c1/ExtendLocalVarLifetime.java line 72:

> 70:         }
> 71:     }
> 72: }

newline missing

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

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


More information about the hotspot-compiler-dev mailing list