RFR(S): 8209639: assert failure in coalesce.cpp: attempted to spill a non-spillable item
Roland Westrelin
rwestrel at redhat.com
Mon Aug 20 14:33:58 UTC 2018
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.
Roland.
More information about the hotspot-compiler-dev
mailing list