osprey-gcc/gcc/basic-block.h File Reference

#include "bitmap.h"
#include "sbitmap.h"
#include "varray.h"
#include "partition.h"
#include "hard-reg-set.h"
#include "predict.h"
#include "vec.h"
#include "errors.h"
#include "cfghooks.h"

Include dependency graph for basic-block.h:

Go to the source code of this file.

Data Types

type  reorder_block_def
type  ce_if_block
type  edge_list
type  edge_iterator

Defines

#define ALLOC_REG_SET(OBSTACK)   BITMAP_ALLOC (OBSTACK)
#define FREE_REG_SET(REGSET)   BITMAP_FREE (REGSET)
#define INIT_REG_SET(HEAD)   bitmap_initialize (HEAD, &reg_obstack)
#define CLEAR_REG_SET(HEAD)   bitmap_clear (HEAD)
#define COPY_REG_SET(TO, FROM)   bitmap_copy (TO, FROM)
#define REG_SET_EQUAL_P(A, B)   bitmap_equal_p (A, B)
#define AND_REG_SET(TO, FROM)   bitmap_and_into (TO, FROM)
#define AND_COMPL_REG_SET(TO, FROM)   bitmap_and_compl_into (TO, FROM)
#define IOR_REG_SET(TO, FROM)   bitmap_ior_into (TO, FROM)
#define XOR_REG_SET(TO, FROM)   bitmap_xor_into (TO, FROM)
#define IOR_AND_COMPL_REG_SET(TO, FROM1, FROM2)   bitmap_ior_and_compl_into (TO, FROM1, FROM2)
#define CLEAR_REGNO_REG_SET(HEAD, REG)   bitmap_clear_bit (HEAD, REG)
#define SET_REGNO_REG_SET(HEAD, REG)   bitmap_set_bit (HEAD, REG)
#define REGNO_REG_SET_P(TO, REG)   bitmap_bit_p (TO, REG)
#define REG_SET_TO_HARD_REG_SET(TO, FROM)
#define EXECUTE_IF_SET_IN_REG_SET(REGSET, MIN, REGNUM, RSI)   EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI)
#define EXECUTE_IF_AND_COMPL_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI)   EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)
#define EXECUTE_IF_AND_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI)   EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) \
#define EDGE_FALLTHRU   1
#define EDGE_ABNORMAL   2
#define EDGE_ABNORMAL_CALL   4
#define EDGE_EH   8
#define EDGE_FAKE   16
#define EDGE_DFS_BACK   32
#define EDGE_CAN_FALLTHRU   64
#define EDGE_IRREDUCIBLE_LOOP   128
#define EDGE_SIBCALL   256
#define EDGE_LOOP_EXIT   512
#define EDGE_TRUE_VALUE   1024
#define EDGE_FALSE_VALUE   2048
#define EDGE_EXECUTABLE   4096
#define EDGE_CROSSING   8192
#define EDGE_ALL_FLAGS   16383
#define EDGE_COMPLEX   (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)
#define BB_FREQ_MAX   10000
#define BB_DIRTY   1
#define BB_NEW   2
#define BB_REACHABLE   4
#define BB_VISITED   8
#define BB_IRREDUCIBLE_LOOP   16
#define BB_SUPERBLOCK   32
#define BB_DISABLE_SCHEDULE   64
#define BB_HOT_PARTITION   128
#define BB_COLD_PARTITION   256
#define BB_UNPARTITIONED   0
#define BB_PARTITION(bb)   ((bb)->flags & (BB_HOT_PARTITION|BB_COLD_PARTITION))
#define BB_SET_PARTITION(bb, part)
#define BB_COPY_PARTITION(dstbb, srcbb)   BB_SET_PARTITION (dstbb, BB_PARTITION (srcbb))
#define BASIC_BLOCK(N)   (VARRAY_BB (basic_block_info, (N)))
#define FOR_BB_BETWEEN(BB, FROM, TO, DIR)   for (BB = FROM; BB != TO; BB = BB->DIR)
#define FOR_EACH_BB(BB)   FOR_BB_BETWEEN (BB, ENTRY_BLOCK_PTR->next_bb, EXIT_BLOCK_PTR, next_bb)
#define FOR_EACH_BB_REVERSE(BB)   FOR_BB_BETWEEN (BB, EXIT_BLOCK_PTR->prev_bb, ENTRY_BLOCK_PTR, prev_bb)
#define FOR_BB_INSNS(BB, INSN)
#define FOR_BB_INSNS_REVERSE(BB, INSN)
#define FOR_ALL_BB(BB)   for (BB = ENTRY_BLOCK_PTR; BB; BB = BB->next_bb)
#define REG_BLOCK_UNKNOWN   -1
#define REG_BLOCK_GLOBAL   -2
#define REG_BASIC_BLOCK(N)   (VARRAY_REG (reg_n_info, N)->basic_block)
#define BB_HEAD(B)   (B)->head_
#define BB_END(B)   (B)->end_
#define ENTRY_BLOCK   (-1)
#define EXIT_BLOCK   (-2)
#define INVALID_BLOCK   (-3)
#define BLOCK_NUM(INSN)   (BLOCK_FOR_INSN (INSN)->index + 0)
#define set_block_for_insn(INSN, BB)   (BLOCK_FOR_INSN (INSN) = BB)
#define EDGE_INDEX_NO_EDGE   -1
#define EDGE_INDEX(el, pred, succ)   (find_edge_index ((el), (pred), (succ)))
#define INDEX_EDGE_PRED_BB(el, index)   ((el)->index_to_edge[(index)]->src)
#define INDEX_EDGE_SUCC_BB(el, index)   ((el)->index_to_edge[(index)]->dest)
#define INDEX_EDGE(el, index)   ((el)->index_to_edge[(index)])
#define NUM_EDGES(el)   ((el)->num_edges)
#define FALLTHRU_EDGE(bb)
#define BRANCH_EDGE(bb)
#define EDGE_FREQUENCY(e)
#define EDGE_CRITICAL_P(e)
#define EDGE_COUNT(ev)   VEC_length (edge, (ev))
#define EDGE_I(ev, i)   VEC_index (edge, (ev), (i))
#define EDGE_PRED(bb, i)   VEC_index (edge, (bb)->preds, (i))
#define EDGE_SUCC(bb, i)   VEC_index (edge, (bb)->succs, (i))
#define ei_start(iter)   ei_start_1 (&(iter))
#define ei_last(iter)   ei_last_1 (&(iter))
#define FOR_EACH_EDGE(EDGE, ITER, EDGE_VEC)
#define PROP_DEATH_NOTES   1
#define PROP_LOG_LINKS   2
#define PROP_REG_INFO   4
#define PROP_KILL_DEAD_CODE   8
#define PROP_SCAN_DEAD_CODE   16
#define PROP_ALLOW_CFG_CHANGES   32
#define PROP_AUTOINC   64
#define PROP_EQUAL_NOTES   128
#define PROP_SCAN_DEAD_STORES   256
#define PROP_ASM_SCAN   512
#define PROP_FINAL
#define PROP_POSTRELOAD
#define CLEANUP_EXPENSIVE   1
#define CLEANUP_CROSSJUMP   2
#define CLEANUP_POST_REGSTACK   4
#define CLEANUP_PRE_LOOP   8
#define CLEANUP_UPDATE_LIFE   16
#define CLEANUP_THREADING   32
#define CLEANUP_NO_INSN_DEL   64
#define CLEANUP_CFGLAYOUT   128
#define CLEANUP_LOG_LINKS   256

Typedefs

typedef bitmap_head regset_head
typedef bitmap regset
typedef bitmap_iterator reg_set_iterator
typedef HOST_WIDEST_INT gcov_type
typedef struct edge_defedge
typedef struct basic_block_defbasic_block
typedef struct reorder_block_defreorder_block_def_p
typedef struct ce_if_block ce_if_block_t
typedef struct conflict_graph_defconflict_graph
typedef int(* conflict_graph_enum_fn )(int, int, void *)

Enumerations

enum  profile_status { PROFILE_ABSENT, PROFILE_GUESSED, PROFILE_READ }
enum  update_life_extent {
  UPDATE_LIFE_LOCAL = 0, UPDATE_LIFE_GLOBAL = 1, UPDATE_LIFE_GLOBAL_RM_NOTES = 2, UPDATE_LIFE_LOCAL = 0,
  UPDATE_LIFE_GLOBAL = 1, UPDATE_LIFE_GLOBAL_RM_NOTES = 2, UPDATE_LIFE_LOCAL = 0, UPDATE_LIFE_GLOBAL = 1,
  UPDATE_LIFE_GLOBAL_RM_NOTES = 2, UPDATE_LIFE_LOCAL = 0, UPDATE_LIFE_GLOBAL = 1, UPDATE_LIFE_GLOBAL_RM_NOTES = 2
}
enum  cdi_direction {
  CDI_DOMINATORS, CDI_POST_DOMINATORS, CDI_DOMINATORS, CDI_POST_DOMINATORS,
  CDI_DOMINATORS, CDI_POST_DOMINATORS, CDI_DOMINATORS, CDI_POST_DOMINATORS
}
enum  dom_state {
  DOM_NONE, DOM_NO_FAST_QUERY, DOM_OK, DOM_NONE,
  DOM_NO_FAST_QUERY, DOM_OK
}

