On 10/02/2010 19:19, Sergio Ruocco wrote: > It seems that prologue()/epilogue() are called quite late in the > compiling process, thus new registers cannot be created (no_new_pseudos > assert fires) and/or emit_move_insn() does not go through > LEGITIMIZE_ADDRESS()... will work on this tomorrow...
Yes, absolutely, it runs very late, after even reload, so all rtl that it generates has to match perfectly and exactly to machine insns in their natural addressing modes using real hard regs. You can avoid all (well, most of) this hassle by switching to rtl-based epilogues, which get passed through all the usual expand/combine/recog/reload machinery. cheers, DaveK