|
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 |