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: