GCC Middle and Back End API Reference
reload Struct Reference

#include <reload.h>

Collaboration diagram for reload:

Data Fields

rtx in
rtx out
enum reg_class rclass
enum machine_mode inmode
enum machine_mode outmode
enum machine_mode mode
unsigned int nregs
int inc
rtx in_reg
rtx out_reg
int regno
rtx reg_rtx
int opnum
int secondary_in_reload
int secondary_out_reload
enum insn_code secondary_in_icode
enum insn_code secondary_out_icode
enum reload_type when_needed
unsigned int optional:1
unsigned int nocombine:1
unsigned int secondary_p:1
unsigned int nongroup:1

Detailed Description

   Each reload is recorded with a structure like this.  

Field Documentation

rtx reload::in
     The value to reload from 
rtx reload::in_reg
     A reg for which reload_in is the equivalent.
     If reload_in is a symbol_ref which came from
     reg_equiv_constant, then this is the pseudo
     which has that symbol_ref as equivalent.  
int reload::inc
     Positive amount to increment or decrement by if
     reload_in is a PRE_DEC, PRE_INC, POST_DEC, POST_INC.
     Ignored otherwise (don't assume it is zero).  
enum machine_mode reload::inmode
     The mode this operand should have when reloaded, on input.  
enum machine_mode reload::mode
     The mode of the reload register.  
unsigned int reload::nocombine
     nonzero if this reload shouldn't be combined with another reload.  
unsigned int reload::nongroup
     Nonzero if this reload must use a register not already allocated to a
unsigned int reload::nregs
     the largest number of registers this reload will require.  
int reload::opnum
     The operand number being reloaded.  This is used to group related reloads
     and need not always be equal to the actual operand number in the insn,
     though it current will be; for in-out operands, it is one of the two
     operand numbers.  

Referenced by remove_address_replacements().

unsigned int reload::optional
     Nonzero for an optional reload.  Optional reloads are ignored unless the
     value is already sitting in a register.  
rtx reload::out
     Where to store reload-reg afterward if nec (often the same as

Referenced by remove_address_replacements().

rtx reload::out_reg
enum machine_mode reload::outmode
     The mode this operand should have when reloaded, on output.  

Referenced by remove_address_replacements().

enum reg_class reload::rclass
     The class of registers to reload into.  

Referenced by deallocate_reload_reg().

rtx reload::reg_rtx
     This is the register to reload into.  If it is zero when `find_reloads'
     returns, you must find a suitable register in the class specified by
     reload_reg_class, and store here an rtx for that register with mode from
     reload_inmode or reload_outmode.  
int reload::regno
     Used in find_reload_regs to record the allocated register.  
enum insn_code reload::secondary_in_icode
     If a secondary input reload is required, gives the INSN_CODE that uses the
     secondary reload as a scratch register, or CODE_FOR_nothing if the
     secondary reload register is to be an intermediate register.  
int reload::secondary_in_reload
     Gives the reload number of a secondary input reload, when needed;
     otherwise -1.  
enum insn_code reload::secondary_out_icode
     Likewise, for a secondary output reload.  

Referenced by remove_address_replacements().

int reload::secondary_out_reload
     Gives the reload number of a secondary output reload, when needed;
     otherwise -1.  

Referenced by deallocate_reload_reg(), and remove_address_replacements().

unsigned int reload::secondary_p
     Nonzero if this is a secondary register for one or more reloads.  
enum reload_type reload::when_needed
     Classifies reload as needed either for addressing an input reload,
     addressing an output, for addressing a non-reloaded mem ref, or for
     unspecified purposes (i.e., more than one of the above).  

Referenced by remove_address_replacements().

The documentation for this struct was generated from the following file: