osprey-gcc-4.2.0/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 "function.h"
#include "cfghooks.h"

Include dependency graph for basic-block.h:

Go to the source code of this file.

Data Types

type  ce_if_block
type  edge_list
type  edge_iterator
type  struct_equiv_checkpoint
type  equiv_info

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_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 ENTRY_BLOCK_PTR_FOR_FUNCTION(FN)   ((FN)->cfg->x_entry_block_ptr)
#define EXIT_BLOCK_PTR_FOR_FUNCTION(FN)   ((FN)->cfg->x_exit_block_ptr)
#define basic_block_info_for_function(FN)   ((FN)->cfg->x_basic_block_info)
#define n_basic_blocks_for_function(FN)   ((FN)->cfg->x_n_basic_blocks)
#define n_edges_for_function(FN)   ((FN)->cfg->x_n_edges)
#define last_basic_block_for_function(FN)   ((FN)->cfg->x_last_basic_block)
#define label_to_block_map_for_function(FN)   ((FN)->cfg->x_label_to_block_map)
#define BASIC_BLOCK_FOR_FUNCTION(FN, N)   (VEC_index (basic_block, basic_block_info_for_function(FN), (N)))
#define ENTRY_BLOCK_PTR   (cfun->cfg->x_entry_block_ptr)
#define EXIT_BLOCK_PTR   (cfun->cfg->x_exit_block_ptr)
#define basic_block_info   (cfun->cfg->x_basic_block_info)
#define n_basic_blocks   (cfun->cfg->x_n_basic_blocks)
#define n_edges   (cfun->cfg->x_n_edges)
#define last_basic_block   (cfun->cfg->x_last_basic_block)
#define label_to_block_map   (cfun->cfg->x_label_to_block_map)
#define profile_status   (cfun->cfg->x_profile_status)
#define BASIC_BLOCK(N)   (VEC_index (basic_block, basic_block_info, (N)))
#define SET_BASIC_BLOCK(N, BB)   (VEC_replace (basic_block, basic_block_info, (N), (BB)))
#define FOR_BB_BETWEEN(BB, FROM, TO, DIR)   for (BB = FROM; BB != TO; BB = BB->DIR)
#define FOR_EACH_BB_FN(BB, FN)   FOR_BB_BETWEEN (BB, (FN)->cfg->x_entry_block_ptr->next_bb, (FN)->cfg->x_exit_block_ptr, next_bb)
#define FOR_EACH_BB(BB)   FOR_EACH_BB_FN (BB, cfun)
#define FOR_EACH_BB_REVERSE_FN(BB, FN)   FOR_BB_BETWEEN (BB, (FN)->cfg->x_exit_block_ptr->prev_bb, (FN)->cfg->x_entry_block_ptr, prev_bb)
#define FOR_EACH_BB_REVERSE(BB)   FOR_EACH_BB_REVERSE_FN(BB, cfun)
#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 FOR_ALL_BB_FN(BB, FN)   for (BB = ENTRY_BLOCK_PTR_FOR_FUNCTION (FN); BB; BB = BB->next_bb)
#define REG_BLOCK_UNKNOWN   -1
#define REG_BLOCK_GLOBAL   -2
#define REG_BASIC_BLOCK(N)   (VEC_index (reg_info_p, reg_n_info, N)->basic_block)
#define BB_HEAD(B)   (B)->il.rtl->head_
#define BB_END(B)   (B)->il.rtl->end_
#define ENTRY_BLOCK   (0)
#define EXIT_BLOCK   (1)
#define NUM_FIXED_BLOCKS   (2)
#define BLOCK_NUM(INSN)   (BLOCK_FOR_INSN (INSN)->index + 0)
#define set_block_for_insn(INSN, BB)   (BLOCK_FOR_INSN (INSN) = BB)
#define REG_BR_PROB_BASE   10000
#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_SCAN_DEAD_STORES   128
#define PROP_ASM_SCAN   256
#define PROP_DEAD_INSN   1024
#define PROP_POST_REGSTACK   2048
#define PROP_FINAL
#define PROP_POSTRELOAD
#define CLEANUP_EXPENSIVE   1
#define CLEANUP_CROSSJUMP   2
#define CLEANUP_POST_REGSTACK   4
#define CLEANUP_UPDATE_LIFE   8
#define CLEANUP_THREADING   16
#define CLEANUP_NO_INSN_DEL   32
#define CLEANUP_CFGLAYOUT   64
#define CLEANUP_LOG_LINKS   128
#define STRUCT_EQUIV_START   256
#define STRUCT_EQUIV_RERUN   512
#define STRUCT_EQUIV_FINAL   1024
#define STRUCT_EQUIV_NEED_FULL_BLOCK   2048
#define STRUCT_EQUIV_MATCH_JUMPS   4096
#define STRUCT_EQUIV_MAX_LOCAL   16

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 ce_if_block ce_if_block_t
typedef struct conflict_graph_defconflict_graph
typedef int(* conflict_graph_enum_fn )(int, int, void *)

Enumerations

enum  bb_flags {
  BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2, BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2,
  BB_FORWARDER_BLOCK = 1, BB_NONTHREADABLE_BLOCK = 2, BB_DIRTY = 1, BB_NEW = 2,
  BB_REACHABLE = 4, BB_IRREDUCIBLE_LOOP = 8, BB_SUPERBLOCK = 16, BB_DISABLE_SCHEDULE = 32,
  BB_HOT_PARTITION = 64, BB_COLD_PARTITION = 128, BB_DUPLICATED = 256, BB_RTL = 1024,
  BB_FORWARDER_BLOCK = 2048, BB_NONTHREADABLE_BLOCK = 4096
}
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_P (edge)
 DEF_VEC_ALLOC_P (edge, gc)
