A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Tue May 20 23:06:00 GMT 2008


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: 8183k -> 8181k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1001k
    Maximum of released memory in single GGC run: 129k
    Garbage: 238k
    Leak: 959k
    Overhead: 80k
    GGC runs: 2
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8199k -> 8197k
    Peak memory use before GGC: 1132k
    Peak memory use after GGC: 1036k
    Maximum of released memory in single GGC run: 128k
    Garbage: 241k
    Leak: 992k
    Overhead: 85k
    GGC runs: 4
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8251k -> 8253k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1001k
    Maximum of released memory in single GGC run: 131k
    Garbage: 240k
    Leak: 959k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 962k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 962k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8271k -> 8273k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1002k
    Maximum of released memory in single GGC run: 134k
    Garbage: 244k
    Leak: 960k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 962k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 962k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8275k -> 8273k
    Peak memory use before GGC: 1105k
    Peak memory use after GGC: 1002k
    Maximum of released memory in single GGC run: 134k
    Garbage: 244k
    Leak: 960k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 962k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 962k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22631k -> 22629k
    Peak memory use before GGC: 7774k
    Peak memory use after GGC: 7150k
    Maximum of released memory in single GGC run: 1545k
    Garbage: 37775k
    Leak: 5479k
    Overhead: 4616k
    GGC runs: 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24715k -> 24713k
    Peak memory use before GGC: 9708k
    Peak memory use after GGC: 9047k
    Maximum of released memory in single GGC run: 1832k
    Garbage: 38144k
    Leak: 8674k
    Overhead: 5412k
    GGC runs: 341
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32771k -> 32765k
    Peak memory use before GGC: 16182k
    Peak memory use after GGC: 16018k
    Maximum of released memory in single GGC run: 1375k
    Garbage: 51456k -> 51454k
    Leak: 5648k
    Overhead: 5730k -> 5730k
    GGC runs: 439
    Pre-IPA-Garbage: 13900k -> 13899k
    Pre-IPA-Leak: 16974k
    Pre-IPA-Overhead: 2086k -> 2086k
    Post-IPA-Garbage: 13900k -> 13899k
    Post-IPA-Leak: 16974k
    Post-IPA-Overhead: 2086k -> 2086k

