## free-up-framepointer-in-machcode-intel32-g.pkg## This transform frees up the ebp register by in essence# replacing each read ebp[n] with esp[n+d] for an appropriate d.## See additional comments in:## src/lib/compiler/back/low/omit-frameptr/free-up-framepointer-in-machcode.api## Invariants: fp = sp + delta# && stack grows from high to low# && fp >= sp## Assumptions: At the entry node fp = sp + initial_fp_to_sp_delta## The tricky business is to recognize that things that# look like registers may really be memory registers.## -> Lal George's To-do list notes that gcc clearly does not use a# separate pass to implement this, as we do, with the implication# that maybe we shouldn't either. :-) XXX SUCKO FIXME

mcf::COPY { kind => rkj::INT_REGISTER, dst, src, ... } => { # The situation where SP <- FP is somewhat complicated. # The copy must be extracted, and a lea generated. # Should it be before or after the parallel copy? # Depends on if SP is used. # However, will such a thing ever exist in a parallel copy!?