Functions/Subroutines

void reg_set_to_hard_reg_set (HARD_REG_SET *, bitmap)
struct edge_def GTY (())
 DEF_VEC_GC_P (edge)
struct basic_block_def GTY ((chain_next("%h.next_bb"), chain_prev("%h.prev_bb")))
void compute_bb_for_insn (void)
void free_bb_for_insn (void)
void update_bb_for_insn (basic_block)
void free_basic_block_vars (void)
void insert_insn_on_edge (rtx, edge)
bool safe_insert_insn_on_edge (rtx, edge)
void commit_edge_insertions (void)
void commit_edge_insertions_watch_calls (void)
void remove_fake_edges (void)
void remove_fake_exit_edges (void)
void add_noreturn_fake_exit_edges (void)
void connect_infinite_loops_to_exit (void)
edge unchecked_make_edge (basic_block, basic_block, int)
edge cached_make_edge (sbitmap *, basic_block, basic_block, int)
edge make_edge (basic_block, basic_block, int)
edge make_single_succ_edge (basic_block, basic_block, int)
void remove_edge (edge)
void redirect_edge_succ (edge, basic_block)
edge redirect_edge_succ_nodup (edge, basic_block)
void redirect_edge_pred (edge, basic_block)
basic_block create_basic_block_structure (rtx, rtx, rtx, basic_block)
void clear_bb_flags (void)
void flow_reverse_top_sort_order_compute (int *)
int flow_depth_first_order_compute (int *, int *)
int dfs_enumerate_from (basic_block, int, bool(*)(basic_block, void *), basic_block *, int, void *)
void compute_dominance_frontiers (bitmap *)
void dump_edge_info (FILE *, edge, int)
void brief_dump_cfg (FILE *)
void clear_edges (void)
rtx first_insn_after_basic_block_note (basic_block)
static VEC (edge)*ei_container(edge_iterator i)
static edge_iterator ei_start_1 (VEC(edge)**ev)
static edge_iterator ei_last_1 (VEC(edge)**ev)
static bool ei_end_p (edge_iterator i)
static bool ei_one_before_end_p (edge_iterator i)
static void ei_next (edge_iterator *i)
static void ei_prev (edge_iterator *i)
static edge ei_edge (edge_iterator i)
static edge ei_safe_edge (edge_iterator i)
struct edge_listcreate_edge_list (void)
void free_edge_list (struct edge_list *)
void print_edge_list (FILE *, struct edge_list *)
void verify_edge_list (FILE *, struct edge_list *)
int find_edge_index (struct edge_list *, basic_block, basic_block)
edge find_edge (basic_block, basic_block)
void life_analysis (FILE *, int)
int update_life_info (sbitmap, enum update_life_extent, int)
int update_life_info_in_dirty_blocks (enum update_life_extent, int)
int count_or_remove_death_notes (sbitmap, int)
int propagate_block (basic_block, regset, regset, regset, int)
rtx propagate_one_insn (struct propagate_block_info *, rtx)
struct propagate_block_infoinit_propagate_block_info (basic_block, regset, regset, regset, int)
void free_propagate_block_info (struct propagate_block_info *)
struct edge_listpre_edge_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)
struct edge_listpre_edge_rev_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)
void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *)
int optimize_mode_switching (FILE *)
void estimate_probability (struct loops *)
void expected_value_to_br_prob (void)
bool maybe_hot_bb_p (basic_block)
bool probably_cold_bb_p (basic_block)
bool probably_never_executed_bb_p (basic_block)
bool tree_predicted_by_p (basic_block, enum br_predictor)
bool rtl_predicted_by_p (basic_block, enum br_predictor)
void tree_predict_edge (edge, enum br_predictor, int)
void rtl_predict_edge (edge, enum br_predictor, int)
void predict_edge_def (edge, enum br_predictor, enum prediction)
void guess_outgoing_edge_probabilities (basic_block)
void init_flow (void)
void debug_bb (basic_block)
basic_block debug_bb_n (int)
void dump_regset (regset, FILE *)
void debug_regset (regset)
void allocate_reg_life_data (void)
void expunge_block (basic_block)
void link_block (basic_block, basic_block)
void unlink_block (basic_block)
void compact_blocks (void)
basic_block alloc_block (void)
void find_unreachable_blocks (void)
int delete_noop_moves (void)
basic_block force_nonfallthru (edge)
rtx block_label (basic_block)
bool forwarder_block_p (basic_block)
bool purge_all_dead_edges (int)
bool purge_dead_edges (basic_block)
void find_sub_basic_blocks (basic_block)
void find_many_sub_basic_blocks (sbitmap)
void rtl_make_eh_edge (sbitmap *, basic_block, rtx)
bool can_fallthru (basic_block, basic_block)
bool could_fall_through (basic_block, basic_block)
void flow_nodes_print (const char *, const sbitmap, FILE *)
void flow_edge_list_print (const char *, const edge *, int, FILE *)
void alloc_aux_for_block (basic_block, int)
void alloc_aux_for_blocks (int)
void clear_aux_for_blocks (void)
void free_aux_for_blocks (void)
void alloc_aux_for_edge (edge, int)
void alloc_aux_for_edges (int)
void clear_aux_for_edges (void)
void free_aux_for_edges (void)
void find_basic_blocks (rtx)
bool cleanup_cfg (int)
bool delete_unreachable_blocks (void)
bool merge_seq_blocks (void)
conflict_graph conflict_graph_new (int)
void conflict_graph_delete (conflict_graph)
int conflict_graph_add (conflict_graph, int, int)
int conflict_graph_conflict_p (conflict_graph, int, int)
void conflict_graph_enum (conflict_graph, int, conflict_graph_enum_fn, void *)
void conflict_graph_merge_regs (conflict_graph, int, int)
void conflict_graph_print (conflict_graph, FILE *)
bool mark_dfs_back_edges (void)
void set_edge_can_fallthru_flag (void)
void update_br_prob_note (basic_block)
void fixup_abnormal_edges (void)
bool inside_basic_block_p (rtx)
bool control_flow_insn_p (rtx)
void reorder_basic_blocks (unsigned int)
void duplicate_computed_gotos (void)
void partition_hot_cold_basic_blocks (void)
void alloc_rbi_pool (void)
void initialize_bb_rbi (basic_block bb)
void free_rbi_pool (void)
bool dom_info_available_p (enum cdi_direction)
void calculate_dominance_info (enum cdi_direction)
void free_dominance_info (enum cdi_direction)
basic_block nearest_common_dominator (enum cdi_direction, basic_block, basic_block)
void set_immediate_dominator (enum cdi_direction, basic_block, basic_block)
basic_block get_immediate_dominator (enum cdi_direction, basic_block)
bool dominated_by_p (enum cdi_direction, basic_block, basic_block)
int get_dominated_by (enum cdi_direction, basic_block, basic_block **)
unsigned get_dominated_by_region (enum cdi_direction, basic_block *, unsigned, basic_block *)
void add_to_dominance_info (enum cdi_direction, basic_block)
void delete_from_dominance_info (enum cdi_direction, basic_block)
basic_block recount_dominator (enum cdi_direction, basic_block)
void redirect_immediate_dominators (enum cdi_direction, basic_block, basic_block)
void iterate_fix_dominators (enum cdi_direction, basic_block *, int)
void verify_dominators (enum cdi_direction)
basic_block first_dom_son (enum cdi_direction, basic_block)
basic_block next_dom_son (enum cdi_direction, basic_block)
edge try_redirect_by_replacing_jump (edge, basic_block, bool)
void break_superblocks (void)
void check_bb_profile (basic_block, FILE *)
void update_bb_profile_for_threading (basic_block, int, gcov_type, edge)

Variables

struct gcov_ctr_summaryprofile_info
int n_basic_blocks
int last_basic_block
int n_edges
regset regs_live_at_setjmp
bitmap_obstack reg_obstack
enum dom_state dom_computed [2]


Define Documentation

#define ALLOC_REG_SET ( OBSTACK   )     BITMAP_ALLOC (OBSTACK)

#define AND_COMPL_REG_SET ( TO,
FROM   )     bitmap_and_compl_into (TO, FROM)

Definition at line 62 of file basic-block.h.

#define AND_REG_SET ( TO,
FROM   )     bitmap_and_into (TO, FROM)

Definition at line 59 of file basic-block.h.

#define BASIC_BLOCK (  )     (VARRAY_BB (basic_block_info, (N)))

Definition at line 367 of file basic-block.h.

#define BB_COLD_PARTITION   256

#define BB_COPY_PARTITION ( dstbb,
srcbb   )     BB_SET_PARTITION (dstbb, BB_PARTITION (srcbb))

#define BB_DIRTY   1

Definition at line 300 of file basic-block.h.

#define BB_DISABLE_SCHEDULE   64

