GCC Middle and Back End API Reference
basic_block_def Struct Reference

#include <basic-block.h>

Collaboration diagram for basic_block_def:

Data Structures

union  basic_block_il_dependent
 

Data Fields

vec< edge, va_gc > * preds
 
vec< edge, va_gc > * succs
 
voidaux
 
class looploop_father
 
struct et_nodedom [2]
 
basic_block prev_bb
 
basic_block next_bb
 
union basic_block_def::basic_block_il_dependent il
 
int flags
 
int index
 
profile_count count
 

Detailed Description

A basic block is a sequence of instructions with only one entry and
only one exit.  If any one of the instructions are executed, they
will all be executed, and in sequence from first to last.

There may be COND_EXEC instructions in the basic block.  The
COND_EXEC *instructions* will be executed -- but if the condition
is false the conditionally executed *expressions* will of course
not be executed.  We don't consider the conditionally executed
expression (which might have side-effects) to be in a separate
basic block because the program counter will always be at the same
location after the COND_EXEC instruction, regardless of whether the
condition is true or not.

Basic blocks need not start with a label nor end with a jump insn.
For example, a previous basic block may just "conditionally fall"
into the succeeding basic block, and the last basic block need not
end with a jump insn.  Block 0 is a descendant of the entry block.

A basic block beginning with two labels cannot have notes between
the labels.

Data for jump tables are stored in jump_insns that occur in no
basic block even though these insns can follow or precede insns in
basic blocks.   
Basic block information indexed by block number.   

Field Documentation

◆ aux

void* basic_block_def::aux

Referenced by add_bb_predicate_gimplified_stmts(), add_scope_conflicts(), autofdo::afdo_calculate_branch_prob(), autofdo::afdo_find_equiv_class(), autofdo::afdo_propagate(), nontrapping_dom_walker::after_dom_children(), strlen_pass::after_dom_children(), alloc_aux_for_block(), analyze_function_body(), apply_opt_in_copies(), bb_has_predicate(), bb_predicate(), bb_predicate_gimplified_stmts(), find_comparison_dom_walker::before_dom_children(), nontrapping_dom_walker::before_dom_children(), strlen_pass::before_dom_children(), uncprop_dom_walker::before_dom_children(), can_remove_asan_check(), clear_aux_for_blocks(), compute_antinout_edge(), compute_available(), compute_bb_predicates(), compute_laterin(), compute_nearerout(), connect_traces(), copy_bb(), copy_bb(), copy_cfg_body(), copy_edges_for_bb(), copy_phis_for_bb(), create_basic_block_structure(), create_eh_forwarder_block(), determine_scaling_factor(), determine_unlikely_bbs(), dfs_broadcast_reachable_1(), execute_tm_memopt(), find_control_dep_blocks(), find_group(), find_spanning_tree(), find_split_points(), find_traces(), find_traces_1_round(), fini_pre(), fini_separate_shrink_wrap(), fix_crossing_conditional_branches(), fix_loop_structure(), fix_up_fall_thru_edges(), fixup_fallthru_exit_predecessor(), fixup_reorder_chain(), force_one_exit_fallthru(), free_bb_predicate(), get_bb_num_predicate_stmts(), get_control_equiv_head_block(), get_scaled_computation_cost_at(), gimple_lower_bitint(), imm_dom_path_with_freeing_call(), independent_of_stmt_p(), init_bb_predicate(), init_loop_unswitch_info(), init_separate_shrink_wrap(), insert_backedge_copies(), insert_bb(), insert_prologue_epilogue_for_components(), maybe_get_dominating_check(), maybe_optimize_asan_check_ifn(), maybe_renumber_stmts_bb(), neuter_worker_single(), oacc_do_neutering(), occurrence::occurrence(), propagate_unlikely_bbs_forward(), register_division_in(), regrename_analyze(), relink_block_chain(), reorder_basic_blocks_simple(), reorder_loops(), replace_reciprocal(), replace_reciprocal_squares(), rotate_loop(), rtl_create_basic_block(), rtl_duplicate_bb(), sanopt_optimize_walker(), set_bb_indices(), set_bb_predicate(), set_bb_predicate_gimplified_stmts(), should_duplicate_loop_header_p(), SW(), tm_memopt_free_sets(), tree_unswitch_single_loop(), try_shrink_wrapping(), and occurrence::~occurrence().

◆ count

profile_count basic_block_def::count

