Ensure register:value appears first or last in block.
Either it is the first register referenced, or the last register
assigned. This will enable us to use a machine register that is
normally available for register allocation, without having to worry
that it may be an alias for a live pseudo-register.
- In continuations that receive a value through register:value,
create a temporary register and make the first instruction be an
assignment of register:value to the temporary register, before we
the pop-extra.
The RTL optimizer avoids propagating this alias so the assignment
will stay in place, but later on, the LAP generator will take
advantage of the alias to avoid generating additional unnecessary
code.
- In returns that store a value in register:value, create a temporary
register and assign it where we used to assign to register:value,
and then store the temporary in register:value as the very last
instruction before pop-return after any frame-popping which might
involve temporaries.