GCC Middle and Back End API Reference
|
Public Types | |
enum | reachability { ALL_BLOCKS , REACHABLE_BLOCKS , REACHABLE_BLOCKS_PRESERVING_FLAGS } |
Public Member Functions | |
find_comparison_dom_walker (cdi_direction direction) | |
edge | before_dom_children (basic_block) final override |
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 | |
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 |
|
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 |
Identify comparison instructions within BB. If the flags from the last compare in the BB is live at the end of the block, install the compare in BB->AUX. Called via dom_walker.walk ().
Reimplemented from dom_walker.
References all_compares, arithmetic_flags_clobber_p(), basic_block_def::aux, BB_END, BB_HEAD, bitmap_bit_p, can_eliminate_compare(), cfun, conforming_compare(), const0_rtx, delete_insn(), df_get_live_in(), df_get_live_out(), DF_REF_REGNO, comparison::eh_note, find_flags_uses_in_insn(), find_reg_note(), FOR_EACH_EDGE, FOR_EACH_INSN_DEF, GET_MODE, comparison::in_a, comparison::in_a_setter, comparison::in_b, comparison::inputs_valid, comparison::insn, is_not(), comparison::missing_uses, NEXT_INSN(), NONDEBUG_INSN_P, comparison::not_in_a, NULL, comparison::orig_mode, comparison::prev_clobber, purge_dead_edges(), REG_P, REGNO, rtx_equal_p(), SET_DEST, single_pred(), single_pred_p(), single_set(), strip_not(), basic_block_def::succs, targetm, and XEXP.
|
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().
|
privateinherited |
Referenced by dom_walker::walk().
|
privateinherited |
Referenced by dom_walker::bb_reachable(), and dom_walker::walk().
|
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().