A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Thu May 4 16:07:00 GMT 2006


Hi,

I am a friendly script caring about memory consumption in GCC.  Please
contact jh@suse.cz if something is going wrong.

Comparing memory consumption on compilation of combine.i, insn-attrtab.i,
and generate-3.4.ii I got:


comparing combine.c compilation at -O0 level:
    Overall memory needed: 25068k -> 25088k
    Peak memory use before GGC: 9509k
    Peak memory use after GGC: 8897k
    Maximum of released memory in single GGC run: 2602k
    Garbage: 38655k
    Leak: 6733k
    Overhead: 5889k
    GGC runs: 304

comparing combine.c compilation at -O1 level:
    Overall memory needed: 26892k
    Peak memory use before GGC: 17430k
    Peak memory use after GGC: 17251k
    Maximum of released memory in single GGC run: 2284k -> 2285k
    Garbage: 58930k -> 58927k
    Leak: 6870k -> 6869k
    Overhead: 7056k -> 7055k
    GGC runs: 376

comparing combine.c compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 6988k to 6997k, overall 0.13%
    Overall memory needed: 26892k
    Peak memory use before GGC: 17434k
    Peak memory use after GGC: 17251k
    Maximum of released memory in single GGC run: 2395k -> 2385k
    Garbage: 82965k -> 82952k
    Leak: 6988k -> 6997k
    Overhead: 9713k -> 9702k
    GGC runs: 443

comparing combine.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 113641k to 113841k, overall 0.18%
    Overall memory needed: 25992k
    Peak memory use before GGC: 18584k
    Peak memory use after GGC: 17898k
    Maximum of released memory in single GGC run: 3500k -> 3520k
    Garbage: 113641k -> 113841k
    Leak: 7086k -> 7088k
    Overhead: 13231k -> 13256k
    GGC runs: 494

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 82164k
    Peak memory use before GGC: 69036k
    Peak memory use after GGC: 44790k
    Maximum of released memory in single GGC run: 36009k
    Garbage: 140381k
    Leak: 9901k
    Overhead: 20394k
    GGC runs: 239

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 105936k -> 105932k
    Peak memory use before GGC: 85573k -> 85570k
    Peak memory use after GGC: 79525k -> 79522k
    Maximum of released memory in single GGC run: 32269k
    Garbage: 282742k -> 282719k
    Leak: 10065k -> 10061k
    Overhead: 33382k -> 33387k
    GGC runs: 239

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 109900k -> 109992k
    Peak memory use before GGC: 90000k -> 89997k
    Peak memory use after GGC: 81927k -> 81924k
    Maximum of released memory in single GGC run: 30718k -> 30719k
    Garbage: 330288k -> 330178k
    Leak: 10051k -> 10048k
    Overhead: 40629k -> 40620k
    GGC runs: 265

comparing insn-attrtab.c compilation at -O3 level:
Testing has produced no results

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 118248k
    Peak memory use before GGC: 95020k
    Peak memory use after GGC: 94073k
    Maximum of released memory in single GGC run: 20358k
    Garbage: 218001k
    Leak: 49503k
    Overhead: 37967k
    GGC runs: 362

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 115832k -> 115836k
    Peak memory use before GGC: 97667k
    Peak memory use after GGC: 96688k
    Maximum of released memory in single GGC run: 18987k
    Garbage: 464742k -> 463633k
    Leak: 52789k -> 52780k
    Overhead: 51599k -> 51537k
    GGC runs: 508 -> 505

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 115860k -> 115864k
    Peak memory use before GGC: 97667k
    Peak memory use after GGC: 96687k
    Maximum of released memory in single GGC run: 18987k
    Garbage: 554046k -> 552139k
    Leak: 53690k -> 53676k
    Overhead: 60353k -> 60161k
    GGC runs: 590 -> 589

