Some RTL nodes have special annotations associated with them.
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
COMPONENT_REF, in which case this is some field reference, and
, 0)contains the declaration, or another
COMPONENT_REF, or null if there is no compile-time object associated with the reference.
CONST_INTrtx. This is mostly relevant for
BLKmodereferences as otherwise the size is implied by the mode.
symbol_refx was created for 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
that is, some sort of constant. In this case, the
is an entry in the per-file constant pool; again, there is no associated
front end symbol table entry.
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:
tls_modelto be used for a thread-local storage symbol. It returns zero for non-thread-local symbols.
object_blockand 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.
NULLif it has not been assigned a block.