Will Coleda wrote:
Can you describe a situation where this occurs that isn't a bug in the
register allocator?
Yes. IIRC, it was added when I was working on the .Net bytecode
translator, and it needed to take references to registers in callers. If
you're doing that, you need to know that the register won't get re-used
once the reference has been taken, or you'll end up with a reference to
the wrong register. Named registers holding things that references were
being taken to, were marked with :unique_reg, to make sure this didn't
happen.
It also, as Pm mentioned, works as a hint to the register allocator not
to bother trying to allocate something that will have life over the
entire compilation unit anyway.
Jonathan