So far I was ignoring register uses of return instructions
and it was working because at most one register could be
returned. Now that more complex returns are supported it
is necessary to keep track of the registers used by
returns.
The abi fuzzer triggered an assertion failure in the
register allocator with the following IL:
R1 =l load [%t16]
R3 =l load [8 + %t16]
ret
The regalloc would use R1 for %t16, and then a (nice)
assertion realized the inconsistent state because R1
could only be def'd by an assignment to %t16.