On 12/07/10 09:30, Paulo J. Matos wrote:
Jeff Law<l...@redhat.com>  writes:

You're better off taking the time to understand how secondary reloads
work.  In addition to your port working better, the knowledge you gain
will help you with other maintenance burdens with your port.
Yes, I think you're right. It seems to be a powerful tool that I have
been underestimating. (actually I have been assuming that it is a
workaround for when define_insn are not enough). :)
The best way to think about it is it's a way to get another register in cases where it wasn't apparent until reload that an additional register was necessary.

It's fairly complex and a source of numerous questions from people maintaining their own ports. Even those of us who have done significant port work forget cases that need to be handled by the secondary reload mechanisms. I believe most ports have secondary reloads of one form or another that you can refer to. You might want to review

mn10300/mn10300.c::mn10300_secondary_reload_class
pa/pa.c::emit_move_sequence pa/pa.c::secondary_reload
i386/i386.c::ix86_secondary_reload
m68k/m68k.c::m68k_secondary_reload_class



Note that defining secondary reloads when none was necessary can lead to poor code generation; so do your best to define the precise set of circumstances when they're needed.

Jeff

Reply via email to