pseudo-register addressing
Matthew Fluet
fluet@CS.Cornell.EDU
Thu, 13 Sep 2001 09:53:12 -0400 (EDT)
> > If the lifetime is ok, then couldn't you store the pseudo-registers on the
> > stack? The point being that this would save one register.
>
> It would make sense to do this by patching the backend (not codegen) register
> allocator to keep everything on the stack. That should be easy to do, although
> it would be a bit more work to try to shrink stack frame size.
It wouldn't be trivial, but we could set it up so that we have all of the
"real" stack value at the bottom of the stack and then all the pseudo-reg
stack values at the top. By the time we get to a limit-check or a
non-tail call, all the pseudo-regs will be dead, so we can over-write the
top of the stack with function arguments, etc.
> With the x86-codegen now tracking stack slots, I can't remember if there is any
> advantage to using pseudo-regs.
At some point in the future, yes. But, right now, tracking stack slots is
still prohibitively slow on a very large program. The basic issue is that
SI(12) means different things at different points in the CPS function; I
want to use property-lists to speed some things up, but I really need
something like (label * memloc) -> plist. Hmm..., just writing that down
gives me an idea. Both labels and memlocs have hashes, so maybe it would
suffice to use a hash table.