diff options
author | Richard Henderson <rth@gcc.gnu.org> | 1999-11-04 12:51:04 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-11-04 12:51:04 -0800 |
commit | 75c6bd46fe011b1c8187eb918eac774bb704170b (patch) | |
tree | 4d5e2ea7782f490dbfe2fcc8ee7763b1622c4305 /gcc | |
parent | 17074a35df5c8c5de3f24cef85585b0f738d1ec9 (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cse.c | 35 | ||||
-rw-r--r-- | gcc/local-alloc.c | 46 |
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. @@ -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; } |