GCC Middle and Back End API Reference
|
Public Types | |
enum | reachability { ALL_BLOCKS , REACHABLE_BLOCKS , REACHABLE_BLOCKS_PRESERVING_FLAGS } |
Public Member Functions | |
ipcp_modif_dom_walker (struct ipa_func_body_info *fbi, vec< ipa_param_descriptor, va_gc > *descs, ipcp_transformation *ts, bool *sc) | |
edge | before_dom_children (basic_block) final override |
bool | cleanup_eh () |
void | walk (basic_block) |
virtual void | after_dom_children (basic_block) |
Static Public Attributes | |
static const edge | STOP = (edge)-1 |
Private Member Functions | |
bool | bb_reachable (struct function *, basic_block) |
void | propagate_unreachable_to_edges (basic_block, FILE *, dump_flags_t) |
Private Attributes | |
struct ipa_func_body_info * | m_fbi |
vec< ipa_param_descriptor, va_gc > * | m_descriptors |
ipcp_transformation * | m_ts |
bool * | m_something_changed |
auto_bitmap | m_need_eh_cleanup |
enum cdi_direction | m_dom_direction: 2 |
enum reachability | m_reachability: 2 |
bool | m_user_bb_to_rpo |
basic_block | m_unreachable_dom |
int * | m_bb_to_rpo |
Dominator walker driving the ipcp modification phase.
|
inherited |
|
inline |
|
inlinevirtualinherited |
Reimplemented in dom_opt_dom_walker, eliminate_dom_walker, nontrapping_dom_walker, rewrite_dom_walker, rewrite_update_dom_walker, strlen_pass, substitute_and_fold_dom_walker, and uncprop_dom_walker.
Referenced by dom_walker::walk().
|
privateinherited |
Return TRUE if BB is reachable, false otherwise.
References dom_walker::ALL_BLOCKS, CDI_DOMINATORS, dominated_by_p(), ENTRY_BLOCK_PTR_FOR_FN, FOR_EACH_EDGE, dom_walker::m_reachability, dom_walker::m_unreachable_dom, and basic_block_def::preds.
Referenced by dom_walker::walk().
|
finaloverridevirtual |
Reimplemented from dom_walker.
References bitmap_set_bit, dump_file, dump_flags, fold_build1, fold_convertible_p(), gcc_checking_assert, ipa_argagg_value_list::get_value(), gimple_assign_load_p(), gimple_assign_rhs1(), gimple_assign_set_rhs_from_tree(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), handled_component_p(), basic_block_def::index, ipa_load_from_parm_agg(), is_gimple_ip_invariant(), is_gimple_reg_type(), m_descriptors, m_fbi, m_need_eh_cleanup, m_something_changed, m_ts, maybe_clean_eh_stmt(), NULL, print_generic_expr(), print_gimple_stmt(), TDF_DETAILS, TREE_CODE, TREE_OPERAND, tree_to_poly_int64(), TREE_TYPE, TYPE_SIZE, update_stmt(), and useless_type_conversion_p().
|
inline |
References gimple_purge_all_dead_eh_edges(), and m_need_eh_cleanup.
Referenced by ipcp_transform_function().
|
privateinherited |
BB has been determined to be unreachable. Propagate that property to incoming and outgoing edges of BB as appropriate.
References CDI_DOMINATORS, dominated_by_p(), dump_file, dump_flags, FOR_EACH_EDGE, basic_block_def::index, dom_walker::m_unreachable_dom, basic_block_def::preds, basic_block_def::succs, and TDF_DETAILS.
Referenced by dom_walker::walk().
|
inherited |
Recursively walk the dominator tree. BB is the basic block we are currently visiting.
References dom_walker::after_dom_children(), dom_walker::bb_reachable(), dom_walker::before_dom_children(), CDI_DOMINATORS, cfun, dump_file, dump_flags, EDGE_COUNT, ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, first_dom_son(), FOR_EACH_EDGE, free(), i, last_basic_block_for_fn, dom_walker::m_bb_to_rpo, dom_walker::m_dom_direction, dom_walker::m_reachability, dom_walker::m_unreachable_dom, dom_walker::m_user_bb_to_rpo, n_basic_blocks_for_fn, next_dom_son(), NULL, pre_and_rev_post_order_compute(), basic_block_def::preds, dom_walker::propagate_unreachable_to_edges(), dom_walker::REACHABLE_BLOCKS, set_all_edges_as_executable(), sort_bbs_postorder(), dom_walker::STOP, basic_block_def::succs, and worklist.
Referenced by array_bounds_checker::check(), eliminate_with_rpo_vn(), find_comparisons(), get_non_trapping(), ipa_analyze_node(), ipcp_transform_function(), rewrite_blocks(), and substitute_and_fold_engine::substitute_and_fold().
|
privateinherited |
Referenced by dom_walker::walk(), and dom_walker::~dom_walker().
|
private |
Referenced by before_dom_children().
|
privateinherited |
Referenced by dom_walker::walk().
|
private |
Referenced by before_dom_children().
|
private |
Referenced by before_dom_children(), and cleanup_eh().
|
privateinherited |
Referenced by dom_walker::bb_reachable(), and dom_walker::walk().
|
private |
Referenced by before_dom_children().
|
private |
Referenced by before_dom_children().
|
privateinherited |
Referenced by dom_walker::bb_reachable(), dom_walker::propagate_unreachable_to_edges(), and dom_walker::walk().
|
privateinherited |
Referenced by dom_walker::walk(), and dom_walker::~dom_walker().
Referenced by rewrite_update_dom_walker::before_dom_children(), and dom_walker::walk().