Referenced by autofdo::afdo_annotate_cfg(), autofdo::afdo_find_equiv_class(), autofdo::afdo_propagate(), autofdo::afdo_propagate_edge(), autofdo::afdo_set_bb_count(), alloc_block(), analyze_function_body(), average_num_loop_insns(), bb_colder_than_loop_preheader(), bb_to_key(), branch_fixup(), branch_prob(), cgraph_update_edges_for_call_stmt_node(), check_bb_profile(), coalesce_cost_bb(), compute_alignments(), compute_branch_probabilities(), compute_call_stmt_bb_frequency(), copy_bb(), copy_edges_for_bb(), create_cond_insert_point(), create_eh_forwarder_block(), decrease_profile(), determine_scaling_factor(), determine_unlikely_bbs(), tree_switch_conversion::switch_decision_tree::do_jump_if_equal(), doloop_modify(), drop_profile(), dump_basic_block_info(), dump_bb_for_graph(), dump_bb_info(), dump_function_to_file(), dump_gimple_bb_header(), dump_prediction(), dump_user_location_t::dump_user_location_t(), dump_user_location_t::dump_user_location_t(), duplicate_block(), duplicate_loop_body_to_header_edge(), back_jt_path_registry::duplicate_thread_path(), dw2_build_landing_pads(), tree_switch_conversion::switch_decision_tree::emit_case_nodes(), tree_switch_conversion::switch_decision_tree::emit_cmp_and_jump_insns(), estimate_bb_frequencies(), execute_fixup_cfg(), execute_sm_if_changed(), execute_split_functions(), expand_call_inline(), expand_gimple_cond(), expand_thunk(), expand_transaction(), expected_loop_iterations_by_profile(), expensive_function_p(), find_bb_boundaries(), find_best_predecessor(), find_invariants_bb(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_trace(), find_traces(), force_nonfallthru_and_redirect(), gen_emutls_addr(), get_minimal_bb(), gimple_account_profile_record(), gimple_find_sub_bbs(), gimple_ic(), gimple_split_edge(), gimple_stringop_fixed_value(), gimple_verify_flow_info(), handle_simple_exit(), tree_switch_conversion::bit_test_cluster::hoist_edge_and_branch_if_true(), init_lowered_empty_function(), inline_transform(), input_bb(), insert_cond_bb(), rt_bb_visited::insert_exit_check_on_edge(), ipa_merge_profiles(), ipa_profile_generate_summary(), isolate_path(), lower_resx(), make_forwarder_block(), mark_all_loops_for_removal(), maybe_hot_bb_p(), move_sese_region_to_fn(), optimize_mask_stores(), output_bb(), param_change_prob(), place_prologue_for_one_component(), probably_never_executed_bb_p(), profile_record_check_consistency(), propagate_freq(), propagate_unlikely_bbs_forward(), push_to_next_round_p(), cgraph_edge::rebuild_edges(), rebuild_frequencies(), cgraph_edge::redirect_call_stmt_to_callee(), report_unroll(), rtl_account_profile_record(), scale_dominated_blocks_in_loop(), scale_loop_profile(), scale_profile_for_vect_loop(), scale_strictly_dominated_blocks(), simd_clone_adjust(), split_block_1(), tail_duplicate(), tree_function_versioning(), tree_transform_and_unroll_loop(), try_forward_edges(), try_shrink_wrapping(), tree_switch_conversion::switch_decision_tree::try_switch_expansion(), try_unroll_loop_completely(), ubsan_create_edge(), ubsan_expand_null_ifn(), ubsan_expand_ptr_ifn(), unlikely_executed_bb_p(), unroll_loop_runtime_iterations(), update_bb_profile_for_threading(), update_call_edge_frequencies(), update_loop_exit_probability_scale_dom_bbs(), update_max_bb_count(), update_profile_after_ch(), update_profile_for_new_sub_basic_block(), vect_do_peeling(), vect_slp_node_weight(), verify_flow_info(), and cgraph_node::verify_node().

◆ dom

◆ flags

int basic_block_def::flags

Referenced by add_control_edge(), add_test(), bb_in_transaction(), bb_seq(), bb_seq_addr(), rewrite_update_dom_walker::before_dom_children(), break_superblocks(), cfg_layout_initialize(), clear_bb_flags(), compute_transaction_bits(), copy_bbs(), create_basic_block_structure(), create_bb(), create_preheader(), df_bb_refs_collect(), df_set_bb_dirty(), dfs_broadcast_reachable_1(), dfs_mark_dominating_region(), do_rpo_vn_1(), dump_bb_info(), duplicate_block(), duplicate_loop_body_to_header_edge(), eliminate_unnecessary_stmts(), emit_to_new_bb_before(), evaluate_bbs(), execute_sm_if_changed(), expand_gimple_basic_block(), expand_omp_target(), expand_omp_taskreg(), fill_always_executed_in_1(), find_always_executed_bbs(), find_loop_guard(), find_unreachable_blocks(), force_nonfallthru_and_redirect(), get_dominated_by_region(), get_loop_body_in_if_conv_order(), has_nonexceptional_receiver(), has_nonexceptional_receiver(), input_bb(), just_once_each_iteration_p(), mark_dfs_back_edges(), fwd_jt_path_registry::mark_threaded_blocks(), notice_new_block(), oacc_loop_discover_walk(), omp_sese_discover_pars(), omp_sese_find_par(), omp_sese_split_blocks(), output_bb(), function_reader::parse_block(), phi_nodes(), phi_nodes_ptr(), pre_and_rev_post_order_compute_fn(), reorder_basic_blocks_simple(), rev_post_order_and_mark_dfs_back_seme(), rewrite_blocks(), rtl_verify_bb_pointers(), set_bb_seq(), set_phi_nodes(), ssa_propagation_engine::simulate_block(), sjlj_emit_function_enter(), sm_seq_valid_bb(), split_block_1(), split_loop_on_cond(), ssa_prop_init(), try_forward_edges(), unchecked_make_edge(), update_forwarder_flag(), verify_flow_info(), verify_loop_structure(), verify_no_unreachable_blocks(), and warn_uninitialized_vars().

◆ il

◆ index

int basic_block_def::index

Referenced by _eligible_successor_edge_p(), _succ_iter_cond(), _succ_iter_start(), update_list::add(), add_bb_to_cluster(), add_control_edge(), equiv_oracle::add_equiv_to_block(), infer_range_manager::add_range(), add_ranges_and_copies(), add_to_predicate_list(), adjust_cfg_counts(), dom_opt_dom_walker::after_dom_children(), analyze_function_body(), associate_equivalences_with_edges(), rt_bb_visited::bb2idx(), bb_gcov_count(), bb_in_loop_p(), sbr_vector::bb_range_p(), sbr_lazy_vector::bb_range_p(), sbr_sparse_bitmap::bb_range_p(), bb_seen_p(), bb_to_key(), bb_visited_trace(), ipcp_modif_dom_walker::before_dom_children(), rewrite_dom_walker::before_dom_children(), rewrite_update_dom_walker::before_dom_children(), dom_opt_dom_walker::before_dom_children(), substitute_and_fold_dom_walker::before_dom_children(), begin_any_block(), branch_prob(), break_superblocks(), build_insn_chain(), build_store_vectors(), cache_can_duplicate_bb_p(), cached_can_duplicate_bb_p(), cached_make_edge(), calculate_bb_reg_pressure(), calculate_equiv_gains(), gori_map::calculate_gori(), calculate_live_on_exit(), calculate_loop_reg_pressure(), cand_cmp(), canon_list_insert(), cfg_layout_redirect_edge_and_branch(), change_loop(), rt_bb_visited::check(), cleanup_control_expr_graph(), cleanup_control_flow_bb(), cleanup_control_flow_pre(), cleanup_dead_labels(), control_dependences::clear_control_dependence_bitmap(), collect_bb2reg(), combine_predictions_for_bb(), combine_predictions_for_insn(), compact_blocks(), compute_alignments(), compute_antic(), compute_antic_aux(), compute_antinout_edge(), compute_avail(), compute_available(), compute_branch_probabilities(), compute_code_hoist_vbeinout(), compute_control_dep_chain(), compute_cprop_data(), compute_earliest(), compute_farthest(), compute_hash_table_work(), compute_insert_delete(), compute_invariantness(), compute_laterin(), compute_live_loop_exits(), compute_live_vars(), compute_local_properties(), compute_local_properties(), compute_nearerout(), compute_partial_antic_aux(), compute_pre_data(), path_range_query::compute_ranges(), compute_rev_insert_delete(), cond_exec_find_if_block(), connect_traces(), control_parents_preserved_p(), copy_bb(), copy_bb_p(), copy_cfg_body(), copy_edges_for_bb(), coverage_compute_cfg_checksum(), create_basic_block_structure(), create_bb(), create_edge_for_control_dependence(), create_expression_by_pieces(), create_fixup_graph(), create_remat_bb_data(), cgraph_node::create_version_clone(), cse_extended_basic_block(), cse_find_path(), dce_process_block(), debug(), debug_bitmap_sets_for(), debug_dominance_info(), debug_dominance_tree_1(), debug_slim(), decide_unrolling(), decompose_multiword_subregs(), delete_dead_or_redundant_assignment(), delete_dead_or_redundant_call(), determine_unlikely_bbs(), df_bb_refs_collect(), df_bb_replace(), df_bb_verify(), df_chain_bb_dump(), df_chain_create_bb(), df_clear_bb_dirty(), df_compact_blocks(), df_get_bb_dirty(), df_insn_change_bb(), df_install_ref_incremental(), df_install_refs(), df_live_bottom_dump(), df_live_set_all_dirty(), df_live_top_dump(), df_live_verify_solution_end(), df_live_verify_solution_start(), df_live_verify_transfer_functions(), df_lr_bottom_dump(), df_lr_confluence_0(), df_lr_top_dump(), df_lr_verify_solution_end(), df_lr_verify_solution_start(), df_lr_verify_transfer_functions(), df_md_bottom_dump(), df_md_confluence_0(), df_md_local_compute(), df_md_simulate_artificial_defs_at_top(), df_md_top_dump(), df_mir_bottom_dump(), df_mir_confluence_0(), df_mir_top_dump(), df_mir_verify_solution_end(), df_mir_verify_solution_start(), df_print_bb_index(), df_rd_bottom_dump(), df_rd_simulate_artificial_defs_at_top(), df_rd_top_dump(), df_refs_add_to_chains(), df_reorganize_refs_by_insn_bb(), df_scan_alloc(), df_scan_blocks(), df_scan_free_bb_info(), df_scan_start_block(), df_set_bb_dirty(), df_set_blocks(), df_simulate_finalize_backwards(), df_simulate_initialize_backwards(), df_simulate_initialize_forwards(), df_word_lr_alloc(), df_word_lr_bottom_dump(), df_word_lr_top_dump(), dfs_broadcast_reachable_1(), dfs_find_deadend(), discover_loop(), do_hoist_insertion(), do_invalidate(), do_rpo_vn_1(), draw_cfg_node(), draw_cfg_nodes_no_loops(), dse_confluence_0(), dse_step1(), dse_step3(), dse_step3_scan(), dse_step4(), dse_step5(), dse_step6(), ssa_block_ranges::dump(), dom_oracle::dump(), equiv_oracle::dump(), gori_map::dump(), dump_basic_block_info(), gimple_ranger::dump_bb(), dump_bb_info(), dump_candidate(), dump_candidates_and_remat_bb_data(), dump_dataflow_sets(), dump_gimple_bb_header(), dump_gimple_phi(), dump_live_info(), dump_omp_region(), dump_path(), dump_split_point(), dump_tm_memopt_sets(), dom_ranger::edge_range(), rpo_elim::eliminate_avail(), eliminate_dom_walker::eliminate_cleanup(), rpo_elim::eliminate_push_avail(), eliminate_tail_call(), eliminate_unnecessary_stmts(), emit_common_heads_for_components(), emit_common_tails_for_components(), emit_moves(), end_any_block(), estimate_bb_frequencies(), estimate_loops(), estimate_threading_killed_stmts(), execute_early_expand_coro_ifns(), execute_split_functions(), expand_gimple_basic_block(), expensive_function_p(), gori_map::exports(), fill_always_executed_in(), fill_always_executed_in_1(), ranger_cache::fill_block_cache(), find_always_executed_bbs(), find_basic_block(), find_cond_trap(), find_costs_and_classes(), equiv_oracle::find_equiv_dom(), find_if_case_1(), find_if_case_2(), find_implicit_sets(), find_invariants_bb(), find_local_vars_to_propagate(), find_loop_guard(), find_many_sub_basic_blocks(), find_moveable_pseudos(), find_partition_fixes(), dom_oracle::find_relation_dom(), find_same_succ_bb(), find_split_points(), find_subloop_latch_edge_by_ivs(), find_trace(), find_traces(), find_traces_1_round(), find_uses_to_rename_use(), fix_bb_placements(), fix_loop_structure(), flow_loop_dump(), flow_loops_cfg_dump(), flow_loops_find(), fold_marked_statements(), form_loop_tree(), get_bb_avail_insn(), get_bb_copy(), get_bb_original(), sbr_vector::get_bb_range(), sbr_lazy_vector::get_bb_range(), sbr_sparse_bitmap::get_bb_range(), virtual_operand_live::get_live_out(), get_loop_body_in_bfs_order(), get_loop_body_in_if_conv_order(), get_loop_hot_path(), get_rank(), get_tm_region_blocks(), gimple_dump_bb(), gimple_dump_bb_for_graph(), gimple_verify_flow_info(), handle_abnormal_edges(), hardcfr_sibcall_search_block(), hardcfr_sibcall_search_preds(), infer_range_manager::has_range_p(), infer_range_manager::has_range_p(), hoist_code(), hoist_guard(), if_convertible_bb_p(), ifcvt_local_dce(), ifcvt_split_critical_edges(), ignore_bb_p(), gori_map::imports(), inherit_reload_reg(), init_rename_info(), init_separate_shrink_wrap(), init_var_map(), initialize_uninitialized_regs(), initiate_live_solver(), insert_edge_check_and_trap(), insert_insn_end_basic_block(), insert_insn_start_basic_block(), insert_into_preds_of_block(), insert_set_in_table(), inverted_rev_post_order_compute(), ipa_get_bb_info(), ipa_merge_profiles(), ipa_tm_diagnose_transaction(), ipa_tm_note_irrevocable(), ipa_tm_propagate_irr(), ipa_tm_scan_irr_blocks(), ipa_tm_transform_calls(), ipa_tm_transform_calls_1(), ipa_tm_transform_transaction(), ira_emit(), ira_print_disposition(), ira_print_expanded_allocno(), is_feasible_trace(), is_inconsistent(), label_for_bb(), equiv_oracle::limit_check(), live_on_entry(), live_on_exit(), load_killed_in_block_p(), loe_visit_block(), log_op_type(), loop_inverted_rev_post_order_compute(), loop_rev_post_order_compute(), lra_create_live_ranges_1(), lra_inheritance(), lra_remat(), main_block_label(), make_edges(), make_live_on_entry(), make_new_block(), mark_all_loops_for_removal(), mark_artificial_uses(), mark_basic_block_deleted(), mark_bb_seen(), mark_bb_visited(), mark_block_for_update(), mark_control_dependent_edges_necessary(), mark_def_interesting(), mark_def_sites(), mark_dfs_back_edges(), mark_last_stmt_necessary(), mark_loops_for_removal(), mark_phi_for_rewrite(), mark_reachable_blocks(), mark_use_interesting(), gori_map::maybe_add_gori(), infer_range_manager::maybe_adjust_range(), maybe_duplicate_computed_goto(), maybe_lower_iteration_bound(), maybe_optimize_range_tests(), path_range_query::maybe_register_phi_relation(), merge_blocks_move(), merge_in_block(), move_block_to_fn(), move_edge_and_update(), neuter_worker_single(), new_tree_live_info(), noce_find_if_block(), oacc_do_neutering(), oacc_entry_exit_ok_1(), oacc_entry_exit_single_gang(), omp_make_gimple_edges(), omp_sese_dump_pars(), one_store_motion_pass(), optimize_mask_stores(), dom_opt_dom_walker::optimize_stmt(), output_bb(), output_cfg(), output_location(), parallelize_loops(), param_change_prob(), function_reader::parse_block(), function_reader::parse_edge(), ipa_icf_gimple::func_checker::parse_labels(), pbb_index(), phi_rank(), phi_translate_1(), populate_single_mode_bitmaps(), back_threader_profitability::possibly_profitable_path_p(), post_order_compute(), pre_and_rev_post_order_compute_fn(), dom_ranger::pre_bb(), pre_delete(), pre_edge_insert(), predict_loops(), prepare_def_site_for(), print_allocno_conflicts(), print_allocno_costs(), print_loop(), print_loop_title(), print_loops_bb(), print_rtl_with_bb(), rtx_writer::print_rtx_operand_code_0(), process_bb_lives(), ranger_cache::propagate_cache(), propagate_freq(), propagate_necessity(), propagate_unlikely_bbs_forward(), dom_walker::propagate_unreachable_to_edges(), ranger_cache::propagate_updated_value(), update_list::propagation_failed(), prune_expressions(), purge_dead_edges(), dom_oracle::query_relation(), path_range_query::range_defined_in_block(), ranger_cache::range_from_dom(), gimple_ranger::range_of_expr(), dom_ranger::range_of_stmt(), gimple_ranger::range_on_entry(), gimple_ranger::range_on_exit(), reachable_at_most_once(), read_profile_edge_counts(), rebuild_frequencies(), record_edge_info(), record_last_mem_set_info_common(), record_modified(), redirect_branch_edge(), region_contains_p(), equiv_oracle::register_equiv(), equiv_oracle::register_equiv(), path_oracle::register_relation(), gimple_ranger::register_transitive_inferred_ranges(), dom_oracle::register_transitives(), regrename_analyze(), regstat_bb_compute_ri(), regstat_compute_calls_crossed(), relink_block_chain(), remove_bb(), remove_edge_and_dominated_blocks(), remove_forwarder_block(), remove_path(), remove_prop_source_from_use(), remove_reachable_equiv_notes(), replace_phi_edge_with_variable(), replace_store_insn(), rev_post_order_and_mark_dfs_back_seme(), rewrite_debug_stmt_uses(), rtl_dump_bb(), rtl_verify_bb_insn_chain(), rtl_verify_bb_insns(), rtl_verify_bb_pointers(), rtl_verify_edges(), rtl_verify_fallthru(), same_succ_flush_bb(), sanitize_hot_paths(), set_bb_copy(), set_bb_original(), set_bb_predicate(), sbr_vector::set_bb_range(), sbr_lazy_vector::set_bb_range(), sbr_sparse_bitmap::set_bb_range(), control_dependences::set_control_dependence_map_bit(), set_def_block(), set_livein_block(), dom_oracle::set_one_relation(), set_scalar_evolution(), should_duplicate_loop_header_p(), should_hoist_expr_to_dom(), simplify_gimple_switch_label_vec(), ssa_propagation_engine::simulate_block(), sink_clobbers(), sink_code_in_bb(), sort_sibling_loops_cmp(), split_all_insns(), split_function(), split_live_ranges_for_shrink_wrap(), split_paths(), spread_components(), ssa_propagation_engine::ssa_propagate(), tail_duplicate(), jump_threader::thread_through_normal_block(), tm_memopt_accumulate_memops(), tm_memopt_compute_antic(), tm_memopt_compute_available(), tm_region_init(), tm_region_init_1(), transform_statements(), tree_unroll_loops_completely_1(), try_forward_edges(), try_redirect_by_replacing_jump(), try_shrink_wrapping(), unify_moves(), update_bb_profile_for_threading(), fwd_jt_path_registry::update_cfg(), update_ssa(), vect_analyze_data_ref_accesses(), vect_slp_function(), verify_def(), verify_dominators(), verify_edge_list(), verify_eh_dispatch_edge(), verify_eh_edges(), verify_flow_info(), verify_hot_cold_block_grouping(), verify_loop_structure(), verify_non_ssa_vars(), verify_sese(), verify_use(), verify_vssa(), vt_find_locations(), warn_uninitialized_vars(), and word_dce_process_block().

◆ loop_father

class loop* basic_block_def::loop_father

Referenced by _eligible_successor_edge_p(), add_bb_to_loop(), add_exit_phis(), add_loop(), adjust_simduid_builtins(), autofdo::afdo_find_equiv_class(), analyze_memory_references(), analyze_scalar_evolution_1(), bb_loop_depth(), bypass_block(), calculate_loop_reg_pressure(), loop_cand::can_interchange_p(), cfg_layout_duplicate_bb(), check_simple_exit(), loop_cand::classify_simple_reduction(), cleanup_empty_eh_merge_phis(), compute_access_range(), compute_access_stride(), compute_alignments(), compute_invariantness(), compute_live_loop_exits(), vect_optimize_slp_pass::containing_loop(), copy_bbs(), copy_cfg_body(), delete_basic_block(), determine_max_movement(), dfs_find_deadend(), do_hoist_insertion(), do_reload(), draw_cfg_nodes_for_loop(), dump_gimple_bb_header(), duplicate_block(), duplicate_loop_body_to_header_edge(), dw2_build_landing_pads(), execute_sm_if_changed(), expand_call_inline(), expand_gimple_cond(), expand_oacc_for(), expand_omp_for_generic(), expand_omp_for_init_counts(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_simple_operations(), expand_thunk(), extract_omp_for_update_vars(), fill_always_executed_in_1(), find_if_case_2(), find_loop_guard(), back_threader::find_paths_to_names(), find_ref_loc_in_loop_cmp(), fix_bb_placement(), fix_bb_placements(), fix_loop_structure(), flow_bb_inside_loop_p(), flow_loop_nodes_find(), flow_loops_find(), force_nonfallthru(), form_loop_tree(), forwarder_block_p(), gather_memory_references(), generate_loops_for_partition(), get_all_loop_exits(), get_minimal_bb(), get_references_in_stmt(), gimple_duplicate_bb(), ifcvt_can_predicate(), in_loop_p(), inner_loop_header_p(), input_cfg(), insert_cond_bb(), insert_into_preds_of_block(), is_cond_scalar_reduction(), is_feasible_trace(), is_loop_header_bb_p(), just_once_each_iteration_p(), loop_containing_stmt(), loop_optimizer_finalize(), lower_resx(), make_forwarder_block(), make_forwarders_with_degenerate_phis(), mark_loop_exit_edges(), fwd_jt_path_registry::mark_threaded_blocks(), maybe_set_vectorized_backedge_value(), merge_blocks_move(), merge_loop_tree(), move_block_to_fn(), move_computations_worker(), move_sese_region_to_fn(), oacc_xform_loop(), ref_in_loop_hot_body::operator()(), optimize_mask_stores(), outermost_loop_in_sese_1(), loop_distribution::pg_add_dependence_edges(), phi_rank(), predict_loops(), print_loop(), print_loops(), process_bb(), process_use(), remove_bb(), remove_bb_from_loops(), remove_ctrl_stmt_and_useless_edges(), remove_dead_stmt(), remove_forwarder_block(), remove_forwarder_block_with_phi(), remove_path(), rename_variables_in_bb(), rewrite_all_phi_nodes_with_iv(), same_succ_hash(), set_level(), simd_clone_adjust(), sjlj_emit_dispatch_table(), slsr_process_phi(), sm_seq_valid_bb(), sort_locs_in_loop_postorder_cmp(), split_block_1(), split_edge(), split_loop_on_cond(), stmt_in_inner_loop_p(), fwd_jt_path_registry::thread_block_1(), tree_forwarder_block_p(), tree_switch_conversion::switch_decision_tree::try_switch_expansion(), vect_bb_vectorization_profitable_p(), vect_compute_single_scalar_iteration_cost(), vect_loop_dist_alias_call(), vect_phi_initial_value(), vect_slp_function(), vectorizable_load(), verify_flow_info(), verify_loop_closed_ssa(), and verify_loop_structure().

◆ next_bb

◆ preds

vec<edge, va_gc>* basic_block_def::preds

Referenced by add_bb_to_cluster(), add_bb_to_loop(), add_clobbers_to_eh_landing_pad(), add_exit_phi(), add_scope_conflicts_1(), adjust_cfg_counts(), autofdo::afdo_propagate_edge(), all_preds_critical_p(), bb_has_well_behaved_predecessors(), bb_loop_header_p(), dom_walker::bb_reachable(), bb_to_key(), nontrapping_dom_walker::before_dom_children(), begin_any_block(), branch_prob(), bypass_block(), can_dup_for_shrink_wrapping(), check_bb_profile(), cleanup_empty_eh(), cleanup_tree_cfg_noloop(), clobber_only_eh_bb_p(), coalesce_partitions(), combine_blocks(), combine_instructions(), compute_alignments(), compute_antic(), compute_antinout_edge(), compute_bb_predicates(), compute_branch_probabilities(), compute_laterin(), compute_live_loop_exits(), compute_live_vars_1(), compute_nearerout(), compute_optimized_partition_bases(), cond_exec_find_if_block(), connect_dest(), connect_traces(), consider_split(), copy_bb_p(), copy_edges_for_bb(), copy_phis_for_bb(), create_loop_tree_nodes(), create_phi_node(), create_preheader(), delete_basic_block(), deps_ok_for_redirect_from_bb_to_bb(), determine_bb_domination_status(), determine_dominators_for_sons(), determine_unlikely_bbs(), df_print_bb_index(), df_worklist_propagate_backward(), df_worklist_propagate_forward(), dfs_mark_dominating_region(), disconnect_dest(), discover_loop(), do_pre_partial_partial_insertion(), do_pre_regular_insertion(), do_rpo_vn_1(), doloop_modify(), dump_basic_block_info(), dump_bb_info(), edge_before_returns_twice_call(), eliminate_partially_redundant_load(), emit_common_heads_for_components(), estimate_threading_killed_stmts(), expand_oacc_for(), expand_phi_nodes(), fast_dce(), ranger_cache::fill_block_cache(), find_always_executed_bbs(), find_best_predecessor(), find_block_to_duplicate_for_splitting_paths(), find_edge(), back_threader::find_paths_to_names(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_split_points(), find_tail_calls(), fix_bb_placements(), fixup_new_cold_bb(), fixup_reorder_chain(), flow_loop_nodes_find(), flow_loops_find(), form_subloop(), free_all_edge_infos(), free_block(), fuse_loops(), virtual_operand_live::get_live_in(), get_loop_latch_edges(), gimple_find_sub_bbs(), gimple_lower_bitint(), gimple_make_forwarder_block(), hardcfr_sibcall_search_preds(), has_nonexceptional_receiver(), has_nonexceptional_receiver(), has_preds_from_loop(), ifcvt_split_critical_edges(), imm_dom_path_with_freeing_call(), independent_of_stmt_p(), ipa_icf::sem_function::init(), input_phi(), rt_bb_visited::insert_exit_check_on_edge(), insert_into_preds_of_block(), insert_phi_nodes_for(), insert_updated_phi_nodes_for(), instrument_func_exit(), inverted_rev_post_order_compute(), ira_loop_tree_body_rev_postorder(), is_inconsistent(), iterate_fix_dominators(), loe_visit_block(), loop_count_in(), loop_edge_to_cancel(), loop_exits_to_bb_p(), loop_inverted_rev_post_order_compute(), loop_preheader_edge(), lower_emutls_function_body(), make_forwarder_block(), make_forwarders_with_degenerate_phis(), mark_basic_block_deleted(), mark_reachable_blocks(), fwd_jt_path_registry::mark_threaded_blocks(), maybe_duplicate_computed_goto(), merge_if_block(), move_block_to_fn(), move_sese_region_to_fn(), optimize_clobbers(), optimize_unreachable(), phi_result_unknown_predicate(), phiprop_insert_phi(), place_prologue_for_one_component(), pre_expr_reaches_here_p_work(), pred_blocks_visited_p(), predicate_scalar_phi(), predict_paths_for_bb(), prepare_block_for_update_1(), print_pred_bbs(), process_bb(), profile_record_check_consistency(), ranger_cache::propagate_cache(), propagate_freq(), dom_walker::propagate_unreachable_to_edges(), prune_bbs_to_update_dominators(), prune_expressions(), ranger_cache::range_from_dom(), dom_ranger::range_in_bb(), reachable_at_most_once(), rebuild_frequencies(), recompute_dominator(), regrename_analyze(), remove_bb_from_loops(), remove_exit_barrier(), remove_fake_predecessors(), remove_forwarder_block(), remove_forwarder_block_with_phi(), rename_variables_in_bb(), reserve_phi_args_for_new_edge(), ranger_cache::resolve_dom(), returning_call_p(), rewrite_blocks(), rtl_verify_edges(), sanitize_hot_paths(), simplify_using_ranges::set_and_propagate_unexecutable(), should_hoist_expr_to_dom(), single_block_loop_p(), single_pred_edge_ignoring_loop_edges(), single_pred_p(), sink_clobbers(), sink_common_stores_to_bb(), spread_components(), fwd_jt_path_registry::thread_block_1(), fwd_jt_path_registry::thread_through_loop_header(), tm_memopt_compute_antic(), tm_memopt_compute_avin(), tree_forwarder_block_p(), try_crossjump_bb(), try_head_merge_bb(), unify_moves(), fwd_jt_path_registry::update_cfg(), update_profile_for_new_sub_basic_block(), vect_analyze_loop_form(), vect_transform_loop(), verify_edge_list(), verify_flow_info(), verify_loop_structure(), verify_non_ssa_vars(), verify_phi_args(), verify_sese(), verify_ssa(), rt_bb_visited::visit(), visit_phi(), vt_find_locations(), dom_walker::walk(), warn_uninit_phi_uses(), and warn_uninitialized_vars().

◆ prev_bb

◆ succs

vec<edge, va_gc>* basic_block_def::succs

Referenced by _eligible_successor_edge_p(), _succ_iter_start(), add_bb_to_loop(), add_noreturn_fake_exit_edges(), add_phi_args_after_copy_edge(), add_ranges_and_copies(), adjust_cfg_counts(), autofdo::afdo_calculate_branch_prob(), autofdo::afdo_propagate_circuit(), autofdo::afdo_propagate_edge(), autofdo::afdo_set_bb_count(), alloc_aux_for_edges(), analyze_function_body(), assign_discriminators(), bb_next_bb(), bb_with_exit_edge_p(), find_comparison_dom_walker::before_dom_children(), block_fallthru(), block_has_only_trap(), branch_prob(), tree_switch_conversion::switch_conversion::build_arrays(), build_region(), builtin_setjmp_setup_bb(), gori_map::calculate_gori(), calculate_live_on_exit(), can_fallthru(), cfg_layout_redirect_edge_and_branch(), tree_switch_conversion::switch_conversion::check_all_empty_except_final(), check_bb_profile(), clean_up_after_unswitching(), cleanup_call_ctrl_altering_flag(), cleanup_control_expr_graph(), cleanup_control_flow_bb(), cleanup_control_flow_pre(), cleanup_empty_eh(), clear_aux_for_edges(), tree_switch_conversion::switch_conversion::collect(), combine_blocks(), combine_predictions_for_bb(), commit_edge_insertions(), compute_antic_aux(), compute_available(), compute_branch_probabilities(), compute_laterin(), compute_nearerout(), compute_partial_antic_aux(), cond_exec_find_if_block(), control_dependences::control_dependences(), copy_bb_p(), copy_bbs(), copy_edges_for_bb(), correct_negative_edge_counts(), could_fall_through(), coverage_compute_cfg_checksum(), cprop_into_successor_phis(), cprop_jump(), create_edge_list(), create_fixup_graph(), cse_cc_succs(), cse_extended_basic_block(), cse_find_path(), dce_process_block(), decrease_profile(), delete_basic_block(), determine_unlikely_bbs(), df_print_bb_index(), df_worklist_propagate_backward(), df_worklist_propagate_forward(), dfs_broadcast_reachable_1(), dfs_find_deadend(), disconnect_src(), discover_iteration_bound_by_body_walk(), discover_loop(), disqualify_problematic_components(), do_hoist_insertion(), do_pre_partial_partial_insertion(), do_rpo_vn_1(), draw_cfg_edges(), draw_cfg_node_succ_edges(), dse_step1(), dse_step3(), dump_basic_block_info(), gimple_ranger::dump_bb(), dump_bb_info(), dump_cfg_stats(), dump_gimple_cond(), dump_implicit_edges(), dump_prediction(), duplicate_block(), duplicate_loop_body_to_header_edge(), back_jt_path_registry::duplicate_thread_path(), eliminate_unnecessary_stmts(), emit_common_tails_for_components(), emit_moves(), end_any_block(), estimate_bb_frequencies(), evaluate_bbs(), execute_early_expand_coro_ifns(), execute_fixup_cfg(), execute_ranger_vrp(), expand_call_tm(), expand_complex_move(), expand_gimple_basic_block(), expand_gimple_tailcall(), expand_oacc_for(), expand_omp_for(), expand_omp_for_generic(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskloop_for_inner(), expand_omp_taskloop_for_outer(), fill_always_executed_in_1(), find_always_executed_bbs(), find_bbs_reachable_by_hot_paths(), find_best_successor(), find_block_to_duplicate_for_splitting_paths(), find_edge(), find_if_header(), find_implicit_sets(), find_interesting_uses(), find_many_sub_basic_blocks(), find_obviously_necessary_stmts(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_same_succ_bb(), find_split_points(), find_traces_1_round(), find_uses_to_rename_bb(), finish_eh_generation(), fix_bb_placement(), fix_bb_placements(), fix_crossing_conditional_branches(), fixup_abnormal_edges(), fixup_new_cold_bb(), fixup_reorder_chain(), flow_loops_cfg_dump(), fold_builtin_atomic_compare_exchange(), fold_marked_statements(), force_nonfallthru_and_redirect(), free_block(), get_abnormal_succ_dispatcher(), get_all_loop_exits(), get_exec_counts(), get_false_edge_from_guard_bb(), get_live_on_other_edges(), get_loop_body_in_bfs_order(), get_loop_hot_path(), get_outgoing_edge_probs(), get_tm_region_blocks(), get_true_edge_from_guard_bb(), get_ws_args_for(), gimple_find_edge_insert_loc(), gimple_purge_dead_abnormal_call_edges(), gimple_purge_dead_eh_edges(), gimple_ranger::gimple_ranger(), gimple_split_block(), gimple_try_redirect_by_replacing_jump(), gimple_verify_flow_info(), gsi_commit_edge_inserts(), handle_builtin_alloca(), has_abnormal_or_eh_outgoing_edge_p(), have_eh_succ_edges(), if_convertible_bb_p(), if_convertible_loop_p(), ifcvt_split_critical_edges(), ipa_icf::sem_function::init(), init_elimination(), init_separate_shrink_wrap(), insert(), insert_prologue_epilogue_for_components(), instrument_edges(), instrument_expr(), inverted_rev_post_order_compute(), ipa_tm_propagate_irr(), ipa_tm_scan_irr_blocks(), ipa_tm_transform_calls(), ira(), ira_emit(), is_inconsistent(), isolate_path(), live_edge_for_reg(), loop_exits_from_bb_p(), loop_rev_post_order_compute(), lower_eh_dispatch(), lower_resx(), lra_inheritance(), make_edges(), mark_dfs_back_edges(), mark_loop_exit_edges(), maybe_lower_iteration_bound(), maybe_move_debug_stmts_to_successors(), maybe_optimize_guarding_check(), maybe_optimize_range_tests(), maybe_register_def(), back_threader::maybe_thread_block(), merge_blocks_move(), merge_if_block(), move_block_to_fn(), move_insn_for_shrink_wrap(), move_sese_region_to_fn(), non_eh_succ_edge(), oacc_loop_discover_walk(), omp_sese_find_par(), optimize_stack_restore(), output_cfg(), peep2_attempt(), post_order_compute(), pre_and_rev_post_order_compute_fn(), predict_iv_comparison(), predict_loops(), predict_paths_leading_to_edge(), print_rtl_with_bb(), print_succ_bbs(), process_bb(), profile_record_check_consistency(), ranger_cache::propagate_cache(), propagate_freq(), substitute_and_fold_engine::propagate_into_phi_args(), propagate_unlikely_bbs_forward(), dom_walker::propagate_unreachable_to_edges(), ranger_cache::propagate_updated_value(), purge_dead_edges(), purge_dead_tablejump_edges(), read_profile_edge_counts(), recompute_dominator(), record_edge_info(), record_loop_exits(), regrename_analyze(), remove_bb_from_loops(), remove_ctrl_stmt_and_useless_edges(), remove_dead_stmt(), remove_edge_and_dominated_blocks(), remove_phi_nodes_and_edges_for_unreachable_block(), remove_reachable_equiv_notes(), remove_unused_locals(), tree_switch_conversion::switch_decision_tree::reset_out_edges_aux(), rev_post_order_and_mark_dfs_back_seme(), rewrite_add_phi_arguments(), rewrite_update_phi_arguments(), rotate_loop(), rtl_split_block(), rtl_verify_edges(), rtl_verify_fallthru(), sanitize_hot_paths(), scan_loop(), set_all_edges_as_executable(), simplify_using_ranges::set_and_propagate_unexecutable(), set_bb_counts(), set_cond_stmt_execution_predicate(), set_edge_can_fallthru_flag(), set_even_probabilities(), set_switch_stmt_execution_predicate(), should_duplicate_loop_header_p(), ssa_propagation_engine::simulate_block(), ssa_propagation_engine::simulate_stmt(), single_block_loop_p(), single_non_eh_succ(), single_noncomplex_succ(), single_succ_p(), sink_code_in_bb(), split_block_1(), split_critical_edges(), split_live_ranges_for_shrink_wrap(), spread_components(), sra_modify_call_arg(), ssa_prop_init(), stmt_can_terminate_bb_p(), suitable_cond_bb(), fwd_jt_path_registry::thread_block_1(), back_threader::thread_blocks(), jump_threader::thread_outgoing_edges(), tm_memopt_compute_antin(), tm_memopt_compute_available(), tm_region_init(), tree_estimate_probability_bb(), tree_predict_by_opcode(), try_head_merge_bb(), try_redirect_by_replacing_jump(), try_shrink_wrapping(), uncprop_into_successor_phis(), unify_moves(), update_bb_reg_pressure(), update_cfg_for_uncondjump(), update_crossing_jump_flags(), update_ebb_live_info(), update_ssa_across_abnormal_edges(), vect_create_constant_vectors(), verify_edge_list(), verify_eh_dispatch_edge(), verify_eh_edges(), verify_flow_info(), verify_gimple_in_cfg(), verify_live_on_entry(), verify_loop_structure(), verify_marked_backedges(), verify_non_ssa_vars(), verify_sese(), verify_vssa(), rt_bb_visited::visit(), visit_bb(), vt_find_locations(), vt_stack_adjustments(), dom_walker::walk(), warn_uninitialized_vars(), word_dce_process_block(), worker_single_copy(), and worker_single_simple().


The documentation for this struct was generated from the following file: