haifa-sched.c: make twins a auto_vec<rtx_insn *>
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>
Thu, 28 Jul 2016 11:01:39 +0000 (11:01 +0000)
committerTrevor Saunders <tbsaunde@gcc.gnu.org>
Thu, 28 Jul 2016 11:01:39 +0000 (11:01 +0000)
gcc/ChangeLog:

2016-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

* haifa-sched.c (add_to_speculative_block): Make twins a vector.

From-SVN: r238813

gcc/ChangeLog
gcc/haifa-sched.c

index f8c9d175e779a234a324dc0f82e766fb725fb0d0..41549962c141ee70505ae46ed215fe95a8d9f051 100644 (file)
@@ -1,3 +1,7 @@
+2016-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
+
+       * haifa-sched.c (add_to_speculative_block): Make twins a vector.
+
 2016-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
 
        * store-motion.c (struct st_expr): Make pattern_regs a vector.
index 95035762915ae8aa31ea5e9051b04b3401d093ab..93b7089f710e80dd45ebe04c8b45f5296ffba91c 100644 (file)
@@ -7991,7 +7991,7 @@ add_to_speculative_block (rtx_insn *insn)
   ds_t ts;
   sd_iterator_def sd_it;
   dep_t dep;
-  rtx_insn_list *twins = NULL;
+  auto_vec<rtx_insn *, 10> twins;
 
   ts = TODO_SPEC (insn);
   gcc_assert (!(ts & ~BE_IN_SPEC));
@@ -8060,7 +8060,7 @@ add_to_speculative_block (rtx_insn *insn)
         fprintf (spec_info->dump, ";;\t\tGenerated twin insn : %d/rec%d\n",
                  INSN_UID (twin), rec->index);
 
-      twins = alloc_INSN_LIST (twin, twins);
+      twins.safe_push (twin);
 
       /* Add dependences between TWIN and all appropriate
         instructions from REC.  */
@@ -8099,23 +8099,14 @@ add_to_speculative_block (rtx_insn *insn)
 
   /* We couldn't have added the dependencies between INSN and TWINS earlier
      because that would make TWINS appear in the INSN_BACK_DEPS (INSN).  */
-  while (twins)
+  unsigned int i;
+  rtx_insn *twin;
+  FOR_EACH_VEC_ELT_REVERSE (twins, i, twin)
     {
-      rtx_insn *twin;
-      rtx_insn_list *next_node;
-
-      twin = twins->insn ();
-
-      {
-       dep_def _new_dep, *new_dep = &_new_dep;
+      dep_def _new_dep, *new_dep = &_new_dep;
 
-       init_dep (new_dep, insn, twin, REG_DEP_OUTPUT);
-       sd_add_dep (new_dep, false);
-      }
-
-      next_node = twins->next ();
-      free_INSN_LIST_node (twins);
-      twins = next_node;
+      init_dep (new_dep, insn, twin, REG_DEP_OUTPUT);
+      sd_add_dep (new_dep, false);
     }
 
   calc_priorities (priorities_roots);