Definition at line 320 of file basic-block.h.

Referenced by clear_bb_flags().

#define BB_END ( B   )     (B)->end_

Definition at line 421 of file basic-block.h.

Referenced by add_deps_for_risky_insns(), add_insn_after(), add_labels_and_missing_jumps(), add_missing_bbs(), add_reg_crossing_jump_notes(), advance_target_bb(), apply_opt_in_copies(), average_num_loop_insns(), back_edge_of_syntactic_loop_p(), bb_estimate_probability_locally(), bb_has_well_behaved_predecessors(), begin_schedule_ready(), bfin_optimize_loop(), bfin_reorg_loops(), bfin_scan_loop(), block_alloc(), block_has_only_trap(), block_jumps_and_fallthru_p(), block_label_after(), branch_prob(), btr_def_live_range(), build_def_use(), build_insn_chain(), bypass_conditional_jumps(), calculate_local_reg_bb_info(), can_fallthru(), cfg_layout_can_merge_blocks_p(), cfg_layout_delete_block(), cfg_layout_duplicate_bb(), cfg_layout_merge_blocks(), cfg_layout_redirect_edge_and_branch(), cfg_layout_split_edge(), cheap_bb_rtx_cost_p(), check_cond_move_block(), check_simple_exit(), clear_log_links(), clear_regs_live_in_seq(), collect_pattern_seqs(), combine_btr_defs(), combine_instructions(), combine_stack_adjustments_for_block(), commit_one_edge_insertion(), compute_bb_for_insn(), compute_branch_probabilities(), compute_defs_uses_and_gen(), compute_hash_table_work(), compute_ld_motion_mems(), compute_outgoing_frequencies(), compute_store_table(), compute_transpout(), cond_exec_process_if_block(), condjump_equiv_p(), copyprop_hardreg_forward_1(), count_bb_insns(), count_insns(), count_or_remove_death_notes_bb(), cprop(), create_basic_block_structure(), create_ddg(), create_loop_notes(), cse_cc_succs(), cse_condition_code_reg(), dead_or_predicable(), delete_dead_jumptables(), delete_insn_and_edges(), delete_insn_chain_and_edges(), delete_noop_moves(), duplicate_computed_gotos(), eliminate_partially_redundant_load(), emit_insn_after_1(), emit_predicate_relation_info(), erase_matching_seqs(), estimate_probability(), expand_gimple_basic_block(), expand_gimple_cond_expr(), expand_gimple_tailcall(), expensive_function_p(), find_bb_boundaries(), find_cond_trap(), find_if_block(), find_if_case_1(), find_if_case_2(), find_implicit_sets(), find_jump_block(), find_moveable_store(), finish_eh_generation(), first_active_insn(), fix_basic_block_boundaries(), fix_crossing_conditional_branches(), fix_crossing_unconditional_branches(), fix_up_fall_thru_edges(), fixup_abnormal_edges(), fixup_reorder_chain(), flow_find_cross_jump(), force_nonfallthru_and_redirect(), forwarder_block_p(), frv_ifcvt_modify_multiple_tests(), frv_ifcvt_modify_tests(), frv_optimize_membar_local(), get_last_bb_insn(), global_conflicts(), guess_outgoing_edge_probabilities(), hash_scan_set(), init_propagate_block_info(), insert_insn_end_bb(), insert_insn_end_bb_new(), insert_insn_start_bb(), insert_one_insn(), ix86_pad_returns(), last_active_insn(), likely_spilled_retval_p(), link_btr_uses(), loop_delete_branch_edge(), loop_dump_aux(), loop_split_edge_with(), make_edges(), mark_bb_for_unlikely_executed_section(), mark_flags_life_zones(), may_unswitch_on(), merge_blocks_move(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), merge_if_block(), move_btr_def(), move_invariant_reg(), mt_block_length(), mt_reorg_loops(), mt_scan_loop(), noce_init_if_info(), noce_process_if_block(), num_loop_insns(), outgoing_edges_match(), predict_loops(), print_rtl_graph_with_bb(), print_rtl_slim_with_bb(), print_rtl_with_bb(), prologue_stack_adjust(), propagate_block(), purge_dead_edges(), purge_dead_tablejump_edges(), record_effective_endpoints(), redirect_branch_edge(), reg_is_remote_constant_p(), regclass(), regmove_optimize(), remove_insn(), remove_reachable_equiv_notes(), reorder_insns(), replace_store_insn(), rotate_loop(), rtl_block_ends_with_call_p(), rtl_block_ends_with_condjump_p(), rtl_can_merge_blocks(), rtl_delete_block(), rtl_dump_bb(), rtl_flow_call_edges_add(), rtl_lv_add_condition_to_bb(), rtl_merge_blocks(), rtl_predict_edge(), rtl_predicted_by_p(), rtl_split_block(), rtl_split_edge(), rtl_tidy_fallthru_edge(), rtl_verify_flow_info(), rtl_verify_flow_info_1(), schedule_ebbs(), set_edge_can_fallthru_flag(), simplify_using_initial_values(), sjlj_emit_function_exit(), skip_insns_after_block(), split_all_insns(), split_pattern_seq(), store_killed_after(), struct_equiv_block_eq(), thread_jump(), thread_prologue_and_epilogue_insns(), tidy_fallthru_edges(), try_crossjump_bb(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), try_simplify_condjump(), unswitch_loop(), update_bb_for_insn(), update_br_prob_note(), update_equiv_regs(), update_unlikely_executed_notes(), verify_wide_reg(), and vt_initialize().

#define BB_FREQ_MAX   10000

Definition at line 286 of file basic-block.h.

#define BB_HEAD ( B   )     (B)->head_

Definition at line 420 of file basic-block.h.

Referenced by add_insn_before(), add_missing_bbs(), advance_target_bb(), apply_opt_in_copies(), average_num_loop_insns(), back_edge_of_syntactic_loop_p(), begin_schedule_ready(), bfin_optimize_loop(), bfin_scan_loop(), block_alloc(), block_jumps_and_fallthru_p(), block_label(), branch_prob(), build_def_use(), build_insn_chain(), build_store_vectors(), bypass_conditional_jumps(), calculate_local_reg_bb_info(), can_fallthru(), can_move_up(), cfg_layout_delete_block(), cfg_layout_duplicate_bb(), cfg_layout_merge_blocks(), cfg_layout_redirect_edge_and_branch(), cheap_bb_rtx_cost_p(), clear_log_links(), collect_pattern_seqs(), combine_instructions(), combine_stack_adjustments_for_block(), combine_var_copies_in_loop_exit(), commit_one_edge_insertion(), compute_alignments(), compute_bb_for_insn(), compute_defs_uses_and_gen(), compute_hash_table_work(), compute_init_costs(), compute_ld_motion_mems(), compute_store_table(), copy_src_to_dest(), copyprop_hardreg_forward_1(), count_bb_insns(), count_insns(), count_or_remove_death_notes_bb(), cprop(), create_basic_block_structure(), create_ddg(), create_loop_notes(), cse_cc_succs(), cse_condition_code_reg(), dead_or_predicable(), delete_noop_moves(), df_insn_delete(), df_pattern_emit_before(), distribute_links(), distribute_notes(), emit_predicate_relation_info(), entry_of_function(), estimate_probability(), expand_gimple_basic_block(), expensive_function_p(), find_basic_block(), find_bb_boundaries(), find_if_block(), find_jump_block(), first_active_insn(), first_insn_after_basic_block_note(), fix_basic_block_boundaries(), fix_crossing_conditional_branches(), fixup_abnormal_edges(), fixup_reorder_chain(), flow_find_cross_jump(), force_nonfallthru_and_redirect(), forwarder_block_p(), frv_ifcvt_modify_tests(), frv_optimize_membar_local(), global_conflicts(), init_propagate_block_info(), insert_insn_end_bb(), insert_insn_end_bb_new(), insert_insn_start_bb(), insert_one_insn(), insert_section_boundary_note(), insert_var_expansion_initialization(), label_for_bb(), last_active_insn(), link_btr_uses(), loop_dump_aux(), make_edges(), mark_bb_for_unlikely_executed_section(), mark_flags_life_zones(), mark_target_live_regs(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), merge_overlapping_regs(), move_btr_def(), mt_block_length(), mt_reorg_loops(), mt_scan_loop(), noce_try_abs(), num_loop_insns(), prev_insn_in_block(), print_rtl_graph_with_bb(), print_rtl_with_bb(), prologue_stack_adjust(), propagate_block(), purge_dead_edges(), record_effective_endpoints(), redirect_branch_edge(), reg_dead_at_p(), reg_is_remote_constant_p(), reg_set_or_used_since_bb_start(), regclass(), regmove_optimize(), reload_combine(), remove_insn(), remove_reachable_equiv_notes(), rtl_block_ends_with_call_p(), rtl_delete_block(), rtl_dump_bb(), rtl_flow_call_edges_add(), rtl_merge_blocks(), rtl_split_edge(), rtl_tidy_fallthru_edge(), rtl_verify_flow_info(), rtl_verify_flow_info_1(), scan_one_insn(), schedule_ebbs(), sjlj_emit_function_exit(), skip_insns_after_block(), split_all_insns(), store_killed_before(), struct_equiv_block_eq(), thread_jump(), thread_prologue_and_epilogue_insns(), try_combine(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), update_bb_for_insn(), update_equiv_regs(), update_unlikely_executed_notes(), verify_wide_reg(), vt_emit_notes(), and vt_initialize().

