[PATCH 158/236] Remove BB_FOOTER scaffolding
David Malcolm
dmalcolm@redhat.com
Wed Aug 6 17:45:00 GMT 2014
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: Remove SET_BB_FOOTER.
---
gcc/basic-block.h | 5 ++---
gcc/cfgcleanup.c | 6 +++---
gcc/cfgrtl.c | 43 ++++++++++++++-----------------------------
gcc/combine.c | 2 +-
rtx-classes-status.txt | 2 +-
5 files changed, 21 insertions(+), 37 deletions(-)
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 18d3871..0f55a8b 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 0edb7b5..6930c03 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 612eca7..1525a75 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1064,7 +1064,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);
}
@@ -1452,7 +1452,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
@@ -3463,7 +3463,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));
}
@@ -3623,7 +3623,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
@@ -3991,8 +3991,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)
@@ -4206,7 +4206,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;
@@ -4314,8 +4314,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;
}
@@ -4446,7 +4446,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);
}
@@ -4581,7 +4581,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);
@@ -4591,7 +4591,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.
@@ -4600,7 +4600,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);
@@ -4609,7 +4609,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;
}
@@ -5153,19 +5153,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 as_a_nullable <rtx_insn *> (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 9a922a7..4a73e0b 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2396,7 +2396,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 90d6efd..d26dd89 100644
--- a/rtx-classes-status.txt
+++ b/rtx-classes-status.txt
@@ -11,7 +11,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
--
1.8.5.3
More information about the Gcc-patches
mailing list