cse.c (cse_main): Use xmalloc, not alloca.
authorRichard Henderson <rth@gcc.gnu.org>
Thu, 4 Nov 1999 20:51:04 +0000 (12:51 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 4 Nov 1999 20:51:04 +0000 (12:51 -0800)
        * cse.c (cse_main): Use xmalloc, not alloca.
        (cse_basic_block): Likewise.
        * local-alloc.c (local_alloc): Likewise.

From-SVN: r30399

gcc/ChangeLog
gcc/cse.c
gcc/local-alloc.c

index 42b5b0b51db5c880949ff916771f2f18d5fc1c8c..66468139e0ce815f39cc4572f3ee116eed347451 100644 (file)
@@ -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.
index eab428f762bad73f48ad272b23f8e6605bec8fd2..406f8798382fe034f090db2b09133250179b3bc1 100644 (file)
--- 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;
 }
 \f
index 6b0732695d7903cfc97517f35f692e02644ea2a5..3578f859794dfa545ecd21e2291e3fb7deab479b 100644 (file)
@@ -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;
 }
 \f