struct basic_block_def GTY ((chain_next("%h.next_bb"), chain_prev("%h.prev_bb")))
 DEF_VEC_P (basic_block)
 DEF_VEC_ALLOC_P (basic_block, gc)
 DEF_VEC_ALLOC_P (basic_block, heap)
void compute_bb_for_insn (void)
unsigned int 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)
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)
int post_order_compute (int *, bool)
int pre_and_rev_post_order_compute (int *, int *, bool)
int dfs_enumerate_from (basic_block, int, bool(*)(basic_block, void *), basic_block *, int, void *)
void compute_dominance_frontiers (bitmap *)
void dump_bb_info (basic_block, bool, bool, int, const char *, FILE *)
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)
void scale_bbs_frequencies_int (basic_block *, int, int, int)
void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type, gcov_type)
static bool single_succ_p (basic_block bb)
static bool single_pred_p (basic_block bb)
static edge single_succ_edge (basic_block bb)
static edge single_pred_edge (basic_block bb)
static basic_block single_succ (basic_block bb)
static basic_block single_pred (basic_block bb)
static VEC (edge, gc)*ei_container(edge_iterator i)
static edge_iterator ei_start_1 (VEC(edge, gc)**ev)
static edge_iterator ei_last_1 (VEC(edge, gc)**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)
static bool ei_cond (edge_iterator ei, edge *p)
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 (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 (int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)
struct edge_listpre_edge_rev_lcm (int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **)
void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *)
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 remove_predictions_associated_with_edge (edge)
bool edge_probability_reliable_p (edge)
bool br_prob_note_reliable_p (rtx)
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 (void)
bool purge_dead_edges (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)
rtx get_last_bb_insn (basic_block)
void reorder_basic_blocks (unsigned int)
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)
basic_block nearest_common_dominator_for_set (enum cdi_direction, bitmap)
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)
unsigned bb_dom_dfs_in (enum cdi_direction, basic_block)
unsigned bb_dom_dfs_out (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)
void init_rtl_bb_info (basic_block)
void initialize_original_copy_tables (void)
void free_original_copy_tables (void)
void set_bb_original (basic_block, basic_block)
basic_block get_bb_original (basic_block)
void set_bb_copy (basic_block, basic_block)
basic_block get_bb_copy (basic_block)
rtx insert_insn_end_bb_new (rtx, basic_block)
bool insns_match_p (rtx, rtx, struct equiv_info *)
int struct_equiv_block_eq (int, struct equiv_info *)
bool struct_equiv_init (int, struct equiv_info *)
bool rtx_equiv_p (rtx *, rtx, int, struct equiv_info *)
bool condjump_equiv_p (struct equiv_info *, bool)
static bool bb_has_eh_pred (basic_block bb)

Variables

struct gcov_ctr_summaryprofile_info
bitmap_obstack reg_obstack
enum dom_state dom_computed [2]


Define Documentation

#define ALLOC_REG_SET ( OBSTACK   )     BITMAP_ALLOC (OBSTACK)

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

#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 (  )     (VEC_index (basic_block, basic_block_info, (N)))

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

#define BASIC_BLOCK_FOR_FUNCTION ( FN,
 )     (VEC_index (basic_block, basic_block_info_for_function(FN), (N)))

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

#define basic_block_info   (cfun->cfg->x_basic_block_info)

#define basic_block_info_for_function ( FN   )     ((FN)->cfg->x_basic_block_info)

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

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

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

#define BB_END ( B   )     (B)->il.rtl->end_

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

#define BB_FREQ_MAX   10000

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

#define BB_HEAD ( B   )     (B)->il.rtl->head_

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

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

Definition at line 348 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 349 of file basic-block.h.

#define BB_UNPARTITIONED   0

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

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

Definition at line 479 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 583 of file basic-block.h.

#define CLEANUP_CFGLAYOUT   64

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

#define CLEANUP_CROSSJUMP   2

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

#define CLEANUP_EXPENSIVE   1

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

#define CLEANUP_LOG_LINKS   128

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

#define CLEANUP_NO_INSN_DEL   32

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

#define CLEANUP_POST_REGSTACK   4

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

#define CLEANUP_THREADING   16

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

#define CLEANUP_UPDATE_LIFE   8

Definition at line 831 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 151 of file basic-block.h.

#define EDGE_ABNORMAL_CALL   4

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

#define EDGE_ALL_FLAGS   16383

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

#define EDGE_CAN_FALLTHRU   64

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

#define EDGE_COMPLEX   (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)

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

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

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

#define EDGE_CRITICAL_P (  ) 

Value:

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

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

#define EDGE_CROSSING   8192

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

#define EDGE_DFS_BACK   32

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

#define EDGE_EH   8

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

#define EDGE_EXECUTABLE   4096

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

#define EDGE_FAKE   16

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

#define EDGE_FALLTHRU   1

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

#define EDGE_FALSE_VALUE   2048

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

#define EDGE_FREQUENCY (  ) 

Value:

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

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

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

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

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

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

#define EDGE_INDEX_NO_EDGE   -1

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

#define EDGE_IRREDUCIBLE_LOOP   128

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

#define EDGE_LOOP_EXIT   512

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

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

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

#define EDGE_SIBCALL   256

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

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

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

