RegAllocFast is looking at the successors' liveins to determine the initial liveouts of the block being allocated. Unfortunately if the block ends with an invoke, one of these is the landingpad which really gets its liveins from the runtime, not us.
This leads to registers being reserved in the block until they're fully clobbered by an instruction in reverse-order. In particularly tight situations on x86 (base pointer, lots of arg registers, and al used for varargs purposes, a _NOREX regclass being allocated) we can end up with nothing spillable and fail to allocate.
Also, it turns out that RegUnit 0 is valid, which threw me for a while when I was relying on dumpState and AH was nowhere to be found. So this fixes the dumper too.
Calling getExceptionPointerRegister() directly from fast regalloc seems hacky. We don't want to copy-paste this code everywhere that cares about physical register live-outs.