aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-11 23:26:04 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-09-11 23:26:04 -0700
commit1497faf6be0086785ed49a0fd0177d78d9ce346c (patch)
tree8ec63ee7e8e66c5bb736d50e494319ac6ca8900d /gcc/cse.c
parent0172a8f1f4d500b89ae32fb9155f51bb169f036f (diff)
downloadgcc-1497faf6be0086785ed49a0fd0177d78d9ce346c.zip
gcc-1497faf6be0086785ed49a0fd0177d78d9ce346c.tar.gz
gcc-1497faf6be0086785ed49a0fd0177d78d9ce346c.tar.bz2
* cse.c (cse_main): If gc'ing, collect around cse_basic_block.
From-SVN: r29354
Diffstat (limited to 'gcc/cse.c')
-rw-r--r--gcc/cse.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cse.c b/gcc/cse.c
index 2065833..e07e338 100644
--- 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;