summaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-27 17:34:59 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-10-27 17:34:59 +0000
commit7098ef4a5bd453aa1929d497797c0818374af7b0 (patch)
tree7e473bb947bcec6b461f84269de876371eb9d053 /gcc/alias.c
parentbf6acc7eb6f75196de605580368c25b484a651b5 (diff)
downloadgcc-7098ef4a5bd453aa1929d497797c0818374af7b0.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30217 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 59578d7b875..cdc001993d5 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)