GCC Middle and Back End API Reference
|
#include <rtlanal.h>
Public Member Functions | |
rtx_properties () | |
void | try_to_add_reg (const_rtx x, unsigned int flags=0) |
void | try_to_add_dest (const_rtx x, unsigned int flags=0) |
void | try_to_add_src (const_rtx x, unsigned int flags=0) |
void | try_to_add_pattern (const_rtx pat) |
void | try_to_add_note (const_rtx x) |
void | try_to_add_insn (const rtx_insn *insn, bool include_notes) |
iterator_range< rtx_obj_reference * > | refs () const |
size_t | num_refs () const |
bool | has_side_effects () const |
Data Fields | |
rtx_obj_reference * | ref_begin |
rtx_obj_reference * | ref_iter |
rtx_obj_reference * | ref_end |
unsigned int | has_asm: 1 |
unsigned int | has_call: 1 |
unsigned int | has_pre_post_modify: 1 |
unsigned int | has_volatile_refs: 1 |
unsigned int | spare: 28 |
Contains information about an rtx or an instruction, including a list of rtx_obj_references. The storage backing the list needs to be filled in by assigning to REF_BEGIN and REF_END.
|
inline |
|
inline |
Return true if the rtx has side effects, in the sense of side_effects_p (except for side_effects_p's special handling of combine.cc clobbers).
References has_call, has_pre_post_modify, and has_volatile_refs.
|
inline |
Add a description of destination X to this object. FLAGS is a bitmask of rtx_obj_reference flags that describe the context. This routine accepts all rtxes that can legitimately appear in a SET_DEST.
References GET_CODE, GET_MODE, ggc_alloc(), i, rtx_obj_flags::IN_MEM_LOAD, rtx_obj_flags::IN_MEM_STORE, rtx_obj_flags::IN_SUBREG, rtx_obj_flags::IS_READ, rtx_obj_flags::IS_WRITE, LIKELY, MEM_P, MEM_REGNO, read_modify_subreg_p(), ref_end, ref_iter, REG_P, REGNO, rtx_obj_flags::STICKY_FLAGS, SUBREG_REG, try_to_add_dest(), try_to_add_reg(), try_to_add_src(), UNLIKELY, XEXP, XVECEXP, and XVECLEN.
Referenced by try_to_add_dest(), try_to_add_insn(), try_to_add_pattern(), and try_to_add_src().
Try to add a description of INSN to this object, stopping once the REF_END limit has been reached. INCLUDE_NOTES is true if the description should include REG_EQUAL and REG_EQUIV notes; all such references will then be marked with rtx_obj_flags::IN_NOTE. For calls, this description includes all accesses in CALL_INSN_FUNCTION_USAGE. It also include all implicit accesses to global registers by the target function. However, it does not include clobbers performed by the target function; callers that want this information should instead use the function_abi interface.
References CALL_INSN_FUNCTION_USAGE, CALL_P, find_reg_note(), GET_CODE, ggc_alloc(), global_reg_set, global_regs, hard_reg_set_empty_p(), rtx_obj_flags::IS_CLOBBER, rtx_obj_flags::IS_READ, rtx_obj_flags::IS_WRITE, MEM_REGNO, NULL_RTX, PATTERN(), ref_end, ref_iter, REG_NOTE_KIND, REG_NOTES, reg_raw_mode, RTL_CONST_CALL_P, RTL_PURE_CALL_P, targetm, try_to_add_dest(), try_to_add_note(), try_to_add_pattern(), try_to_add_src(), and XEXP.
Like add_src, but treat X has being part of a REG_EQUAL or REG_EQUIV note.
References rtx_obj_flags::IN_NOTE, and try_to_add_src().
Referenced by try_to_add_insn().
Try to add a description of instruction pattern PAT to this object, stopping once the REF_END limit has been reached.
References ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_LENGTH, COND_EXEC_CODE, COND_EXEC_TEST, GET_CODE, ggc_alloc(), i, rtx_obj_flags::IS_CLOBBER, last, SET, SET_DEST, SET_SRC, try_to_add_dest(), try_to_add_pattern(), try_to_add_src(), XEXP, XVECEXP, and XVECLEN.
Referenced by try_to_add_insn(), and try_to_add_pattern().
Try to add a description of REG X to this object, stopping once the REF_END limit has been reached. FLAGS is a bitmask of rtx_obj_reference flags that describe the context.
References END_REGNO(), GET_MODE, rtx_obj_flags::IS_MULTIREG, ref_end, ref_iter, REG_NREGS, and REGNO.
Referenced by try_to_add_dest(), and try_to_add_src().
Try to add a description of source X to this object, stopping once the REF_END limit has been reached. FLAGS is a bitmask of rtx_obj_reference flags that describe the context. This routine accepts all rtxes that can legitimately appear in a SET_SRC.
References FOR_EACH_SUBRTX, GET_CODE, GET_MODE, ggc_alloc(), has_asm, has_call, has_pre_post_modify, has_volatile_refs, rtx_obj_flags::IN_MEM_LOAD, rtx_obj_flags::IN_SUBREG, rtx_obj_flags::IS_PRE_POST_MODIFY, rtx_obj_flags::IS_READ, MEM_READONLY_P, MEM_REGNO, MEM_VOLATILE_P, ref_end, ref_iter, rtx_obj_flags::STICKY_FLAGS, SUBREG_REG, try_to_add_dest(), try_to_add_reg(), try_to_add_src(), and XEXP.
Referenced by try_to_add_dest(), try_to_add_insn(), try_to_add_note(), try_to_add_pattern(), and try_to_add_src().
unsigned int rtx_properties::has_asm |
Referenced by try_to_add_src().
unsigned int rtx_properties::has_call |
Referenced by has_side_effects(), and try_to_add_src().
unsigned int rtx_properties::has_pre_post_modify |
Referenced by has_side_effects(), and try_to_add_src().
unsigned int rtx_properties::has_volatile_refs |
Referenced by has_side_effects(), and try_to_add_src().
rtx_obj_reference* rtx_properties::ref_begin |
rtx_obj_reference* rtx_properties::ref_end |
rtx_obj_reference* rtx_properties::ref_iter |
unsigned int rtx_properties::spare |