aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-10-27 17:34:59 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-10-27 17:34:59 +0000
commite05e2395bdab25b76b243f486994ca9d032962f1 (patch)
tree7e473bb947bcec6b461f84269de876371eb9d053 /gcc
parent46cc13b3e0c0e00b1797f4591256cd13585384bd (diff)
downloadgcc-e05e2395bdab25b76b243f486994ca9d032962f1.zip
gcc-e05e2395bdab25b76b243f486994ca9d032962f1.tar.gz
gcc-e05e2395bdab25b76b243f486994ca9d032962f1.tar.bz2
alias.c (init_alias_analysis): Allocate reg_known_value and reg_known_equiv_p on the heap.
* 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. From-SVN: r30217
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/alias.c23
-rw-r--r--gcc/cse.c3
-rw-r--r--gcc/haifa-sched.c3
-rw-r--r--gcc/local-alloc.c3
-rw-r--r--gcc/reload1.c3
6 files changed, 36 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51981eb..fbadea8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/alias.c b/gcc/alias.c
index 59578d7..cdc0019 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -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)
diff --git a/gcc/cse.c b/gcc/cse.c
index d729cb2..d22a200 100644
--- 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;
}
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 99cc3af..5c1641d 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -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);
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index ee72b7d..bcc8cbb 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -996,6 +996,9 @@ update_equiv_regs ()
}
}
}
+
+ /* Clean up. */
+ end_alias_analysis ();
}
/* Mark REG as having no known equivalence.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 955acca..0a3371f5 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -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);