GCC Middle and Back End API Reference
|
#include <value-relation.h>
Public Member Functions | |
equiv_oracle () | |
~equiv_oracle () | |
const_bitmap | equiv_set (tree ssa, basic_block bb) final override |
const pe_slice * | partial_equiv_set (tree name) final override |
void | register_relation (basic_block bb, relation_kind k, tree ssa1, tree ssa2) override |
void | add_partial_equiv (relation_kind, tree, tree) |
relation_kind | partial_equiv (tree ssa1, tree ssa2, tree *base=NULL) const |
relation_kind | query_relation (basic_block, tree, tree) override |
relation_kind | query_relation (basic_block, const_bitmap, const_bitmap) override |
void | dump (FILE *f, basic_block bb) const override |
void | dump (FILE *f) const override |
void | register_stmt (gimple *, relation_kind, tree, tree) |
void | register_edge (edge, relation_kind, tree, tree) |
relation_kind | validate_relation (relation_kind, tree, tree) |
relation_kind | validate_relation (relation_kind, vrange &, vrange &) |
void | debug () const |
Protected Member Functions | |
bool | has_equiv_p (unsigned v) |
void | valid_equivs (bitmap b, const_bitmap equivs, basic_block bb) |
Protected Attributes | |
bitmap_obstack | m_bitmaps |
struct obstack | m_chain_obstack |
Private Member Functions | |
void | limit_check (basic_block bb=NULL) |
equiv_chain * | find_equiv_block (unsigned ssa, int bb) const |
equiv_chain * | find_equiv_dom (tree name, basic_block bb) const |
bitmap | register_equiv (basic_block bb, unsigned v, equiv_chain *equiv_1) |
bitmap | register_equiv (basic_block bb, equiv_chain *equiv_1, equiv_chain *equiv_2) |
void | register_initial_def (tree ssa) |
void | add_equiv_to_block (basic_block bb, bitmap equiv) |
Private Attributes | |
bitmap | m_equiv_set |
vec< equiv_chain * > | m_equiv |
vec< bitmap > | m_self_equiv |
vec< pe_slice > | m_partial |
equiv_oracle::equiv_oracle | ( | ) |
equiv_oracle::~equiv_oracle | ( | ) |
References bitmap_obstack_release(), ggc_alloc(), m_bitmaps, m_chain_obstack, m_equiv, m_partial, m_self_equiv, and NULL.
|
private |
References BITMAP_ALLOC, bitmap_copy(), bitmap_ior_into(), equiv_set(), gcc_checking_assert, ggc_alloc(), basic_block_def::index, limit_check(), equiv_chain::m_bb, m_bitmaps, m_chain_obstack, m_equiv, equiv_chain::m_names, equiv_chain::m_next, and NULL.
Referenced by register_initial_def(), and register_relation().
void equiv_oracle::add_partial_equiv | ( | relation_kind | r, |
tree | op1, | ||
tree | op2 ) |
References BITMAP_ALLOC, bitmap_set_bit, bits_to_pe(), EXECUTE_IF_SET_IN_BITMAP, gcc_checking_assert, ggc_alloc(), has_zero_uses(), m_bitmaps, m_partial, num_ssa_names, pe_min(), pe_to_bits(), r, SSA_NAME_VERSION, TREE_TYPE, TYPE_PRECISION, and VREL_VARYING.
Referenced by register_relation().
|
inherited |
References relation_oracle::dump(), and ggc_alloc().
Implements relation_oracle.
References BASIC_BLOCK_FOR_FN, cfun, dump(), ggc_alloc(), i, and m_equiv.
|
overridevirtual |
Implements relation_oracle.
References equiv_chain::dump(), value_relation::dump(), fputc(), ggc_alloc(), gimple_bb(), gimple_range_ssa_p(), i, basic_block_def::index, m_equiv, equiv_chain::m_next, m_partial, num_ssa_names, partial_equiv(), ssa_name, SSA_NAME_DEF_STMT, and VREL_VARYING.
Referenced by dump(), and dom_oracle::dump().
|
finaloverridevirtual |
Implements relation_oracle.
References BITMAP_ALLOC, bitmap_set_bit, find_equiv_dom(), ggc_alloc(), m_bitmaps, m_self_equiv, num_ssa_names, and SSA_NAME_VERSION.
Referenced by add_equiv_to_block(), dom_oracle::query_relation(), query_relation(), register_initial_def(), register_relation(), and dom_oracle::register_transitives().
|
private |
Referenced by find_equiv_dom().
|
private |
References bitmap_bit_p, CDI_DOMINATORS, find_equiv_block(), get_immediate_dominator(), basic_block_def::index, m_equiv_set, NULL, and SSA_NAME_VERSION.
Referenced by equiv_set(), register_initial_def(), and register_relation().
References bitmap_bit_p, and m_equiv_set.
Referenced by dom_oracle::query_relation().
|
private |
References cfun, i, basic_block_def::index, last_basic_block_for_fn, and m_equiv.
Referenced by add_equiv_to_block().
relation_kind equiv_oracle::partial_equiv | ( | tree | ssa1, |
tree | ssa2, | ||
tree * | base = NULL ) const |
References ggc_alloc(), m_partial, pe_min(), SSA_NAME_VERSION, and VREL_VARYING.
Referenced by dump(), dom_oracle::query_relation(), and query_relation().
Reimplemented from relation_oracle.
References m_partial, NULL, and SSA_NAME_VERSION.
|
overridevirtual |
Implements relation_oracle.
References bitmap_equal_p(), VREL_EQ, and VREL_VARYING.
|
overridevirtual |
Implements relation_oracle.
References equiv_set(), partial_equiv(), and VREL_EQ.
|
inherited |
References value_relation::dump(), dump_file, dump_flags, gcc_checking_assert, ggc_alloc(), relation_oracle::register_relation(), single_pred_p(), TDF_DETAILS, TREE_CODE, and VREL_VARYING.
Referenced by fur_depend::register_relation().
|
private |
References b, BITMAP_ALLOC, bitmap_clear(), bitmap_ior_into(), ggc_alloc(), basic_block_def::index, m_bitmaps, m_equiv, NULL, and relation_oracle::valid_equivs().
|
private |
References b, BITMAP_ALLOC, bitmap_set_bit, ggc_alloc(), basic_block_def::index, m_bitmaps, m_equiv, m_equiv_set, NULL, and relation_oracle::valid_equivs().
Referenced by register_relation().
References add_equiv_to_block(), BITMAP_ALLOC, bitmap_set_bit, equiv_set(), find_equiv_dom(), gcc_checking_assert, gimple_bb(), m_bitmaps, m_equiv_set, SSA_NAME_DEF_STMT, SSA_NAME_IS_DEFAULT_DEF, and SSA_NAME_VERSION.
Referenced by register_relation().
|
overridevirtual |
Implements relation_oracle.
References add_equiv_to_block(), add_partial_equiv(), BITMAP_ALLOC, bitmap_bit_p, bitmap_set_bit, equiv_set(), find_equiv_dom(), ggc_alloc(), m_bitmaps, m_equiv_set, register_equiv(), register_initial_def(), relation_partial_equiv_p(), SSA_NAME_VERSION, and VREL_EQ.
Referenced by dom_oracle::register_relation().
|
inherited |
References value_relation::dump(), dump_file, dump_flags, gcc_checking_assert, ggc_alloc(), gimple_bb(), gimple_phi_result(), print_generic_expr(), print_gimple_stmt(), relation_oracle::register_relation(), SSA_NAME_DEF_STMT, TDF_DETAILS, TDF_SLIM, TREE_CODE, VREL_EQ, and VREL_VARYING.
Referenced by fur_depend::register_relation().
|
protectedinherited |
References b, bitmap_set_bit, relation_oracle::equiv_set(), EXECUTE_IF_SET_IN_BITMAP, ggc_alloc(), i, ssa_name, and SSA_NAME_IN_FREE_LIST.
Referenced by register_equiv(), path_oracle::register_equiv(), and register_equiv().
|
inherited |
References ggc_alloc(), Value_Range::set_varying(), TREE_TYPE, and relation_oracle::validate_relation().
Referenced by relation_oracle::validate_relation().
|
inherited |
|
protected |
Referenced by add_equiv_to_block(), equiv_oracle(), dom_oracle::set_one_relation(), and ~equiv_oracle().
|
private |
Referenced by add_equiv_to_block(), dump(), dump(), equiv_oracle(), find_equiv_block(), limit_check(), register_equiv(), register_equiv(), and ~equiv_oracle().
|
private |
Referenced by equiv_oracle(), find_equiv_dom(), has_equiv_p(), register_equiv(), register_initial_def(), and register_relation().
Referenced by add_partial_equiv(), dump(), equiv_oracle(), partial_equiv(), partial_equiv_set(), and ~equiv_oracle().
Referenced by equiv_oracle(), equiv_set(), and ~equiv_oracle().