Some RTL nodes have special annotations associated with them.
MEMMEM_ALIAS_SET (x)MEMs 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)REGORIGINAL_REGNO (x)REG_EXPR (x)REG_OFFSET (x)SYMBOL_REFSYMBOL_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_CONSTANT (x)SYMBOL_REF_DATA (x)SYMBOL_REF_DECL or
SYMBOL_REF_CONSTANT.
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_FUNCTIONSYMBOL_FLAG_LOCALTARGET_BINDS_LOCAL_P.
SYMBOL_FLAG_EXTERNALSYMBOL_FLAG_LOCAL.
SYMBOL_FLAG_SMALLTARGET_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.
SYMBOL_FLAG_HAS_BLOCK_INFOSYMBOL_REF_BLOCK and
SYMBOL_REF_BLOCK_OFFSET fields.
SYMBOL_FLAG_ANCHORobject_block
and that can be used to access nearby members of that block.
They are used to implement -fsection-anchors.
If this flag is set, then SYMBOL_FLAG_HAS_BLOCK_INFO will be too.
Bits beginning with SYMBOL_FLAG_MACH_DEP are available for
the target's use.
SYMBOL_REF_BLOCK (x)NULL if it has not been assigned a block.
SYMBOL_REF_BLOCK_OFFSET (x)