comparing combine.c compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 5964k to 5971k, overall 0.12%
    Overall memory needed: 34543k -> 34545k
    Peak memory use before GGC: 16272k -> 16281k
    Peak memory use after GGC: 16110k
    Maximum of released memory in single GGC run: 1304k
    Garbage: 71633k -> 71599k
    Leak: 5964k -> 5971k
    Overhead: 8071k -> 8069k
    GGC runs: 509
    Pre-IPA-Garbage: 14052k -> 14051k
    Pre-IPA-Leak: 17038k
    Pre-IPA-Overhead: 2099k -> 2099k
    Post-IPA-Garbage: 14052k -> 14051k
    Post-IPA-Leak: 17038k
    Post-IPA-Overhead: 2099k -> 2099k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 38699k -> 38701k
    Peak memory use before GGC: 16365k
    Peak memory use after GGC: 16126k
    Maximum of released memory in single GGC run: 2439k
    Garbage: 91487k -> 91412k
    Leak: 6035k -> 6035k
    Overhead: 10603k -> 10598k
    GGC runs: 544
    Pre-IPA-Garbage: 14054k -> 14052k
    Pre-IPA-Leak: 17049k
    Pre-IPA-Overhead: 2101k -> 2101k
    Post-IPA-Garbage: 14054k -> 14052k
    Post-IPA-Leak: 17049k
    Post-IPA-Overhead: 2101k -> 2101k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137447k -> 137449k
    Peak memory use before GGC: 56959k
    Peak memory use after GGC: 31385k
    Maximum of released memory in single GGC run: 33223k
    Garbage: 128387k
    Leak: 8355k
    Overhead: 14291k
    GGC runs: 291
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138735k -> 138737k
    Peak memory use before GGC: 58161k
    Peak memory use after GGC: 32586k
    Maximum of released memory in single GGC run: 33224k
    Garbage: 128896k
    Leak: 9933k
    Overhead: 14731k
    GGC runs: 288
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142363k -> 142349k
    Peak memory use before GGC: 56076k
    Peak memory use after GGC: 49743k
    Maximum of released memory in single GGC run: 23960k
    Garbage: 204998k
    Leak: 9261k
    Overhead: 24455k
    GGC runs: 315
    Pre-IPA-Garbage: 50366k
    Pre-IPA-Leak: 49269k
    Pre-IPA-Overhead: 7416k
    Post-IPA-Garbage: 50366k
    Post-IPA-Leak: 49269k
    Post-IPA-Overhead: 7416k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184375k -> 184397k
    Peak memory use before GGC: 56658k
    Peak memory use after GGC: 51344k
    Maximum of released memory in single GGC run: 22852k
    Garbage: 246589k
    Leak: 10337k
    Overhead: 30363k
    GGC runs: 345
    Pre-IPA-Garbage: 50437k
    Pre-IPA-Leak: 49273k
    Pre-IPA-Overhead: 7423k
    Post-IPA-Garbage: 50437k
    Post-IPA-Leak: 49273k
    Post-IPA-Overhead: 7423k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190875k -> 190877k
    Peak memory use before GGC: 68990k
    Peak memory use after GGC: 64797k
    Maximum of released memory in single GGC run: 24862k
    Garbage: 273782k
    Leak: 10373k
    Overhead: 32269k
    GGC runs: 345
    Pre-IPA-Garbage: 50437k
    Pre-IPA-Leak: 49273k
    Pre-IPA-Overhead: 7423k
    Post-IPA-Garbage: 50437k
    Post-IPA-Leak: 49273k
    Post-IPA-Overhead: 7423k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 144130k
    Peak memory use before GGC: 80333k
    Peak memory use after GGC: 79538k
    Maximum of released memory in single GGC run: 14816k
    Garbage: 197265k
    Leak: 47151k
    Overhead: 24079k
    GGC runs: 418
    Pre-IPA-Garbage: 107899k
    Pre-IPA-Leak: 69071k
    Pre-IPA-Overhead: 12017k
    Post-IPA-Garbage: 107899k
    Post-IPA-Leak: 69071k
    Post-IPA-Overhead: 12017k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 166186k
    Peak memory use before GGC: 92917k
    Peak memory use after GGC: 91996k
    Maximum of released memory in single GGC run: 15518k
    Garbage: 202908k
    Leak: 71539k
    Overhead: 30437k
    GGC runs: 389
    Pre-IPA-Garbage: 108542k
    Pre-IPA-Leak: 83804k
    Pre-IPA-Overhead: 15320k
    Post-IPA-Garbage: 108542k
    Post-IPA-Leak: 83804k
    Post-IPA-Overhead: 15320k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 118971k -> 118973k
    Peak memory use before GGC: 79481k
    Peak memory use after GGC: 78688k
    Maximum of released memory in single GGC run: 14455k
    Garbage: 287462k -> 287459k
    Leak: 46302k
    Overhead: 28531k -> 28530k
    GGC runs: 520
    Pre-IPA-Garbage: 151112k -> 151111k
    Pre-IPA-Leak: 83060k
    Pre-IPA-Overhead: 16674k -> 16674k
    Post-IPA-Garbage: 151112k -> 151111k
    Post-IPA-Leak: 83060k
    Post-IPA-Overhead: 16674k -> 16674k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 121203k -> 121205k
    Peak memory use before GGC: 79507k
    Peak memory use after GGC: 78720k
    Maximum of released memory in single GGC run: 14457k
    Garbage: 355648k -> 355433k
    Leak: 47706k
    Overhead: 35648k -> 35633k
    GGC runs: 597
    Pre-IPA-Garbage: 152715k -> 152713k
    Pre-IPA-Leak: 82937k
    Pre-IPA-Overhead: 16810k -> 16810k
    Post-IPA-Garbage: 152715k -> 152713k
    Post-IPA-Leak: 82937k
    Post-IPA-Overhead: 16810k -> 16810k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 124255k -> 124241k
    Peak memory use before GGC: 81000k
    Peak memory use after GGC: 80198k
    Maximum of released memory in single GGC run: 14780k
    Garbage: 382595k -> 382274k
    Leak: 48128k -> 48115k
    Overhead: 37913k -> 37888k
    GGC runs: 620 -> 619
    Pre-IPA-Garbage: 155340k -> 155332k
    Pre-IPA-Leak: 83221k
    Pre-IPA-Overhead: 17052k -> 17051k
    Post-IPA-Garbage: 155340k -> 155332k
    Post-IPA-Leak: 83221k
    Post-IPA-Overhead: 17052k -> 17051k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380348k -> 380351k
    Peak memory use before GGC: 100958k
    Peak memory use after GGC: 56612k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 178453k
    Leak: 6104k
    Overhead: 30541k
    GGC runs: 106
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381192k -> 381191k
    Peak memory use before GGC: 101651k
    Peak memory use after GGC: 57305k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 178616k
    Leak: 8133k
    Overhead: 31125k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 398935k -> 398281k
    Peak memory use before GGC: 75052k
    Peak memory use after GGC: 68956k
    Maximum of released memory in single GGC run: 34950k
    Garbage: 237663k
    Leak: 13678k
    Overhead: 30716k
    GGC runs: 106
    Pre-IPA-Garbage: 47276k
    Pre-IPA-Leak: 65130k
    Pre-IPA-Overhead: 6423k
    Post-IPA-Garbage: 47276k
    Post-IPA-Leak: 65130k
    Post-IPA-Overhead: 6423k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 303263k -> 303265k
    Peak memory use before GGC: 74967k
    Peak memory use after GGC: 68957k
    Maximum of released memory in single GGC run: 31580k
    Garbage: 252144k
    Leak: 13852k
    Overhead: 33834k
    GGC runs: 118
    Pre-IPA-Garbage: 99281k
    Pre-IPA-Leak: 82247k
    Pre-IPA-Overhead: 10465k
    Post-IPA-Garbage: 99281k
    Post-IPA-Leak: 82247k
    Post-IPA-Overhead: 10465k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1079667k -> 1079665k
    Peak memory use before GGC: 141304k
    Peak memory use after GGC: 131199k
    Maximum of released memory in single GGC run: 55802k
    Garbage: 343000k
    Leak: 22001k
    Overhead: 37524k
    GGC runs: 102
    Pre-IPA-Garbage: 99281k
    Pre-IPA-Leak: 82247k
    Pre-IPA-Overhead: 10465k
    Post-IPA-Garbage: 99281k
    Post-IPA-Leak: 82247k
    Post-IPA-Overhead: 10465k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-05-20 14:50:54.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-05-20 19:11:33.000000000 +0000
