cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.
authorSteven Bosscher <steven@gcc.gnu.org>
Mon, 4 Apr 2011 18:24:05 +0000 (18:24 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Mon, 4 Apr 2011 18:24:05 +0000 (18:24 +0000)
* cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.
(gcse_obstack): Renamed to cprop_obstack.
(GNEW, GNEWVEC, GNEWVAR): Remove.
(gmalloc): Remove.
(alloc_hash_table): Use XNEWVAR instead of GNEWVAR.
(GOBNEW, GOBNEWVAR): Adjust for gcse_obstack renaming.
(gcse_alloc): Likewise, and rename to cprop_alloc.
(alloc_gcse_men, free_gcse_mem): Remove.
(gcse_constant_p): Rename to cprop_constant_p, and adjust all callers.
(compute_hash_table_work): Allocate and free reg_set_bitmap here.
(one_cprop_pass): Likewise. Adjust for gcse_obstack renaming.

From-SVN: r171945

gcc/ChangeLog
gcc/cprop.c

index f43c0d97bb26231966bdc56e107a25781af5f49f..aa99741384a79810e1f3cf4df9954642db536d1c 100644 (file)
@@ -1,5 +1,17 @@
 2011-04-04  Steven Bosscher  <steven@gcc.gnu.org>
 
+       * cprop.c: s/gcse/cprop/ everywhere except for flag_gcse.
+       (gcse_obstack): Renamed to cprop_obstack.
+       (GNEW, GNEWVEC, GNEWVAR): Remove.
+       (gmalloc): Remove.
+       (alloc_hash_table): Use XNEWVAR instead of GNEWVAR.
+       (GOBNEW, GOBNEWVAR): Adjust for gcse_obstack renaming.
+       (gcse_alloc): Likewise, and rename to cprop_alloc.
+       (alloc_gcse_men, free_gcse_mem): Remove.
+       (gcse_constant_p): Rename to cprop_constant_p, and adjust all callers.
+       (compute_hash_table_work): Allocate and free reg_set_bitmap here.
+       (one_cprop_pass): Likewise. Adjust for gcse_obstack renaming.
+
        * cprop.c (oprs_not_set_p): Remove.
        (mark_set, mark_clobber): Remove.
        (mark_oprs_set): Rewrite using DF_INSN_INFO_DEFS cache.
index b48f7f8900cfc4c7b9cd80ce713367c4bbe04c84..3f38be35da00cf8cee40b3bdb42808b1d701bd19 100644 (file)
@@ -51,7 +51,7 @@ along with GCC; see the file COPYING3.  If not see
 
 \f
 /* An obstack for our working variables.  */
-static struct obstack gcse_obstack;
+static struct obstack cprop_obstack;
 
 struct reg_use {rtx reg_rtx; };
 
@@ -138,49 +138,16 @@ static int global_const_prop_count;
 static int global_copy_prop_count;
 \f
 
-#define GNEW(T)                        ((T *) gmalloc (sizeof (T)))
-
-#define GNEWVEC(T, N)          ((T *) gmalloc (sizeof (T) * (N)))
-
-#define GNEWVAR(T, S)          ((T *) gmalloc ((S)))
-
-#define GOBNEW(T)              ((T *) gcse_alloc (sizeof (T)))
-#define GOBNEWVAR(T, S)                ((T *) gcse_alloc ((S)))
-\f
-/* Cover function to xmalloc to record bytes allocated.  */
-
-static void *
-gmalloc (size_t size)
-{
-  bytes_used += size;
-  return xmalloc (size);
-}
+#define GOBNEW(T)              ((T *) cprop_alloc (sizeof (T)))
+#define GOBNEWVAR(T, S)                ((T *) cprop_alloc ((S)))
 
 /* Cover function to obstack_alloc.  */
 
 static void *
-gcse_alloc (unsigned long size)
+cprop_alloc (unsigned long size)
 {
   bytes_used += size;
-  return obstack_alloc (&gcse_obstack, size);
-}
-
-/* Allocate memory for the reg/memory set tracking tables.
-   This is called at the start of each pass.  */
-
-static void
-alloc_gcse_mem (void)
-{
-  /* Allocate vars to track sets of regs.  */
-  reg_set_bitmap = ALLOC_REG_SET (NULL);
-}
-
-/* Free memory allocated by alloc_gcse_mem.  */
-
-static void
-free_gcse_mem (void)
-{
-  FREE_REG_SET (reg_set_bitmap);
+  return obstack_alloc (&cprop_obstack, size);
 }
 \f
 /* Return nonzero if register X is unchanged from INSN to the end
@@ -292,7 +259,7 @@ insert_set_in_table (rtx x, rtx insn, struct hash_table_d *table)
    is sharable.  */
 
 static bool
-gcse_constant_p (const_rtx x)
+cprop_constant_p (const_rtx x)
 {
   return CONSTANT_P (x) && (GET_CODE (x) != CONST || shared_const_p (x));
 }
@@ -328,7 +295,7 @@ hash_scan_set (rtx pat, rtx insn, struct hash_table_d *table)
       if (note != 0
          && REG_NOTE_KIND (note) == REG_EQUAL
          && !REG_P (src)
-         && gcse_constant_p (XEXP (note, 0)))
+         && cprop_constant_p (XEXP (note, 0)))
        src = XEXP (note, 0), pat = gen_rtx_SET (VOIDmode, dest, src);
 
       /* Record sets for constant/copy propagation.  */
