Option -rs4gc-spill-on-exceptional-path should use spills/fills rather than gc.relocates on exceptional paths out of a statepoint
Option -rs4gc-spill-on-normal-path should do the same for the normal path
Also included are some changes to deal with joins and PHIs that we'll need to support catchpad-style EH
It's not functional yet, but I think it makes sense to share early so we can have contextualized discussions about where it should go and who should implement what.
I have the code structured to use a flag to decide if it should spill on exceptional paths or not, which is independent of anything else. Of course it's not actually valid to use relocates on catchpad EH because we can't split those predecessors, so I've put assertions in the places that would fall over if the invalid combo is attempted.