From d8ce2eae8471ebabcc3c7c8af1b0b992911543c3 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Mon, 25 Aug 2014 20:13:26 +0000 Subject: [PATCH] Remove BB_FOOTER scaffolding gcc/ * basic-block.h (struct rtl_bb_info): Strengthen field "footer_" from rtx to rtx_insn *. (BB_FOOTER): Replace function with access macro. (SET_BB_FOOTER): Delete. * cfgcleanup.c (try_optimize_cfg): Replace uses of SET_BB_FOOTER with BB_FOOTER. * cfgrtl.c (try_redirect_by_replacing_jump): Likewise. (emit_barrier_after_bb): Likewise. (record_effective_endpoints): Likewise. (relink_block_chain): Likewise. (fixup_fallthru_exit_predecessor): Likewise. (cfg_layout_duplicate_bb): Likewise. (cfg_layout_split_block): Likewise. (cfg_layout_delete_block): Likewise. (cfg_layout_merge_blocks): Likewise. (BB_FOOTER): Delete function. (SET_BB_FOOTER): Delete function. * combine.c (update_cfg_for_uncondjump): Replace uses of SET_BB_FOOTER with BB_FOOTER. / * rtx-classes-status.txt (TODO): Remove SET_BB_FOOTER. From-SVN: r214470 --- ChangeLog | 4 ++++ gcc/ChangeLog | 23 ++++++++++++++++++++++ gcc/basic-block.h | 5 ++--- gcc/cfgcleanup.c | 6 +++--- gcc/cfgrtl.c | 43 ++++++++++++++---------------------------- gcc/combine.c | 2 +- rtx-classes-status.txt | 2 +- 7 files changed, 48 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index cc44e42f789..8363862f3cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-08-25 David Malcolm + + * rtx-classes-status.txt (TODO): Remove SET_BB_FOOTER. + 2014-08-25 David Malcolm * rtx-classes-status.txt: Phase 3 (per-file commits within diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d13b175e5f8..ec66943cbb3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,26 @@ +2014-08-25 David Malcolm + + * basic-block.h (struct rtl_bb_info): Strengthen field "footer_" + from rtx to rtx_insn *. + (BB_FOOTER): Replace function with access macro. + (SET_BB_FOOTER): Delete. + + * cfgcleanup.c (try_optimize_cfg): Replace uses of SET_BB_FOOTER + with BB_FOOTER. + * cfgrtl.c (try_redirect_by_replacing_jump): Likewise. + (emit_barrier_after_bb): Likewise. + (record_effective_endpoints): Likewise. + (relink_block_chain): Likewise. + (fixup_fallthru_exit_predecessor): Likewise. + (cfg_layout_duplicate_bb): Likewise. + (cfg_layout_split_block): Likewise. + (cfg_layout_delete_block): Likewise. + (cfg_layout_merge_blocks): Likewise. + (BB_FOOTER): Delete function. + (SET_BB_FOOTER): Delete function. + * combine.c (update_cfg_for_uncondjump): Replace uses of + SET_BB_FOOTER with BB_FOOTER. + 2014-08-25 David Malcolm * except.h (struct eh_landing_pad_d): Strengthen field diff --git a/gcc/basic-block.h b/gcc/basic-block.h index f640f399eec..1f23f04fb21 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -127,7 +127,7 @@ struct GTY(()) rtl_bb_info { /* In CFGlayout mode points to insn notes/jumptables to be placed just before and after the block. */ rtx header_; - rtx footer_; + rtx_insn *footer_; }; struct GTY(()) gimple_bb_info { @@ -381,8 +381,7 @@ extern rtx& SET_BB_END (basic_block bb); extern rtx_insn *BB_HEADER (const_basic_block bb); extern rtx& SET_BB_HEADER (basic_block bb); -extern rtx_insn *BB_FOOTER (const_basic_block bb); -extern rtx& SET_BB_FOOTER (basic_block bb); +#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. */ diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 17426cc5591..ba0ab58f0f5 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -2676,13 +2676,13 @@ try_optimize_cfg (int mode) { if (BB_FOOTER (b)) { - SET_BB_FOOTER (e->src) = BB_FOOTER (b); - SET_BB_FOOTER (b) = NULL; + BB_FOOTER (e->src) = BB_FOOTER (b); + BB_FOOTER (b) = NULL; } else { start_sequence (); - SET_BB_FOOTER (e->src) = emit_barrier (); + BB_FOOTER (e->src) = emit_barrier (); end_sequence (); } } diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 59f093782c2..458278c5e4d 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1063,7 +1063,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout) if (PREV_INSN (insn)) SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn); else - SET_BB_FOOTER (src) = NEXT_INSN (insn); + BB_FOOTER (src) = NEXT_INSN (insn); if (NEXT_INSN (insn)) SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn); } @@ -1451,7 +1451,7 @@ emit_barrier_after_bb (basic_block bb) gcc_assert (current_ir_type () == IR_RTL_CFGRTL || current_ir_type () == IR_RTL_CFGLAYOUT); if (current_ir_type () == IR_RTL_CFGLAYOUT) - SET_BB_FOOTER (bb) = unlink_insn_chain (barrier, barrier); + BB_FOOTER (bb) = unlink_insn_chain (barrier, barrier); } /* Like force_nonfallthru below, but additionally performs redirection @@ -3462,7 +3462,7 @@ record_effective_endpoints (void) PREV_INSN (BB_HEAD (bb))); end = skip_insns_after_block (bb); if (NEXT_INSN (BB_END (bb)) && BB_END (bb) != end) - SET_BB_FOOTER (bb) = unlink_insn_chain (NEXT_INSN (BB_END (bb)), end); + BB_FOOTER (bb) = unlink_insn_chain (NEXT_INSN (BB_END (bb)), end); next_insn = NEXT_INSN (BB_END (bb)); } @@ -3620,7 +3620,7 @@ relink_block_chain (bool stay_in_cfglayout_mode) { bb->aux = NULL; if (!stay_in_cfglayout_mode) - SET_BB_HEADER (bb) = SET_BB_FOOTER (bb) = NULL; + SET_BB_HEADER (bb) = BB_FOOTER (bb) = NULL; } /* Maybe reset the original copy tables, they are not valid anymore @@ -3988,8 +3988,8 @@ fixup_fallthru_exit_predecessor (void) bb = split_block (bb, NULL)->dest; bb->aux = c->aux; c->aux = bb; - SET_BB_FOOTER (bb) = BB_FOOTER (c); - SET_BB_FOOTER (c) = NULL; + BB_FOOTER (bb) = BB_FOOTER (c); + BB_FOOTER (c) = NULL; } while (c->aux != bb) @@ -4203,7 +4203,7 @@ cfg_layout_duplicate_bb (basic_block bb) insn = NEXT_INSN (insn); insn = duplicate_insn_chain (BB_FOOTER (bb), insn); if (insn) - SET_BB_FOOTER (new_bb) = unlink_insn_chain (insn, get_last_insn ()); + BB_FOOTER (new_bb) = unlink_insn_chain (insn, get_last_insn ()); } return new_bb; @@ -4311,8 +4311,8 @@ cfg_layout_split_block (basic_block bb, void *insnp) rtx insn = (rtx) insnp; basic_block new_bb = rtl_split_block (bb, insn); - SET_BB_FOOTER (new_bb) = BB_FOOTER (bb); - SET_BB_FOOTER (bb) = NULL; + BB_FOOTER (new_bb) = BB_FOOTER (bb); + BB_FOOTER (bb) = NULL; return new_bb; } @@ -4443,7 +4443,7 @@ cfg_layout_delete_block (basic_block bb) if (PREV_INSN (insn)) SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn); else - SET_BB_FOOTER (bb) = NEXT_INSN (insn); + BB_FOOTER (bb) = NEXT_INSN (insn); if (NEXT_INSN (insn)) SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn); } @@ -4578,7 +4578,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b) if (BB_FOOTER (b)) { if (!BB_FOOTER (a)) - SET_BB_FOOTER (a) = SET_BB_FOOTER (b); + BB_FOOTER (a) = BB_FOOTER (b); else { rtx_insn *last = BB_FOOTER (a); @@ -4588,7 +4588,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b) SET_NEXT_INSN (last) = BB_FOOTER (b); SET_PREV_INSN (BB_FOOTER (b)) = last; } - SET_BB_FOOTER (b) = NULL; + BB_FOOTER (b) = NULL; } /* Move things from b->header before a->footer. @@ -4597,7 +4597,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b) if (BB_HEADER (b)) { if (! BB_FOOTER (a)) - SET_BB_FOOTER (a) = BB_HEADER (b); + BB_FOOTER (a) = BB_HEADER (b); else { rtx_insn *last = BB_HEADER (b); @@ -4606,7 +4606,7 @@ cfg_layout_merge_blocks (basic_block a, basic_block b) last = NEXT_INSN (last); SET_NEXT_INSN (last) = BB_FOOTER (a); SET_PREV_INSN (BB_FOOTER (a)) = last; - SET_BB_FOOTER (a) = BB_HEADER (b); + BB_FOOTER (a) = BB_HEADER (b); } SET_BB_HEADER (b) = NULL; } @@ -5150,19 +5150,4 @@ rtx& SET_BB_HEADER (basic_block bb) return bb->il.x.rtl->header_; } -/* BB_FOOTER as an rvalue. */ - -rtx_insn *BB_FOOTER (const_basic_block bb) -{ - rtx insn = bb->il.x.rtl->footer_; - return safe_as_a (insn); -} - -/* BB_FOOTER as an lvalue. */ - -rtx& SET_BB_FOOTER (basic_block bb) -{ - return bb->il.x.rtl->footer_; -} - #include "gt-cfgrtl.h" diff --git a/gcc/combine.c b/gcc/combine.c index 1a768d5e273..35d226eea73 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2425,7 +2425,7 @@ update_cfg_for_uncondjump (rtx_insn *insn) if (PREV_INSN (insn)) SET_NEXT_INSN (PREV_INSN (insn)) = NEXT_INSN (insn); else - SET_BB_FOOTER (bb) = NEXT_INSN (insn); + BB_FOOTER (bb) = NEXT_INSN (insn); if (NEXT_INSN (insn)) SET_PREV_INSN (NEXT_INSN (insn)) = PREV_INSN (insn); } diff --git a/rtx-classes-status.txt b/rtx-classes-status.txt index 3c9f29da54b..85ce4748b8c 100644 --- a/rtx-classes-status.txt +++ b/rtx-classes-status.txt @@ -15,7 +15,7 @@ Phase 6: use extra rtx_def subclasses: TODO TODO: "Scaffolding" to be removed ================================= * DF_REF_INSN -* SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER +* SET_BB_HEAD, SET_BB_END, SET_BB_HEADER * SET_BB_NOTE_LIST * SET_BND_TO * SET_DEP_PRO, SET_DEP_CON