[11] RFR(S): 8202949: C2: assert(false) failed: Bad graph detected in build_loop_late

Tobias Hartmann tobias.hartmann at oracle.com
Wed May 23 13:03:00 UTC 2018

Hi Roland,

thanks for looking at this.

On 23.05.2018 13:58, Roland Westrelin wrote:
> Isn't it the case that the CastII and the ConvI2L have the same type i.e 0..9?


> So if you leave the CastII in, why doesn't it become top?

Because the CastII is range check (control) dependent and can therefore not flow up/around during
loop optimizations. In the end (when OpaqueNodes go away), all that dead code is removed anyway but
in the failing case the problem really is that the memory path becomes dead due to the ConvI2L
moving up while the control path is still there (and not yet known to be dead as well). The sole
purpose of the range check dependent CastIIs was to avoid this inconsistency (see JDK-6675699).


More information about the hotspot-compiler-dev mailing list