On Tue, 2014-08-12 at 15:22 -0600, Jeff Law wrote:
> 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.
Thanks.

Fixed up the as_a_nullable to safe_as_a, and committed to trunk as
r214167, having verified bootstrap&regrtest on x86_64-unknown-linux-gnu
(Fedora 20) albeit in combination with patches 9-29 [1], and verified
that it builds standalone with 9 targets.

Am attaching what I committed.

FWIW these functions becomes a macro again in patch #170.


Dave

[1] as per https://gcc.gnu.org/ml/gcc-patches/2014-08/msg01420.html

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 214166)
+++ ChangeLog	(revision 214167)
@@ -1,5 +1,9 @@
 2014-08-19  David Malcolm  <dmalc...@redhat.com>
 
+	* rtx-classes-status.txt (TODO): Add SET_BB_NOTE_LIST.
+
+2014-08-19  David Malcolm  <dmalc...@redhat.com>
+
 	* rtx-classes-status.txt (TODO): Add SET_VINSN_INSN_RTX.
 
 2014-08-19  David Malcolm  <dmalc...@redhat.com>
Index: rtx-classes-status.txt
===================================================================
--- rtx-classes-status.txt	(revision 214166)
+++ rtx-classes-status.txt	(revision 214167)
@@ -16,6 +16,7 @@
 =================================
 * 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
Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog	(revision 214166)
+++ gcc/ChangeLog	(revision 214167)
@@ -1,5 +1,23 @@
 2014-08-19  David Malcolm  <dmalc...@redhat.com>
 
+	* 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.
+
+2014-08-19  David Malcolm  <dmalc...@redhat.com>
+
 	* sel-sched-ir.h (VINSN_INSN_RTX): struct vinsn_def's "insn_rtx"
 	field will eventually be an rtx_insn *.  To help with transition,
 	for now, convert from an access macro into a pair of functions:
Index: gcc/sel-sched.c
===================================================================
--- gcc/sel-sched.c	(revision 214166)
+++ gcc/sel-sched.c	(revision 214167)
@@ -4585,8 +4585,8 @@
 
   /* 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);
 
Index: gcc/sel-sched-ir.c
===================================================================
--- gcc/sel-sched-ir.c	(revision 214166)
+++ gcc/sel-sched-ir.c	(revision 214167)
@@ -4620,7 +4620,7 @@
 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
@@ -4655,7 +4655,7 @@
 	{
 	  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))
@@ -5263,8 +5263,8 @@
 {
   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;
 
 }
 
@@ -6452,4 +6452,15 @@
   return vi->insn_rtx;
 }
 
+rtx_insn *BB_NOTE_LIST (basic_block bb)
+{
+  rtx note_list = SEL_REGION_BB_INFO (bb)->note_list;
+  return safe_as_a <rtx_insn *> (note_list);
+}
+
+rtx& SET_BB_NOTE_LIST (basic_block bb)
+{
+  return SEL_REGION_BB_INFO (bb)->note_list;
+}
+
 #endif
Index: gcc/sel-sched-ir.h
===================================================================
--- gcc/sel-sched-ir.h	(revision 214166)
+++ gcc/sel-sched-ir.h	(revision 214167)
@@ -920,7 +920,8 @@
    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)

Reply via email to