Trouble understanding reload dump file format..

Jim Wilson wilson@specifix.com
Mon Mar 19 19:43:00 GMT 2007


Dave Korn wrote:
>   In particular, I really don't understand what a RELOAD_FOR_INPUT_ADDRESS
> means when all the operands are regs, or why there should be three reloads for
> the same operand when it's just a clobber scratch.  Is there something special
> about how reload handles clobber and match_scratch?

Reload types are used for a number of purposes.  One of them is the 
ordering used when emitting the actual reload fixup insns.  A fixup for 
an input reload must come before the insn.  A fixup for an output reload 
must come after the insn.  A fixup for an address used by an input 
reload must come before the input reloads.  A fixup for an address used 
by an output reload must come after the insn, but before the output 
reloads.  Etc.  Careful ordering allows us to know the lifetimes of 
every reload, and hence allows us to share reload registers between 
reload types that don't overlap, thus reducing the total number of spill 
regs required.

In this case, we have an input reload that requires secondary reloads. 
Obviously, the secondary reloads must be emitted before the input 
reload, so we just use the "input address" reload type for convenience, 
even though there is no actual address involved here.  That gets the 
reloads emitted in the right place.

As usual, I'm over simplifying.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com



More information about the Gcc mailing list