diff mbox

[013/236] DEP_PRO/DEP_CON scaffolding

Message ID 1408462401.2473.79.camel@surprise
State New
Headers show

Commit Message

David Malcolm Aug. 19, 2014, 3:33 p.m. UTC
On Tue, 2014-08-12 at 15:21 -0600, Jeff Law wrote:
> On 08/06/14 11:19, David Malcolm wrote:
> > For now, convert DEP_PRO and DEP_CON into functions.  We will eventually
> > change them back to macros once the relevant fields are of type
> > rtx_insn *.
> >
> > gcc/
> > 	* sched-int.h (DEP_PRO): struct _dep's "pro" and "con" fields will
> > 	eventually be rtx_insn *, but to help with transition, for now,
> > 	convert from an access macro into a pair of functions: DEP_PRO
> > 	returning an rtx_insn * and...
> > 	(SET_DEP_PRO): New function, for use where DEP_PRO is used as an
> > 	lvalue, returning an rtx&.
> > 	(DEP_CON): Analogous changes to DEP_PRO above.
> > 	(SET_DEP_CON): Likewise.
> >
> > 	* haifa-sched.c (create_check_block_twin): Replace DEP_CON used as
> > 	an lvalue to SET_DEP_CON.
> > 	* sched-deps.c (init_dep_1): Likewise for DEP_PRO and DEP_CON.
> > 	(sd_copy_back_deps): Likewise for DEP_CON.
> > 	(DEP_PRO): New function, adding a checked cast for now.
> > 	(DEP_CON): Likewise.
> > 	(SET_DEP_PRO): New function.
> > 	(SET_DEP_CON): Likewise.
> OK.

Thanks.

Fixed up the two as_a_nullable to safe_as_a, and committed to trunk as
r214164, 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 function becomes macros again in patch #175.
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 214163)
+++ ChangeLog	(revision 214164)
@@ -1,5 +1,9 @@ 
 2014-08-19  David Malcolm  <dmalcolm@redhat.com>
 
+	* rtx-classes-status.txt (TODO): Add SET_DEP_PRO, SET_DEP_CON.
+
+2014-08-19  David Malcolm  <dmalcolm@redhat.com>
+
 	* rtx-classes-status.txt (TODO): Add DF_REF_INSN.
 
 2014-08-19  Joost VandeVondele <vondele@gcc.gnu.org>
Index: rtx-classes-status.txt
===================================================================
--- rtx-classes-status.txt	(revision 214163)
+++ rtx-classes-status.txt	(revision 214164)
@@ -16,4 +16,5 @@ 
 =================================
 * DF_REF_INSN
 * SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER
+* SET_DEP_PRO, SET_DEP_CON
 * SET_NEXT_INSN, SET_PREV_INSN
Index: gcc/ChangeLog
===================================================================
--- gcc/ChangeLog	(revision 214163)
+++ gcc/ChangeLog	(revision 214164)
@@ -1,3 +1,23 @@ 
+2014-08-19  David Malcolm  <dmalcolm@redhat.com>
+
+	* sched-int.h (DEP_PRO): struct _dep's "pro" and "con" fields will
+	eventually be rtx_insn *, but to help with transition, for now,
+	convert from an access macro into a pair of functions: DEP_PRO
+	returning an rtx_insn * and...
+	(SET_DEP_PRO): New function, for use where DEP_PRO is used as an
+	lvalue, returning an rtx&.
+	(DEP_CON): Analogous changes to DEP_PRO above.
+	(SET_DEP_CON): Likewise.
+
+	* haifa-sched.c (create_check_block_twin): Replace DEP_CON used as
+	an lvalue to SET_DEP_CON.
+	* sched-deps.c (init_dep_1): Likewise for DEP_PRO and DEP_CON.
+	(sd_copy_back_deps): Likewise for DEP_CON.
+	(DEP_PRO): New function, adding a checked cast for now.
+	(DEP_CON): Likewise.
+	(SET_DEP_PRO): New function.
+	(SET_DEP_CON): Likewise.
+
 2014-08-19  Yaakov Selkowitz  <yselkowi@redhat.com>
 
 	* config.gcc (*-*-cygwin*): Use __cxa_atexit by default.
Index: gcc/haifa-sched.c
===================================================================
--- gcc/haifa-sched.c	(revision 214163)
+++ gcc/haifa-sched.c	(revision 214164)
@@ -7947,7 +7947,7 @@ 
 
       if (rec != EXIT_BLOCK_PTR_FOR_FN (cfun))
 	{
-	  DEP_CON (new_dep) = twin;
+	  SET_DEP_CON (new_dep) = twin;
 	  sd_add_dep (new_dep, false);
 	}
     }
Index: gcc/sched-deps.c
===================================================================
--- gcc/sched-deps.c	(revision 214163)
+++ gcc/sched-deps.c	(revision 214164)
@@ -103,8 +103,8 @@ 
 void
 init_dep_1 (dep_t dep, rtx pro, rtx con, enum reg_note type, ds_t ds)
 {
-  DEP_PRO (dep) = pro;
-  DEP_CON (dep) = con;
+  SET_DEP_PRO (dep) = pro;
+  SET_DEP_CON (dep) = con;
   DEP_TYPE (dep) = type;
   DEP_STATUS (dep) = ds;
   DEP_COST (dep) = UNKNOWN_DEP_COST;
@@ -1416,7 +1416,7 @@ 
       dep_def _new_dep, *new_dep = &_new_dep;
 
       copy_dep (new_dep, dep);
-      DEP_CON (new_dep) = to;
+      SET_DEP_CON (new_dep) = to;
       sd_add_dep (new_dep, resolved_p);
     }
 }
@@ -4915,4 +4915,24 @@ 
 	     success_in_block);
 }
 
+rtx_insn *DEP_PRO (dep_t dep)
+{
+  return safe_as_a <rtx_insn *> (dep->pro);
+}
+
+rtx_insn *DEP_CON (dep_t dep)
+{
+  return safe_as_a <rtx_insn *> (dep->con);
+}
+
+rtx& SET_DEP_PRO (dep_t dep)
+{
+  return dep->pro;
+}
+
+rtx& SET_DEP_CON (dep_t dep)
+{
+  return dep->con;
+}
+
 #endif /* INSN_SCHEDULING */
Index: gcc/sched-int.h
===================================================================
--- gcc/sched-int.h	(revision 214163)
+++ gcc/sched-int.h	(revision 214164)
@@ -250,8 +250,10 @@ 
 typedef struct _dep dep_def;
 typedef dep_def *dep_t;
 
-#define DEP_PRO(D) ((D)->pro)
-#define DEP_CON(D) ((D)->con)
+extern rtx_insn *DEP_PRO (dep_t dep);
+extern rtx_insn *DEP_CON (dep_t dep);
+extern rtx& SET_DEP_PRO (dep_t dep);
+extern rtx& SET_DEP_CON (dep_t dep);
 #define DEP_TYPE(D) ((D)->type)
 #define DEP_STATUS(D) ((D)->status)
 #define DEP_COST(D) ((D)->cost)