@@ -1,3 +1,41 @@
+2008-05-20  Joseph Myers  <joseph@codesourcery.com>
+
+	* doc/install.texi2html: Generate gcc-vers.texi in $DESTDIR not
+	$SOURCEDIR/include.
+
+2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
+	    Sebastian Pop  <sebastian.pop@amd.com>
+
+	PR tree-optimization/36206
+	* tree-scalar-evolution.c: Remove enum INSERT_SUPERLOOP_CHRECS,
+	FOLD_CONVERSIONS.
+	(instantiate_scev_1): Rename flags to fold_conversions.
+	Do not check for INSERT_SUPERLOOP_CHRECS, keep SSA_NAMEs defined
+	outeside instantiation_loop.
+	* tree-chrec.h (evolution_function_is_affine_in_loop): New.
+	(evolution_function_is_affine_or_constant_p): Removed.
+	* tree-data-ref.c (dr_analyze_indices): Replace resolve_mixers with
+	instantiate_scev.
+	(analyze_siv_subscript): Pass in the loop nest number.
+	Call evolution_function_is_affine_in_loop instead of 
+	evolution_function_is_affine_p.
+	(analyze_overlapping_iterations): Pass in the loop nest number.
+
+2008-05-20  Jan Sjodin  <jan.sjodin@amd.com>
+	    Sebastian Pop  <sebastian.pop@amd.com>
+
+	PR tree-optimization/36206
+	* tree-chrec.h (chrec_fold_op): New.
+	* tree-data-ref.c (initialize_matrix_A): Traverse NOP_EXPR, PLUS_EXPR, and
+	other trees.
+
+2008-05-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* c-incpath.c (INO_T_EQ): Do not define on non-inode systems.
+	(DIRS_EQ): New.
+	(remove_duplicates): Do not set inode on non-inode systems.  Use
+	DIRS_EQ.
+
 2008-05-20  Sandra Loosemore  <sandra@codesourcery.com>
 
 	* config.gcc (tm_file): Update comments about relative pathnames.


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