aboutsummaryrefslogtreecommitdiff
path: root/gcc/ggc-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ggc-common.c')
-rw-r--r--gcc/ggc-common.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index fe75320..3cafc77 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -751,10 +751,10 @@ ggc_min_heapsize_heuristic (void)
# endif
/* Don't blindly run over our data limit; do GC at least when the
- *next* GC would be within 16Mb of the limit. If GCC does hit the
- data limit, compilation will fail, so this tries to be
- conservative. */
- limit_kbytes = MAX (0, limit_kbytes - 16 * 1024);
+ *next* GC would be within 20Mb of the limit or within a quarter of
+ the limit, whichever is larger. If GCC does hit the data limit,
+ compilation will fail, so this tries to be conservative. */
+ limit_kbytes = MAX (0, limit_kbytes - MAX (limit_kbytes / 4, 20 * 1024));
limit_kbytes = (limit_kbytes * 100) / (110 + ggc_min_expand_heuristic());
phys_kbytes = MIN (phys_kbytes, limit_kbytes);