GCC Middle and Back End API Reference
|
#include <rtl.h>
Data Fields | |
enum machine_mode | mode |
addr_space_t | as |
rtx * | outer |
rtx * | inner |
rtx * | segment |
rtx * | base |
rtx * | index |
rtx * | disp |
rtx * | segment_term |
rtx * | base_term |
rtx * | index_term |
rtx * | disp_term |
rtx * | base_term2 |
enum rtx_code | addr_outer_code |
enum rtx_code | base_outer_code |
bool | autoinc_p |
Information about an address. This structure is supposed to be able to represent all supported target addresses. Please extend it if it is not yet general enough.
enum rtx_code address_info::addr_outer_code |
ADDRESS if this structure describes an address operand, MEM if it describes a MEM address.
Referenced by lsb_bitfield_op_p().
addr_space_t address_info::as |
The address space.
Referenced by lsb_bitfield_op_p().
bool address_info::autoinc_p |
True if this is an RTX_AUTOINC address.
rtx* address_info::base |
enum rtx_code address_info::base_outer_code |
If BASE is nonnull, this is the code of the rtx that contains it.
rtx* address_info::base_term |
Referenced by base_plus_disp_to_reg(), and valid_address_p().
rtx* address_info::base_term2 |
In a {PRE,POST}_MODIFY address, this points to a second copy of BASE_TERM, otherwise it is null.
Referenced by base_plus_disp_to_reg().
rtx* address_info::disp |
rtx* address_info::disp_term |
rtx* address_info::index |
rtx* address_info::index_term |
rtx* address_info::inner |
A pointer to the inner address, after all address mutations have been stripped from the top-level address. It can be one of the following: - A {PRE,POST}_{INC,DEC} of *BASE. SEGMENT, INDEX and DISP are null. - A {PRE,POST}_MODIFY of *BASE. In this case either INDEX or DISP points to the step value, depending on whether the step is variable or constant respectively. SEGMENT is null. - A plain sum of the form SEGMENT + BASE + INDEX + DISP, with null fields evaluating to 0.
enum machine_mode address_info::mode |
The mode of the value being addressed, or VOIDmode if this is a load-address operation with no known address mode.
Referenced by lsb_bitfield_op_p(), and process_alt_operands().
rtx* address_info::outer |
A pointer to the top-level address.
Referenced by lsb_bitfield_op_p(), and valid_address_p().
rtx* address_info::segment |
Components that make up *INNER. Each one may be null or nonnull. When nonnull, their meanings are as follows: - *SEGMENT is the "segment" of memory to which the address refers. This value is entirely target-specific and is only called a "segment" because that's its most typical use. It contains exactly one UNSPEC, pointed to by SEGMENT_TERM. The contents of *SEGMENT do not need reloading. - *BASE is a variable expression representing a base address. It contains exactly one REG, SUBREG or MEM, pointed to by BASE_TERM. - *INDEX is a variable expression representing an index value. It may be a scaled expression, such as a MULT. It has exactly one REG, SUBREG or MEM, pointed to by INDEX_TERM. - *DISP is a constant, possibly mutated. DISP_TERM points to the unmutated RTX_CONST_OBJ.
rtx* address_info::segment_term |