Rely on MachineRegisterInfo's knowledge of used physical
registers. Use addPhysRegUsed to avoid manually trying to avoid
re-picking the same registers rather than specially avoiding it.
Move flat_scratch initialization earlier, so the uses are visible
when making these decisions.
This will make it easier to add another reserved register
at the end for the stack pointer rather than handling another
special case.