Ian Lance Taylor <ian@airs.com> writes: > The current reload pass includes general heuristics to handle > reloading memory addresses. This code knows things like "if stack > pointer plus displacement is not a valid memory address, try loading > the displacement into a register." Many targets currently rely on > those heuristics to generate valid code. I haven't been able to quite > pin down where this happens in your proposal. For example, it's easy > for an address to use the frame pointer and be valid before reload, > and then for reload to eliminate the frame pointer (in fact, in your > scheme, what does frame pointer elimination?) and produce an offset > from the stack pointer which is invalid. That is, spill code or frame > pointer elimination can generate invalid address, and something needs > to fix them up. Where does that happen, and how?
The rable.pdf completely miss description of registers elimination. It's important and difficult part of RA. (The "old new-ra" also havn't eliminatin) Denis.