* cse.c (cse_main): If gc'ing, collect around cse_basic_block.
authorRichard Henderson <rth@cygnus.com>
Sun, 12 Sep 1999 06:26:04 +0000 (23:26 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 12 Sep 1999 06:26:04 +0000 (23:26 -0700)
From-SVN: r29354

gcc/ChangeLog
gcc/cse.c

index ae3754592697062beb4fdf564753f58c5c88ab8d..c050d119ff9632b129fada803e26ed8674604b88 100644 (file)
@@ -1,3 +1,10 @@
+Sat Sep 11 23:23:46 1999  Richard Henderson  <rth@cygnus.com>
+
+       * cse.c (cse_main): If gc'ing, collect around cse_basic_block.
+
+       * ggc-simple.c (ggc_pop_context): Fold outstanding bytes into
+       surrounding context.
+
 Sat Sep 11 19:52:43 1999  Mark Mitchell  <mark@codesourcery.com>
 
        * tree.c (type_hash_canon): Put all types in the hash-table, when
index 2065833e20966e39f323b7110da268450ff139b8..e07e3384cc80d0cf40bd484f4dbe4ff6dd60bc5e 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA.  */
 #include "toplev.h"
 #include "output.h"
 #include "splay-tree.h"
+#include "ggc.h"
 
 /* The basic idea of common subexpression elimination is to go
    through the code, keeping a record of expressions that would
@@ -8730,6 +8731,9 @@ cse_main (f, nregs, after_loop, file)
        || global_regs[i])
       SET_HARD_REG_BIT (regs_invalidated_by_call, i);
 
+  if (ggc_p)
+    ggc_push_context ();
+
   /* Loop over basic blocks.
      Compute the maximum number of qty's needed for each basic block
      (which is 2 for each SET).  */
@@ -8786,11 +8790,17 @@ cse_main (f, nregs, after_loop, file)
          cse_jumps_altered |= old_cse_jumps_altered;
        }
 
+      if (ggc_p)
+       ggc_collect ();
+
 #ifdef USE_C_ALLOCA
       alloca (0);
 #endif
     }
 
+  if (ggc_p)
+    ggc_pop_context ();
+
   /* Tell refers_to_mem_p that qty_const info is not available.  */
   qty_const = 0;