A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Wed Mar 4 04:23:00 GMT 2009


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 empty function compilation at -O0 level:
    Overall memory needed: 8206k
    Peak memory use before GGC: 1289k
    Peak memory use after GGC: 1216k
    Maximum of released memory in single GGC run: 138k
    Garbage: 217k
    Leak: 1219k
    Overhead: 136k
    GGC runs: 3
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1222k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1222k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8454k
    Peak memory use before GGC: 1317k
    Peak memory use after GGC: 1243k
    Maximum of released memory in single GGC run: 133k
    Garbage: 218k
    Leak: 1252k
    Overhead: 141k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1222k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1222k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8238k
    Peak memory use before GGC: 1289k
    Peak memory use after GGC: 1216k
    Maximum of released memory in single GGC run: 133k
    Garbage: 219k
    Leak: 1219k
    Overhead: 137k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1222k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1222k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8454k
    Peak memory use before GGC: 1289k
    Peak memory use after GGC: 1216k
    Maximum of released memory in single GGC run: 136k
    Garbage: 225k
    Leak: 1220k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1223k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1223k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8454k
    Peak memory use before GGC: 1289k
    Peak memory use after GGC: 1216k
    Maximum of released memory in single GGC run: 136k
    Garbage: 225k
    Leak: 1220k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1223k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1223k
    Post-IPA-Overhead: 135k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 31986k
    Peak memory use before GGC: 18016k
    Peak memory use after GGC: 17807k
    Maximum of released memory in single GGC run: 1831k
    Garbage: 38927k
    Leak: 5798k
    Overhead: 5545k
    GGC runs: 338
    Pre-IPA-Garbage: 12215k
    Pre-IPA-Leak: 19353k
    Pre-IPA-Overhead: 2557k
    Post-IPA-Garbage: 12215k
    Post-IPA-Leak: 19353k
    Post-IPA-Overhead: 2557k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34006k
    Peak memory use before GGC: 19886k
    Peak memory use after GGC: 19663k
    Maximum of released memory in single GGC run: 1841k
    Garbage: 39138k
    Leak: 9087k
    Overhead: 6363k
    GGC runs: 320
    Pre-IPA-Garbage: 12233k
    Pre-IPA-Leak: 21626k
    Pre-IPA-Overhead: 3047k
    Post-IPA-Garbage: 12233k
    Post-IPA-Leak: 21626k
    Post-IPA-Overhead: 3047k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30602k
    Peak memory use before GGC: 15684k
    Peak memory use after GGC: 15511k
    Maximum of released memory in single GGC run: 1340k
    Garbage: 46454k -> 46454k
    Leak: 5778k
    Overhead: 6142k -> 6143k
    GGC runs: 403
    Pre-IPA-Garbage: 13039k
    Pre-IPA-Leak: 16848k
    Pre-IPA-Overhead: 2469k
    Post-IPA-Garbage: 13039k
    Post-IPA-Leak: 16848k
    Post-IPA-Overhead: 2469k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31902k -> 31646k
    Peak memory use before GGC: 15830k
    Peak memory use after GGC: 15670k
    Maximum of released memory in single GGC run: 1351k
    Garbage: 60416k -> 60423k
    Leak: 5808k
    Overhead: 8197k -> 8198k
    GGC runs: 466 -> 467
    Pre-IPA-Garbage: 13181k
    Pre-IPA-Leak: 16929k -> 16929k
    Pre-IPA-Overhead: 2489k -> 2489k
    Post-IPA-Garbage: 13181k
    Post-IPA-Leak: 16929k -> 16929k
    Post-IPA-Overhead: 2489k -> 2489k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 32234k
    Peak memory use before GGC: 15984k
    Peak memory use after GGC: 15749k
    Maximum of released memory in single GGC run: 1637k
    Garbage: 73269k -> 73270k
    Leak: 7176k
    Overhead: 9702k -> 9702k
    GGC runs: 497
    Pre-IPA-Garbage: 13181k
    Pre-IPA-Leak: 16929k -> 16929k
    Pre-IPA-Overhead: 2489k -> 2489k
    Post-IPA-Garbage: 13181k
    Post-IPA-Leak: 16929k -> 16929k
    Post-IPA-Overhead: 2489k -> 2489k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 155294k
    Peak memory use before GGC: 64851k
    Peak memory use after GGC: 53783k
    Maximum of released memory in single GGC run: 26838k
    Garbage: 128371k
    Leak: 8360k
    Overhead: 16863k
    GGC runs: 262
    Pre-IPA-Garbage: 36903k
    Pre-IPA-Leak: 55351k
    Pre-IPA-Overhead: 8222k
    Post-IPA-Garbage: 36903k
    Post-IPA-Leak: 55351k
    Post-IPA-Overhead: 8222k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 156582k
    Peak memory use before GGC: 66128k
    Peak memory use after GGC: 55061k
    Maximum of released memory in single GGC run: 26838k
    Garbage: 128696k
    Leak: 10011k
    Overhead: 17319k
    GGC runs: 257
    Pre-IPA-Garbage: 36911k
    Pre-IPA-Leak: 56892k
    Pre-IPA-Overhead: 8557k
    Post-IPA-Garbage: 36911k
    Post-IPA-Leak: 56892k
    Post-IPA-Overhead: 8557k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 133306k -> 133302k
    Peak memory use before GGC: 49848k
    Peak memory use after GGC: 43292k
    Maximum of released memory in single GGC run: 23087k
    Garbage: 178949k
    Leak: 7736k
    Overhead: 24924k
    GGC runs: 299
    Pre-IPA-Garbage: 42194k
    Pre-IPA-Leak: 42949k
    Pre-IPA-Overhead: 7641k
    Post-IPA-Garbage: 42194k
    Post-IPA-Leak: 42949k
    Post-IPA-Overhead: 7641k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 148658k -> 148654k
    Peak memory use before GGC: 49813k
    Peak memory use after GGC: 44951k
    Maximum of released memory in single GGC run: 18102k
    Garbage: 202596k
    Leak: 15399k
    Overhead: 30421k
    GGC runs: 326
    Pre-IPA-Garbage: 42262k
    Pre-IPA-Leak: 42956k
    Pre-IPA-Overhead: 7650k
    Post-IPA-Garbage: 42262k
    Post-IPA-Leak: 42956k
    Post-IPA-Overhead: 7650k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 164630k -> 164654k
    Peak memory use before GGC: 61633k
    Peak memory use after GGC: 58663k
    Maximum of released memory in single GGC run: 24089k
    Garbage: 240476k
    Leak: 7762k
    Overhead: 33890k
    GGC runs: 338
    Pre-IPA-Garbage: 42262k
    Pre-IPA-Leak: 42956k
    Pre-IPA-Overhead: 7650k
    Post-IPA-Garbage: 42262k
    Post-IPA-Leak: 42956k
    Post-IPA-Overhead: 7650k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 149148k -> 149156k
    Peak memory use before GGC: 81832k
    Peak memory use after GGC: 81020k
    Maximum of released memory in single GGC run: 14704k
    Garbage: 200269k
    Leak: 51645k
    Overhead: 27486k
    GGC runs: 410
    Pre-IPA-Garbage: 109710k
    Pre-IPA-Leak: 87146k
    Pre-IPA-Overhead: 14613k
    Post-IPA-Garbage: 109710k
    Post-IPA-Leak: 87146k
    Post-IPA-Overhead: 14613k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 167176k -> 167148k
    Peak memory use before GGC: 95412k
    Peak memory use after GGC: 94467k
    Maximum of released memory in single GGC run: 14896k
    Garbage: 205290k
    Leak: 78499k
    Overhead: 34171k
    GGC runs: 386
    Pre-IPA-Garbage: 110075k
    Pre-IPA-Leak: 103665k
    Pre-IPA-Overhead: 18117k
    Post-IPA-Garbage: 110075k
    Post-IPA-Leak: 103665k
    Post-IPA-Overhead: 18117k

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Amount of produced GGC garbage increased from 262568k to 265027k, overall 0.94%
    Overall memory needed: 103059k -> 104763k
    Peak memory use before GGC: 79654k
    Peak memory use after GGC: 78845k
    Maximum of released memory in single GGC run: 14399k
    Garbage: 262568k -> 265027k
    Leak: 48112k -> 48120k
    Overhead: 30345k -> 30541k
    GGC runs: 490 -> 492
  Amount of memory referenced pre-ipa increased from 81051k to 82605k, overall 1.92%
    Pre-IPA-Garbage: 153109k -> 153144k
    Pre-IPA-Leak: 81051k -> 82605k
    Pre-IPA-Overhead: 18727k -> 18853k
  Amount of memory referenced post-ipa increased from 81051k to 82605k, overall 1.92%
    Post-IPA-Garbage: 153109k -> 153144k
    Post-IPA-Leak: 81051k -> 82605k
    Post-IPA-Overhead: 18727k -> 18853k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 315842k to 318573k, overall 0.86%
    Overall memory needed: 103375k -> 104683k
    Peak memory use before GGC: 79744k
    Peak memory use after GGC: 78935k
    Maximum of released memory in single GGC run: 14403k
    Garbage: 315842k -> 318573k
    Leak: 48137k -> 48137k
    Overhead: 36821k -> 37036k
    GGC runs: 562 -> 564
  Amount of memory referenced pre-ipa increased from 80190k to 81954k, overall 2.20%
    Pre-IPA-Garbage: 156950k -> 156991k
    Pre-IPA-Leak: 80190k -> 81954k
    Pre-IPA-Overhead: 19097k -> 19241k
  Amount of memory referenced post-ipa increased from 80190k to 81954k, overall 2.20%
    Post-IPA-Garbage: 156950k -> 156991k
    Post-IPA-Leak: 80190k -> 81954k
    Post-IPA-Overhead: 19097k -> 19241k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 346942k to 349764k, overall 0.81%
    Overall memory needed: 103463k -> 105103k
    Peak memory use before GGC: 79744k
    Peak memory use after GGC: 78935k
    Maximum of released memory in single GGC run: 14403k
    Garbage: 346942k -> 349764k
    Leak: 48141k -> 48149k
    Overhead: 40106k -> 40338k
    GGC runs: 591
  Amount of memory referenced pre-ipa increased from 80599k to 82391k, overall 2.22%
    Pre-IPA-Garbage: 157012k -> 157052k
    Pre-IPA-Leak: 80599k -> 82391k
    Pre-IPA-Overhead: 19131k -> 19276k
  Amount of memory referenced post-ipa increased from 80599k to 82391k, overall 2.22%
    Post-IPA-Garbage: 157012k -> 157052k
    Post-IPA-Leak: 80599k -> 82391k
    Post-IPA-Overhead: 19131k -> 19276k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 362427k
    Peak memory use before GGC: 78666k
    Peak memory use after GGC: 49600k
    Maximum of released memory in single GGC run: 37952k
    Garbage: 142896k
    Leak: 7236k
    Overhead: 25331k
    GGC runs: 87
    Pre-IPA-Garbage: 12169k
    Pre-IPA-Leak: 20189k
    Pre-IPA-Overhead: 2241k
    Post-IPA-Garbage: 12169k
    Post-IPA-Leak: 20189k
    Post-IPA-Overhead: 2241k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 363219k -> 363223k
    Peak memory use before GGC: 79363k
    Peak memory use after GGC: 50297k
    Maximum of released memory in single GGC run: 37936k
    Garbage: 142961k
    Leak: 9278k
    Overhead: 25914k
    GGC runs: 93
    Pre-IPA-Garbage: 12171k
    Pre-IPA-Leak: 20437k
    Pre-IPA-Overhead: 2295k
    Post-IPA-Garbage: 12171k
    Post-IPA-Leak: 20437k
    Post-IPA-Overhead: 2295k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 226370k
    Peak memory use before GGC: 72350k
    Peak memory use after GGC: 66141k
    Maximum of released memory in single GGC run: 32063k
    Garbage: 214749k
    Leak: 7613k
    Overhead: 30605k
    GGC runs: 95
    Pre-IPA-Garbage: 45532k
    Pre-IPA-Leak: 62930k
    Pre-IPA-Overhead: 8724k
    Post-IPA-Garbage: 45532k
    Post-IPA-Leak: 62930k
    Post-IPA-Overhead: 8724k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 490186k -> 492734k
    Peak memory use before GGC: 72351k
    Peak memory use after GGC: 66142k
    Maximum of released memory in single GGC run: 33399k
    Garbage: 256350k
    Leak: 7614k
    Overhead: 38675k
    GGC runs: 105
  Amount of memory referenced pre-ipa increased from 68842k to 71658k, overall 4.09%
    Pre-IPA-Garbage: 102815k
    Pre-IPA-Leak: 68842k -> 71658k
    Pre-IPA-Overhead: 14260k -> 14333k
  Amount of memory referenced post-ipa increased from 68842k to 71658k, overall 4.09%
    Post-IPA-Garbage: 102815k
    Post-IPA-Leak: 68842k -> 71658k
    Post-IPA-Overhead: 14260k -> 14333k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Peak amount of GGC memory allocated before garbage collecting increased from 132762k to 135542k, overall 2.09%
  Peak amount of GGC memory still allocated after garbage collecting increased from 122592k to 125371k, overall 2.27%
  Amount of produced GGC garbage increased from 347045k to 347813k, overall 0.22%
    Overall memory needed: 1017126k -> 1021630k
    Peak memory use before GGC: 132762k -> 135542k
    Peak memory use after GGC: 122592k -> 125371k
    Maximum of released memory in single GGC run: 62793k
    Garbage: 347045k -> 347813k
    Leak: 9097k
    Overhead: 44831k -> 44904k
    GGC runs: 102 -> 101
  Amount of memory referenced pre-ipa increased from 68842k to 71658k, overall 4.09%
    Pre-IPA-Garbage: 102815k
    Pre-IPA-Leak: 68842k -> 71658k
    Pre-IPA-Overhead: 14260k -> 14333k
  Amount of memory referenced post-ipa increased from 68842k to 71658k, overall 4.09%
    Post-IPA-Garbage: 102815k
    Post-IPA-Leak: 68842k -> 71658k
    Post-IPA-Overhead: 14260k -> 14333k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2009-03-03 08:48:51.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2009-03-04 01:07:32.000000000 +0000
@@ -1,3 +1,43 @@
+2009-03-03  Steve Ellcey  <sje@cup.hp.com>
+
+	PR middle-end/10109
+	* tm.texi (LIBCALL_VALUE): Update description.
+
+2009-03-03  Steve Ellcey  <sje@cup.hp.com>
+
+	PR middle-end/34443
+	* doc/extend.texi (section): Update description.
+
+2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR middle-end/39345
+	* tree-inline.c (remapped_type): New.
+	(can_be_nonlocal): Call remapped_type instead of remap_type.
+
+2009-03-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR fortran/39354
+	* gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
+	TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
+
+2009-03-03  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/39272
+	* tree.c (tree_nonartificial_location): New function.
+	* tree.h (tree_nonartificial_location): Declare.
+	* builtins.c (expand_builtin_memory_chk): Provide location
+	of the call location for artificial function pieces.
+	(maybe_emit_chk_warning): Likewise.
+	(maybe_emit_sprintf_chk_warning): Likewise.
+	(maybe_emit_free_warning): Likewise.
+	* expr.c (expand_expr_real_1): Likewise.
+
+2009-03-03  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/39343
+	* tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
+	COMPONENT_REF t has ARRAY_TYPE.
+
 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
 
 	PR middle-end/39335


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