#define BB_HOT_PARTITION   128

#define BB_IRREDUCIBLE_LOOP   16

#define BB_NEW   2

Definition at line 303 of file basic-block.h.

#define BB_PARTITION ( bb   )     ((bb)->flags & (BB_HOT_PARTITION|BB_COLD_PARTITION))

#define BB_REACHABLE   4

Definition at line 307 of file basic-block.h.

#define BB_SET_PARTITION ( bb,
part   ) 

Value:

do {          \
  basic_block bb_ = (bb);           \
  bb_->flags = ((bb_->flags & ~(BB_HOT_PARTITION|BB_COLD_PARTITION))  \
    | (part));            \
} while (0)

Definition at line 334 of file basic-block.h.

Referenced by create_basic_block_structure(), and find_rarely_executed_basic_blocks_and_crossing_edges().

#define BB_SUPERBLOCK   32

Definition at line 316 of file basic-block.h.

Referenced by break_superblocks(), emit_to_new_bb_before(), and loop_split_edge_with().

#define BB_UNPARTITIONED   0

Definition at line 329 of file basic-block.h.

Referenced by create_basic_block_structure().

#define BB_VISITED   8

Definition at line 310 of file basic-block.h.

#define BLOCK_NUM ( INSN   )     (BLOCK_FOR_INSN (INSN)->index + 0)

Definition at line 434 of file basic-block.h.

#define BRANCH_EDGE ( bb   ) 

Value:

(EDGE_SUCC ((bb), 0)->flags & EDGE_FALLTHRU \
           ? EDGE_SUCC ((bb), 1) : EDGE_SUCC ((bb), 0))

Definition at line 532 of file basic-block.h.

#define CLEANUP_CFGLAYOUT   128

Definition at line 709 of file basic-block.h.

Referenced by cfg_layout_initialize(), and try_optimize_cfg().

#define CLEANUP_CROSSJUMP   2

Definition at line 700 of file basic-block.h.

#define CLEANUP_EXPENSIVE   1

Definition at line 698 of file basic-block.h.

#define CLEANUP_LOG_LINKS   256

Definition at line 710 of file basic-block.h.

Referenced by cleanup_cfg(), and rest_of_handle_life().

#define CLEANUP_NO_INSN_DEL   64

Definition at line 707 of file basic-block.h.

#define CLEANUP_POST_REGSTACK   4

Definition at line 701 of file basic-block.h.

#define CLEANUP_PRE_LOOP   8

Definition at line 703 of file basic-block.h.

#define CLEANUP_THREADING   32

Definition at line 706 of file basic-block.h.

#define CLEANUP_UPDATE_LIFE   16

Definition at line 705 of file basic-block.h.

#define CLEAR_REG_SET ( HEAD   )     bitmap_clear (HEAD)

Definition at line 50 of file basic-block.h.

#define CLEAR_REGNO_REG_SET ( HEAD,
REG   )     bitmap_clear_bit (HEAD, REG)

Definition at line 75 of file basic-block.h.

#define COPY_REG_SET ( TO,
FROM   )     bitmap_copy (TO, FROM)

Definition at line 53 of file basic-block.h.

#define EDGE_ABNORMAL   2

Definition at line 150 of file basic-block.h.

#define EDGE_ABNORMAL_CALL   4

Definition at line 152 of file basic-block.h.

#define EDGE_ALL_FLAGS   16383

Definition at line 171 of file basic-block.h.

Referenced by verify_loop_structure().

#define EDGE_CAN_FALLTHRU   64

Definition at line 157 of file basic-block.h.

#define EDGE_COMPLEX   (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)

Definition at line 173 of file basic-block.h.

#define EDGE_COUNT ( ev   )     VEC_length (edge, (ev))

Definition at line 545 of file basic-block.h.

Referenced by add_labels_and_missing_jumps(), add_noreturn_fake_exit_edges(), bb_has_well_behaved_predecessors(), bfin_discover_loop(), block_has_only_trap(), block_jumps_and_fallthru_p(), branch_prob(), bypass_conditional_jumps(), calc_dfs_tree(), calculate_global_regs_live(), can_predict_insn_p(), candidate_bb_for_phi_optimization(), cfg_layout_can_merge_blocks_p(), cfg_layout_redirect_edge_and_branch(), cfg_remove_useless_stmts_bb(), check_bb_profile(), cleanup_control_expr_graph(), combine_blocks(), combine_predictions_for_insn(), commit_one_edge_insertion(), compute_antic_aux(), compute_branch_probabilities(), compute_dominance_frontiers_1(), compute_outgoing_frequencies(), compute_phi_arg_on_exit(), connect_dest(), connect_post_landing_pads(), construct_exit_block(), construct_init_block(), copy_bb_p(), copy_loop_headers(), copyprop_hardreg_forward(), create_edge_list(), create_loop_notes(), create_phi_node(), create_preheader(), cse_cc_succs(), decrease_profile(), delete_basic_block(), df_hybrid_search_backward(), df_hybrid_search_forward(), disband_implicit_edges(), disconnect_dest(), dom_opt_finalize_block(), dump_cfg_stats(), duplicate_computed_gotos(), eliminate_tail_call(), estimate_loops_at_level(), estimate_probability(), execute_warn_function_noreturn(), execute_warn_function_return(), expand_omp_sections(), find_cond_trap(), find_edge(), find_if_block(), find_if_case_1(), find_if_case_2(), find_if_header(), find_implicit_sets(), find_path(), find_phi_replacement_condition(), find_tail_calls(), find_traces_1_round(), fix_crossing_conditional_branches(), fix_crossing_unconditional_branches(), fix_irreducible_loops(), fix_up_fall_thru_edges(), fixup_reorder_chain(), flow_depth_first_order_compute(), flow_loop_pre_header_scan(), flow_reverse_top_sort_order_compute(), force_nonfallthru_and_redirect(), force_single_succ_latches(), forwarder_block_p(), get_ws_args_for(), infer_value_range(), init_pre(), init_propagate_block_info(), insert_aux(), insert_insn_end_bb(), insert_into_preds_of_block(), ip_normal_pos(), last_basic_block_p(), loop_delete_branch_edge(), loop_optimizer_init(), make_ctrl_stmt_edges(), make_edges(), make_goto_expr_edges(), mark_dfs_back_edges(), mark_stmt_if_obviously_necessary(), may_unswitch_on(), merge_blocks(), merge_if_block(), merge_seq_blocks(), move_sese_region_to_fn(), mt_loop_nesting(), num_loop_branches(), outgoing_edges_match(), post_order_compute(), pre_and_rev_post_order_compute(), purge_dead_edges(), redirect_edge_succ(), remove_dead_stmt(), remove_edge(), remove_forwarder_block_with_phi(), remove_path(), remove_phi_nodes_and_edges_for_unreachable_block(), remove_reachable_equiv_notes(), reserve_phi_args_for_new_edge(), rotate_loop(), rs6000_emit_prologue(), rtl_can_merge_blocks(), rtl_tidy_fallthru_edge(), rtl_verify_flow_info_1(), schedule_ebb(), set_edge_can_fallthru_flag(), should_duplicate_loop_header_p(), simplify_using_entry_checks(), simplify_using_initial_conditions(), simplify_using_initial_values(), single_noncomplex_succ(), slpeel_update_phi_nodes_for_guard2(), split_pattern_seq(), tail_duplicate(), thread_block(), thread_jump(), thread_prologue_and_epilogue_insns(), thread_through_all_blocks(), tidy_fallthru_edges(), tree_can_merge_blocks_p(), tree_estimate_probability(), tree_find_edge_insert_loc(), tree_forwarder_block_p(), tree_if_conversion(), tree_make_forwarder_block(), tree_optimize_tail_calls_1(), tree_predict_edge(), tree_ssa_phiopt(), tree_try_redirect_by_replacing_jump(), tree_unswitch_loop(), tree_verify_flow_info(), try_crossjump_bb(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), try_simplify_condjump(), unchecked_make_edge(), unswitch_loop(), vect_analyze_loop_form(), vect_transform_loop(), vect_update_ivs_after_vectorizer(), verify_loop_structure(), verify_phi_args(), vt_stack_adjustments(), and walk_dominator_tree().

#define EDGE_CRITICAL_P (  ) 

Value:

(EDGE_COUNT ((e)->src->succs) >= 2 \
           && EDGE_COUNT ((e)->dest->preds) >= 2)

Definition at line 542 of file basic-block.h.

#define EDGE_CROSSING   8192

#define EDGE_DFS_BACK   32

Definition at line 156 of file basic-block.h.

#define EDGE_EH   8

