RFR(S): 8209639: assert failure in coalesce.cpp: attempted to spill a non-spillable item
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Aug 17 21:34:33 UTC 2018
"Hammer approach" ;)
Did we forgot to mark testN_mem_reg0 as node producing flag? We do restrict some RA optimizations when nodes produce flags.
thanks,
Vladimir
On 8/17/18 8:26 AM, Roland Westrelin wrote:
>
> http://cr.openjdk.java.net/~roland/8209639/webrev.00/
>
> There are 2 loads for the same field in the test() method of the test
> case, one in an exception handler, one in the normal code path. The 2
> loads are commoned and the resulting load is between the call and the
> catch node. The only use for the load is a test against null. The test +
> load is matched as a testN_mem_reg0 and is later cloned by
> PhaseCFG::call_catch_cleanup() and the 2 clones are merged by a Phi
> causing a spill of a flag register.
>
> The straightforward fix I suggest here is to bailout and re-attempt
> compilation with load subsuming disabled.
>
> The test fails with 8 (with a SIGSEGV) 12 and I suppose 11 as well but I
> haven't tried. I'm fine with fixing this for 12 and backporting the fix
> later.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list