This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: The secondary reload


On 12/07/10 09:30, Paulo J. Matos wrote:
Jeff Law<law@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]