Definition at line 154 of file basic-block.h.

#define EDGE_EXECUTABLE   4096

#define EDGE_FAKE   16

Definition at line 155 of file basic-block.h.

#define EDGE_FALLTHRU   1

Definition at line 149 of file basic-block.h.

#define EDGE_FALSE_VALUE   2048

#define EDGE_FREQUENCY (  ) 

Value:

(((e)->src->frequency \
            * (e)->probability \
            + REG_BR_PROB_BASE / 2) \
           / REG_BR_PROB_BASE)

Definition at line 536 of file basic-block.h.

#define EDGE_I ( ev,
i   )     VEC_index (edge, (ev), (i))

Definition at line 546 of file basic-block.h.

Referenced by construct_exit_block(), and remove_reachable_equiv_notes().

#define EDGE_INDEX ( el,
pred,
succ   )     (find_edge_index ((el), (pred), (succ)))

Definition at line 514 of file basic-block.h.

#define EDGE_INDEX_NO_EDGE   -1

Definition at line 510 of file basic-block.h.

#define EDGE_IRREDUCIBLE_LOOP   128

#define EDGE_LOOP_EXIT   512

#define EDGE_PRED ( bb,
i   )     VEC_index (edge, (bb)->preds, (i))

#define EDGE_SIBCALL   256

Definition at line 160 of file basic-block.h.

Referenced by expand_gimple_tailcall(), make_edges(), and purge_dead_edges().

#define EDGE_SUCC ( bb,
i   )     VEC_index (edge, (bb)->succs, (i))

Definition at line 548 of file basic-block.h.

Referenced by bfin_discover_loop(), branch_prob(), bsi_commit_edge_inserts(), candidate_bb_for_phi_optimization(), canonicalize_loop_headers(), cfg_layout_can_merge_blocks_p(), cfg_layout_merge_blocks(), cfg_layout_redirect_edge_and_branch(), check_simple_exit(), cleanup_control_expr_graph(), combine_blocks(), combine_predictions_for_bb(), combine_predictions_for_insn(), commit_one_edge_insertion(), compute_antic_aux(), compute_outgoing_frequencies(), connect_post_landing_pads(), construct_init_block(), copy_loop_headers(), create_canonical_iv(), create_loop_notes(), create_preheader(), delete_basic_block(), disband_implicit_edges(), dom_opt_finalize_block(), duplicate_computed_gotos(), eliminate_tail_call(), estimate_bb_frequencies(), estimate_probability(), extract_true_false_edges_from_block(), find_if_block(), find_if_case_1(), find_if_case_2(), find_if_header(), find_tail_calls(), find_traces_1_round(), fix_crossing_conditional_branches(), fix_crossing_unconditional_branches(), fix_up_fall_thru_edges(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), independent_of_stmt_p(), init_pre(), init_propagate_block_info(), insert_insn_end_bb(), ip_normal_pos(), iv_elimination_compare(), last_basic_block_p(), layout_superblocks(), loop_commit_inserts(), loop_delete_branch_edge(), loopify(), lv_adjust_loop_entry_edge(), mark_single_exit_loops(), may_eliminate_iv(), may_unswitch_on(), merge_blocks(), merge_if_block(), merge_phi_nodes(), merge_seq_blocks(), mfb_update_loops(), minmax_replacement(), mt_loop_nesting(), mt_reorg_loops(), outgoing_edges_match(), perfect_nestify(), purge_dead_edges(), redirect_edges(), remove_dead_stmt(), remove_empty_loop(), remove_forwarder_block(), remove_forwarder_block_with_phi(), remove_phi_nodes_and_edges_for_unreachable_block(), replace_phi_edge_with_variable(), replace_phi_with_stmt(), rotate_loop(), rtl_can_merge_blocks(), rtl_extract_cond_bb_edges(), set_edge_can_fallthru_flag(), should_duplicate_loop_header_p(), single_noncomplex_succ(), sjlj_emit_function_enter(), slpeel_add_loop_guard(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_update_phi_nodes_for_guard(), slpeel_update_phi_nodes_for_guard1(), slpeel_update_phi_nodes_for_guard2(), split_edge(), split_loop_exit_edge(), split_pattern_seq(), thread_prologue_and_epilogue_insns(), tidy_fallthru_edges(), tree_can_merge_blocks_p(), tree_forwarder_block_p(), tree_if_conversion(), tree_merge_blocks(), tree_optimize_tail_calls_1(), tree_ssa_loop_version(), tree_ssa_phiopt(), tree_try_redirect_by_replacing_jump(), tree_unroll_loop(), tree_verify_flow_info(), try_crossjump_bb(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), try_simplify_condjump(), unloop(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), unswitch_loop(), update_bb_profile_for_threading(), value_replacement(), vect_transform_loop(), vect_update_ivs_after_vectorizer(), and verify_loop_structure().

#define EDGE_TRUE_VALUE   1024

#define ei_last ( iter   )     ei_last_1 (&(iter))

Definition at line 565 of file basic-block.h.

#define ei_start ( iter   )     ei_start_1 (&(iter))

#define ENTRY_BLOCK   (-1)

Definition at line 424 of file basic-block.h.

#define EXECUTE_IF_AND_COMPL_IN_REG_SET ( REGSET1,
REGSET2,
MIN,
REGNUM,
RSI   )     EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)

Definition at line 101 of file basic-block.h.

#define EXECUTE_IF_AND_IN_REG_SET ( REGSET1,
REGSET2,
MIN,
REGNUM,
RSI   )     EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) \

Definition at line 107 of file basic-block.h.

#define EXECUTE_IF_SET_IN_REG_SET ( REGSET,
MIN,
REGNUM,
RSI   )     EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI)

Definition at line 95 of file basic-block.h.

#define EXIT_BLOCK   (-2)

Definition at line 425 of file basic-block.h.

#define FALLTHRU_EDGE ( bb   ) 

Value:

(EDGE_SUCC ((bb), 0)->flags & EDGE_FALLTHRU \
           ? EDGE_SUCC ((bb), 0) : EDGE_SUCC ((bb), 1))

Definition at line 528 of file basic-block.h.

#define FOR_ALL_BB ( BB   )     for (BB = ENTRY_BLOCK_PTR; BB; BB = BB->next_bb)

Definition at line 393 of file basic-block.h.

#define FOR_BB_BETWEEN ( BB,
FROM,
TO,
DIR   )     for (BB = FROM; BB != TO; BB = BB->DIR)

Definition at line 370 of file basic-block.h.

#define FOR_BB_INSNS ( BB,
INSN   ) 

#define FOR_BB_INSNS_REVERSE ( BB,
INSN   ) 

#define FOR_EACH_BB ( BB   )     FOR_BB_BETWEEN (BB, ENTRY_BLOCK_PTR->next_bb, EXIT_BLOCK_PTR, next_bb)

Definition at line 373 of file basic-block.h.

#define FOR_EACH_BB_REVERSE ( BB   )     FOR_BB_BETWEEN (BB, EXIT_BLOCK_PTR->prev_bb, ENTRY_BLOCK_PTR, prev_bb)

Definition at line 376 of file basic-block.h.

#define FOR_EACH_EDGE ( EDGE,
ITER,
EDGE_VEC   ) 

Value:

for ((EDGE) = NULL, (ITER) = ei_start ((EDGE_VEC)); \
       ((EDGE) = ei_safe_edge ((ITER))); \
       ei_next (&(ITER)))

Definition at line 654 of file basic-block.h.

