Remove DEP_PRO/CON scaffolding
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 26 Aug 2014 17:55:26 +0000 (17:55 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Tue, 26 Aug 2014 17:55:26 +0000 (17:55 +0000)
gcc/
* sched-int.h (struct _dep): Strengthen fields "pro" and "con"
from rtx to rtx_insn *.
(DEP_PRO): Delete this function and...
(SET_DEP_PRO): ...this function in favor of...
(DEP_PRO): ...reinstate this macro.
(DEP_CON): Delete this function and...
(SET_DEP_CON): ...this function in favor of...
(DEP_CON): ...reinstate this old macro.
(init_dep_1): Strengthen params 2 and 3 from rtx to rtx_insn *.
(init_dep): Likewise.
(set_priorities): Likewise for both params.
(sd_copy_back_deps): Likewise for params 1 and 2.

* haifa-sched.c (priority): Likewise for param "insn" and local
"next".
(set_priorities): Likewise for params "head" and "tail" and local
"insn".
(process_insn_forw_deps_be_in_spec): Likewise for param "twin" and
local "consumer".
(add_to_speculative_block): Add a checked cast.
(create_check_block_twin): Drop use of SET_DEP_CON.
(add_jump_dependencies): Strengthen params "insn" and "jump" from
rtx to rtx_insn *.

* sched-deps.c (init_dep_1): Likewise for params "pro" and "con".
Drop use of SET_DEP_PRO
(init_dep): Strengthen params "pro" and "con" from rtx to
rtx_insn *.
(sd_copy_back_deps): Likewise for params "to" and "from".  Drop
use of SET_DEP_CON.
(DEP_PRO): Delete.
(DEP_CON): Delete.
(SET_DEP_PRO): Delete.
(SET_DEP_CON): Delete.

/
* rtx-classes-status.txt (TODO): SET_DEP_PRO and SET_DEP_CON are
done.

From-SVN: r214530

ChangeLog
gcc/ChangeLog
gcc/haifa-sched.c
gcc/sched-deps.c
gcc/sched-int.h
rtx-classes-status.txt

index 4c3e1f1480415d0d1a590b27c72e6fdbf0dab0c9..f61851f1819573e708de5fd73b34998d80aa3627 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-26  David Malcolm  <dmalcolm@redhat.com>
+
+       * rtx-classes-status.txt (TODO): SET_DEP_PRO and SET_DEP_CON are
+       done.
+
 2014-08-26  David Malcolm  <dmalcolm@redhat.com>
 
        * rtx-classes-status.txt (TODO): Remove SET_VINSN_INSN_RTX.
index 02220a122fd1c98b2b98d7e233fbce46b45fb2b3..f6fbdb788da92319190710f2f8a2f3f08641969b 100644 (file)
@@ -1,3 +1,40 @@
+2014-08-26  David Malcolm  <dmalcolm@redhat.com>
+
+       * sched-int.h (struct _dep): Strengthen fields "pro" and "con"
+       from rtx to rtx_insn *.
+       (DEP_PRO): Delete this function and...
+       (SET_DEP_PRO): ...this function in favor of...
+       (DEP_PRO): ...reinstate this macro.
+       (DEP_CON): Delete this function and...
+       (SET_DEP_CON): ...this function in favor of...
+       (DEP_CON): ...reinstate this old macro.
+       (init_dep_1): Strengthen params 2 and 3 from rtx to rtx_insn *.
+       (init_dep): Likewise.
+       (set_priorities): Likewise for both params.
+       (sd_copy_back_deps): Likewise for params 1 and 2.
+
+       * haifa-sched.c (priority): Likewise for param "insn" and local
+       "next".
+       (set_priorities): Likewise for params "head" and "tail" and local
+       "insn".
+       (process_insn_forw_deps_be_in_spec): Likewise for param "twin" and
+       local "consumer".
+       (add_to_speculative_block): Add a checked cast.
+       (create_check_block_twin): Drop use of SET_DEP_CON.
+       (add_jump_dependencies): Strengthen params "insn" and "jump" from
+       rtx to rtx_insn *.
+
+       * sched-deps.c (init_dep_1): Likewise for params "pro" and "con".
+       Drop use of SET_DEP_PRO
+       (init_dep): Strengthen params "pro" and "con" from rtx to
+       rtx_insn *.
+       (sd_copy_back_deps): Likewise for params "to" and "from".  Drop
+       use of SET_DEP_CON.
+       (DEP_PRO): Delete.
+       (DEP_CON): Delete.
+       (SET_DEP_PRO): Delete.
+       (SET_DEP_CON): Delete.
+
 2014-08-26  David Malcolm  <dmalcolm@redhat.com>
 
        * sel-sched-ir.h (struct vinsn_def): Strengthen field "insn_rtx"
index 4ff2b78ee28a0acd7c75c8a41903f7331176dda8..5a64f8103c338c3e6cc2bb66bcc539e829ee3879 100644 (file)
@@ -826,7 +826,7 @@ add_delay_dependencies (rtx_insn *insn)
 \f
 /* Forward declarations.  */
 
-static int priority (rtx);
+static int priority (rtx_insn *);
 static int rank_for_schedule (const void *, const void *);
 static void swap_sort (rtx_insn **, int);
 static void queue_insn (rtx_insn *, int, const char *);
@@ -875,7 +875,7 @@ static void extend_h_i_d (void);
 static void init_h_i_d (rtx);
 static int haifa_speculate_insn (rtx, ds_t, rtx *);
 static void generate_recovery_code (rtx_insn *);
-static void process_insn_forw_deps_be_in_spec (rtx, rtx, ds_t);
+static void process_insn_forw_deps_be_in_spec (rtx, rtx_insn *, ds_t);
 static void begin_speculative_block (rtx_insn *);
 static void add_to_speculative_block (rtx_insn *);
 static void init_before_recovery (basic_block *);
@@ -890,7 +890,7 @@ static void move_succs (vec<edge, va_gc> **, basic_block);
 static void sched_remove_insn (rtx_insn *);
 static void clear_priorities (rtx_insn *, rtx_vec_t *);
 static void calc_priorities (rtx_vec_t);
-static void add_jump_dependencies (rtx, rtx);
+static void add_jump_dependencies (rtx_insn *, rtx_insn *);
 
 #endif /* INSN_SCHEDULING */
 \f
@@ -1582,7 +1582,7 @@ dep_list_size (rtx insn, sd_list_types_def list)
 
 /* Compute the priority number for INSN.  */
 static int
-priority (rtx insn)
+priority (rtx_insn *insn)
 {
   if (! INSN_P (insn))
     return 0;
@@ -1631,7 +1631,7 @@ priority (rtx insn)
 
              FOR_EACH_DEP (twin, SD_LIST_FORW, sd_it, dep)
                {
-                 rtx next;
+                 rtx_insn *next;
                  int next_priority;
 
                  next = DEP_CON (dep);
@@ -6622,9 +6622,9 @@ schedule_block (basic_block *target_bb, state_t init_state)
 /* Set_priorities: compute priority of each insn in the block.  */
 
 int
-set_priorities (rtx head, rtx tail)
+set_priorities (rtx_insn *head, rtx_insn *tail)
 {
-  rtx insn;
+  rtx_insn *insn;
   int n_insn;
   int sched_max_insns_priority =
        current_sched_info->sched_max_insns_priority;
@@ -7342,7 +7342,7 @@ generate_recovery_code (rtx_insn *insn)
    Tries to add speculative dependencies of type FS between instructions
    in deps_list L and TWIN.  */
 static void
-process_insn_forw_deps_be_in_spec (rtx insn, rtx twin, ds_t fs)
+process_insn_forw_deps_be_in_spec (rtx insn, rtx_insn *twin, ds_t fs)
 {
   sd_iterator_def sd_it;
   dep_t dep;
@@ -7350,7 +7350,7 @@ process_insn_forw_deps_be_in_spec (rtx insn, rtx twin, ds_t fs)
   FOR_EACH_DEP (insn, SD_LIST_FORW, sd_it, dep)
     {
       ds_t ds;
-      rtx consumer;
+      rtx_insn *consumer;
 
       consumer = DEP_CON (dep);
 
@@ -7540,7 +7540,7 @@ add_to_speculative_block (rtx_insn *insn)
       {
        dep_def _new_dep, *new_dep = &_new_dep;
 
-       init_dep (new_dep, insn, twin, REG_DEP_OUTPUT);
+       init_dep (new_dep, insn, as_a <rtx_insn *> (twin), REG_DEP_OUTPUT);
        sd_add_dep (new_dep, false);
       }
 
@@ -7950,7 +7950,7 @@ create_check_block_twin (rtx_insn *insn, bool mutate_p)
 
       if (rec != EXIT_BLOCK_PTR_FOR_FN (cfun))
        {
-         SET_DEP_CON (new_dep) = twin;
+         DEP_CON (new_dep) = twin;
          sd_add_dep (new_dep, false);
        }
     }
@@ -8429,7 +8429,7 @@ calc_priorities (rtx_vec_t roots)
 /* Add dependences between JUMP and other instructions in the recovery
    block.  INSN is the first insn the recovery block.  */
 static void
-add_jump_dependencies (rtx insn, rtx jump)
+add_jump_dependencies (rtx_insn *insn, rtx_insn *jump)
 {
   do
     {
index 58196f7282e0e6f8179bea70c4009a861342f7da..3602c0f9688799cda7839f167bbd5ce64d3634e9 100644 (file)
@@ -101,10 +101,10 @@ dk_to_ds (enum reg_note dk)
 
 /* Init DEP with the arguments.  */
 void
-init_dep_1 (dep_t dep, rtx pro, rtx con, enum reg_note type, ds_t ds)
+init_dep_1 (dep_t dep, rtx_insn *pro, rtx_insn *con, enum reg_note type, ds_t ds)
 {
-  SET_DEP_PRO (dep) = pro;
-  SET_DEP_CON (dep) = con;
+  DEP_PRO (dep) = pro;
+  DEP_CON (dep) = con;
   DEP_TYPE (dep) = type;
   DEP_STATUS (dep) = ds;
   DEP_COST (dep) = UNKNOWN_DEP_COST;
@@ -117,7 +117,7 @@ init_dep_1 (dep_t dep, rtx pro, rtx con, enum reg_note type, ds_t ds)
    While most of the scheduler (including targets) only need the major type
    of the dependency, it is convenient to hide full dep_status from them.  */
 void
-init_dep (dep_t dep, rtx pro, rtx con, enum reg_note kind)
+init_dep (dep_t dep, rtx_insn *pro, rtx_insn *con, enum reg_note kind)
 {
   ds_t ds;
 
@@ -1403,7 +1403,7 @@ sd_unresolve_dep (sd_iterator_def sd_it)
 /* Make TO depend on all the FROM's producers.
    If RESOLVED_P is true add dependencies to the resolved lists.  */
 void
-sd_copy_back_deps (rtx to, rtx from, bool resolved_p)
+sd_copy_back_deps (rtx_insn *to, rtx_insn *from, bool resolved_p)
 {
   sd_list_types_def list_type;
   sd_iterator_def sd_it;
@@ -1416,7 +1416,7 @@ sd_copy_back_deps (rtx to, rtx from, bool resolved_p)
       dep_def _new_dep, *new_dep = &_new_dep;
 
       copy_dep (new_dep, dep);
-      SET_DEP_CON (new_dep) = to;
+      DEP_CON (new_dep) = to;
       sd_add_dep (new_dep, resolved_p);
     }
 }
@@ -4922,24 +4922,4 @@ find_modifiable_mems (rtx_insn *head, rtx_insn *tail)
             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 7ac0c8e20af3c334ab5a99b365fd6f23e89285f1..e7d93ffd524f824d50f567fdc164378c362949bf 100644 (file)
@@ -218,10 +218,10 @@ struct dep_replacement
 struct _dep
 {
   /* Producer.  */
-  rtx pro;
+  rtx_insn *pro;
 
   /* Consumer.  */
-  rtx con;
+  rtx_insn *con;
 
   /* If nonnull, holds a pointer to information about how to break the
      dependency by making a replacement in one of the insns.  There is
@@ -250,10 +250,8 @@ struct _dep
 typedef struct _dep dep_def;
 typedef dep_def *dep_t;
 
-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_PRO(D) ((D)->pro)
+#define DEP_CON(D) ((D)->con)
 #define DEP_TYPE(D) ((D)->type)
 #define DEP_STATUS(D) ((D)->status)
 #define DEP_COST(D) ((D)->cost)
@@ -263,8 +261,8 @@ extern rtx& SET_DEP_CON (dep_t dep);
 
 /* Functions to work with dep.  */
 
-extern void init_dep_1 (dep_t, rtx, rtx, enum reg_note, ds_t);
-extern void init_dep (dep_t, rtx, rtx, enum reg_note);
+extern void init_dep_1 (dep_t, rtx_insn *, rtx_insn *, enum reg_note, ds_t);
+extern void init_dep (dep_t, rtx_insn *, rtx_insn *, enum reg_note);
 
 extern void sd_debug_dep (dep_t);
 
@@ -1349,7 +1347,7 @@ extern int no_real_insns_p (const_rtx, const_rtx);
 extern int insn_cost (rtx);
 extern int dep_cost_1 (dep_t, dw_t);
 extern int dep_cost (dep_t);
-extern int set_priorities (rtx, rtx);
+extern int set_priorities (rtx_insn *, rtx_insn *);
 
 extern void sched_setup_bb_reg_pressure_info (basic_block, rtx);
 extern bool schedule_block (basic_block *, state_t);
@@ -1615,7 +1613,7 @@ extern void sd_add_dep (dep_t, bool);
 extern enum DEPS_ADJUST_RESULT sd_add_or_update_dep (dep_t, bool);
 extern void sd_resolve_dep (sd_iterator_def);
 extern void sd_unresolve_dep (sd_iterator_def);
-extern void sd_copy_back_deps (rtx, rtx, bool);
+extern void sd_copy_back_deps (rtx_insn *, rtx_insn *, bool);
 extern void sd_delete_dep (sd_iterator_def);
 extern void sd_debug_lists (rtx, sd_list_types_def);
 
index 3d59a8cfc78a42ee6762bb6d9ee3104df0823d0e..bcdb1878eadda4b47f4cadf34d0c25b52ed7ccbd 100644 (file)
@@ -16,5 +16,4 @@ TODO: "Scaffolding" to be removed
 =================================
 * DF_REF_INSN
 * SET_BB_HEAD, SET_BB_END, SET_BB_HEADER
-* SET_DEP_PRO, SET_DEP_CON
 * SET_NEXT_INSN, SET_PREV_INSN