GCC Middle and Back End API Reference
rtl-iter.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rtx_subrtx_bound_info
 
class  generic_subrtx_iterator< T >
 
class  generic_subrtx_iterator< T >::array_type
 
struct  const_rtx_accessor
 
struct  rtx_var_accessor
 
struct  rtx_ptr_accessor
 

Macros

#define ALL_BOUNDS   rtx_all_subrtx_bounds
 
#define NONCONST_BOUNDS   rtx_nonconst_subrtx_bounds
 
#define FOR_EACH_SUBRTX(ITER, ARRAY, X, TYPE)
 
#define FOR_EACH_SUBRTX_VAR(ITER, ARRAY, X, TYPE)
 
#define FOR_EACH_SUBRTX_PTR(ITER, ARRAY, X, TYPE)
 

Typedefs

typedef generic_subrtx_iterator< const_rtx_accessorsubrtx_iterator
 
typedef generic_subrtx_iterator< rtx_var_accessorsubrtx_var_iterator
 
typedef generic_subrtx_iterator< rtx_ptr_accessorsubrtx_ptr_iterator
 

Functions

bool leaf_code_p (enum rtx_code code)
 

Variables

rtx_subrtx_bound_info rtx_all_subrtx_bounds []
 
rtx_subrtx_bound_info rtx_nonconst_subrtx_bounds []
 

Macro Definition Documentation

◆ ALL_BOUNDS

#define ALL_BOUNDS   rtx_all_subrtx_bounds

◆ FOR_EACH_SUBRTX

#define FOR_EACH_SUBRTX ( ITER,
ARRAY,
X,
TYPE )
Value:
for (subrtx_iterator ITER (ARRAY, X, TYPE##_BOUNDS); !ITER.at_end (); \
ITER.next ())
Definition rtl-iter.h:52
@ ARRAY
Definition gengtype.h:486
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
Use ITER to iterate over const_rtx X and its recursive subrtxes,
using subrtx_iterator::array ARRAY as the storage for the worklist.
ARRAY can be reused for multiple consecutive iterations but shouldn't
be shared by two concurrent iterations.  TYPE is ALL if all subrtxes
are of interest or NONCONST if it is safe to ignore subrtxes of
constants.   

Referenced by add_used_regs(), altered_reg_used(), approx_reg_cost(), check_argument_load(), check_dependence(), check_for_inc_dec(), check_for_inc_dec_1(), check_for_label_ref(), compute_reloc_for_rtx(), const_rtx_hash(), contains_call_div_mod(), contains_ccmode_rtx_p(), contains_constant_pool_address_p(), contains_mem_rtx_p(), contains_symbol_ref_p(), contains_symbolic_reference_p(), cprop_find_used_regs(), duplicate_insn_chain(), eh_returnjump_p(), expand_call(), find_all_hard_regs(), find_auto_inc(), find_memory(), get_some_local_dynamic_name(), internal_arg_pointer_based_exp(), is_dead_debug_insn(), kill_autoinc_value(), mark_constants_in_pattern(), mark_symbol_refs_as_used(), mentions_nonequal_regs(), non_suitable_const(), note_reg_elim_costly(), rtx_reuse_manager::preprocess(), propagate_for_debug_subst(), refs_newer_value_p(), replace_read(), returnjump_p(), rtx_debug_expr_p(), rtx_referenced_p(), set_paradoxical_subreg(), tls_referenced_p(), rtx_properties::try_to_add_src(), and unmentioned_reg_p().

◆ FOR_EACH_SUBRTX_PTR

#define FOR_EACH_SUBRTX_PTR ( ITER,
ARRAY,
X,
TYPE )
Value:
for (subrtx_ptr_iterator ITER (ARRAY, X, TYPE##_BOUNDS); !ITER.at_end (); \
ITER.next ())
Like FOR_EACH_SUBRTX, but iterate over subrtx pointers of rtx pointer X.
For example, if X is &PATTERN (insn) and the pattern is a SET, iterate
over &PATTERN (insn), &SET_DEST (PATTERN (insn)), etc.   

Referenced by change_zero_ext(), check_mem_read_use(), cse_change_cc_mode(), instantiate_virtual_regs_in_rtx(), record_stack_refs(), replace_label(), resolve_debug(), resolve_subreg_use(), and try_combine().

◆ FOR_EACH_SUBRTX_VAR

◆ NONCONST_BOUNDS

#define NONCONST_BOUNDS   rtx_nonconst_subrtx_bounds

Typedef Documentation

◆ subrtx_iterator

◆ subrtx_ptr_iterator

◆ subrtx_var_iterator

Function Documentation

◆ leaf_code_p()

bool leaf_code_p ( enum rtx_code code)
inline
Return true if CODE has no subrtxes.   

References rtx_subrtx_bound_info::count, and rtx_all_subrtx_bounds.

Variable Documentation

◆ rtx_all_subrtx_bounds

rtx_subrtx_bound_info rtx_all_subrtx_bounds[]
extern

◆ rtx_nonconst_subrtx_bounds

rtx_subrtx_bound_info rtx_nonconst_subrtx_bounds[]
extern

Referenced by init_rtlanal().