Paolo Bonzini <bonz...@gnu.org> writes: >> That is in brief how I see it and there are a lot of reload details >> missed (like virtual register eliminations or addressing displacement >> constraints etc). > > I suppose those would stay in reload?
I see no reason for those to stay in reload (especially since I think reload should disappear entirely). It is reasonable to pick the total maximum size of the stack frame, and thus resolve all displacement constraints, before register allocation. Carefully relaxing these constraints during reload can give you slightly better results for some instructions, but only in very very few cases, and only in functions which already have unusually large stack frames. I don't consider that to be an important optimization. Given that, we can determine the maximum offset for all virtual registers before register allocation, which suffices for selection of insn constraint alternatives, and then determine the actual offset, once, after register allocation. Ian