GCC Middle and Back End API Reference
rtx_def Struct Reference

#include <rtl.h>

Collaboration diagram for rtx_def:

Data Structures

union  u

Data Fields

ENUM_BITFIELD(rtx_code) code
ENUM_BITFIELD(machine_mode)
mode unsigned int 
jump: 1
unsigned int call: 1
unsigned int unchanging: 1
unsigned int volatil: 1
unsigned int in_struct: 1
unsigned int used: 1
unsigned frame_related: 1
unsigned return_val: 1
union rtx_def::u u

Detailed Description

RTL expression ("rtx").


Field Documentation

unsigned int rtx_def::call

In a CODE_LABEL, part of the two-bit alternate entry field. 1 in a MEM if it cannot trap. 1 in a CALL_INSN logically equivalent to ECF_LOOPING_CONST_OR_PURE and DECL_LOOPING_CONST_OR_PURE_P.

unsigned rtx_def::frame_related

1 in an INSN or a SET if this rtx is related to the call frame, either changing how we compute the frame address or saving and restoring registers in the prologue and epilogue. 1 in a REG or MEM if it is a pointer. 1 in a SYMBOL_REF if it addresses something in the per-function constant string pool. 1 in a VALUE is VALUE_CHANGED in var-tracking.c.

unsigned int rtx_def::in_struct

1 in a REG if the register is used only in exit code a loop. 1 in a SUBREG expression if was generated from a variable with a promoted mode. 1 in a CODE_LABEL if the label is used for nonlocal gotos and must not be deleted even if its count is zero. 1 in an INSN, JUMP_INSN or CALL_INSN if this insn must be scheduled together with the preceding insn. Valid only within sched. 1 in an INSN, JUMP_INSN, or CALL_INSN if insn is in a delay slot and from the target of a branch. Valid from reorg until end of compilation; cleared before used.

The name of the field is historical. It used to be used in MEMs to record whether the MEM accessed part of a structure.

ENUM_BITFIELD (rtx_code) code ENUM_BITFIELD (machine_mode) mode unsigned int rtx_def::jump

The kind of expression this is. The kind of value the expression has. 1 in a MEM if we should keep the alias set for this mem unchanged when we access a component. 1 in a CALL_INSN if it is a sibling call. 1 in a SET that is for a return. In a CODE_LABEL, part of the two-bit alternate entry field. 1 in a CONCAT is VAL_EXPR_IS_COPIED in var-tracking.c. 1 in a VALUE is SP_BASED_VALUE_P in cselib.c. 1 in a SUBREG generated by LRA for reload insns.

unsigned rtx_def::return_val

1 in a REG or PARALLEL that is the current function's return value. 1 in a SYMBOL_REF for a weak symbol. 1 in a CALL_INSN logically equivalent to ECF_PURE and DECL_PURE_P. 1 in a CONCAT is VAL_EXPR_HAS_REVERSE in var-tracking.c. 1 in a VALUE or DEBUG_EXPR is NO_LOC_P in var-tracking.c.

unsigned int rtx_def::unchanging

1 in a REG, MEM, or CONCAT if the value is set at most once, anywhere. 1 in a SUBREG used for SUBREG_PROMOTED_UNSIGNED_P. 1 in a SYMBOL_REF if it addresses something in the per-function constants pool. 1 in a CALL_INSN logically equivalent to ECF_CONST and TREE_READONLY. 1 in a NOTE, or EXPR_LIST for a const call. 1 in a JUMP_INSN of an annulling branch. 1 in a CONCAT is VAL_EXPR_IS_CLOBBERED in var-tracking.c. 1 in a preserved VALUE is PRESERVED_VALUE_P in cselib.c. 1 in a clobber temporarily created for LRA.

unsigned int rtx_def::used

At the end of RTL generation, 1 if this rtx is used. This is used for copying shared structure. See `unshare_all_rtl'. In a REG, this is not needed for that purpose, and used instead in `leaf_renumber_regs_insn'. 1 in a SYMBOL_REF, means that emit_library_call has used it as the function. 1 in a CONCAT is VAL_HOLDS_TRACK_EXPR in var-tracking.c. 1 in a VALUE or DEBUG_EXPR is VALUE_RECURSED_INTO in var-tracking.c.

unsigned int rtx_def::volatil

1 in a MEM or ASM_OPERANDS expression if the memory reference is volatile. 1 in an INSN, CALL_INSN, JUMP_INSN, CODE_LABEL, BARRIER, or NOTE if it has been deleted. 1 in a REG expression if corresponds to a variable declared by the user, 0 for an internally generated temporary. 1 in a SUBREG used for SUBREG_PROMOTED_UNSIGNED_P. 1 in a LABEL_REF, REG_LABEL_TARGET or REG_LABEL_OPERAND note for a non-local label. In a SYMBOL_REF, this flag is used for machine-specific purposes. In a PREFETCH, this flag indicates that it should be considered a scheduling barrier. 1 in a CONCAT is VAL_NEEDS_RESOLUTION in var-tracking.c.


The documentation for this struct was generated from the following file: