GCC Middle and Back End API Reference
|
#include <rtl-iter.h>
Data Structures | |
class | array_type |
Public Member Functions | |
generic_subrtx_iterator (array_type &, value_type, const rtx_subrtx_bound_info *) | |
value_type | operator* () const |
bool | at_end () const |
void | next () |
void | skip_subrtxes () |
void | substitute (value_type) |
Private Types | |
typedef T::value_type | value_type |
typedef T::rtx_type | rtx_type |
typedef T::rtunion_type | rtunion_type |
Static Private Member Functions | |
static void | free_array (array_type &) |
static size_t | add_subrtxes_to_queue (array_type &, value_type *, size_t, rtx_type) |
static value_type * | add_single_to_queue (array_type &, value_type *, size_t, value_type) |
Private Attributes | |
const rtx_subrtx_bound_info * | m_bounds |
array_type & | m_array |
value_type | m_current |
value_type * | m_base |
size_t | m_end |
bool | m_done |
bool | m_skip |
bool | m_substitute |
Static Private Attributes | |
static const size_t | LOCAL_ELEMS = 16 |
Used to iterate over subrtxes of an rtx. T abstracts the type of access.
|
private |
|
private |
|
private |
|
inline |
Iterate over X and its subrtxes, in arbitrary order. Use ARRAY to store the worklist. We use an external array in order to avoid capturing the fields of this structure when taking the address of the array. Use BOUNDS to find the bounds of simple "e"-string codes.
References false, m_array, m_base, m_bounds, m_current, m_done, m_end, m_skip, and m_substitute.
|
staticprivate |
Store X into index I of ARRAY. ARRAY is known to have at least I elements. Return the new base of ARRAY.
References gcc_checking_assert, i, LOCAL_ELEMS, vec_safe_grow(), and vec_safe_length().
Referenced by add_subrtxes_to_queue().
|
staticprivate |
Add the subrtxes of X to worklist ARRAY, starting at END. Return the number of elements added to the worklist.
References add_single_to_queue(), end(), GET_CODE, GET_NUM_ELEM, GET_RTX_FORMAT, GET_RTX_LENGTH, i, INSN_P, LIKELY, LOCAL_ELEMS, PATTERN(), and UNLIKELY.
Referenced by next().
|
inline |
Return true if the iteration has finished.
References m_done.
|
staticprivate |
References vec_free().
Referenced by generic_subrtx_iterator< T >::array_type::~array_type().
|
inline |
Move on to the next subrtx.
References add_subrtxes_to_queue(), count, GET_CODE, LIKELY, LOCAL_ELEMS, m_array, m_base, m_bounds, m_current, m_done, m_end, m_skip, m_substitute, and UNLIKELY.
|
inline |
Return the current subrtx.
References m_current.
|
inline |
Skip the subrtxes of the current rtx.
References m_skip.
|
inline |
Ignore the subrtxes of the current rtx and look at X instead.
References m_current, and m_substitute.
|
staticprivate |
Referenced by add_single_to_queue(), add_subrtxes_to_queue(), and next().
|
private |
Referenced by generic_subrtx_iterator(), and next().
|
private |
Referenced by generic_subrtx_iterator(), and next().
|
private |
Referenced by generic_subrtx_iterator(), and next().
|
private |
Referenced by generic_subrtx_iterator(), next(), operator*(), and substitute().
|
private |
Referenced by at_end(), generic_subrtx_iterator(), and next().
|
private |
Referenced by generic_subrtx_iterator(), and next().
|
private |
Referenced by generic_subrtx_iterator(), next(), and skip_subrtxes().
|
private |
Referenced by generic_subrtx_iterator(), next(), and substitute().