aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1999-11-04 12:51:04 -0800
committerRichard Henderson <rth@gcc.gnu.org>1999-11-04 12:51:04 -0800
commit75c6bd46fe011b1c8187eb918eac774bb704170b (patch)
tree4d5e2ea7782f490dbfe2fcc8ee7763b1622c4305 /gcc
parent17074a35df5c8c5de3f24cef85585b0f738d1ec9 (diff)
downloadgcc-75c6bd46fe011b1c8187eb918eac774bb704170b.zip
gcc-75c6bd46fe011b1c8187eb918eac774bb704170b.tar.gz
gcc-75c6bd46fe011b1c8187eb918eac774bb704170b.tar.bz2
cse.c (cse_main): Use xmalloc, not alloca.
* cse.c (cse_main): Use xmalloc, not alloca. (cse_basic_block): Likewise. * local-alloc.c (local_alloc): Likewise. From-SVN: r30399
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/cse.c35
-rw-r--r--gcc/local-alloc.c46
3 files changed, 62 insertions, 28 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 42b5b0b..6646813 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,11 @@
-Thu Nov 4 14:22:12 1999 David Billinghurst <David.Billinghurst@riotinto.com.au>, Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+Thu Nov 4 12:49:52 1999 Richard Henderson <rth@cygnus.com>
+
+ * cse.c (cse_main): Use xmalloc, not alloca.
+ (cse_basic_block): Likewise.
+ * local-alloc.c (local_alloc): Likewise.
+
+Thu Nov 4 14:22:12 1999 David Billinghurst <David.Billinghurst@riotinto.com.au>
+ Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* rtl.c: Include toplev.h.
(fatal): Remove declaration.
diff --git a/gcc/cse.c b/gcc/cse.c
index eab428f..406f879 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -6877,8 +6877,8 @@ cse_main (f, nregs, after_loop, file)
max_insn_uid = get_max_uid ();
- reg_next_eqv = (int *) alloca (nregs * sizeof (int));
- reg_prev_eqv = (int *) alloca (nregs * sizeof (int));
+ reg_next_eqv = (int *) xmalloc (nregs * sizeof (int));
+ reg_prev_eqv = (int *) xmalloc (nregs * sizeof (int));
#ifdef LOAD_EXTEND_OP
@@ -6896,8 +6896,7 @@ cse_main (f, nregs, after_loop, file)
/* Find the largest uid. */
max_uid = get_max_uid ();
- uid_cuid = (int *) alloca ((max_uid + 1) * sizeof (int));
- bzero ((char *) uid_cuid, (max_uid + 1) * sizeof (int));
+ uid_cuid = (int *) xcalloc (max_uid + 1, sizeof (int));
/* Compute the mapping from uids to cuids.
CUIDs are numbers assigned to insns, like uids,
@@ -7024,6 +7023,9 @@ cse_main (f, nregs, after_loop, file)
/* Clean up. */
end_alias_analysis ();
+ free (uid_cuid);
+ free (reg_next_eqv);
+ free (reg_prev_eqv);
return cse_jumps_altered || recorded_label_ref;
}
@@ -7050,16 +7052,16 @@ cse_basic_block (from, to, next_branch, around_loop)
/* Each of these arrays is undefined before max_reg, so only allocate
the space actually needed and adjust the start below. */
- qty_first_reg = (int *) alloca ((max_qty - max_reg) * sizeof (int));
- qty_last_reg = (int *) alloca ((max_qty - max_reg) * sizeof (int));
- qty_mode = (enum machine_mode *) alloca ((max_qty - max_reg)
+ qty_first_reg = (int *) xmalloc ((max_qty - max_reg) * sizeof (int));
+ qty_last_reg = (int *) xmalloc ((max_qty - max_reg) * sizeof (int));
+ qty_mode = (enum machine_mode *) xmalloc ((max_qty - max_reg)
* sizeof (enum machine_mode));
- qty_const = (rtx *) alloca ((max_qty - max_reg) * sizeof (rtx));
- qty_const_insn = (rtx *) alloca ((max_qty - max_reg) * sizeof (rtx));
+ qty_const = (rtx *) xmalloc ((max_qty - max_reg) * sizeof (rtx));
+ qty_const_insn = (rtx *) xmalloc ((max_qty - max_reg) * sizeof (rtx));
qty_comparison_code
- = (enum rtx_code *) alloca ((max_qty - max_reg) * sizeof (enum rtx_code));
- qty_comparison_qty = (int *) alloca ((max_qty - max_reg) * sizeof (int));
- qty_comparison_const = (rtx *) alloca ((max_qty - max_reg) * sizeof (rtx));
+ = (enum rtx_code *) xmalloc ((max_qty - max_reg) * sizeof (enum rtx_code));
+ qty_comparison_qty = (int *) xmalloc ((max_qty - max_reg) * sizeof (int));
+ qty_comparison_const = (rtx *) xmalloc ((max_qty - max_reg) * sizeof (rtx));
qty_first_reg -= max_reg;
qty_last_reg -= max_reg;
@@ -7236,6 +7238,15 @@ cse_basic_block (from, to, next_branch, around_loop)
&& LABEL_NUSES (JUMP_LABEL (PREV_INSN (to))) == 1)
cse_around_loop (JUMP_LABEL (PREV_INSN (to)));
+ free (qty_first_reg + max_reg);
+ free (qty_last_reg + max_reg);
+ free (qty_mode + max_reg);
+ free (qty_const + max_reg);
+ free (qty_const_insn + max_reg);
+ free (qty_comparison_code + max_reg);
+ free (qty_comparison_qty + max_reg);
+ free (qty_comparison_const + max_reg);
+
return to ? NEXT_INSN (to) : 0;
}
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index 6b07326..3578f85 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -326,25 +326,25 @@ local_alloc ()
See the declarations of these variables, above,
for what they mean. */
- qty_phys_reg = (short *) alloca (max_qty * sizeof (short));
+ qty_phys_reg = (short *) xmalloc (max_qty * sizeof (short));
qty_phys_copy_sugg
- = (HARD_REG_SET *) alloca (max_qty * sizeof (HARD_REG_SET));
- qty_phys_num_copy_sugg = (short *) alloca (max_qty * sizeof (short));
- qty_phys_sugg = (HARD_REG_SET *) alloca (max_qty * sizeof (HARD_REG_SET));
- qty_phys_num_sugg = (short *) alloca (max_qty * sizeof (short));
- qty_birth = (int *) alloca (max_qty * sizeof (int));
- qty_death = (int *) alloca (max_qty * sizeof (int));
- qty_first_reg = (int *) alloca (max_qty * sizeof (int));
- qty_size = (int *) alloca (max_qty * sizeof (int));
+ = (HARD_REG_SET *) xmalloc (max_qty * sizeof (HARD_REG_SET));
+ qty_phys_num_copy_sugg = (short *) xmalloc (max_qty * sizeof (short));
+ qty_phys_sugg = (HARD_REG_SET *) xmalloc (max_qty * sizeof (HARD_REG_SET));
+ qty_phys_num_sugg = (short *) xmalloc (max_qty * sizeof (short));
+ qty_birth = (int *) xmalloc (max_qty * sizeof (int));
+ qty_death = (int *) xmalloc (max_qty * sizeof (int));
+ qty_first_reg = (int *) xmalloc (max_qty * sizeof (int));
+ qty_size = (int *) xmalloc (max_qty * sizeof (int));
qty_mode
- = (enum machine_mode *) alloca (max_qty * sizeof (enum machine_mode));
- qty_n_calls_crossed = (int *) alloca (max_qty * sizeof (int));
+ = (enum machine_mode *) xmalloc (max_qty * sizeof (enum machine_mode));
+ qty_n_calls_crossed = (int *) xmalloc (max_qty * sizeof (int));
qty_min_class
- = (enum reg_class *) alloca (max_qty * sizeof (enum reg_class));
+ = (enum reg_class *) xmalloc (max_qty * sizeof (enum reg_class));
qty_alternate_class
- = (enum reg_class *) alloca (max_qty * sizeof (enum reg_class));
- qty_n_refs = (int *) alloca (max_qty * sizeof (int));
- qty_changes_size = (char *) alloca (max_qty * sizeof (char));
+ = (enum reg_class *) xmalloc (max_qty * sizeof (enum reg_class));
+ qty_n_refs = (int *) xmalloc (max_qty * sizeof (int));
+ qty_changes_size = (char *) xmalloc (max_qty * sizeof (char));
reg_qty = (int *) xmalloc (max_regno * sizeof (int));
reg_offset = (char *) xmalloc (max_regno * sizeof (char));
@@ -416,9 +416,25 @@ local_alloc ()
#endif
}
+ free (qty_phys_reg);
+ free (qty_phys_copy_sugg);
+ free (qty_phys_num_copy_sugg);
+ free (qty_phys_sugg);
+ free (qty_birth);
+ free (qty_death);
+ free (qty_first_reg);
+ free (qty_size);
+ free (qty_mode);
+ free (qty_n_calls_crossed);
+ free (qty_min_class);
+ free (qty_alternate_class);
+ free (qty_n_refs);
+ free (qty_changes_size);
+
free (reg_qty);
free (reg_offset);
free (reg_next_in_qty);
+
return recorded_label_ref;
}