GCC Middle and Back End API Reference
edge_def Struct Reference

#include <basic-block.h>

Collaboration diagram for edge_def:

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

Detailed Description

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.


Field Documentation

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().

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().


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