aboutsummaryrefslogtreecommitdiff
path: root/gcc/basic-block.h
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2012-05-08 15:54:13 +0000
committerMichael Matz <matz@gcc.gnu.org>2012-05-08 15:54:13 +0000
commitbcc708fcdc60c6b4485b1796ac1ba61c5f56b0b3 (patch)
tree6c299e917ec2a3f887c9fedcefdf3a151c51eebb /gcc/basic-block.h
parent88231ff68197c2c22f33e1a8ba251bc0b02b1f2d (diff)
downloadgcc-bcc708fcdc60c6b4485b1796ac1ba61c5f56b0b3.zip
gcc-bcc708fcdc60c6b4485b1796ac1ba61c5f56b0b3.tar.gz
gcc-bcc708fcdc60c6b4485b1796ac1ba61c5f56b0b3.tar.bz2
basic-block.h (struct rtl_bb_info): Remove visited member and move head_ member to ...
* basic-block.h (struct rtl_bb_info): Remove visited member and move head_ member to ... (struct basic_block_def.basic_block_il_dependent): ... the new member x, replacing but containing old member rtl. (enum bb_flags): New BB_VISITED flag. (BB_HEADER, BB_FOOTER): New macros. * jump.c (mark_all_labels): Adjust. * cfgcleanup.c (try_optimize_cfg): Adjust. * cfglayout.c (record_effective_endpoints): Adjust. (relink_block_chain): Ditto (and don't fiddle with visited). (fixup_reorder_chain): Adjust. (fixup_fallthru_exit_predecessor): Ditto. (cfg_layout_duplicate_bb): Ditto. * combine.c (update_cfg_for_uncondjump): Adjust. * bb-reorder.c (struct bbro_basic_block_data_def): Add visited member. (bb_visited_trace): New accessor. (mark_bb_visited): Move in front. (rotate_loop): Use bb_visited_trace. (find_traces_1_round): Ditto. (emit_barrier_after): Ditto. (copy_bb): Ditto, and initialize visited on resize. (reorder_basic_blocks): Initize visited member. (duplicate_computed_gotos): Clear bb flags at start, use BB_VISITED flags. * cfgrtl.c (try_redirect_by_replacing_jump): Adjust. (rtl_verify_flow_info_1): Ditto. (cfg_layout_split_block): Ditto. (cfg_layout_delete_block): Ditto. (cfg_layout_merge_blocks): Ditto. (init_rtl_bb_info): Adjust and initialize il.x.head_ member. From-SVN: r187288
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r--gcc/basic-block.h27
1 files changed, 16 insertions, 11 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 99df4d8..f0eeba7 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -102,17 +102,14 @@ extern const struct gcov_ctr_summary *profile_info;
struct loop;
struct GTY(()) rtl_bb_info {
- /* The first and last insns of the block. */
- rtx head_;
+ /* The first insn of the block is embedded into bb->il.x. */
+ /* The last insn of the block. */
rtx end_;
/* In CFGlayout mode points to insn notes/jumptables to be placed just before
and after the block. */
- rtx header;
- rtx footer;
-
- /* This field is used by the bb-reorder pass. */
- int visited;
+ rtx header_;
+ rtx footer_;
};
struct GTY(()) gimple_bb_info {
@@ -169,7 +166,10 @@ struct GTY((chain_next ("%h.next_bb"), chain_prev ("%h.prev_bb"))) basic_block_d
union basic_block_il_dependent {
struct gimple_bb_info GTY ((tag ("0"))) gimple;
- struct rtl_bb_info * GTY ((tag ("1"))) rtl;
+ struct {
+ rtx head_;
+ struct rtl_bb_info * rtl;
+ } GTY ((tag ("1"))) x;
} GTY ((desc ("((%1.flags & BB_RTL) != 0)"))) il;
/* Expected number of executions: calculated in profile.c. */
@@ -260,7 +260,10 @@ enum bb_flags
df_set_bb_dirty, but not cleared by df_analyze, so it can be used
to test whether a block has been modified prior to a df_analyze
call. */
- BB_MODIFIED = 1 << 12
+ BB_MODIFIED = 1 << 12,
+
+ /* A general visited flag for passes to use. */
+ BB_VISITED = 1 << 13
};
/* Dummy flag for convenience in the hot/cold partitioning code. */
@@ -415,8 +418,10 @@ struct GTY(()) control_flow_graph {
/* Stuff for recording basic block info. */
-#define BB_HEAD(B) (B)->il.rtl->head_
-#define BB_END(B) (B)->il.rtl->end_
+#define BB_HEAD(B) (B)->il.x.head_
+#define BB_END(B) (B)->il.x.rtl->end_
+#define BB_HEADER(B) (B)->il.x.rtl->header_
+#define BB_FOOTER(B) (B)->il.x.rtl->footer_
/* Special block numbers [markers] for entry and exit.
Neither of them is supposed to hold actual statements. */