Patchwork VEC re-write [patch 13/25]

login
register
mail settings
Submitter Diego Novillo
Date Nov. 15, 2012, 9:53 p.m.
Message ID <20121115215356.D83B0C0916@torture.tor.corp.google.com>
Download mbox | patch
Permalink /patch/199432/
State New
Headers show

Comments

Diego Novillo - Nov. 15, 2012, 9:53 p.m.
2012-11-15  Diego Novillo  <dnovillo@google.com>

	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)

	* config/c6x/c6x.c: Use new vec API in vec.h.

Patch

diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
index 32807d8..175e119 100644
--- a/gcc/config/c6x/c6x.c
+++ b/gcc/config/c6x/c6x.c
@@ -119,14 +119,12 @@  typedef struct
   unsigned int unit_mask;
 } c6x_sched_insn_info;
 
-DEF_VEC_O(c6x_sched_insn_info);
-DEF_VEC_ALLOC_O(c6x_sched_insn_info, heap);
 
 /* Record a c6x_sched_insn_info structure for every insn in the function.  */
-static VEC(c6x_sched_insn_info, heap) *insn_info;
+static vec<c6x_sched_insn_info> insn_info;
 
-#define INSN_INFO_LENGTH (VEC_length (c6x_sched_insn_info, insn_info))
-#define INSN_INFO_ENTRY(N) (VEC_index (c6x_sched_insn_info, insn_info, (N)))
+#define INSN_INFO_LENGTH (insn_info).length ()
+#define INSN_INFO_ENTRY(N) (insn_info[(N)])
 
 static bool done_cfi_sections;
 