@@ -336,7 +303,7 @@ hash_scan_set (rtx pat, rtx insn, struct hash_table_d *table)
           && src != dest
           && ! HARD_REGISTER_P (src)
           && reg_available_p (src, insn))
-         || gcse_constant_p (src))
+         || cprop_constant_p (src))
        insert_set_in_table (pat, insn, table);
     }
 }
@@ -438,6 +405,9 @@ compute_hash_table_work (struct hash_table_d *table)
 {
   basic_block bb;
 
+  /* Allocate vars to track sets of regs.  */
+  reg_set_bitmap = ALLOC_REG_SET (NULL);
+
   FOR_EACH_BB (bb)
     {
       rtx insn;
@@ -467,6 +437,8 @@ compute_hash_table_work (struct hash_table_d *table)
       if (implicit_sets[bb->index] != NULL_RTX)
        hash_scan_set (implicit_sets[bb->index], BB_HEAD (bb), table);
     }
+
+  FREE_REG_SET (reg_set_bitmap);
 }
 
 /* Allocate space for the set/expr hash TABLE.
@@ -488,7 +460,7 @@ alloc_hash_table (struct hash_table_d *table)
      ??? Later take some measurements.  */
   table->size |= 1;
   n = table->size * sizeof (struct expr *);
-  table->table = GNEWVAR (struct expr *, n);
+  table->table = XNEWVAR (struct expr *, n);
 }
 
 /* Free things allocated by alloc_hash_table.  */
@@ -931,7 +903,7 @@ find_avail_set (int regno, rtx insn)
          If the source operand changed, we may still use it for the next
          iteration of this loop, but we may not use it for substitutions.  */
 
-      if (gcse_constant_p (src) || reg_not_set_p (src, insn))
+      if (cprop_constant_p (src) || reg_not_set_p (src, insn))
        set1 = set;
 
       /* If the source of the set is anything except a register, then
@@ -1145,7 +1117,7 @@ cprop_insn (rtx insn)
       src = SET_SRC (pat);
 
       /* Constant propagation.  */
-      if (gcse_constant_p (src))
+      if (cprop_constant_p (src))
        {
           if (constprop_register (insn, reg_used->reg_rtx, src))
            {
@@ -1261,7 +1233,7 @@ do_local_cprop (rtx x, rtx insn)
          rtx this_rtx = l->loc;
          rtx note;
 
-         if (gcse_constant_p (this_rtx))
+         if (cprop_constant_p (this_rtx))
            newcnst = this_rtx;
          if (REG_P (this_rtx) && REGNO (this_rtx) >= FIRST_PSEUDO_REGISTER
              /* Don't copy propagate if it has attached REG_EQUIV note.
@@ -1400,7 +1372,7 @@ implicit_set_cond_p (const_rtx cond)
        return 0;
     }
 
-  return gcse_constant_p (cst);
+  return cprop_constant_p (cst);
 }
 
 /* Find the implicit sets of a function.  An "implicit set" is a constraint
@@ -1497,7 +1469,7 @@ find_bypass_set (int regno, int bb)
       gcc_assert (GET_CODE (set->expr) == SET);
 
       src = SET_SRC (set->expr);
-      if (gcse_constant_p (src))
+      if (cprop_constant_p (src))
        result = set;
 
       if (! REG_P (src))
@@ -1808,8 +1780,7 @@ one_cprop_pass (void)
   global_copy_prop_count = local_copy_prop_count = 0;
 
   bytes_used = 0;
-  gcc_obstack_init (&gcse_obstack);
-  alloc_gcse_mem ();
+  gcc_obstack_init (&cprop_obstack);
 
   /* Do a local const/copy propagation pass first.  The global pass
      only handles global opportunities.
@@ -1824,7 +1795,8 @@ one_cprop_pass (void)
      FIXME: The global analysis would not get into infinite loops if it
            would use the DF solver (via df_simple_dataflow) instead of
            the solver implemented in this file.  */
-  if (local_cprop_pass ())
+  changed |= local_cprop_pass ();
+  if (changed)
     {
       delete_unreachable_blocks ();
       df_analyze ();
@@ -1851,6 +1823,9 @@ one_cprop_pass (void)
       alloc_cprop_mem (last_basic_block, set_hash_table.n_elems);
       compute_cprop_data ();
 
+      /* Allocate vars to track sets of regs.  */
+      reg_set_bitmap = ALLOC_REG_SET (NULL);
+
       FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR->next_bb->next_bb, EXIT_BLOCK_PTR, next_bb)
        {
          /* Reset tables used to keep track of what's still valid [since
@@ -1872,12 +1847,13 @@ one_cprop_pass (void)
        }
 
       changed |= bypass_conditional_jumps ();
+
+      FREE_REG_SET (reg_set_bitmap);
       free_cprop_mem ();
     }
 
   free_hash_table (&set_hash_table);
-  free_gcse_mem ();
-  obstack_free (&gcse_obstack, NULL);
+  obstack_free (&cprop_obstack, NULL);
 
   if (dump_file)
     {