#define EDGE_TRUE_VALUE   1024

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

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

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

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

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

#define ENTRY_BLOCK   (0)

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

#define ENTRY_BLOCK_PTR   (cfun->cfg->x_entry_block_ptr)

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

#define ENTRY_BLOCK_PTR_FOR_FUNCTION ( FN   )     ((FN)->cfg->x_entry_block_ptr)

#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   (1)

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

#define EXIT_BLOCK_PTR   (cfun->cfg->x_exit_block_ptr)

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

#define EXIT_BLOCK_PTR_FOR_FUNCTION ( FN   )     ((FN)->cfg->x_exit_block_ptr)

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

Referenced by copy_cfg_body(), ipcp_profile_bb_print(), and ipcp_profile_edge_print().

#define FALLTHRU_EDGE ( bb   ) 

Value:

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

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

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

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

#define FOR_ALL_BB_FN ( BB,
FN   )     for (BB = ENTRY_BLOCK_PTR_FOR_FUNCTION (FN); BB; BB = BB->next_bb)

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

Referenced by copy_cfg_body(), ipcp_update_bb_counts(), and ipcp_update_edges_counts().

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

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

#define FOR_BB_INSNS ( BB,
INSN   ) 

Value:

for ((INSN) = BB_HEAD (BB);     \
       (INSN) && (INSN) != NEXT_INSN (BB_END (BB)); \
       (INSN) = NEXT_INSN (INSN))

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

#define FOR_BB_INSNS_REVERSE ( BB,
INSN   ) 

Value:

for ((INSN) = BB_END (BB);      \
       (INSN) && (INSN) != PREV_INSN (BB_HEAD (BB));  \
       (INSN) = PREV_INSN (INSN))

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

#define FOR_EACH_BB ( BB   )     FOR_EACH_BB_FN (BB, cfun)

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

#define FOR_EACH_BB_FN ( BB,
FN   )     FOR_BB_BETWEEN (BB, (FN)->cfg->x_entry_block_ptr->next_bb, (FN)->cfg->x_exit_block_ptr, next_bb)

#define FOR_EACH_BB_REVERSE ( BB   )     FOR_EACH_BB_REVERSE_FN(BB, cfun)

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

#define FOR_EACH_BB_REVERSE_FN ( BB,
FN   )     FOR_BB_BETWEEN (BB, (FN)->cfg->x_exit_block_ptr->prev_bb, (FN)->cfg->x_entry_block_ptr, prev_bb)

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

#define FOR_EACH_EDGE ( EDGE,
ITER,
EDGE_VEC   ) 

Value:

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

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

#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 573 of file basic-block.h.

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

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

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

Definition at line 570 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 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 label_to_block_map   (cfun->cfg->x_label_to_block_map)

#define label_to_block_map_for_function ( FN   )     ((FN)->cfg->x_label_to_block_map)

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

#define last_basic_block   (cfun->cfg->x_last_basic_block)

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

