diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-10-27 17:34:59 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-10-27 17:34:59 +0000 |
commit | e05e2395bdab25b76b243f486994ca9d032962f1 (patch) | |
tree | 7e473bb947bcec6b461f84269de876371eb9d053 /gcc | |
parent | 46cc13b3e0c0e00b1797f4591256cd13585384bd (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/alias.c | 23 | ||||
-rw-r--r-- | gcc/cse.c | 3 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 3 | ||||
-rw-r--r-- | gcc/local-alloc.c | 3 | ||||
-rw-r--r-- | gcc/reload1.c | 3 |
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) @@ -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); |