OSDN Git Service

* alias.c (init_alias_analysis): Allocate reg_known_value and
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Oct 1999 17:34:59 +0000 (17:34 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Oct 1999 17:34:59 +0000 (17:34 +0000)
  reg_known_equiv_p on the heap.  Likewise for new_reg_base_value
and reg_seen.
(end_alias_analysis): Free reg_known_value and reg_known_equiv_p.
* cse.c (cse_main): Call end_alias_analysis.
* haifa-sched.c (schedule_insns): Likewise.
* local-alloc. (update_equiv_regs): Likewise.
* reload1.c (reload_cse_regs): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30217 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/alias.c
gcc/cse.c
gcc/haifa-sched.c
gcc/local-alloc.c
gcc/reload1.c

index 51981eb..fbadea8 100644 (file)
@@ -1,3 +1,14 @@
+Wed Oct 27 02:05:58 1999  Mark P. Mitchell  <mark@codesourcery.com>
+
+       * alias.c (init_alias_analysis): Allocate reg_known_value and
+       reg_known_equiv_p on the heap.  Likewise for new_reg_base_value
+       and reg_seen.
+       (end_alias_analysis): Free reg_known_value and reg_known_equiv_p.
+       * cse.c (cse_main): Call end_alias_analysis.
+       * haifa-sched.c (schedule_insns): Likewise.
+       * local-alloc. (update_equiv_regs): Likewise.
+       * reload1.c (reload_cse_regs): Likewise.
+       
 Wed Oct 27 01:49:17 1999  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
 
        * sparc/sparc.c (sparc_override_options): Clear MASK_FPU_SET.
index 59578d7..cdc0019 100644 (file)
@@ -1538,15 +1538,12 @@ init_alias_analysis ()
 
   reg_known_value_size = maxreg;
 
-  reg_known_value
-    = (rtx *) oballoc ((maxreg - FIRST_PSEUDO_REGISTER) * sizeof (rtx))
+  reg_known_value 
+    = (rtx *) xcalloc ((maxreg - FIRST_PSEUDO_REGISTER), sizeof (rtx))
+    - FIRST_PSEUDO_REGISTER;
+  reg_known_equiv_p 
+    = (char*) xcalloc ((maxreg - FIRST_PSEUDO_REGISTER), sizeof (char))
     - FIRST_PSEUDO_REGISTER;
-  reg_known_equiv_p =
-    oballoc (maxreg - FIRST_PSEUDO_REGISTER) - FIRST_PSEUDO_REGISTER;
-  bzero ((char *) (reg_known_value + FIRST_PSEUDO_REGISTER),
-        (maxreg-FIRST_PSEUDO_REGISTER) * sizeof (rtx));
-  bzero (reg_known_equiv_p + FIRST_PSEUDO_REGISTER,
-        (maxreg - FIRST_PSEUDO_REGISTER) * sizeof (char));
 
   /* Overallocate reg_base_value to allow some growth during loop
      optimization.  Loop unrolling can create a large number of
@@ -1556,8 +1553,8 @@ init_alias_analysis ()
   if (ggc_p)
     ggc_add_rtx_root (reg_base_value, reg_base_value_size);
 
-  new_reg_base_value = (rtx *)alloca (reg_base_value_size * sizeof (rtx));
-  reg_seen = (char *)alloca (reg_base_value_size);
+  new_reg_base_value = (rtx *) xmalloc (reg_base_value_size * sizeof (rtx));
+  reg_seen = (char *) xmalloc (reg_base_value_size);
   if (! reload_completed && flag_unroll_loops)
     {
       /* ??? Why are we realloc'ing if we're just going to zero it?  */
@@ -1730,15 +1727,21 @@ init_alias_analysis ()
     }
   while (changed && pass < MAX_ALIAS_LOOP_PASSES);
 
+  /* Clean up.  */
+  free (new_reg_base_value);
   new_reg_base_value = 0;
+  free (reg_seen);
   reg_seen = 0;
 }
 
 void
 end_alias_analysis ()
 {
+  free (reg_known_value + FIRST_PSEUDO_REGISTER);
   reg_known_value = 0;
   reg_known_value_size = 0;
+  free (reg_known_equiv_p + FIRST_PSEUDO_REGISTER);
+  reg_known_equiv_p = 0;
   if (reg_base_value)
     {
       if (ggc_p)
index d729cb2..d22a200 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -8801,6 +8801,9 @@ cse_main (f, nregs, after_loop, file)
   if (max_elements_made < n_elements_made)
     max_elements_made = n_elements_made;
 
+  /* Clean up.  */
+  end_alias_analysis ();
+
   return cse_jumps_altered || recorded_label_ref;
 }
 
index 99cc3af..5c1641d 100644 (file)
@@ -7123,6 +7123,9 @@ schedule_insns (dump_file)
       fprintf (dump, "\n\n");
     }
 
+  /* Clean up.  */
+  end_alias_analysis ();
+
   if (true_dependency_cache)
     {
       free (true_dependency_cache);
index ee72b7d..bcc8cbb 100644 (file)
@@ -996,6 +996,9 @@ update_equiv_regs ()
            }
        }
     }
+
+  /* Clean up.  */
+  end_alias_analysis ();
 }
 
 /* Mark REG as having no known equivalence.
index 955acca..0a3371f 100644 (file)
@@ -8926,6 +8926,9 @@ reload_cse_regs_1 (first)
        }
     }
 
+  /* Clean up.  */
+  end_alias_analysis ();
+
   /* Free all the temporary structures we created, and go back to the
      regular obstacks.  */
   obstack_free (&reload_obstack, firstobj);