RFR(S): 8209639: assert failure in coalesce.cpp: attempted to spill a non-spillable item
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Aug 20 20:07:12 UTC 2018
On 8/20/18 7:33 AM, Roland Westrelin wrote:
>
> Thank you for looking at this.
>
>> "Hammer approach" ;)
>
> Right.
>
>> Did we forgot to mark testN_mem_reg0 as node producing flag? We do
>> restrict some RA optimizations when nodes produce flags.
>
> But given, the load is between the call and the catch node, it must be
> cloned by PhaseCFG::call_catch_cleanup(). So if the load is matched as a
> testN_mem_reg0, once it is cloned, there are 2 of them merged by a Phi
> but we can't merge flags. That all happens before register
> allocation. As I understand we would have to not match the load as a
> testN_mem_reg0 if it's between the call and the catch node but that's
> hard to test in the matcher.
Got it. You general fix is good.
Thanks,
Vladimir
>
> Roland.
>
>
More information about the hotspot-compiler-dev
mailing list