Referenced by add_to_dominance_info(), alloc_gcse_mem(), alloc_mem(), apply_opt_in_copies(), blocks_in_phiopt_order(), branch_prob(), break_superblocks(), build_store_vectors(), build_tree_cfg(), bypass_conditional_jumps(), calc_dfs_tree(), calc_dfs_tree_nonrec(), calc_idoms(), calculate_dominance_info(), calculate_global_regs_live(), calculate_live_on_entry(), calculate_live_on_exit(), cleanup_dead_labels(), combine_instructions(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), compact_blocks(), compute_antic(), compute_antinout_edge(), compute_available(), compute_code_hoist_vbeinout(), compute_dominance_frontiers(), compute_global_livein(), compute_hash_table_work(), compute_insert_delete(), compute_iterated_dominance_frontiers(), compute_laterin(), compute_local_properties(), compute_nearerout(), compute_pre_data(), compute_rev_insert_delete(), compute_store_table(), compute_transpout(), convert_to_ssa(), copy_bb(), copy_phi_node_args(), copyprop_hardreg_forward(), create_basic_block(), create_basic_block_structure(), create_bb(), delete_null_pointer_checks(), delete_null_pointer_checks_1(), df_alloc(), df_analyse(), df_analyse_1(), df_analyze(), df_analyze_1(), df_compact_blocks(), df_grow_bb_info(), df_iterative_dataflow(), dfs_enumerate_from(), dump_tree_cfg(), expr_reaches_here_p(), find_basic_blocks(), find_basic_blocks_1(), find_idf(), fix_bb_placements(), fix_irreducible_loops(), fixup_abnormal_edges(), flow_call_edges_add(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_init(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), free_all_mem(), free_basic_block_vars(), frv_optimize_membar(), gcse_main(), gmalloc(), hoist_code(), hoist_expr_reaches_here_p(), init_dom_info(), init_empty_tree_cfg(), init_reassoc(), init_resource_info(), insert_aux(), insert_range_assertions(), iterative_dataflow(), iterative_dataflow_bitmap(), iterative_dataflow_sbitmap(), loop_commit_inserts(), loopify(), make_edges(), mark_dfs_back_edges(), mark_irreducible_loops(), mark_phi_for_rewrite(), mf_xform_derefs(), new_tree_live_info(), note_prediction_to_br_prob(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), one_pre_gcse_pass(), opt_info_start_duplication(), partition_hot_cold_basic_blocks(), perform_tree_ssa_dce(), post_order_compute(), pre_and_rev_post_order_compute(), pre_edge_lcm(), pre_edge_rev_lcm(), pre_expr_reaches_here_p(), predict_paths_leading_to(), prepare_def_site_for(), process_note_prediction(), purge_all_dead_edges(), reachable_at_most_once(), record_edge_info(), remove_path(), remove_reachable_equiv_notes(), rename_variables(), reorder_basic_blocks(), rewrite_into_ssa(), rewrite_ssa_into_ssa(), rtl_create_basic_block(), rtl_flow_call_edges_add(), schedule_ebbs(), see_initialize_data_structures(), split_all_insns(), ssa_const_prop(), ssa_eliminate_dead_code(), ssa_prop_init(), tail_duplicate(), tree_bb_level_predictions(), tree_dce_done(), tree_dce_init(), tree_duplicate_loop_to_header_edge(), tree_expand_cfg(), tree_flow_call_edges_add(), tree_lower_complex(), tree_lower_complex_O0(), tree_lower_operations(), tree_ssa_lim_initialize(), update_life_info_in_dirty_blocks(), update_ssa(), verify_flow_info(), verify_loop_structure(), and vt_find_locations().

#define last_basic_block_for_function ( FN   )     ((FN)->cfg->x_last_basic_block)

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

#define n_basic_blocks   (cfun->cfg->x_n_basic_blocks)

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

Referenced by add_loop(), alloc_rbi_pool(), associate_equivalences_with_edges(), augment_live_range(), blocks_in_phiopt_order(), branch_prob(), build_btr_def_use_webs(), build_tree_cfg(), bypass_jumps(), calc_dfs_tree(), calc_dfs_tree_nonrec(), calculate_dominance_info(), calculate_global_regs_live(), calculate_reg_pav(), cleanup_forwarder_blocks(), compact_blocks(), compute_antinout_edge(), compute_avail(), compute_available(), compute_defs_uses_and_gen(), compute_global_livein(), compute_kill(), compute_laterin(), compute_nearerout(), compute_out(), compute_rvuse_and_antic_safe(), copy_loop_headers(), create_basic_block(), create_bb(), create_edge_list(), delete_null_pointer_checks(), delete_tree_cfg_annotations(), df_analyse_1(), df_analyze(), df_analyze_1(), df_compact_blocks(), dump_cfg_stats(), dump_flow_info(), dump_function_to_file(), dump_tree_cfg(), duplicate_computed_gotos(), entry_of_function(), execute_cse_reciprocals(), execute_pre(), expunge_block(), find_basic_blocks(), find_basic_blocks_1(), find_idf(), find_path(), find_unreachable_blocks(), fix_loop_structure(), fixup_reorder_chain(), flow_call_edges_add(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_init(), flow_loop_nodes_find(), flow_loops_cfg_dump(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), free_basic_block_vars(), gcse_main(), get_dominated_by(), get_loop_body(), global_alloc(), gmalloc(), init_dependency_caches(), init_dom_info(), init_empty_tree_cfg(), init_reassoc(), is_too_expensive(), link_btr_uses(), loopify(), mark_dfs_back_edges(), merge_phi_nodes(), migrate_btr_defs(), optimize_sibling_and_tail_recursive_calls(), partition_hot_cold_basic_blocks(), post_order_compute(), pre_and_rev_post_order_compute(), reachable_at_most_once(), record_edge_info(), redirect_immediate_dominators(), regno_clobbered_at_setjmp(), regno_uninitialized(), remove_path(), remove_reachable_equiv_notes(), reorder_basic_blocks(), rtl_create_basic_block(), rtl_flow_call_edges_add(), rtl_verify_flow_info(), schedule_ebbs(), set_up_bb_rts_numbers(), tail_duplicate(), tracer(), tree_duplicate_sese_region(), tree_flow_call_edges_add(), tree_ssa_phiopt(), try_forward_edges(), try_optimize_cfg(), unroll_loop_runtime_iterations(), variable_tracking_main(), verify_flow_info(), vt_find_locations(), vt_stack_adjustments(), and walk_dominator_tree().

#define n_basic_blocks_for_function ( FN   )     ((FN)->cfg->x_n_basic_blocks)

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

#define n_edges   (cfun->cfg->x_n_edges)

#define n_edges_for_function ( FN   )     ((FN)->cfg->x_n_edges)

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

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

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

#define NUM_FIXED_BLOCKS   (2)

#define profile_status   (cfun->cfg->x_profile_status)

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

#define PROP_ALLOW_CFG_CHANGES   32

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

#define PROP_ASM_SCAN   256

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

#define PROP_AUTOINC   64

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

#define PROP_DEAD_INSN   1024

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

Referenced by mark_set_1(), and propagate_one_insn().

#define PROP_DEATH_NOTES   1

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

#define PROP_FINAL

#define PROP_KILL_DEAD_CODE   8

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

#define PROP_LOG_LINKS   2

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

#define PROP_POST_REGSTACK   2048

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

Referenced by mark_set_1(), mark_used_reg(), struct_equiv_init(), and update_life_info().

#define PROP_POSTRELOAD

#define PROP_REG_INFO   4

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

#define PROP_SCAN_DEAD_CODE   16

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

#define PROP_SCAN_DEAD_STORES   128

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

#define REG_BASIC_BLOCK (  )     (VEC_index (reg_info_p, reg_n_info, N)->basic_block)

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

#define REG_BLOCK_GLOBAL   -2

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

#define REG_BLOCK_UNKNOWN   -1

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

#define REG_BR_PROB_BASE   10000

Definition at line 558 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_BASIC_BLOCK ( N,
BB   )     (VEC_replace (basic_block, basic_block_info, (N), (BB)))

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

Definition at line 480 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 STRUCT_EQUIV_FINAL   1024

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

Referenced by struct_equiv_block_eq(), and struct_equiv_improve_checkpoint().

#define STRUCT_EQUIV_MATCH_JUMPS   4096

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

Referenced by struct_equiv_block_eq().

#define STRUCT_EQUIV_MAX_LOCAL   16

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

Referenced by resolve_input_conflict(), and rtx_equiv_p().

#define STRUCT_EQUIV_NEED_FULL_BLOCK   2048

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

Referenced by struct_equiv_block_eq().

#define STRUCT_EQUIV_RERUN   512

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

#define STRUCT_EQUIV_START   256

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

Referenced by condjump_equiv_p(), struct_equiv_block_eq(), and struct_equiv_init().

#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 283 of file basic-block.h.

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

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

Definition at line 929 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

enum bb_flags

Enumerator:
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 
BB_DIRTY 
BB_NEW 
BB_REACHABLE 
BB_IRREDUCIBLE_LOOP 
BB_SUPERBLOCK 
BB_DISABLE_SCHEDULE 
BB_HOT_PARTITION 
BB_COLD_PARTITION 
BB_DUPLICATED 
BB_RTL 
BB_FORWARDER_BLOCK 
BB_NONTHREADABLE_BLOCK 

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

Enumerator:
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 
CDI_DOMINATORS 
CDI_POST_DOMINATORS 

Definition at line 956 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 962 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 791 of file basic-block.h.


Function Documentation

void add_noreturn_fake_exit_edges ( void   ) 

void add_to_dominance_info ( enum  cdi_direction,
basic_block   
)

void alloc_aux_for_block ( basic_block  ,
int   
) [inline]

void alloc_aux_for_blocks ( int   ) 

void alloc_aux_for_edge ( edge  ,
int   
) [inline]

void alloc_aux_for_edges ( int   ) 

basic_block alloc_block ( void   ) 

void allocate_reg_life_data ( void   ) 

unsigned bb_dom_dfs_in ( enum  cdi_direction,
basic_block   
)

Definition at line 915 of file dominance.c.

References et_node::dfs_num_in, dom_computed, DOM_OK, gcc_assert, and n.

Referenced by prune_unused_phi_nodes().

unsigned bb_dom_dfs_out ( enum  cdi_direction,
basic_block   
)

Definition at line 926 of file dominance.c.

References et_node::dfs_num_out, dom_computed, DOM_OK, gcc_assert, and n.

Referenced by prune_unused_phi_nodes().

static bool bb_has_eh_pred ( basic_block  bb  )  [inline, static]

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

Referenced by global_conflicts(), and propagate_block().

rtx block_label ( basic_block   ) 

bool br_prob_note_reliable_p ( rtx   ) 

Definition at line 217 of file predict.c.

References gcc_assert, INTVAL, probability_reliable_p(), REG_BR_PROB, REG_NOTE_KIND, and XEXP.

Referenced by ia64_print_operand(), and output_cbranch().

void break_superblocks ( void   ) 

void brief_dump_cfg ( FILE  ) 

Definition at line 866 of file cfg.c.

References dump_cfg_bb_info(), and FOR_EACH_BB.

edge cached_make_edge ( sbitmap  ,
basic_block  ,
basic_block  ,
int   
)

void calculate_dominance_info ( enum  cdi_direction  ) 

bool can_fallthru ( basic_block  ,
basic_block   
)

void check_bb_profile ( basic_block  ,
FILE  
)

bool cleanup_cfg ( int   ) 

void clear_aux_for_blocks ( void   ) 

void clear_aux_for_edges ( void   ) 

void clear_bb_flags ( void   ) 

void clear_edges ( void   ) 

void commit_edge_insertions ( void   ) 

void commit_edge_insertions_watch_calls ( void   ) 

void compact_blocks ( void   ) 

void compute_available ( sbitmap ,
sbitmap ,
sbitmap ,
sbitmap  
)

void compute_bb_for_insn ( void   ) 

void compute_dominance_frontiers ( bitmap  ) 

Definition at line 995 of file cfganal.c.

References compute_dominance_frontiers_1(), timevar_pop, and timevar_push.

bool condjump_equiv_p ( struct equiv_info ,
bool   
)

int conflict_graph_add ( conflict_graph  ,
int  ,
int   
)

int conflict_graph_conflict_p ( conflict_graph  ,
int  ,
int   
)

void conflict_graph_delete ( conflict_graph   ) 

void conflict_graph_enum ( conflict_graph  ,
int  ,
conflict_graph_enum_fn  ,
void  
)

void conflict_graph_merge_regs ( conflict_graph  ,
int  ,
int   
)

conflict_graph conflict_graph_new ( int   ) 

void conflict_graph_print ( conflict_graph  ,
FILE  
)

void connect_infinite_loops_to_exit ( void   ) 

bool control_flow_insn_p ( rtx   ) 

bool could_fall_through ( basic_block  ,
basic_block   
)

Definition at line 133 of file cfganal.c.

References edge::dest, EDGE_FALLTHRU, EXIT_BLOCK_PTR, edge::flags, and FOR_EACH_EDGE.

int count_or_remove_death_notes ( sbitmap  ,
int   
)

basic_block create_basic_block_structure ( rtx  ,
rtx  ,
rtx  ,
basic_block   
)

struct edge_list* create_edge_list ( void   )  [read]

void debug_bb ( basic_block   ) 

Definition at line 1623 of file cfgrtl.c.

References dump_bb().

basic_block debug_bb_n ( int   ) 

Definition at line 1630 of file cfgrtl.c.

References BASIC_BLOCK, and dump_bb().

void debug_regset ( regset   ) 

Definition at line 4252 of file flow.c.

References dump_regset(), and putc().

DEF_VEC_ALLOC_P ( basic_block  ,
heap   
)

DEF_VEC_ALLOC_P ( basic_block  ,
gc   
)

DEF_VEC_ALLOC_P ( edge  ,
gc   
)

DEF_VEC_P ( basic_block   ) 

DEF_VEC_P ( edge   ) 

void delete_from_dominance_info ( enum  cdi_direction,
basic_block   
)

int delete_noop_moves ( void   ) 

bool delete_unreachable_blocks ( void   ) 

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

bool dom_info_available_p ( enum  cdi_direction  ) 

Definition at line 980 of file dominance.c.

References dom_computed, and DOM_NONE.

bool dominated_by_p ( enum  cdi_direction,
basic_block  ,
basic_block   
)

void dump_bb_info ( basic_block  ,
bool  ,
bool  ,
int  ,
const char *  ,
FILE  
)

void dump_edge_info ( FILE ,
edge  ,
int   
)

void dump_regset ( regset  ,
FILE  
)

bool edge_probability_reliable_p ( edge   ) 

Definition at line 210 of file predict.c.

References probability_reliable_p().

static bool ei_cond ( edge_iterator  ei,
edge p 
) [inline, static]

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

Referenced by frv_optimize_membar_global().

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void expected_value_to_br_prob ( void   ) 

void expunge_block ( basic_block   ) 

void find_basic_blocks ( rtx   ) 

edge find_edge ( basic_block  ,
basic_block   
)

Definition at line 482 of file cfganal.c.

References edge::dest, EDGE_COUNT, FOR_EACH_EDGE, NULL, and edge::src.

int find_edge_index ( struct edge_list ,
basic_block  ,
basic_block   
)

Definition at line 609 of file cfganal.c.

References EDGE_INDEX_NO_EDGE, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, NUM_EDGES, and x.

void find_many_sub_basic_blocks ( sbitmap   ) 

void find_unreachable_blocks ( void   ) 

basic_block first_dom_son ( enum  cdi_direction,
basic_block   
)

Definition at line 959 of file dominance.c.

References et_node::data, NULL, and et_node::son.

rtx first_insn_after_basic_block_note ( basic_block   ) 

void fixup_abnormal_edges ( void   ) 

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

Definition at line 537 of file cfganal.c.

References edge::dest, fprintf(), fputs(), i, and src.

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

Definition at line 522 of file cfganal.c.

References EXECUTE_IF_SET_IN_SBITMAP, fprintf(), fputs(), and node.

basic_block force_nonfallthru ( edge   ) 

bool forwarder_block_p ( basic_block   ) 

void free_aux_for_blocks ( void   ) 

void free_aux_for_edges ( void   ) 

void free_basic_block_vars ( void   ) 

unsigned int free_bb_for_insn ( void   ) 

void free_dominance_info ( enum  cdi_direction  ) 

void free_edge_list ( struct edge_list  ) 

void free_original_copy_tables ( void   ) 

void free_propagate_block_info ( struct propagate_block_info  ) 

basic_block get_bb_copy ( basic_block   ) 

basic_block get_bb_original ( 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  
)

Definition at line 742 of file dominance.c.

References BB_DUPLICATED, first_dom_son(), basic_block_def::flags, flags, for(), i, and next_dom_son().

basic_block get_immediate_dominator ( enum  cdi_direction,
basic_block   
)

Definition at line 673 of file dominance.c.

References et_node::data, dom_computed, et_node::father, gcc_assert, node, and NULL.

rtx get_last_bb_insn ( basic_block   ) 

Definition at line 1711 of file cfgrtl.c.

References BARRIER_P, BB_END, end, next_nonnote_insn(), NULL, tablejump_p(), and tmp.

Referenced by rtl_delete_block().

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

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

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

void guess_outgoing_edge_probabilities ( basic_block   ) 

void init_flow ( void   ) 

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

Definition at line 1879 of file flow.c.

References abort, add_to_mem_set_list(), ALLOC_REG_SET, any_condjump_p(), propagate_block_info::bb, BB_END, BB_HEAD, BITMAP_ALLOC, bitmap_empty_p, bitmap_operation(), BITMAP_XMALLOC, bitmap_xor(), BITMAP_XOR, canon_rtx(), propagate_block_info::cc0_live, cond, propagate_block_info::cond_local_set, reg_cond_life_info::condition, const0_rtx, current_function_calls_eh_return, current_function_decl, edge::dest, dest, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, EXECUTE_IF_SET_IN_REG_SET, EXIT_BLOCK_PTR, propagate_block_info::flags, frame_pointer_rtx, FREE_REG_SET, gcc_assert, gen_rtx_fmt_ee(), GET_CODE, GET_MODE, basic_block_def::global_live_at_start, basic_block_def::head, i, INITIALIZE_REG_SET, insn, propagate_block_info::insn_num, JUMP_LABEL, JUMP_P, propagate_block_info::local_set, max_reg_num(), mem, MEM, MEM_P, propagate_block_info::mem_set_list, propagate_block_info::mem_set_list_len, propagate_block_info::new_set, NONJUMP_INSN_P, NULL, NULL_RTX, optimize, reg_cond_life_info::orig_condition, PC, pc_set(), PLUS, PREV_INSN, PROP_AUTOINC, PROP_LOG_LINKS, PROP_SCAN_DEAD_STORES, REG, propagate_block_info::reg_live, propagate_block_info::reg_next_use, reg_obstack, REG_P, REGNO, REGNO_REG_SET_P, reverse_condition(), reversed_comparison_code(), RTX_UNCHANGING_P, SET_DEST, SET_REGNO_REG_SET, SET_SRC, single_set, single_succ(), single_succ_p(), splay_tree_compare_ints(), splay_tree_insert(), splay_tree_new(), reg_cond_life_info::stores, SUBREG_REG, basic_block_def::succ, edge::succ_next, TREE_CODE, TREE_TYPE, TYPE_RETURNS_STACK_DEPRESSED, UNKNOWN, xcalloc(), XCNEWVEC, XEXP, xmalloc(), and XNEW.

Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().

void init_rtl_bb_info ( basic_block   ) 

void initialize_original_copy_tables ( void   ) 

rtx insert_insn_end_bb_new ( rtx  ,
basic_block   
)

void insert_insn_on_edge ( rtx  ,
edge   
)

bool inside_basic_block_p ( rtx   ) 

Definition at line 62 of file cfgbuild.c.

References gcc_unreachable, GET_CODE, JUMP_P, NEXT_INSN, and PATTERN.

bool insns_match_p ( rtx  ,
rtx  ,
struct equiv_info  
)

void iterate_fix_dominators ( enum  cdi_direction,
basic_block ,
int   
)

void life_analysis ( int   ) 

void link_block ( basic_block  ,
basic_block   
)

edge make_edge ( basic_block  ,
basic_block  ,
int   
)

edge make_single_succ_edge ( basic_block  ,
basic_block  ,
int   
)

bool mark_dfs_back_edges ( void   ) 

bool maybe_hot_bb_p ( basic_block   ) 

bool merge_seq_blocks ( void   ) 

basic_block nearest_common_dominator ( enum  cdi_direction,
basic_block  ,
basic_block   
)

Definition at line 788 of file dominance.c.

References et_node::data, dom_computed, et_nca(), and gcc_assert.

basic_block nearest_common_dominator_for_set ( enum  cdi_direction,
bitmap   
)

basic_block next_dom_son ( enum  cdi_direction,
basic_block   
)

Definition at line 970 of file dominance.c.

References et_node::data, et_node::father, next, NULL, and et_node::son.

int post_order_compute ( int *  ,
bool   
)

int pre_and_rev_post_order_compute ( int *  ,
int *  ,
bool   
)

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

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

void predict_edge_def ( edge  ,
enum  br_predictor,
enum  prediction 
)

void print_edge_list ( FILE ,
struct edge_list  
)

bool probably_cold_bb_p ( basic_block   ) 

bool probably_never_executed_bb_p ( basic_block   ) 

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

rtx propagate_one_insn ( struct propagate_block_info ,
rtx   
)

Definition at line 1612 of file flow.c.

References CALL_INSN_FUNCTION_USAGE, CALL_P, can_throw_internal(), propagate_block_info::cc0_live, CLEAR_REG_SET, cond, COND_EXEC_TEST, CONST_OR_PURE_CALL_P, current_function_decl, current_function_return_rtx, EXECUTE_IF_SET_IN_REG_SET, EXIT_BLOCK_PTR, fatal_insn, find_reg_note(), FIRST_PSEUDO_REGISTER, propagate_block_info::flags, flags, free_EXPR_LIST_list(), GET_CODE, global_regs, HAVE_epilogue, HAVE_prologue, HAVE_sibcall_epilogue, i, insn_dead_p(), propagate_block_info::insn_num, INSN_P, invalidate_mems_from_set(), libcall_dead_p(), live_at_end, mark_set_1(), mark_set_regs(), mark_used_reg(), mark_used_regs(), propagate_block_info::mem_set_list, propagate_block_info::mem_set_list_len, MINUS, propagate_block_info::new_set, NULL_RTX, PATTERN, PLUS, prev, PREV_INSN, prologue_epilogue_contains(), PROP_AUTOINC, PROP_DEAD_INSN, PROP_DEATH_NOTES, PROP_EQUAL_NOTES, PROP_KILL_DEAD_CODE, PROP_REG_INFO, PROP_SCAN_DEAD_CODE, propagate_block_delete_insn(), propagate_block_delete_libcall(), refers_to_regno_p(), REG, reg_deaths, REG_EQUAL, REG_EQUIV, REG_LIBCALL, propagate_block_info::reg_live, REG_MAYBE_DEAD, REG_N_CALLS_CROSSED, REG_N_THROWING_CALLS_CROSSED, REG_NOTES, REG_P, REG_RETVAL, regno_reg_rtx, REGNO_REG_SET_P, regs_invalidated_by_call, reload_completed, remove_note(), SET, SET_DEST, SET_REGNO_REG_SET, SET_SRC, sibcall_epilogue_contains(), SIBLING_CALL_P, single_set, STACK_POINTER_REGNUM, stack_pointer_rtx, TEST_HARD_REG_BIT, TREE_CODE, TREE_TYPE, TYPE_RETURNS_STACK_DEPRESSED, USE, x, and XEXP.

Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().

bool purge_all_dead_edges ( void   ) 

Definition at line 2332 of file cfgrtl.c.

References FOR_EACH_BB, and purge_dead_edges().

bool purge_dead_edges ( basic_block   ) 

basic_block recount_dominator ( enum  cdi_direction,
basic_block   
)

void redirect_edge_pred ( edge  ,
basic_block   
)

void redirect_edge_succ ( edge  ,
basic_block   
)

edge redirect_edge_succ_nodup ( edge  ,
basic_block   
)

void redirect_immediate_dominators ( enum  cdi_direction,
basic_block  ,
basic_block   
)

void reg_set_to_hard_reg_set ( HARD_REG_SET *  ,
bitmap   
)

Definition at line 4390 of file flow.c.

References EXECUTE_IF_SET_IN_BITMAP, FIRST_PSEUDO_REGISTER, i, and SET_HARD_REG_BIT.

void remove_edge ( edge   ) 

void remove_fake_edges ( void   ) 

void remove_fake_exit_edges ( void   ) 

Definition at line 588 of file cfganal.c.

References EXIT_BLOCK_PTR, and remove_fake_predecessors().

void remove_predictions_associated_with_edge ( edge   ) 

Definition at line 293 of file predict.c.

References edge::src.

Referenced by remove_edge().

void reorder_basic_blocks ( unsigned  int  ) 

void rtl_make_eh_edge ( sbitmap  ,
basic_block  ,
rtx   
)

void rtl_predict_edge ( edge  ,
enum  br_predictor,
int   
)

bool rtl_predicted_by_p ( basic_block  ,
enum  br_predictor 
)

Definition at line 160 of file predict.c.

References BB_END, INSN_P, int, INTVAL, REG_BR_PRED, REG_NOTE_KIND, REG_NOTES, and XEXP.

bool rtx_equiv_p ( rtx ,
rtx  ,
int  ,
struct equiv_info  
)

void scale_bbs_frequencies_gcov_type ( basic_block ,
int  ,
gcov_type  ,
gcov_type   
)

void scale_bbs_frequencies_int ( basic_block ,
int  ,
int  ,
int   
)

void set_bb_copy ( basic_block  ,
basic_block   
)

void set_bb_original ( basic_block  ,
basic_block   
)

void set_edge_can_fallthru_flag ( void   ) 

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

static basic_block single_pred ( basic_block  bb  )  [inline, static]

static edge single_pred_edge ( basic_block  bb  )  [inline, static]

static bool single_pred_p ( basic_block  bb  )  [inline, static]

static basic_block single_succ ( basic_block  bb  )  [inline, static]

static edge single_succ_edge ( basic_block  bb  )  [inline, static]

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

Referenced by branch_prob(), bsi_commit_edge_inserts(), canonicalize_loop_headers(), cfg_layout_can_merge_blocks_p(), cleanup_control_expr_graph(), combine_predictions_for_insn(), commit_one_edge_insertion(), compute_outgoing_frequencies(), condjump_equiv_p(), create_preheader(), decrease_profile(), disband_implicit_edges(), dom_opt_finalize_block(), duplicate_computed_gotos(), eliminate_tail_call(), estimate_bb_frequencies(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_omp_sections(), expand_omp_single(), expand_omp_synch(), find_if_block(), find_if_case_1(), find_if_case_2(), find_tail_calls(), find_traces_1_round(), fix_up_fall_thru_edges(), init_pre(), insert_insn_end_bb(), insert_insn_end_bb_new(), loop_delete_branch_edge(), loop_version(), mark_single_exit_loops(), merge_if_block(), merge_phi_nodes(), outgoing_edges_match(), perfect_nestify(), purge_dead_edges(), redirect_edges(), remove_forwarder_block(), remove_forwarder_block_with_phi(), rotate_loop(), rtl_can_merge_blocks(), sjlj_emit_function_enter(), split_edge(), split_loop_exit_edge(), thread_prologue_and_epilogue_insns(), tidy_fallthru_edges(), tree_can_merge_blocks_p(), tree_forwarder_block_p(), tree_lv_add_condition_to_bb(), tree_merge_blocks(), tree_optimize_tail_calls_1(), tree_verify_flow_info(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), unloop(), unroll_loop_runtime_iterations(), unswitch_loop(), update_parameter_components(), and value_replacement().

static bool single_succ_p ( basic_block  bb  )  [inline, static]

int struct_equiv_block_eq ( int  ,
struct equiv_info  
)

bool struct_equiv_init ( int  ,
struct equiv_info  
)

void tree_predict_edge ( edge  ,
enum  br_predictor,
int   
)

bool tree_predicted_by_p ( basic_block  ,
enum  br_predictor 
)

Definition at line 176 of file predict.c.

References bb_ann(), and i.

edge try_redirect_by_replacing_jump ( edge  ,
basic_block  ,
bool   
)

edge unchecked_make_edge ( basic_block  ,
basic_block  ,
int   
)

void unlink_block ( basic_block   ) 

void update_bb_for_insn ( basic_block   ) 

void update_bb_profile_for_threading ( basic_block  ,
int  ,
gcov_type  ,
edge   
)

void update_br_prob_note ( basic_block   ) 

int update_life_info ( sbitmap  ,
enum  update_life_extent,
int   
)

int update_life_info_in_dirty_blocks ( enum  update_life_extent,
int   
)

static VEC ( edge  ,
gc   
) [inline, static]

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

void verify_dominators ( enum  cdi_direction  ) 

void verify_edge_list ( FILE ,
struct edge_list  
)


Variable Documentation

Definition at line 48 of file dominance.c.

Definition at line 129 of file profile.c.

Definition at line 69 of file cfg.c.


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