-
-/* In cfganal.c */
-extern void bitmap_intersection_of_succs (sbitmap, sbitmap *, basic_block);
-extern void bitmap_intersection_of_preds (sbitmap, sbitmap *, basic_block);
-extern void bitmap_union_of_succs (sbitmap, sbitmap *, basic_block);
-extern void bitmap_union_of_preds (sbitmap, sbitmap *, basic_block);
-
-/* In lcm.c */
-extern struct edge_list *pre_edge_lcm (int, sbitmap *, sbitmap *,
- sbitmap *, sbitmap *, sbitmap **,
- sbitmap **);
-extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *,
- sbitmap *, sbitmap *,
- sbitmap *, sbitmap **,
- sbitmap **);
-extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
-
-/* In predict.c */
-extern bool maybe_hot_bb_p (struct function *, const_basic_block);
-extern bool maybe_hot_edge_p (edge);
-extern bool probably_never_executed_bb_p (struct function *, const_basic_block);
-extern bool probably_never_executed_edge_p (struct function *, edge);
-extern bool optimize_bb_for_size_p (const_basic_block);
-extern bool optimize_bb_for_speed_p (const_basic_block);
-extern bool optimize_edge_for_size_p (edge);
-extern bool optimize_edge_for_speed_p (edge);
-extern bool optimize_loop_for_size_p (struct loop *);
-extern bool optimize_loop_for_speed_p (struct loop *);
-extern bool optimize_loop_nest_for_size_p (struct loop *);
-extern bool optimize_loop_nest_for_speed_p (struct loop *);
-extern bool gimple_predicted_by_p (const_basic_block, enum br_predictor);
-extern bool rtl_predicted_by_p (const_basic_block, enum br_predictor);
-extern void gimple_predict_edge (edge, enum br_predictor, int);
-extern void rtl_predict_edge (edge, enum br_predictor, int);
-extern void predict_edge_def (edge, enum br_predictor, enum prediction);
-extern void guess_outgoing_edge_probabilities (basic_block);
-extern void remove_predictions_associated_with_edge (edge);
-extern bool edge_probability_reliable_p (const_edge);
-extern bool br_prob_note_reliable_p (const_rtx);
-extern bool predictable_edge_p (edge);
-
-/* In cfg.c */
-extern void init_flow (struct function *);
-extern void debug_bb (basic_block);
-extern basic_block debug_bb_n (int);
-extern void dump_flow_info (FILE *, int);
-extern void expunge_block (basic_block);
-extern void link_block (basic_block, basic_block);
-extern void unlink_block (basic_block);
-extern void compact_blocks (void);
-extern basic_block alloc_block (void);
-extern void alloc_aux_for_blocks (int);
-extern void clear_aux_for_blocks (void);
-extern void free_aux_for_blocks (void);
-extern void alloc_aux_for_edge (edge, int);
-extern void alloc_aux_for_edges (int);
-extern void clear_aux_for_edges (void);
-extern void free_aux_for_edges (void);
-
-/* In cfganal.c */
-extern void find_unreachable_blocks (void);
-extern bool mark_dfs_back_edges (void);
-struct edge_list * create_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);
-extern void remove_fake_edges (void);
-extern void remove_fake_exit_edges (void);
-extern void add_noreturn_fake_exit_edges (void);
-extern void connect_infinite_loops_to_exit (void);
-extern int post_order_compute (int *, bool, bool);
-extern basic_block dfs_find_deadend (basic_block);
-extern int inverted_post_order_compute (int *);
-extern int pre_and_rev_post_order_compute_fn (struct function *,
- int *, int *, bool);
-extern int pre_and_rev_post_order_compute (int *, int *, bool);
-extern int dfs_enumerate_from (basic_block, int,
- bool (*)(const_basic_block, const void *),
- basic_block *, int, const void *);
-extern void compute_dominance_frontiers (struct bitmap_head_def *);
-extern bitmap compute_idf (bitmap, struct bitmap_head_def *);
-extern basic_block * single_pred_before_succ_order (void);
-
-/* In cfgrtl.c */
-extern rtx block_label (basic_block);
-extern rtx bb_note (basic_block);
-extern bool purge_all_dead_edges (void);
-extern bool purge_dead_edges (basic_block);
-extern bool fixup_abnormal_edges (void);
-extern basic_block force_nonfallthru_and_redirect (edge, basic_block, rtx);
-extern bool contains_no_active_insn_p (const_basic_block);
-extern bool forwarder_block_p (const_basic_block);
-extern bool can_fallthru (basic_block, basic_block);
-extern void emit_barrier_after_bb (basic_block bb);
-extern void fixup_partitions (void);
-
-/* In cfgbuild.c. */
-extern void find_many_sub_basic_blocks (sbitmap);
-extern void rtl_make_eh_edge (sbitmap, basic_block, rtx);
-
-enum replace_direction { dir_none, dir_forward, dir_backward, dir_both };
-
-/* In cfgcleanup.c. */
-extern bool cleanup_cfg (int);
-extern int flow_find_cross_jump (basic_block, basic_block, rtx *, rtx *,
- enum replace_direction*);
-extern int flow_find_head_matching_sequence (basic_block, basic_block,
- rtx *, rtx *, int);
-
-extern bool delete_unreachable_blocks (void);
-
-extern void update_br_prob_note (basic_block);
-extern bool inside_basic_block_p (const_rtx);
-extern bool control_flow_insn_p (const_rtx);
-extern rtx get_last_bb_insn (basic_block);
-
-/* In dominance.c */
-
-enum cdi_direction
-{
- CDI_DOMINATORS = 1,
- CDI_POST_DOMINATORS = 2
-};
-
-extern enum dom_state dom_info_state (enum cdi_direction);
-extern void set_dom_info_availability (enum cdi_direction, enum dom_state);
-extern bool dom_info_available_p (enum cdi_direction);
-extern void calculate_dominance_info (enum cdi_direction);
-extern void free_dominance_info (enum cdi_direction);
-extern basic_block nearest_common_dominator (enum cdi_direction,
- basic_block, basic_block);
-extern basic_block nearest_common_dominator_for_set (enum cdi_direction,
- bitmap);
-extern void set_immediate_dominator (enum cdi_direction, basic_block,
- basic_block);
-extern basic_block get_immediate_dominator (enum cdi_direction, basic_block);
-extern bool dominated_by_p (enum cdi_direction, const_basic_block, const_basic_block);
-extern vec<basic_block> get_dominated_by (enum cdi_direction, basic_block);
-extern vec<basic_block> get_dominated_by_region (enum cdi_direction,
- basic_block *,
- unsigned);
-extern vec<basic_block> get_dominated_to_depth (enum cdi_direction,
- basic_block, int);
-extern vec<basic_block> get_all_dominated_blocks (enum cdi_direction,
- basic_block);
-extern void add_to_dominance_info (enum cdi_direction, basic_block);
-extern void delete_from_dominance_info (enum cdi_direction, basic_block);
-basic_block recompute_dominator (enum cdi_direction, basic_block);
-extern void redirect_immediate_dominators (enum cdi_direction, basic_block,
- basic_block);
-extern void iterate_fix_dominators (enum cdi_direction,
- vec<basic_block> , bool);
-extern void verify_dominators (enum cdi_direction);
-extern basic_block first_dom_son (enum cdi_direction, basic_block);
-extern 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);
-
-extern edge try_redirect_by_replacing_jump (edge, basic_block, bool);
-extern void break_superblocks (void);
-extern void relink_block_chain (bool);
-extern void update_bb_profile_for_threading (basic_block, int, gcov_type, edge);
-extern void init_rtl_bb_info (basic_block);
-
-extern void initialize_original_copy_tables (void);
-extern void free_original_copy_tables (void);
-extern void set_bb_original (basic_block, basic_block);
-extern basic_block get_bb_original (basic_block);
-extern void set_bb_copy (basic_block, basic_block);
-extern basic_block get_bb_copy (basic_block);
-void set_loop_copy (struct loop *, struct loop *);
-struct loop *get_loop_copy (struct loop *);
-
-#include "cfghooks.h"