Some RTL nodes have special annotations associated with them.
MEM
MEM_ALIAS_SET (
x)
MEM
s in a conflicting alias set. This value
is set in a language-dependent manner in the front-end, and should not be
altered in the back-end. In some front-ends, these numbers may correspond
in some way to types, or other language-level entities, but they need not,
and the back-end makes no such assumptions.
These set numbers are tested with alias_sets_conflict_p
.
MEM_EXPR (
x)
COMPONENT_REF
, in which case this is some field reference,
and TREE_OPERAND (
x, 0)
contains the declaration,
or another COMPONENT_REF
, or null if there is no compile-time
object associated with the reference.
MEM_OFFSET (
x)
MEM_EXPR
as a CONST_INT
rtx.
MEM_SIZE (
x)
CONST_INT
rtx.
This is mostly relevant for BLKmode
references as otherwise
the size is implied by the mode.
MEM_ALIGN (
x)
REG
ORIGINAL_REGNO (
x)
REG_EXPR (
x)
REG_OFFSET (
x)
SYMBOL_REF
SYMBOL_REF_DECL (
x)
symbol_ref
x was created for a VAR_DECL
or
a FUNCTION_DECL
, that tree is recorded here. If this value is
null, then x was created by back end code generation routines,
and there is no associated front end symbol table entry.
SYMBOL_REF_DECL
may also point to a tree of class 'c'
,
that is, some sort of constant. In this case, the symbol_ref
is an entry in the per-file constant pool; again, there is no associated
front end symbol table entry.
SYMBOL_REF_FLAGS (
x)
symbol_ref
, this is used to communicate various predicates
about the symbol. Some of these are common enough to be computed by
common code, some are specific to the target. The common bits are:
SYMBOL_FLAG_FUNCTION
SYMBOL_FLAG_LOCAL
TARGET_BINDS_LOCAL_P
.
SYMBOL_FLAG_EXTERNAL
SYMBOL_FLAG_LOCAL
.
SYMBOL_FLAG_SMALL
TARGET_IN_SMALL_DATA_P
.
SYMBOL_REF_TLS_MODEL (
x)
tls_model
to be used for a thread-local storage symbol. It returns zero for
non-thread-local symbols.
Bits beginning with SYMBOL_FLAG_MACH_DEP
are available for
the target's use.