comparing Gerald's testcase PR8361 compilation at -O3 level:
Testing has produced no results

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2006-05-04 04:13:49.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2006-05-04 14:59:54.000000000 +0000
@@ -1,3 +1,91 @@
+2006-05-04  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/14287
+	PR tree-optimization/14844
+	PR tree-optimization/19792
+	PR tree-optimization/21608
+	PR tree-optimization/27090
+	* tree-ssa-pre.c (try_combine_conversion): New function.
+	(compute_avail): After constructing the value-handle
+	expression, use try_combine_conversion to combine NOP_EXPRs
+	with previous value-handle expressions and use the result if it
+	is available.
+
+2006-05-04  Joseph S. Myers  <joseph@codesourcery.com>
+
+	* config/mips/linux64.h (DWARF_OFFSET_SIZE): Remove.
+
+2006-05-04  Jan Hubicka  <jh@suse.cz>
+
+	PR middle-end/25962
+	* cgraphunit.c (verify_cgraph_node): Fix cgraph_hash testing.
+
+2006-05-04  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/predicates.md (const01_rtx): Tell generator programs
+	that this only matches CONST_INTs.  All users changed to VOIDmode
+	operands.
+
+	* config/bfin/bfin.c: Include "optabs.h".
+	(bfin_rtx_costs): Some costs for vector operations, to allow combine
+	to do more work.
+	(enum bfin_builtins): Add a number of fractional and vector builtins.
+	(bfin_init_builtins): Likewise.
+	(struct builtin_description, bdesc_2arg, bdesc_1arg): New.
+	(safe_vector_operand, bfin_expand_binop_builtin,
+	bfin_expand_unop_builtin): New functions.
+	(bfin_expand_builtin): Handle the new builtins.
+	* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
+	__ADSPBLACKFIN__.
+
+2006-05-04  Leehod Baruch  <leehod@il.ibm.com>
+
+        * see.c: New file.
+        * Makefile.in (OBJS-common): Add see.o.
+        (see.o): Add dependencies.
+        * common.opt (fsee): New flag for the see optimization was added.
+        * opts.c (flag_see): Initialized.
+        * passes.c (init_optimization_passes, pass_see): New pass.
+        * rtl.h (see_main): Declaration as extern.
+        * timevar.def (TV_SEE): New.
+        * tree-pass.h (pass_see): Declaration as extern.
+        * invoke.texi (-fsee): Document.
+        * recog.c (validate_simplify_insn): New function.
+        * recog.h (validate_simplify_insn): Declaration as extern.
+        * df-problems.c (df_chain_dump): Check for NULL.
+
+2006-05-04  Kenneth Zadeck <zadeck@naturalbridge.com>
+            Daniel Berlin  <dberlin@dberlin.org>
+
+        * cfgrtl.c (insert_insn_bb_end_new): New function.
+        * basic-block.h (insert_insn_bb_end_new): Declaration as extern.
+
+2006-05-04  Leehod Baruch  <leehod.baruch@weizmann.ac.il>
+
+        * df.h (struct web_entry): Moved from web.c.
+        (union_defs): Declaration as extern.
+        (unionfind_root): Likewise.
+        (unionfind_union): Likewise.
+        * web.c (struct web_entry): Moved to df.h.
+        (unionfind_root): Remove static declaration.
+        (unionfind_union): Likewise.
+        (union_defs): Likewise and generalize to use callback function.
+        (web_main): Update arguments for union_defs function call.
+
+2006-05-04  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/26447
+	* tree-ssa-pre.c (realify_fake_stores): For necessary loads
+	produce SSA_NAME copies before the store stmt to avoid
+	breaking exception handling.
+
+2006-05-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/27388
+	* gimplify.c (omp_is_private): If var is shared in some outer context,
+	return false instead of true.  Stop searching on parallel context
+	boundary.
+
 2006-05-03  Alexandre Oliva  <aoliva@redhat.com>
 
 	PR java/8260
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2006-05-03 06:41:27.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2006-05-04 14:59:53.000000000 +0000
@@ -1,3 +1,10 @@
+2006-05-04  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/27359
+	* parser.c (cp_parser_omp_for_loop): Only call
+	cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
+	called.
+
 2006-05-02  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/27102


The results can be reproduced by building a compiler with

--enable-gather-detailed-mem-stats targetting x86-64

and compiling preprocessed combine.c or testcase from PR8632 with:

-fmem-report --param=ggc-min-heapsize=1024 --param=ggc-min-expand=1 -Ox -Q

The memory consumption summary appears in the dump after detailed listing
of the places they are allocated in.  Peak memory consumption is actually
computed by looking for maximal value in {GC XXXX -> YYYY} report.

Your testing script.



More information about the Gcc-regression mailing list