GCC Middle and Back End API Reference
|
#include <basic-block.h>
Data Structures | |
union | edge_def_insns |
Data Fields | |
basic_block | src |
basic_block | dest |
union edge_def::edge_def_insns | insns |
PTR | aux |
location_t | goto_locus |
unsigned int | dest_idx |
int | flags |
int | probability |
gcov_type | count |
Define control flow data structures for the CFG. Copyright (C) 1987-2013 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/. Use gcov_type to hold basic block counters. Should be at least 64bit. Although a counter cannot be negative, we use a signed type, because erroneous negative counts can be generated when the flow graph is manipulated by various optimizations. A signed type makes those easy to detect. Control flow edge information.
PTR edge_def::aux |
Auxiliary info specific to a pass.
Referenced by uncprop_dom_walker::after_dom_children(), alloc_aux_for_edge(), associate_equivalences_with_edges(), first_mem_ref_loc(), free_expr_hash_elt(), free_expr_hash_elt_contents(), mark_threaded_blocks(), set_allocno_somewhere_renamed_p(), single_incoming_edge_ignoring_loop_edges(), thread_block_1(), thread_through_loop_header(), tree_ssa_uncprop(), and verify_ssa().
gcov_type edge_def::count |
basic_block edge_def::dest |
Referenced by add_exit_phis(), add_labels_and_missing_jumps(), adjust_phi_and_debug_stmts(), better_edge_p(), bound_index(), build_arrays(), build_new_reduction(), can_remove_branch_p(), cfg_layout_initialize(), check_forbidden_calls(), compute_always_reached(), compute_available(), compute_dominance_frontiers_1(), cond_exec_find_if_block(), cond_move_convert_if_block(), connect_traces(), contains_no_active_insn_p(), count_reg_usage(), coverage_compute_profile_id(), cprop_into_successor_phis(), create_fixup_graph(), create_loads_and_stores_for_name(), create_phi_for_local_result(), def_split_header_continue_p(), df_live_bb_local_compute(), disconnect_dest(), draw_cfg_node_succ_edges(), dump_live_info(), emit_barrier_after_bb(), emit_partition_copy(), fill_sons_in_loop(), find_active_insn_after(), find_clusters_1(), find_group(), find_max_flow(), find_traces_1_round(), fix_bb_placement(), fix_loop_placement(), flow_loops_cfg_dump(), get_uncond_jump_length(), gimple_merge_blocks(), gimple_redirect_edge_and_branch_force(), gimple_split_block(), gimplify_build3(), gsi_move_before(), insert_insn_start_basic_block(), insert_rtx_to_part_on_edge(), insert_store(), instrument_edges(), ipa_tm_create_version(), ipa_tm_scan_calls_transaction(), ipa_uninstrument_transaction(), link_roots(), lower_eh_constructs(), lv_flush_pending_stmts(), make_edges(), make_pass_into_cfg_layout_mode(), make_single_succ_edge(), merge_if_block(), move_stmt_r(), next_discriminator_for_locus(), nontemporal_store_p(), one_pre_gcse_pass(), outgoing_edges_match(), outof_cfg_layout_mode(), output_eh_regions(), phi_alternatives_equal(), pp_cfg_jump(), print_edge_list(), print_loop(), print_worklist(), prune_clobbered_mems(), read_profile_edge_counts(), record_const_or_copy(), record_loop_exits(), redirect_edge_var_map_destroy(), remove_ctrl_stmt_and_useless_edges(), rewrite_use_compare(), rtl_redirect_edge_and_branch_force(), rtl_split_edge(), set_live_p(), set_var_live_on_entry(), simple_goto_p(), simple_mem_ref_in_stmt(), stmt_starts_bb_p(), thread_through_loop_header(), thread_through_normal_block(), tm_memopt_accumulate_memops(), try_crossjump_to_edge(), union_groups(), unsplit_all_eh(), update_dominators_in_loop(), value_replacement(), vect_can_advance_ivs_p(), vect_create_cond_for_alias_checks(), verify_edge_list(), and verify_ssa().
unsigned int edge_def::dest_idx |
The index number corresponding to this edge in the edge vector dest->preds.
Referenced by attempt_coalesce(), final_range_test_p(), simple_mem_ref_in_stmt(), uncprop_into_successor_phis(), and value_replacement().
int edge_def::flags |
Referenced by add_labels_and_missing_jumps(), attempt_coalesce(), cached_make_edge(), can_remove_branch_p(), coalesce_cost_bb(), coalesce_cost_edge(), compute_alignments(), compute_hash_table(), compute_partial_antic_aux(), cond_exec_find_if_block(), contains_no_active_insn_p(), copy_bb(), count_reg_usage(), create_empty_if_region_on_edge(), debug_loops(), debug_var_infos_r(), df_live_bb_local_compute(), disconnect_dest(), dominated_by_forbidden(), draw_cfg_node_succ_edges(), dump_function_to_file(), estimated_unrolled_size(), expand_transaction(), find_edge(), find_implicit_sets(), find_partition_fixes(), find_pdom(), find_traces_1_round(), fix_up_fall_thru_edges(), get_last_bb_insn(), get_tm_region_blocks(), get_uncond_jump_length(), gimple_expand_cfg(), gimple_merge_blocks(), gimple_purge_all_dead_eh_edges(), group_case_labels(), instrument_edges(), lower_eh_constructs(), lv_flush_pending_stmts(), make_pass_into_cfg_layout_mode(), mark_regno_dead(), maybe_register_def(), merge_blocks_move_successor_nojumps(), merge_if_block(), move_stmt_r(), nontemporal_store_p(), output_eh_regions(), predict_paths_for_bb(), print_exprs(), print_loops(), print_worklist(), prologue_epilogue_contains(), record_const_or_copy(), remove_fallthru_edge(), reorder_basic_blocks(), replace_pseudos_in(), rtl_move_block_after(), scale_dominated_blocks_in_loop(), sese_insert_phis_for_liveouts(), simple_goto_p(), simplify_cond_using_ranges(), simplify_using_outer_evolutions(), stmt_starts_bb_p(), and update_dominators_in_loop().
location_t edge_def::goto_locus |
Location of any goto implicit in the edge.
Referenced by fixup_reorder_chain(), gimplify_build3(), and pp_cfg_jump().
union edge_def::edge_def_insns edge_def::insns |
Referenced by find_implicit_sets(), gimplify_build3(), and rewrite_trees().
int edge_def::probability |
Referenced by block_has_only_trap(), conditional_probability(), copy_phi_args(), draw_cfg_node_succ_edges(), duplicate_loop(), expand_switch_as_decision_tree_p(), expand_transaction(), find_clusters(), find_traces_1_round(), fixup_new_cold_bb(), gimple_predicted_by_p(), input_cfg(), move_stmt_r(), optimize_loop_nest_for_speed_p(), outgoing_edges_match(), output_eh_regions(), split_function(), stmt_starts_bb_p(), and update_bb_profile_for_threading().
basic_block edge_def::src |
The two blocks at the ends of the edge.
Referenced by analyze_evolution_in_loop(), bb_dom_dfs_in(), better_edge_p(), can_remove_branch_p(), compute_hash_table(), connect_traces(), copy_bb(), create_empty_if_region_on_edge(), create_loop_fn(), create_rdg_edges_for_scalar(), df_live_bb_local_compute(), dfs_enumerate_from(), disconnect_dest(), draw_cfg_node_succ_edges(), dump_all_asserts(), dump_split_point(), duplicate_loop(), edge_probability_reliable_p(), emit_partition_copy(), tm_memop_hasher::equal(), estimated_unrolled_size(), expected_loop_iterations_unbounded(), find_cond_trap(), find_group(), find_implicit_sets(), find_invariants_to_move(), find_partition_fixes(), find_same_succ(), find_subloop_latch_edge_by_profile(), fixup_new_cold_bb(), fixup_reorder_chain(), flow_loop_nodes_find(), get_loop_latch_edges(), get_uncond_jump_length(), gimple_make_forwarder_block(), gimple_purge_dead_eh_edges(), gimplify_build3(), if_convertible_loop_p(), independent_of_stmt_p(), insert_insn_start_basic_block(), insert_rtx_to_part_on_edge(), instrument_edges(), is_use_properly_guarded(), link_roots(), live_worklist(), loop_latch_edge(), loop_niter_by_eval(), lower_eh_constructs(), make_pass_into_cfg_layout_mode(), mark_last_stmt_necessary(), move_stmt_r(), first_mem_ref_loc_1::operator()(), param_change_prob(), pre_and_rev_post_order_compute(), predict_paths_for_bb(), print_edge_list(), redirect_edge_succ_nodup(), remove_forwarder_block(), replace_pseudos_in(), rewrite_use_compare(), rtl_force_nonfallthru(), same_phi_alternatives_1(), set_var_live_on_entry(), simple_goto_p(), simple_mem_ref_in_stmt(), simplify_using_outer_evolutions(), split_edge(), split_function(), thread_prologue_and_epilogue_insns(), thread_single_edge(), tidy_fallthru_edge(), union_groups(), unloop_loops(), unsplit_all_eh(), update_dominators_in_loop(), vect_update_ivs_after_vectorizer(), verify_dominators(), verify_edge_list(), and verify_ssa().