Referenced by add_exit_phis_edge(), add_phi_args_after_copy_bb(), add_reg_crossing_jump_notes(), alloc_aux_for_edges(), analyze_edges_for_bb(), apply_return_prediction(), augment_live_range(), bb_has_well_behaved_predecessors(), bb_to_key(), bb_with_exit_edge_p(), begin_schedule_ready(), bfin_discover_loop(), block_fallthru(), block_jumps_and_fallthru_p(), branch_prob(), bsi_commit_edge_inserts(), bypass_block(), calculate_global_regs_live(), calculate_live_on_entry(), calculate_live_on_exit(), calculate_reg_pav(), can_copy_bbs_p(), can_fallthru(), canonicalize_loop_headers(), check_bb_profile(), clear_aux_for_edges(), clear_edges(), coalesce_abnormal_edges(), combine_blocks(), combine_predictions_for_bb(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), compute_alignments(), compute_antic(), compute_antic_aux(), compute_antinout_edge(), compute_available(), compute_branch_probabilities(), compute_dominance_frontiers_1(), compute_global_livein(), compute_jump_reg_dependencies(), compute_laterin(), compute_nearerout(), compute_outgoing_frequencies(), compute_pre_data(), compute_rvuse_and_antic_safe(), connect_traces(), constant_val_insert(), construct_exit_block(), copy_bbs(), copy_edges_for_bb(), could_fall_through(), cprop_into_successor_phis(), create_edge_list(), create_new_def_for(), create_preheader(), cse_cc_succs(), df_has_eh_preds(), df_hybrid_search_backward(), df_hybrid_search_forward(), df_print_bb_index(), dfs_enumerate_from(), disband_implicit_edges(), dump_bb(), dump_bb_end(), dump_bb_header(), dump_bb_info(), dump_cfg_bb_info(), dump_flow_info(), dump_implicit_edges(), dump_prediction(), duplicate_block(), duplicate_computed_gotos(), duplicate_loop_to_header_edge(), eliminate_partially_redundant_load(), estimate_bb_frequencies(), estimate_probability(), execute_warn_function_return(), expand_complex_move(), expected_loop_iterations(), fill_always_executed_in(), find_best_predecessor(), find_best_successor(), find_conditional_asserts(), find_edge(), find_exits(), find_if_block(), find_interesting_uses(), find_jump_block(), find_many_sub_basic_blocks(), find_obviously_necessary_stmts(), find_phi_replacement_condition(), find_rarely_executed_basic_blocks_and_crossing_edges(), find_simple_exit(), find_sub_basic_blocks(), find_tail_calls(), find_traces(), find_traces_1_round(), find_unreachable_blocks(), find_uses_to_rename_bb(), fix_basic_block_boundaries(), fix_bb_placement(), fix_bb_placements(), fix_irreducible_loops(), fix_loop_placement(), fix_phi_uses(), fixup_abnormal_edges(), fixup_fallthru_exit_predecessor(), fixup_reorder_chain(), flow_dfs_compute_reverse_execute(), flow_loop_entry_edges_find(), flow_loop_exit_edges_find(), flow_loop_nodes_find(), flow_loop_pre_header_find(), flow_loops_cfg_dump(), flow_loops_find(), free_all_edge_infos(), frv_optimize_membar_global(), get_exec_counts(), get_loop_body_in_bfs_order(), get_loop_exit_edges(), get_loops_exits(), global_conflicts(), has_abnormal_incoming_edge_p(), has_abnormal_outgoing_edge_p(), hoist_expr_reaches_here_p(), ia64_expand_prologue(), identify_jump_threads(), if_convertible_bb_p(), if_convertible_loop_p(), independent_of_stmt_p(), initialize_uninitialized_subregs(), insert_aux(), insert_edge_copies(), insert_extra_phis(), insert_into_preds_of_block(), insert_phi_nodes_for(), insert_range_assertions(), insert_store(), insert_updated_phi_nodes_for(), instrument_edges(), ipcp_profile_edge_print(), ipcp_update_edges_counts(), ix86_pad_returns(), layout_superblocks(), live_worklist(), loop_preheader_edge(), loopify(), make_edges(), mark_irreducible_loops(), mark_loop_exit_edges(), mark_single_exit_loops(), merge_blocks(), merge_blocks_move(), migrate_btr_def(), move_block_to_fn(), mt_reorg_loops(), outgoing_edges_match(), perform_edge_inserts(), pre_expr_reaches_here_p_work(), pred_blocks_visited_p(), predict_loops(), predict_paths_leading_to(), prepare_block_for_update(), print_pred_bbs(), print_rtl_graph_with_bb(), print_succ_bbs(), process_assert_insertions_for(), propagate_freq(), prune_undesirable_thread_requests(), prune_unused_phi_nodes(), purge_dead_edges(), reachable_at_most_once(), record_edge_info(), recount_dominator(), remove_exit_barrier(), remove_fallthru_edge(), remove_forwarder_block(), remove_path(), rename_variables_in_bb(), rewrite_add_phi_arguments(), rewrite_to_new_ssa_names_bb(), rewrite_trees(), rewrite_update_init_block(), rewrite_update_phi_arguments(), rewrite_virtual_phi_arguments(), rotate_loop(), rtl_split_block(), rtl_split_edge(), rtl_verify_flow_info(), rtl_verify_flow_info_1(), scale_bbs_frequencies(), scale_bbs_frequencies_gcov_type(), scale_bbs_frequencies_int(), schedule_ebbs(), set_edge_can_fallthru_flag(), set_even_probabilities(), simulate_block(), simulate_stmt(), single_incoming_edge_ignoring_loop_edges(), sink_code_in_bb(), sjlj_emit_function_exit(), split_critical_edges(), split_edge(), ssa_mark_phi_uses(), ssa_prop_init(), ssa_rewrite_initialize_block(), ssa_rewrite_phi_arguments(), thread_block(), thread_prologue_and_epilogue_insns(), tree_cfg2vcg(), tree_estimate_probability(), tree_expand_cfg(), tree_forwarder_block_p(), tree_make_forwarder_block(), tree_optimize_tail_calls_1(), tree_predict_by_opcode(), tree_split_block(), tree_ssa_uncprop(), tree_verify_flow_info(), try_crossjump_bb(), try_crossjump_to_edge(), uncprop_into_successor_phis(), update_bb_profile_for_threading(), verify_edge_list(), verify_eh_edges(), verify_flow_info(), verify_loop_structure(), verify_ssa(), and vt_find_locations().

#define FREE_REG_SET ( REGSET   )     BITMAP_FREE (REGSET)

Definition at line 44 of file basic-block.h.

#define INDEX_EDGE ( el,
index   )     ((el)->index_to_edge[(index)])

Definition at line 522 of file basic-block.h.

#define INDEX_EDGE_PRED_BB ( el,
index   )     ((el)->index_to_edge[(index)]->src)

Definition at line 518 of file basic-block.h.

#define INDEX_EDGE_SUCC_BB ( el,
index   )     ((el)->index_to_edge[(index)]->dest)

Definition at line 519 of file basic-block.h.

#define INIT_REG_SET ( HEAD   )     bitmap_initialize (HEAD, &reg_obstack)

Definition at line 47 of file basic-block.h.

#define INVALID_BLOCK   (-3)

Definition at line 428 of file basic-block.h.

#define IOR_AND_COMPL_REG_SET ( TO,
FROM1,
FROM2   )     bitmap_ior_and_compl_into (TO, FROM1, FROM2)

Definition at line 71 of file basic-block.h.

#define IOR_REG_SET ( TO,
FROM   )     bitmap_ior_into (TO, FROM)

Definition at line 65 of file basic-block.h.

#define NUM_EDGES ( el   )     ((el)->num_edges)

Definition at line 525 of file basic-block.h.

#define PROP_ALLOW_CFG_CHANGES   32

Definition at line 681 of file basic-block.h.

#define PROP_ASM_SCAN   512

Definition at line 686 of file basic-block.h.

Referenced by mark_set_1(), and mark_set_regs().

#define PROP_AUTOINC   64

Definition at line 683 of file basic-block.h.

#define PROP_DEATH_NOTES   1

Definition at line 676 of file basic-block.h.

#define PROP_EQUAL_NOTES   128

Definition at line 684 of file basic-block.h.

#define PROP_FINAL

#define PROP_KILL_DEAD_CODE   8

Definition at line 679 of file basic-block.h.

#define PROP_LOG_LINKS   2

Definition at line 677 of file basic-block.h.

#define PROP_POSTRELOAD

#define PROP_REG_INFO   4

Definition at line 678 of file basic-block.h.

#define PROP_SCAN_DEAD_CODE   16

Definition at line 680 of file basic-block.h.

#define PROP_SCAN_DEAD_STORES   256

Definition at line 685 of file basic-block.h.

#define REG_BASIC_BLOCK (  )     (VARRAY_REG (reg_n_info, N)->basic_block)

Definition at line 416 of file basic-block.h.

#define REG_BLOCK_GLOBAL   -2

Definition at line 414 of file basic-block.h.

#define REG_BLOCK_UNKNOWN   -1

Definition at line 413 of file basic-block.h.

#define REG_SET_EQUAL_P ( A,
B   )     bitmap_equal_p (A, B)

Definition at line 56 of file basic-block.h.

#define REG_SET_TO_HARD_REG_SET ( TO,
FROM   ) 

Value:

do {                  \
  CLEAR_HARD_REG_SET (TO);            \
  reg_set_to_hard_reg_set (&TO, FROM);          \
} while (0)

Definition at line 85 of file basic-block.h.

#define REGNO_REG_SET_P ( TO,
REG   )     bitmap_bit_p (TO, REG)

Definition at line 81 of file basic-block.h.

#define set_block_for_insn ( INSN,
BB   )     (BLOCK_FOR_INSN (INSN) = BB)

Definition at line 435 of file basic-block.h.

#define SET_REGNO_REG_SET ( HEAD,
REG   )     bitmap_set_bit (HEAD, REG)

Definition at line 78 of file basic-block.h.

#define XOR_REG_SET ( TO,
FROM   )     bitmap_xor_into (TO, FROM)

Definition at line 68 of file basic-block.h.


Typedef Documentation

Definition at line 266 of file basic-block.h.

Definition at line 787 of file basic-block.h.

typedef int(* conflict_graph_enum_fn)(int, int, void *)

Definition at line 792 of file basic-block.h.

typedef struct edge_def* edge

Definition at line 146 of file basic-block.h.

typedef HOST_WIDEST_INT gcov_type

Definition at line 115 of file basic-block.h.

Definition at line 91 of file basic-block.h.

typedef bitmap regset

