diff mbox

[015/236] BB_NOTE_LIST scaffolding

Message ID 1407345815-14551-16-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm Aug. 6, 2014, 5:19 p.m. UTC
gcc/
	* sel-sched-ir.h (BB_NOTE_LIST): struct sel_region_bb_info_def's
	"note_list" field will eventually be an rtx_insn *.  To help with
	transition, for now, convert from an access macro into a pair of
	functions: BB_NOTE_LIST, returning an rtx_insn *, and...
	(SET_BB_NOTE_LIST): New function, for use where BB_NOTE_LIST is
	used as an lvalue.

	* sel-sched.c (create_block_for_bookkeeping): Update lvalue usage
	of BB_NOTE_LIST to SET_BB_NOTE_LIST.

	* sel-sched-ir.c (init_bb): Likewise.
	(sel_restore_notes): Likewise.
	(move_bb_info): Likewise.
	(BB_NOTE_LIST): New function, adding a checked cast to rtx_insn *.
	(SET_BB_NOTE_LIST): New function.

/
	* rtx-classes-status.txt: Add SET_BB_NOTE_LIST.
---
 gcc/sel-sched-ir.c     | 19 +++++++++++++++----
 gcc/sel-sched-ir.h     |  3 ++-
 gcc/sel-sched.c        |  4 ++--
 rtx-classes-status.txt |  1 +
 4 files changed, 20 insertions(+), 7 deletions(-)

Comments

Jeff Law Aug. 12, 2014, 9:22 p.m. UTC | #1
On 08/06/14 11:19, David Malcolm wrote:
> gcc/
> 	* sel-sched-ir.h (BB_NOTE_LIST): struct sel_region_bb_info_def's
> 	"note_list" field will eventually be an rtx_insn *.  To help with
> 	transition, for now, convert from an access macro into a pair of
> 	functions: BB_NOTE_LIST, returning an rtx_insn *, and...
> 	(SET_BB_NOTE_LIST): New function, for use where BB_NOTE_LIST is
> 	used as an lvalue.
>
> 	* sel-sched.c (create_block_for_bookkeeping): Update lvalue usage
> 	of BB_NOTE_LIST to SET_BB_NOTE_LIST.
>
> 	* sel-sched-ir.c (init_bb): Likewise.
> 	(sel_restore_notes): Likewise.
> 	(move_bb_info): Likewise.
> 	(BB_NOTE_LIST): New function, adding a checked cast to rtx_insn *.
> 	(SET_BB_NOTE_LIST): New function.
>
> /
> 	* rtx-classes-status.txt: Add SET_BB_NOTE_LIST.
OK.
jeff
diff mbox

Patch

diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index 18ffa6c..cb4682f 100644
--- a/gcc/sel-sched-ir.c
+++ b/gcc/sel-sched-ir.c
@@ -4625,7 +4625,7 @@  static void
 init_bb (basic_block bb)
 {
   remove_notes (bb_note (bb), BB_END (bb));
-  BB_NOTE_LIST (bb) = note_list;
+  SET_BB_NOTE_LIST (bb) = note_list;
 }
 
 void
@@ -4660,7 +4660,7 @@  sel_restore_notes (void)
 	{
 	  note_list = BB_NOTE_LIST (first);
 	  restore_other_notes (NULL, first);
-	  BB_NOTE_LIST (first) = NULL_RTX;
+	  SET_BB_NOTE_LIST (first) = NULL_RTX;
 
 	  FOR_BB_INSNS (first, insn)
 	    if (NONDEBUG_INSN_P (insn))
@@ -5268,8 +5268,8 @@  move_bb_info (basic_block merge_bb, basic_block empty_bb)
 {
   if (in_current_region_p (merge_bb))
     concat_note_lists (BB_NOTE_LIST (empty_bb),
-		       &BB_NOTE_LIST (merge_bb));
-  BB_NOTE_LIST (empty_bb) = NULL_RTX;
+		       &SET_BB_NOTE_LIST (merge_bb));
+  SET_BB_NOTE_LIST (empty_bb) = NULL_RTX;
 
 }
 
@@ -6457,4 +6457,15 @@  rtx& SET_VINSN_INSN_RTX (vinsn_t vi)
   return vi->insn_rtx;
 }
 
+rtx_insn *BB_NOTE_LIST (basic_block bb)
+{
+  rtx note_list = SEL_REGION_BB_INFO (bb)->note_list;
+  return as_a_nullable <rtx_insn *> (note_list);
+}
+
+rtx& SET_BB_NOTE_LIST (basic_block bb)
+{
+  return SEL_REGION_BB_INFO (bb)->note_list;
+}
+
 #endif
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 7aef287..81accaf 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -920,7 +920,8 @@  extern vec<sel_region_bb_info_def> sel_region_bb_info;
    A note_list is a list of various notes that was scattered across BB
    before scheduling, and will be appended at the beginning of BB after
    scheduling is finished.  */
-#define BB_NOTE_LIST(BB) (SEL_REGION_BB_INFO (BB)->note_list)
+extern rtx_insn *BB_NOTE_LIST (basic_block);
+extern rtx& SET_BB_NOTE_LIST (basic_block);
 
 #define BB_AV_SET(BB) (SEL_REGION_BB_INFO (BB)->av_set)
 #define BB_AV_LEVEL(BB) (SEL_REGION_BB_INFO (BB)->av_level)
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 1df2da0..c3e0cca 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -4592,8 +4592,8 @@  create_block_for_bookkeeping (edge e1, edge e2)
 
   /* Move note_list from the upper bb.  */
   gcc_assert (BB_NOTE_LIST (new_bb) == NULL_RTX);
-  BB_NOTE_LIST (new_bb) = BB_NOTE_LIST (bb);
-  BB_NOTE_LIST (bb) = NULL_RTX;
+  SET_BB_NOTE_LIST (new_bb) = BB_NOTE_LIST (bb);
+  SET_BB_NOTE_LIST (bb) = NULL_RTX;
 
   gcc_assert (e2->dest == bb);
 
diff --git a/rtx-classes-status.txt b/rtx-classes-status.txt
index fe04611..e77e847 100644
--- a/rtx-classes-status.txt
+++ b/rtx-classes-status.txt
@@ -12,6 +12,7 @@  TODO: "Scaffolding" to be removed
 =================================
 * DF_REF_INSN
 * SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER
+* SET_BB_NOTE_LIST
 * SET_DEP_PRO, SET_DEP_CON
 * SET_NEXT_INSN, SET_PREV_INSN
 * SET_VINSN_INSN_RTX