diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-11-01 22:42:01 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-11-01 22:42:01 +0000 |
commit | c05ddfa745d68f6d9db1a7d0992650a41986d376 (patch) | |
tree | ea66080ea9530bba1ac5dd0e725e572293518210 | |
parent | 9fd4e3280e7795e47dcff290b9efcd734217c900 (diff) | |
download | gcc-c05ddfa745d68f6d9db1a7d0992650a41986d376.tar.gz |
* combine.c (combine_instructions): Use xmalloc instead of alloca.
From-SVN: r30331
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/combine.c | 45 |
2 files changed, 32 insertions, 17 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2dcf116334d..eb02521ee08 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Nov 1 15:41:01 1999 Mark P. Mitchell <mark@codesourcery.com> + + * combine.c (combine_instructions): Use xmalloc instead of alloca. + Mon Nov 1 13:22:30 1999 Richard Henderson <rth@cygnus.com> * toplev.c (rest_of_compilation): Don't optimize the CFG diff --git a/gcc/combine.c b/gcc/combine.c index dbae9dc4f8f..951930d048a 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -499,25 +499,22 @@ combine_instructions (f, nregs) combine_max_regno = nregs; - reg_nonzero_bits - = (unsigned HOST_WIDE_INT *) alloca (nregs * sizeof (HOST_WIDE_INT)); - reg_sign_bit_copies = (char *) alloca (nregs * sizeof (char)); - - bzero ((char *) reg_nonzero_bits, nregs * sizeof (HOST_WIDE_INT)); - bzero (reg_sign_bit_copies, nregs * sizeof (char)); - - reg_last_death = (rtx *) alloca (nregs * sizeof (rtx)); - reg_last_set = (rtx *) alloca (nregs * sizeof (rtx)); - reg_last_set_value = (rtx *) alloca (nregs * sizeof (rtx)); - reg_last_set_table_tick = (int *) alloca (nregs * sizeof (int)); - reg_last_set_label = (int *) alloca (nregs * sizeof (int)); - reg_last_set_invalid = (char *) alloca (nregs * sizeof (char)); + reg_nonzero_bits = ((unsigned HOST_WIDE_INT *) + xcalloc (nregs, sizeof (unsigned HOST_WIDE_INT))); + reg_sign_bit_copies = (char *) xcalloc (nregs, sizeof (char)); + + reg_last_death = (rtx *) xmalloc (nregs * sizeof (rtx)); + reg_last_set = (rtx *) xmalloc (nregs * sizeof (rtx)); + reg_last_set_value = (rtx *) xmalloc (nregs * sizeof (rtx)); + reg_last_set_table_tick = (int *) xmalloc (nregs * sizeof (int)); + reg_last_set_label = (int *) xmalloc (nregs * sizeof (int)); + reg_last_set_invalid = (char *) xmalloc (nregs * sizeof (char)); reg_last_set_mode - = (enum machine_mode *) alloca (nregs * sizeof (enum machine_mode)); + = (enum machine_mode *) xmalloc (nregs * sizeof (enum machine_mode)); reg_last_set_nonzero_bits - = (unsigned HOST_WIDE_INT *) alloca (nregs * sizeof (HOST_WIDE_INT)); + = (unsigned HOST_WIDE_INT *) xmalloc (nregs * sizeof (HOST_WIDE_INT)); reg_last_set_sign_bit_copies - = (char *) alloca (nregs * sizeof (char)); + = (char *) xmalloc (nregs * sizeof (char)); init_reg_last_arrays (); @@ -529,7 +526,7 @@ combine_instructions (f, nregs) if (INSN_UID (insn) > i) i = INSN_UID (insn); - uid_cuid = (int *) alloca ((i + 1) * sizeof (int)); + uid_cuid = (int *) xmalloc ((i + 1) * sizeof (int)); max_uid_cuid = i; nonzero_bits_mode = mode_for_size (HOST_BITS_PER_WIDE_INT, MODE_INT, 0); @@ -704,7 +701,21 @@ combine_instructions (f, nregs) update_life_info (refresh_blocks, UPDATE_LIFE_GLOBAL_RM_NOTES, PROP_DEATH_NOTES); } + + /* Clean up. */ sbitmap_free (refresh_blocks); + free (reg_nonzero_bits); + free (reg_sign_bit_copies); + free (reg_last_death); + free (reg_last_set); + free (reg_last_set_value); + free (reg_last_set_table_tick); + free (reg_last_set_label); + free (reg_last_set_invalid); + free (reg_last_set_mode); + free (reg_last_set_nonzero_bits); + free (reg_last_set_sign_bit_copies); + free (uid_cuid); total_attempts += combine_attempts; total_merges += combine_merges; |