Definition at line 38 of file basic-block.h.

Definition at line 35 of file basic-block.h.


Enumeration Type Documentation

Enumerator:
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 

Definition at line 825 of file basic-block.h.

enum dom_state

Enumerator:
DOM_NONE 
DOM_NO_FAST_QUERY 
DOM_OK 
DOM_NONE 
DOM_NO_FAST_QUERY 
DOM_OK 

Definition at line 831 of file basic-block.h.

Enumerator:
PROFILE_ABSENT 
PROFILE_GUESSED 
PROFILE_READ 

Definition at line 356 of file basic-block.h.

Enumerator:
UPDATE_LIFE_LOCAL 
UPDATE_LIFE_GLOBAL 
UPDATE_LIFE_GLOBAL_RM_NOTES 
UPDATE_LIFE_LOCAL 
UPDATE_LIFE_GLOBAL 
UPDATE_LIFE_GLOBAL_RM_NOTES 
UPDATE_LIFE_LOCAL 
UPDATE_LIFE_GLOBAL 
UPDATE_LIFE_GLOBAL_RM_NOTES 
UPDATE_LIFE_LOCAL 
UPDATE_LIFE_GLOBAL 
UPDATE_LIFE_GLOBAL_RM_NOTES 

Definition at line 667 of file basic-block.h.


Function Documentation

void add_noreturn_fake_exit_edges ( void   ) 

Definition at line 702 of file cfganal.c.

void add_to_dominance_info ( enum  cdi_direction,
basic_block   
)

Definition at line 929 of file dominance.c.

void alloc_aux_for_block ( basic_block  ,
int   
) [inline]

Definition at line 719 of file cfg.c.

void alloc_aux_for_blocks ( int   ) 

Definition at line 734 of file cfg.c.

void alloc_aux_for_edge ( edge  ,
int   
) [inline]

Definition at line 790 of file cfg.c.

void alloc_aux_for_edges ( int   ) 

Definition at line 805 of file cfg.c.

basic_block alloc_block ( void   ) 

Definition at line 224 of file cfg.c.

void alloc_rbi_pool ( void   ) 

Definition at line 162 of file cfg.c.

References create_alloc_pool(), and n_basic_blocks.

Referenced by build_tree_cfg(), and cfg_layout_initialize().

void allocate_reg_life_data ( void   ) 

Definition at line 1522 of file flow.c.

rtx block_label ( basic_block   ) 

Definition at line 658 of file cfgrtl.c.

void break_superblocks ( void   ) 

Definition at line 1152 of file cfglayout.c.

Referenced by cfg_layout_finalize(), and finish_eh_generation().

void brief_dump_cfg ( FILE  ) 

Definition at line 866 of file cfg.c.

Referenced by dump_tree_cfg().

edge cached_make_edge ( sbitmap ,
basic_block  ,
basic_block  ,
int   
)

void calculate_dominance_info ( enum  cdi_direction  ) 

Definition at line 558 of file dominance.c.

bool can_fallthru ( basic_block  ,
basic_block   
)

Definition at line 107 of file cfganal.c.

void check_bb_profile ( basic_block  ,
FILE  
)

Definition at line 466 of file cfg.c.

Referenced by dump_bb_header(), dump_flow_info(), and dump_function_to_file().

bool cleanup_cfg ( int   ) 

Definition at line 1798 of file cfgcleanup.c.

void clear_aux_for_blocks ( void   ) 

Definition at line 761 of file cfg.c.

void clear_aux_for_edges ( void   ) 

Definition at line 838 of file cfg.c.

void clear_bb_flags ( void   ) 

Definition at line 517 of file cfg.c.

void clear_edges ( void   ) 

Definition at line 184 of file cfg.c.

void commit_edge_insertions ( void   ) 

Definition at line 1499 of file cfgrtl.c.

void commit_edge_insertions_watch_calls ( void   ) 

Definition at line 1543 of file cfgrtl.c.

void compact_blocks ( void   ) 

Definition at line 264 of file cfg.c.

void compute_available ( sbitmap ,
sbitmap ,
sbitmap ,
sbitmap  
)

Definition at line 491 of file lcm.c.

void compute_bb_for_insn ( void   ) 

Definition at line 439 of file cfgrtl.c.

void compute_dominance_frontiers ( bitmap  ) 

Definition at line 995 of file cfganal.c.

int conflict_graph_add ( conflict_graph  ,
int  ,
int   
)

Definition at line 190 of file conflict.c.

int conflict_graph_conflict_p ( conflict_graph  ,
int  ,
int   
)

Definition at line 239 of file conflict.c.

void conflict_graph_delete ( conflict_graph   ) 

Definition at line 176 of file conflict.c.

void conflict_graph_enum ( conflict_graph  ,
int  ,
conflict_graph_enum_fn  ,
void  
)

Definition at line 256 of file conflict.c.

void conflict_graph_merge_regs ( conflict_graph  ,
int  ,
int   
)

Definition at line 283 of file conflict.c.

conflict_graph conflict_graph_new ( int   ) 

Definition at line 150 of file conflict.c.

void conflict_graph_print ( conflict_graph  ,
FILE  
)

Definition at line 364 of file conflict.c.

void connect_infinite_loops_to_exit ( void   ) 

Definition at line 723 of file cfganal.c.

bool control_flow_insn_p ( rtx   ) 

Definition at line 108 of file cfgbuild.c.

bool could_fall_through ( basic_block  ,
basic_block   
)

Definition at line 133 of file cfganal.c.

Referenced by fixup_reorder_chain().

int count_or_remove_death_notes ( sbitmap  ,
int   
)

Definition at line 4292 of file flow.c.

basic_block create_basic_block_structure ( rtx  ,
rtx  ,
rtx  ,
basic_block   
)

Definition at line 258 of file cfgrtl.c.

struct edge_list* create_edge_list ( void   )  [read]

Definition at line 462 of file cfganal.c.

void debug_bb ( basic_block   ) 

Definition at line 1623 of file cfgrtl.c.

basic_block debug_bb_n ( int   ) 

Definition at line 1630 of file cfgrtl.c.

void debug_regset ( regset   ) 

Definition at line 4252 of file flow.c.

DEF_VEC_GC_P ( edge   ) 

void delete_from_dominance_info ( enum  cdi_direction,
basic_block   
)

Definition at line 943 of file dominance.c.

int delete_noop_moves ( void   ) 

Definition at line 773 of file flow.c.

bool delete_unreachable_blocks ( void   ) 

Definition at line 1770 of file cfgcleanup.c.

int dfs_enumerate_from ( basic_block  ,
int  ,
bool(*)(basic_block, void *)  ,
basic_block ,
int  ,
void  
)

Definition at line 897 of file cfganal.c.

bool dom_info_available_p ( enum  cdi_direction  ) 

bool dominated_by_p ( enum  cdi_direction,
basic_block  ,
basic_block   
)

Definition at line 802 of file dominance.c.

void dump_edge_info ( FILE ,
edge  ,
int   
)

Definition at line 656 of file cfg.c.

void dump_regset ( regset  ,
FILE  
)

Definition at line 4227 of file flow.c.

void duplicate_computed_gotos ( void   ) 

static edge ei_edge ( edge_iterator  i  )  [inline, static]

static bool ei_end_p ( edge_iterator  i  )  [inline, static]

Definition at line 594 of file basic-block.h.

Referenced by calc_dfs_tree_nonrec(), calc_idoms(), and remove_reachable_equiv_notes().

static edge_iterator ei_last_1 ( VEC(edge)**  ev  )  [inline, static]

Definition at line 582 of file basic-block.h.

static void ei_next ( edge_iterator i  )  [inline, static]

static bool ei_one_before_end_p ( edge_iterator  i  )  [inline, static]

static void ei_prev ( edge_iterator i  )  [inline, static]

Definition at line 617 of file basic-block.h.

static edge ei_safe_edge ( edge_iterator  i  )  [inline, static]

static edge_iterator ei_start_1 ( VEC(edge)**  ev  )  [inline, static]

Definition at line 569 of file basic-block.h.

void estimate_probability ( struct loops  ) 

void expected_value_to_br_prob ( void   ) 

Definition at line 653 of file predict.c.

void expunge_block ( basic_block   ) 

Definition at line 287 of file cfg.c.

void find_basic_blocks ( rtx   ) 

Definition at line 488 of file cfgbuild.c.

edge find_edge ( basic_block  ,
basic_block   
)

Definition at line 482 of file cfganal.c.

int find_edge_index ( struct edge_list ,
basic_block  ,
basic_block   
)

Definition at line 609 of file cfganal.c.

void find_many_sub_basic_blocks ( sbitmap   ) 

Definition at line 785 of file cfgbuild.c.

void find_sub_basic_blocks ( basic_block   ) 

void find_unreachable_blocks ( void   ) 

Definition at line 406 of file cfganal.c.

basic_block first_dom_son ( enum  cdi_direction,
basic_block   
)

rtx first_insn_after_basic_block_note ( basic_block   ) 

Definition at line 399 of file flow.c.