@@ -1971,7 +1969,7 @@  c6x_get_unit_specifier (rtx insn)
 {
   enum attr_units units;
 
-  if (insn_info)
+  if (insn_info.exists ())
     {
       int unit = INSN_INFO_ENTRY (INSN_UID (insn)).reservation;
       return c6x_unit_names[unit][0];
@@ -2023,7 +2021,7 @@  c6x_print_unit_specifier_field (FILE *file, rtx insn)
       return;
     }
 
-  if (insn_info)
+  if (insn_info.exists ())
     {
       int unit = INSN_INFO_ENTRY (INSN_UID (insn)).reservation;
       fputs (".", file);
@@ -3422,7 +3420,7 @@  try_rename_operands (rtx head, rtx tail, unit_req_table reqs, rtx insn,
   int i;
   unsigned tmp_mask;
   int best_reg, old_reg;
-  VEC (du_head_p, heap) *involved_chains = NULL;
+  vec<du_head_p> involved_chains = vec<du_head_p>();
   unit_req_table new_reqs;
 
   for (i = 0, tmp_mask = op_mask; tmp_mask; i++)
@@ -3433,14 +3431,14 @@  try_rename_operands (rtx head, rtx tail, unit_req_table reqs, rtx insn,
       if (info->op_info[i].n_chains != 1)
 	goto out_fail;
       op_chain = regrename_chain_from_id (info->op_info[i].heads[0]->id);
-      VEC_safe_push (du_head_p, heap, involved_chains, op_chain);
+      involved_chains.safe_push (op_chain);
       tmp_mask &= ~(1 << i);
     }
 
-  if (VEC_length (du_head_p, involved_chains) > 1)
+  if (involved_chains.length () > 1)
     goto out_fail;
 
-  this_head = VEC_index (du_head_p, involved_chains, 0);
+  this_head = involved_chains[0];
   if (this_head->cannot_rename)
     goto out_fail;
 
@@ -3448,8 +3446,7 @@  try_rename_operands (rtx head, rtx tail, unit_req_table reqs, rtx insn,
     {
       unsigned int mask1, mask2, mask_changed;
       int count, side1, side2, req1, req2;
-      insn_rr_info *this_rr = &VEC_index (insn_rr_info, insn_rr,
-					  INSN_UID (chain->insn));
+      insn_rr_info *this_rr = &insn_rr[INSN_UID (chain->insn)];
 
       count = get_unit_reqs (chain->insn, &req1, &side1, &req2, &side2);
 
@@ -3508,7 +3505,7 @@  try_rename_operands (rtx head, rtx tail, unit_req_table reqs, rtx insn,
     memcpy (reqs, new_reqs, sizeof (unit_req_table));
 
  out_fail:
-  VEC_free (du_head_p, heap, involved_chains);
+  involved_chains.release ();
 }
 
 /* Find insns in LOOP which would, if shifted to the other side
@@ -3555,7 +3552,7 @@  reshuffle_units (basic_block loop)
       if (!get_unit_operand_masks (insn, &mask1, &mask2))
 	continue;
 
-      info = &VEC_index (insn_rr_info, insn_rr, INSN_UID (insn));
+      info = &insn_rr[INSN_UID (insn)];
       if (info->op_info == NULL)
 	continue;
 
@@ -3707,7 +3704,7 @@  insn_set_clock (rtx insn, int cycle)
   unsigned uid = INSN_UID (insn);
 
   if (uid >= INSN_INFO_LENGTH)
-    VEC_safe_grow (c6x_sched_insn_info, heap, insn_info, uid * 5 / 4 + 10);
+    insn_info.safe_grow (uid * 5 / 4 + 10);
 
   INSN_INFO_ENTRY (uid).clock = cycle;
   INSN_INFO_ENTRY (uid).new_cond = NULL;
@@ -4361,7 +4358,7 @@  c6x_variable_issue (FILE *dump ATTRIBUTE_UNUSED,
     ss.last_scheduled_iter0 = insn;
   if (GET_CODE (PATTERN (insn)) != USE && GET_CODE (PATTERN (insn)) != CLOBBER)
     ss.issued_this_cycle++;
-  if (insn_info)
+  if (insn_info.exists ())
     {
       state_t st_after = alloca (dfa_state_size);
       int curr_clock = ss.curr_sched_clock;
@@ -5537,7 +5534,7 @@  hwloop_optimize (hwloop_info loop)
   gcc_assert (loop->incoming_dest == loop->head);
 
   entry_edge = NULL;
-  FOR_EACH_VEC_ELT (edge, loop->incoming, i, entry_edge)
+  FOR_EACH_VEC_SAFE_ELT (loop->incoming, i, entry_edge)
     if (entry_edge->flags & EDGE_FALLTHRU)
       break;
   if (entry_edge == NULL)
@@ -5777,7 +5774,7 @@  hwloop_optimize (hwloop_info loop)
 
   seq = get_insns ();
 
-  if (!single_succ_p (entry_bb) || VEC_length (edge, loop->incoming) > 1)
+  if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1)
     {
       basic_block new_bb;
       edge e;
@@ -5809,7 +5806,7 @@  hwloop_optimize (hwloop_info loop)
   end_sequence ();
 
   /* Make sure we don't try to schedule this loop again.  */
-  for (ix = 0; VEC_iterate (basic_block, loop->blocks, ix, bb); ix++)
+  for (ix = 0; loop->blocks.iterate (ix, &bb); ix++)
     bb->flags |= BB_DISABLE_SCHEDULE;
 
   return true;
@@ -5928,7 +5925,7 @@  c6x_reorg (void)
     {
       int sz = get_max_uid () * 3 / 2 + 1;
 
-      insn_info = VEC_alloc (c6x_sched_insn_info, heap, sz);
+      insn_info.create (sz);
     }
 
   /* Make sure the real-jump insns we create are not deleted.  When modulo-
@@ -5993,9 +5990,7 @@  c6x_function_end (FILE *file, const char *fname)
 {
   c6x_output_fn_unwind (file);
 
-  if (insn_info)
-    VEC_free (c6x_sched_insn_info, heap, insn_info);
-  insn_info = NULL;
+  insn_info.release ();
 
   if (!flag_inhibit_size_directive)
     ASM_OUTPUT_MEASURED_SIZE (file, fname);