GCC Middle and Back End API Reference
|
#include <reload.h>
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 |
Each reload is recorded with a structure like this.
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 group.
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 reload_in)
Referenced by remove_address_replacements().
rtx reload::out_reg |
Referenced by remove_address_replacements().
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().