void fixup_abnormal_edges ( void   ) 

Definition at line 9468 of file reload1.c.

int flow_depth_first_order_compute ( int *  ,
int *   
)

void flow_edge_list_print ( const char *  ,
const edge ,
int  ,
FILE  
)

Definition at line 537 of file cfganal.c.

void flow_nodes_print ( const char *  ,
const   sbitmap,
FILE  
)

Definition at line 522 of file cfganal.c.

void flow_reverse_top_sort_order_compute ( int *   ) 

basic_block force_nonfallthru ( edge   ) 

Definition at line 1095 of file cfgrtl.c.

bool forwarder_block_p ( basic_block   ) 

Definition at line 86 of file cfganal.c.

void free_aux_for_blocks ( void   ) 

Definition at line 773 of file cfg.c.

void free_aux_for_edges ( void   ) 

Definition at line 854 of file cfg.c.

void free_basic_block_vars ( void   ) 

Definition at line 754 of file flow.c.

void free_bb_for_insn ( void   ) 

Definition at line 460 of file cfgrtl.c.

void free_dominance_info ( enum  cdi_direction  ) 

Definition at line 653 of file dominance.c.

void free_edge_list ( struct edge_list  ) 

Definition at line 500 of file cfganal.c.

void free_propagate_block_info ( struct propagate_block_info  ) 

Definition at line 2041 of file flow.c.

void free_rbi_pool ( void   ) 

Definition at line 172 of file cfg.c.

References free_alloc_pool().

Referenced by cfg_layout_finalize(), and delete_tree_cfg_annotations().

int get_dominated_by ( enum  cdi_direction,
basic_block  ,
basic_block **   
)

Definition at line 712 of file dominance.c.

unsigned get_dominated_by_region ( enum  cdi_direction,
basic_block ,
unsigned  ,
basic_block  
)

Definition at line 742 of file dominance.c.

Referenced by tree_duplicate_sese_region().

basic_block get_immediate_dominator ( enum  cdi_direction,
basic_block   
)

Definition at line 673 of file dominance.c.

struct basic_block_def GTY ( (chain_next("%h.next_bb"), chain_prev("%h.prev_bb"))   )  [read]

Definition at line 212 of file basic-block.h.

struct edge_def GTY ( ()   )  [read, write]

void guess_outgoing_edge_probabilities ( basic_block   ) 

Definition at line 888 of file predict.c.

Referenced by compute_outgoing_frequencies().

void init_flow ( void   ) 

Definition at line 147 of file cfg.c.

struct propagate_block_info* init_propagate_block_info ( basic_block  ,
regset  ,
regset  ,
regset  ,
int   
) [read]

Definition at line 1879 of file flow.c.

void initialize_bb_rbi ( basic_block  bb  ) 

void insert_insn_on_edge ( rtx  ,
edge   
)

Definition at line 1349 of file cfgrtl.c.

bool inside_basic_block_p ( rtx   ) 

Definition at line 62 of file cfgbuild.c.

void iterate_fix_dominators ( enum  cdi_direction,
basic_block ,
int   
)

Definition at line 899 of file dominance.c.

void life_analysis ( FILE ,
int   
)

void link_block ( basic_block  ,
basic_block   
)

Definition at line 244 of file cfg.c.

edge make_edge ( basic_block  ,
basic_block  ,
int   
)

Definition at line 387 of file cfg.c.

edge make_single_succ_edge ( basic_block  ,
basic_block  ,
int   
)

Definition at line 398 of file cfg.c.

bool mark_dfs_back_edges ( void   ) 

Definition at line 134 of file cfganal.c.

bool maybe_hot_bb_p ( basic_block   ) 

Definition at line 127 of file predict.c.

bool merge_seq_blocks ( void   ) 

Definition at line 2072 of file cfgcleanup.c.

Referenced by cleanup_tree_cfg(), and cleanup_tree_cfg_1().

basic_block nearest_common_dominator ( enum  cdi_direction,
basic_block  ,
basic_block   
)

Definition at line 788 of file dominance.c.

basic_block next_dom_son ( enum  cdi_direction,
basic_block   
)

int optimize_mode_switching ( FILE  ) 

void partition_hot_cold_basic_blocks ( void   ) 

struct edge_list* pre_edge_lcm ( FILE ,
int  ,
sbitmap ,
sbitmap ,
sbitmap ,
sbitmap ,
sbitmap **  ,
sbitmap **   
) [read]

struct edge_list* pre_edge_rev_lcm ( FILE ,
int  ,
sbitmap ,
sbitmap ,
sbitmap ,
sbitmap ,
sbitmap **  ,
sbitmap **   
) [read]

void predict_edge_def ( edge  ,
enum  br_predictor,
enum  prediction 
)

Definition at line 261 of file predict.c.

void print_edge_list ( FILE ,
struct edge_list  
)

Definition at line 513 of file cfganal.c.

bool probably_cold_bb_p ( basic_block   ) 

Definition at line 144 of file predict.c.

bool probably_never_executed_bb_p ( basic_block   ) 

Definition at line 160 of file predict.c.

int propagate_block ( basic_block  ,
regset  ,
regset  ,
regset  ,
int   
)

Definition at line 2078 of file flow.c.

rtx propagate_one_insn ( struct propagate_block_info ,
rtx   
)

Definition at line 1612 of file flow.c.

bool purge_all_dead_edges ( int   ) 

bool purge_dead_edges ( basic_block   ) 

Definition at line 2184 of file cfgrtl.c.

basic_block recount_dominator ( enum  cdi_direction,
basic_block   
)

Definition at line 863 of file dominance.c.

void redirect_edge_pred ( edge  ,
basic_block   
)

Definition at line 498 of file cfg.c.

void redirect_edge_succ ( edge  ,
basic_block   
)

Definition at line 448 of file cfg.c.

edge redirect_edge_succ_nodup ( edge  ,
basic_block   
)

Definition at line 468 of file cfg.c.

void redirect_immediate_dominators ( enum  cdi_direction,
basic_block  ,
basic_block   
)

Definition at line 764 of file dominance.c.

void reg_set_to_hard_reg_set ( HARD_REG_SET *  ,
bitmap   
)

Definition at line 4390 of file flow.c.

void remove_edge ( edge   ) 

Definition at line 412 of file cfg.c.

void remove_fake_edges ( void   ) 

Definition at line 689 of file cfganal.c.

void remove_fake_exit_edges ( void   ) 

void reorder_basic_blocks ( unsigned  int  ) 

Definition at line 1950 of file bb-reorder.c.

void rtl_make_eh_edge ( sbitmap ,
basic_block  ,
rtx   
)

void rtl_predict_edge ( edge  ,
enum  br_predictor,
int   
)

Definition at line 218 of file predict.c.

bool rtl_predicted_by_p ( basic_block  ,
enum  br_predictor 
)

Definition at line 160 of file predict.c.

bool safe_insert_insn_on_edge ( rtx  ,
edge   
)

void set_edge_can_fallthru_flag ( void   ) 

Definition at line 218 of file cfganal.c.

void set_immediate_dominator ( enum  cdi_direction,
basic_block  ,
basic_block   
) [inline]

Definition at line 688 of file dominance.c.

void tree_predict_edge ( edge  ,
enum  br_predictor,
int   
)

Definition at line 237 of file predict.c.

bool tree_predicted_by_p ( basic_block  ,
enum  br_predictor 
)

Definition at line 176 of file predict.c.

edge try_redirect_by_replacing_jump ( edge  ,
basic_block  ,
bool   
)

Definition at line 668 of file cfgrtl.c.

edge unchecked_make_edge ( basic_block  ,
basic_block  ,
int   
)

Definition at line 306 of file cfg.c.

void unlink_block ( basic_block   ) 

Definition at line 255 of file cfg.c.

void update_bb_for_insn ( basic_block   ) 

Definition at line 471 of file cfgrtl.c.

void update_bb_profile_for_threading ( basic_block  ,
int  ,
gcov_type  ,
edge   
)

Definition at line 884 of file cfg.c.

Referenced by thread_across_edge(), thread_block(), and try_forward_edges().

void update_br_prob_note ( basic_block   ) 

Definition at line 1728 of file cfgrtl.c.

int update_life_info ( sbitmap  ,
enum  update_life_extent,
int   
)

Definition at line 633 of file flow.c.

int update_life_info_in_dirty_blocks ( enum  update_life_extent,
int   
)

Definition at line 776 of file flow.c.

static VEC ( edge   )  [inline, static]

Definition at line 557 of file basic-block.h.

void verify_dominators ( enum  cdi_direction  ) 

Definition at line 817 of file dominance.c.

void verify_edge_list ( FILE ,
struct edge_list  
)

Definition at line 542 of file cfganal.c.


Variable Documentation

Definition at line 80 of file cfg.c.

Definition at line 76 of file cfg.c.

int n_edges

Definition at line 84 of file cfg.c.

Definition at line 129 of file profile.c.

Definition at line 207 of file flow.c.


Generated on Wed Apr 8 15:11:46 2009 for Open64 by  doxygen 1.5.6