diff options
author | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-07-08 10:06:14 +0000 |
---|---|---|
committer | steven <steven@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-07-08 10:06:14 +0000 |
commit | 4a020a8c3dfec7d26c2e1f9c55286390c5fad76d (patch) | |
tree | 6449db5e8557f01213c64b681cc559f5835d3636 /gcc/basic-block.h | |
parent | 50a8e74cf0f8c34ef9e6023e6114d044b20a588b (diff) | |
download | gcc-4a020a8c3dfec7d26c2e1f9c55286390c5fad76d.tar.gz |
gcc/
* basic-block.h: Re-group most prototypes per file.
(struct edge_list): Remove num_blocks field.
(dump_bb_info): Adjust prototypes.
(dump_reg_info): Move prototype to regs.h.
* function.h: Do not include tree.h.
Include vec.h, vecir.h, input.h and machmode.h to compensate.
(function_name): New prototype.
* gimple.h: Include tree.h to compensate for basic-block.h change.
* langhooks.h: Note that tree.h is only necessary for enum tree_code.
* regs.h (dump_reg_info): Prototype here.
* regset.h: Adjust file reference in comment.
(debug_regset): Remove prototype.
* rtl.h: Include flags.h for flag_var_tracking_assignments.
(MAY_HAVE_DEBUG_INSNS): Define as flag_var_tracking_assignments
instead of no-longer-available tree.h's MAY_HAVE_DEBUG_STMTS.
(dump_reg_info, dump_flow_info): Remove prototypes.
* bb-reorder.c (set_edge_can_fallthru_flag): Move from cfganal.c
to here, the only user. Make static.
(reorder_basic_blocks): Call dump_reg_info before dump_flow_info.
* cfg.c: Do not include tm.h, tree.h, rtl.h, hard-reg-set.h, regs.h,
flags.h, function.h, except.h, diagnostic-core.h, tm_p.h, timevar.h,
tree-pass.h, cfgloop.h, and tree-flow.h.
Include basic-block.h, the first header I'd expect to be included.
(reg_obstack): Move to df-core.c.
(free_edge): Remove bogus ATTRIBUTE_UNUSED.
(remove_edge_raw): Do not call tree-ssa's redirect_edge_var_map_clear.
(redirect_edge_succ_nodup): Move to cfghooks.c.
(dump_regset, debug_regset): Move to df-core.c.
(dump_bb_info): Move to cfgrtl.c.
(dump_reg_info): Move to regstat.c.
(dump_flow_info): Move to cfgrtl.c.
(debug_flow_info): Likewise.
(dump_edge_info): Do not look at cfun, a CFG without cfun is nonsense.
* cfganal.c: Do not include tm.h, rtl.h, obstack.h, hard-reg-set.h,
insn-config.h, recog.h, diagnostic-core.h, tm_p.h, and cfgloop.h.
(flow_active_insn_p, forwarder_block_p, can_fallthru,
could_fall_through): Move to cfgrtl.c.
(set_edge_can_fallthru_flag): Moved to bb-reorder.c.
(create_edge_list): Do not set edge_list's removed num_blocks.
(print_edge_list): Look at n_basic_blocks instead of num_blocks.
(flow_nodes_print): Remove.
(flow_edge_list_print): Remove.
(inverted_post_order_compute): Use FOR_ALL_BB.
*cfgrtl.c (dump_flow_info): Moved from cfg.c.
Do not call dump_reg_info.
(debug_flow_info): Moved from cfg.c
(dump_bb_info): Moved from cfg.c. Take 'verbose' argument
to avoid looking at TDF_* flags from tree-pass.h.
(flow_active_insn_p, forwarder_block_p, can_fallthru,
could_fall_through): Moved from cfganal.c.
(print_rtl_with_bb): Adjust dump_bb_info calls.
* cfghooks.c (redirect_edge_succ_nodup): Moved from cfg.c.
(remove_edge): Call redirect_edge_var_map_clear if IR_GIMPLE.
(cfgcleanup.c): Look at MAY_HAVE_DEBUG_INSNS, not MAY_HAVE_DEBUG_STMTS.
* cselib.c: Include tree.h with a FIXME.
* df-core.c (reg_obstack): Moved from cfg.c.
(dump_regset): Likewise.
(debug_regset): Likewise. Make a DEBUG_FUNCTION.
* final.c (compute_alignments): Call dump_reg_info before
dump_flow_info.
* function.c (function_name): New function.
(current_function_name): Use it.
* ifcvt.c (rest_of_handle_if_conversion): Call dump_reg_info before
dump_flow_info.
* ira-conflicts.c: Include tree.h with a note.
* regstat.c (dump_reg_info): Moved here from cfg.c.
* loop-init.c: Include regs.h instead of hard-reg-set.h.
(rtl_loop_init): Call dump_reg_info before dump_flow_info.
(rtl_loop_done): Likewise.
* mcf.c: Include tree.h before langhooks.h.
* predict.c (maybe_hot_count_p): Assert we have cfun.
(probably_never_executed_bb_p): Likewise.
* profile.c (compute_branch_probabilities): Use gimple_dump_cfg
instead of dump_flow_info.
* sched-deps.c: Include tree.h with a FIXME.
(call_may_noreturn_p): Add FIXME note why this function has to
look at function decls instead of function decl flags.
* sched-vis.c: Include tree.h with a FIXME.
(print_rtl_slim): Adjust dump_bb_info uses.
* statistics.c (statistics_fini_pass_2): Use current_function_name
to avoid including tree.h.
(statistics_counter_event): Use function_name for the same reason.
(statistics_histogram_event): Likewise.
* tracer.c (tracer): Remove bogus gcc_assert. Use brief_dump_cfg
instead of dump_flow_info.
* var-tracking.c (variable_tracking_main_1): Call dump_reg_info
before dump_flow_info.
* doc/cfg.texi: Update CFG documentation.
* Makefile.in (RTL_H): Depend on FLAGS_H.
(GIMPLE_H): Depend on TREE_H.
(FUNCTION_H): Depend on VEC_H, vecir.h, INPUT_H and MACHMODE_H,
but no longer on TREE_H.
(C_COMMON_H): Depend on TREE_H.
(cselib.o, cse.o, cfganal.o, loop-init.o, ira-conflicts.o,
sched-deps.o, sched-vis.o): Fixup dependencies.
c-family/
* c-common.h: Include tree.h.
cp/
* decl.c (cp_finish_decl): Add FIXME at add_local_decl call site.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189359 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r-- | gcc/basic-block.h | 52 |
1 files changed, 24 insertions, 28 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 348f150ab6d..5a4540579d4 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -448,10 +448,6 @@ basic_block split_edge_and_insert (edge, rtx); extern void commit_one_edge_insertion (edge e); extern void commit_edge_insertions (void); -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 edge unchecked_make_edge (basic_block, basic_block, int); extern edge cached_make_edge (sbitmap, basic_block, basic_block, int); extern edge make_edge (basic_block, basic_block, int); @@ -462,15 +458,7 @@ extern edge redirect_edge_succ_nodup (edge, basic_block); extern void redirect_edge_pred (edge, basic_block); extern basic_block create_basic_block_structure (rtx, rtx, rtx, basic_block); extern void clear_bb_flags (void); -extern int post_order_compute (int *, bool, bool); -extern int inverted_post_order_compute (int *); -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 void dump_bb_info (basic_block, bool, bool, int, const char *, FILE *); +extern void dump_bb_info (basic_block, bool, bool, bool, const char *, FILE *); extern void dump_edge_info (FILE *, edge, int); extern void brief_dump_cfg (FILE *); extern void clear_edges (void); @@ -501,9 +489,9 @@ typedef struct ce_if_block } ce_if_block_t; /* This structure maintains an edge list vector. */ +/* FIXME: Make this a VEC(edge). */ struct edge_list { - int num_blocks; int num_edges; edge *index_to_edge; }; @@ -734,13 +722,6 @@ ei_cond (edge_iterator ei, edge *p) ei_cond ((ITER), &(EDGE)); \ ei_next (&(ITER))) -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); - #define CLEANUP_EXPENSIVE 1 /* Do relatively expensive optimizations except for edge forwarding */ #define CLEANUP_CROSSJUMP 2 /* Do crossjumping. */ @@ -789,6 +770,7 @@ extern bool predictable_edge_p (edge); 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); @@ -804,11 +786,25 @@ extern void free_aux_for_edges (void); /* In cfganal.c */ extern void find_unreachable_blocks (void); -extern bool forwarder_block_p (const_basic_block); -extern bool can_fallthru (basic_block, basic_block); -extern bool could_fall_through (basic_block, basic_block); -extern void flow_nodes_print (const char *, const_sbitmap, FILE *); -extern void flow_edge_list_print (const char *, const edge *, int, FILE *); +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 int inverted_post_order_compute (int *); +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 *); /* In cfgrtl.c */ extern rtx block_label (basic_block); @@ -817,6 +813,8 @@ 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 forwarder_block_p (const_basic_block); +extern bool can_fallthru (basic_block, basic_block); /* In cfgbuild.c. */ extern void find_many_sub_basic_blocks (sbitmap); @@ -833,8 +831,6 @@ extern int flow_find_head_matching_sequence (basic_block, basic_block, extern bool delete_unreachable_blocks (void); -extern bool mark_dfs_back_edges (void); -extern void set_edge_can_fallthru_flag (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); |