#include <value-relation.h>
|
| | dom_oracle () |
| | ~dom_oracle () |
| bool | record (basic_block bb, relation_kind k, tree op1, tree op2) final override |
| relation_kind | query (basic_block bb, tree ssa1, tree ssa2) final override |
| relation_kind | query (basic_block bb, const_bitmap b1, const_bitmap b2) final override |
| void | clear (tree name) override |
| void | dump (FILE *f, basic_block bb) const final override |
| void | dump (FILE *f) const final override |
| const_bitmap | equiv_set (tree ssa, basic_block bb) final override |
| bool | record (gimple *, relation_kind, tree, tree) |
| bool | record (edge, relation_kind, tree, tree) |
| relation_kind | partial_equiv (tree ssa1, tree ssa2, tree *base=NULL) const |
| relation_kind | query (gimple *s, tree ssa1, tree ssa2) |
| relation_kind | query (edge e, tree ssa1, tree ssa2) |
| void | debug () const |
|
| virtual relation_chain * | next_relation (basic_block, relation_chain *, tree) const override |
| relation_kind | find_relation_block (unsigned bb, const_bitmap b1, const_bitmap b2) const |
| relation_kind | find_relation_block (int bb, tree ssa1, tree ssa2, relation_chain **obj=NULL) const |
| relation_kind | find_relation_dom (basic_block bb, tree ssa1, tree ssa2) const |
| relation_chain * | create_relation_in_bb (basic_block bb, relation_kind k, tree op1, tree op2) |
| relation_chain * | search_and_merge_relation (basic_block bb, relation_kind k, tree op1, tree op2) |
| void | record_relation_block (unsigned v, unsigned bbi) |
| relation_kind | recomputed_relation (basic_block, tree, tree) const |
| basic_block | nearest_relations (tree name, basic_block bb) |
| relation_kind | relation_search (basic_block, tree, const_bitmap, tree, const_bitmap) |
| void | cache_relation (basic_block, relation_kind, tree, tree) |
| void | start_search (frontier_data &side, tree root, const_bitmap equiv, basic_block bb) |
| void | add_to_frontier (frontier_data &side, tree name, relation_kind rel, basic_block bb) |
| bool | expand_frontier (frontier_element w, basic_block bb, relation_kind &result) |
| bool | add_partial_equiv (relation_kind, tree, tree) |
| const pe_slice * | partial_equiv_set (tree name) final override |
| bool | has_equiv_p (unsigned v) |
| void | valid_equivs (bitmap b, const_bitmap equivs, basic_block bb) |
◆ dom_oracle()
| dom_oracle::dom_oracle |
( |
| ) |
|
References BITMAP_ALLOC, cfun, false, last_basic_block_for_fn, equiv_oracle::m_bitmaps, m_block_list, m_lhs_search, m_near, m_relation_set, m_relations, m_rhs_search, m_tmp, m_tmp2, m_wl_ix, m_worklist, num_ssa_names, and true.
Referenced by range_query::create_relation_oracle().
◆ ~dom_oracle()
| dom_oracle::~dom_oracle |
( |
| ) |
|
◆ add_equiv_to_block()
References BITMAP_ALLOC, bitmap_copy(), bitmap_ior_into(), equiv_set(), gcc_checking_assert, 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, NULL, and register_equiv_block().
Referenced by record(), and register_initial_def().
◆ add_partial_equiv()
References BITMAP_ALLOC, bitmap_set_bit, bits_to_pe(), pe_slice::code, EXECUTE_IF_SET_IN_BITMAP, gcc_checking_assert, has_zero_uses(), m_bitmaps, m_partial, pe_slice::members, num_ssa_names, pe_min(), pe_to_bits(), r, pe_slice::ssa_base, SSA_NAME_VERSION, TREE_TYPE, TYPE_PRECISION, and VREL_VARYING.
Referenced by record().
◆ add_to_frontier()
◆ cache_relation()
◆ clear()
| void dom_oracle::clear |
( |
tree | name | ) |
|
|
overridevirtual |
◆ create_relation_in_bb()
References BITMAP_ALLOC, bitmap_set_bit, cfun, find_relation_block(), gcc_checking_assert, basic_block_def::index, last_basic_block_for_fn, equiv_oracle::m_bitmaps, equiv_oracle::m_chain_obstack, relation_chain::m_next, m_relation_set, m_relations, NULL, record_relation_block(), value_relation::set_relation(), SSA_NAME_VERSION, and VREL_VARYING.
Referenced by search_and_merge_relation().
◆ debug()
| void relation_oracle::debug |
( |
| ) |
const |
|
inherited |
◆ dump() [1/2]
| void dom_oracle::dump |
( |
FILE * | f | ) |
const |
|
finaloverridevirtual |
◆ dump() [2/2]
| void dom_oracle::dump |
( |
FILE * | f, |
|
|
basic_block | bb ) const |
|
finaloverridevirtual |
◆ equiv_set()
|
|
finaloverridevirtualinherited |
Reimplemented from relation_oracle.
References BITMAP_ALLOC, bitmap_set_bit, find_equiv_dom(), m_bitmaps, m_name_info, equiv_chain::m_names, num_ssa_names, and SSA_NAME_VERSION.
Referenced by add_equiv_to_block(), dom_oracle::query(), query(), record(), and register_initial_def().
◆ expand_frontier()
References add_to_frontier(), value_relation::apply_transitive(), CDI_DOMINATORS, dump_file, fputc(), get_immediate_dominator(), gimple_bb(), i, value_relation::kind(), frontier_data::known_relation(), m_lhs_search, m_near, m_rhs_search, frontier_data::m_root, m_worklist, nearest_relations(), value_relation::op2(), print_generic_expr(), print_relation(), RANGER_DEBUG_RELATION, relation_swap(), relation_transitive(), SSA_NAME_DEF_STMT, SSA_NAME_VERSION, TDF_SLIM, and VREL_VARYING.
Referenced by relation_search().
◆ find_equiv_block()
| equiv_chain * equiv_oracle::find_equiv_block |
( |
unsigned | ssa, |
|
|
int | bb ) const |
|
privateinherited |
◆ find_equiv_dom()
◆ find_relation_block() [1/2]
◆ find_relation_block() [2/2]
◆ find_relation_dom()
◆ has_equiv_p()
| bool equiv_oracle::has_equiv_p |
( |
unsigned | v | ) |
|
|
inlineprotectedinherited |
◆ limit_check()
◆ nearest_relations()
References bitmap_bit_p, CDI_DOMINATORS, get_immediate_dominator(), gimple_bb(), basic_block_def::index, m_near, m_relation_set, m_relations, NULL, relation_swap(), SSA_NAME_DEF_STMT, SSA_NAME_IN_FREE_LIST, SSA_NAME_VERSION, and TREE_CODE.
Referenced by expand_frontier().
◆ next_relation()
◆ partial_equiv()
◆ partial_equiv_set()
| const pe_slice * equiv_oracle::partial_equiv_set |
( |
tree | name | ) |
|
|
finaloverrideprotectedvirtualinherited |
◆ query() [1/4]
◆ query() [2/4]
◆ query() [3/4]
◆ query() [4/4]
References gimple_bb(), query(), TREE_CODE, and VREL_VARYING.
Referenced by check_for_binary_op_overflow(), simplify_using_ranges::fold_cond_with_ops(), path_oracle::query(), path_oracle::query(), query(), query(), fur_stmt::query_relation(), jt_fur_source::query_relation(), fold_using_range::range_of_phi(), and simplify_using_ranges::simplify_compare_using_ranges_1().
◆ recomputed_relation()
References gimple_range_op_handler::calc_op1(), gimple_range_op_handler::calc_op2(), CDI_DOMINATORS, cfun, dominated_by_p(), gimple_outgoing_range::edge_range_p(), FOR_EACH_EDGE, FOR_EACH_IMM_USE_FAST, get_range_query(), gimple_bb(), gimple_num_ops(), gimple_range_ssa_p(), range_query::gori(), range_query::gori_ssa(), range_def_chain::in_chain_p(), gori_map::is_export_p(), is_gimple_assign(), gimple_range_op_handler::lhs(), NULL, range_op_handler::op1_op2_relation(), op1_range(), op2_range(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), r, range_query::range_on_entry(), relation_intersect(), relation_swap(), single_pred_p(), SSA_NAME_DEF_STMT, basic_block_def::succs, TREE_TYPE, USE_STMT, VREL_EQ, VREL_UNDEFINED, and VREL_VARYING.
Referenced by relation_search().
◆ record() [1/3]
◆ record() [2/3]
◆ record() [3/3]
References bitmap_set_bit, value_relation::dump(), dump_file, dump_flags, gcc_checking_assert, gimple_bb(), gimple_get_lhs(), gimple_phi_result(), is_a(), m_lhs_equiv_set_p, print_gimple_stmt(), record(), relation_equiv_p(), SSA_NAME_DEF_STMT, SSA_NAME_VERSION, TDF_DETAILS, TDF_SLIM, TREE_CODE, VREL_EQ, and VREL_VARYING.
Referenced by path_range_query::maybe_register_phi_relation(), record(), record(), fur_depend::register_relation(), fur_depend::register_relation(), jt_fur_source::register_relation(), and jt_fur_source::register_relation().
◆ record_relation_block()
| void dom_oracle::record_relation_block |
( |
unsigned | v, |
|
|
unsigned | bbi ) |
|
protected |
◆ register_equiv() [1/2]
References b, BITMAP_ALLOC, bitmap_clear(), bitmap_ior_into(), basic_block_def::index, equiv_chain::m_bb, m_bitmaps, m_equiv, equiv_chain::m_names, NULL, register_equiv_block(), and relation_oracle::valid_equivs().
◆ register_equiv() [2/2]
References b, BITMAP_ALLOC, bitmap_set_bit, basic_block_def::index, equiv_chain::m_bb, m_bitmaps, m_equiv, m_equiv_set, equiv_chain::m_names, NULL, register_equiv_block(), and relation_oracle::valid_equivs().
Referenced by record().
◆ register_equiv_block() [1/2]
◆ register_equiv_block() [2/2]
| void equiv_oracle::register_equiv_block |
( |
unsigned | v, |
|
|
unsigned | bbi ) |
|
privateinherited |
◆ register_initial_def()
| void equiv_oracle::register_initial_def |
( |
tree | ssa | ) |
|
|
privateinherited |
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 record().
◆ relation_search()
References cache_relation(), frontier_data::clear_search(), dump_file, expand_frontier(), basic_block_def::index, m_lhs_search, m_rhs_search, m_wl_ix, m_worklist, print_generic_expr(), print_relation(), RANGER_DEBUG_RELATION, recomputed_relation(), relation_intersect(), start_search(), TDF_SLIM, VREL_UNDEFINED, and VREL_VARYING.
Referenced by query().
◆ search_and_merge_relation()
References CDI_DOMINATORS, create_relation_in_bb(), find_relation_block(), find_relation_dom(), gcc_checking_assert, get_immediate_dominator(), basic_block_def::index, value_relation::intersect(), NULL, relation_intersect(), value_relation::set_relation(), VREL_EQ, VREL_UNDEFINED, and VREL_VARYING.
Referenced by cache_relation(), and record().
◆ start_search()
References bitmap_set_bit, EXECUTE_IF_SET_IN_BITMAP, i, frontier_data::m_rhs, frontier_data::m_root, frontier_data::m_visited, m_worklist, frontier_data::set_known(), ssa_name, SSA_NAME_IN_FREE_LIST, SSA_NAME_VERSION, and VREL_EQ.
Referenced by relation_search().
◆ valid_equivs()
◆ m_bitmaps
Referenced by add_equiv_to_block(), add_partial_equiv(), dom_oracle::create_relation_in_bb(), dom_oracle::dom_oracle(), equiv_oracle(), equiv_set(), record(), dom_oracle::record_relation_block(), register_equiv(), register_equiv(), register_equiv_block(), register_initial_def(), and ~equiv_oracle().
◆ m_block_list
◆ m_chain_obstack
| struct obstack equiv_oracle::m_chain_obstack |
|
protectedinherited |
◆ m_equiv
◆ m_equiv_set
| bitmap equiv_oracle::m_equiv_set |
|
privateinherited |
◆ m_lhs_equiv_set_p
| bitmap relation_oracle::m_lhs_equiv_set_p |
|
protectedinherited |
◆ m_lhs_search
◆ m_name_info
◆ m_near
◆ m_partial
◆ m_relation_set
| bitmap dom_oracle::m_relation_set |
|
protected |
◆ m_relations
◆ m_rhs_search
◆ m_tmp
◆ m_tmp2
◆ m_wl_ix
| unsigned dom_oracle::m_wl_ix |
|
protected |
◆ m_worklist
The documentation for this class was generated from the following files: