GCC Middle and Back End API Reference
|
#include <rtlanal.h>
Public Member Functions | |
vec_rtx_properties_base () | |
~vec_rtx_properties_base () | |
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 |
Protected Member Functions | |
void | grow (ptrdiff_t) |
Private Attributes | |
rtx_obj_reference | m_storage [SIZE] |
Static Private Attributes | |
static const size_t | SIZE = 32 |
A base class for vec_rtx_properties; see there for details.
|
inline |
References m_storage, rtx_properties::ref_begin, rtx_properties::ref_end, rtx_properties::ref_iter, and SIZE.
|
inline |
References free(), m_storage, rtx_properties::ref_begin, and UNLIKELY.
|
protected |
Grow the storage by a bit while keeping the contents of the first START elements.
References m_storage, rtx_properties::ref_begin, rtx_properties::ref_end, and rtx_properties::ref_iter.
|
inlineinherited |
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 rtx_properties::has_call, rtx_properties::has_pre_post_modify, and rtx_properties::has_volatile_refs.
|
inlineinherited |
References rtx_properties::ref_begin, and rtx_properties::ref_iter.
|
inlineinherited |
Return an iterator range for all the references, suitable for range-based for loops.
References rtx_properties::ref_begin, and rtx_properties::ref_iter.
|
inherited |
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, 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(), rtx_properties::ref_end, rtx_properties::ref_iter, REG_P, REGNO, rtx_obj_flags::STICKY_FLAGS, SUBREG_REG, rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_reg(), rtx_properties::try_to_add_src(), UNLIKELY, XEXP, XVECEXP, and XVECLEN.
Referenced by rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_insn(), rtx_properties::try_to_add_pattern(), and rtx_properties::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, 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(), rtx_properties::ref_end, rtx_properties::ref_iter, REG_NOTE_KIND, REG_NOTES, reg_raw_mode, RTL_CONST_CALL_P, RTL_PURE_CALL_P, targetm, rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_note(), rtx_properties::try_to_add_pattern(), rtx_properties::try_to_add_src(), and XEXP.
|
inlineinherited |
Like add_src, but treat X has being part of a REG_EQUAL or REG_EQUIV note.
References rtx_obj_flags::IN_NOTE, and rtx_properties::try_to_add_src().
Referenced by rtx_properties::try_to_add_insn().
|
inherited |
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, i, rtx_obj_flags::IS_CLOBBER, last, SET, SET_DEST, SET_SRC, rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_pattern(), rtx_properties::try_to_add_src(), XEXP, XVECEXP, and XVECLEN.
Referenced by rtx_properties::try_to_add_insn(), and rtx_properties::try_to_add_pattern().
|
inherited |
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, rtx_properties::ref_end, rtx_properties::ref_iter, REG_NREGS, and REGNO.
Referenced by rtx_properties::try_to_add_dest(), and rtx_properties::try_to_add_src().
|
inherited |
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, rtx_properties::has_asm, rtx_properties::has_call, rtx_properties::has_pre_post_modify, rtx_properties::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, rtx_properties::ref_end, rtx_properties::ref_iter, rtx_obj_flags::STICKY_FLAGS, SUBREG_REG, rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_reg(), rtx_properties::try_to_add_src(), and XEXP.
Referenced by rtx_properties::try_to_add_dest(), rtx_properties::try_to_add_insn(), rtx_properties::try_to_add_note(), rtx_properties::try_to_add_pattern(), and rtx_properties::try_to_add_src().
|
inherited |
Referenced by rtx_properties::try_to_add_src().
|
inherited |
Referenced by rtx_properties::has_side_effects(), and rtx_properties::try_to_add_src().
|
inherited |
Referenced by rtx_properties::has_side_effects(), and rtx_properties::try_to_add_src().
|
inherited |
Referenced by rtx_properties::has_side_effects(), and rtx_properties::try_to_add_src().
|
private |
Referenced by grow(), vec_rtx_properties_base(), and ~vec_rtx_properties_base().
|
inherited |
Referenced by grow(), rtx_properties::num_refs(), rtx_properties::refs(), vec_rtx_properties_base(), and ~vec_rtx_properties_base().
|
inherited |
|
inherited |
|
staticprivate |
Referenced by vec_rtx_properties_base().
|
inherited |