A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Tue Jan 29 11:57: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: 8151k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 129k
    Garbage: 237k
    Leak: 951k
    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: 8167k
    Peak memory use before GGC: 1123k
    Peak memory use after GGC: 1021k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 984k
    Overhead: 84k
    GGC runs: 3
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8211k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 952k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 954k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 954k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8231k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 243k
    Leak: 953k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 955k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 955k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8231k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 243k
    Leak: 953k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 955k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 955k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22703k
    Peak memory use before GGC: 7809k
    Peak memory use after GGC: 7186k
    Maximum of released memory in single GGC run: 1550k
    Garbage: 37949k
    Leak: 5506k
    Overhead: 4649k
    GGC runs: 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24707k
    Peak memory use before GGC: 9648k
    Peak memory use after GGC: 8954k
    Maximum of released memory in single GGC run: 1838k
    Garbage: 38291k
    Leak: 8380k
    Overhead: 5276k
    GGC runs: 342
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32915k
    Peak memory use before GGC: 16345k
    Peak memory use after GGC: 16161k
    Maximum of released memory in single GGC run: 1362k
    Garbage: 51465k
    Leak: 5660k
    Overhead: 5782k
    GGC runs: 443
    Pre-IPA-Garbage: 13923k
    Pre-IPA-Leak: 17182k
    Pre-IPA-Overhead: 2129k
    Post-IPA-Garbage: 13923k
    Post-IPA-Leak: 17182k
    Post-IPA-Overhead: 2129k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 35775k
    Peak memory use before GGC: 16446k
    Peak memory use after GGC: 16280k
    Maximum of released memory in single GGC run: 1316k
    Garbage: 71112k
    Leak: 5985k
    Overhead: 8062k
    GGC runs: 512
    Pre-IPA-Garbage: 14080k
    Pre-IPA-Leak: 17247k
    Pre-IPA-Overhead: 2144k
    Post-IPA-Garbage: 14080k
    Post-IPA-Leak: 17247k
    Post-IPA-Overhead: 2144k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 39043k
    Peak memory use before GGC: 16623k
    Peak memory use after GGC: 16301k
    Maximum of released memory in single GGC run: 2063k
    Garbage: 93114k
    Leak: 6109k
    Overhead: 10685k
    GGC runs: 546
    Pre-IPA-Garbage: 14086k
    Pre-IPA-Leak: 17267k
    Pre-IPA-Overhead: 2146k
    Post-IPA-Garbage: 14086k
    Post-IPA-Leak: 17267k
    Post-IPA-Overhead: 2146k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137443k
    Peak memory use before GGC: 56999k
    Peak memory use after GGC: 31456k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128624k
    Leak: 8382k
    Overhead: 14368k
    GGC runs: 293
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138695k
    Peak memory use before GGC: 58141k
    Peak memory use after GGC: 32598k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128862k
    Leak: 10057k
    Overhead: 14724k
    GGC runs: 289
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 143023k
    Peak memory use before GGC: 56211k
    Peak memory use after GGC: 49983k
    Maximum of released memory in single GGC run: 23976k
    Garbage: 206434k
    Leak: 9275k
    Overhead: 24742k
    GGC runs: 315
    Pre-IPA-Garbage: 50355k
    Pre-IPA-Leak: 49676k
    Pre-IPA-Overhead: 7543k
    Post-IPA-Garbage: 50355k
    Post-IPA-Leak: 49676k
    Post-IPA-Overhead: 7543k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184487k
    Peak memory use before GGC: 56850k
    Peak memory use after GGC: 51570k
    Maximum of released memory in single GGC run: 22370k
    Garbage: 246629k
    Leak: 10362k
    Overhead: 30342k
    GGC runs: 346
    Pre-IPA-Garbage: 50427k
    Pre-IPA-Leak: 49680k
    Pre-IPA-Overhead: 7550k
    Post-IPA-Garbage: 50427k
    Post-IPA-Leak: 49680k
    Post-IPA-Overhead: 7550k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190715k
    Peak memory use before GGC: 68033k
    Peak memory use after GGC: 62277k
    Maximum of released memory in single GGC run: 22870k
    Garbage: 274492k
    Leak: 10399k
    Overhead: 32131k
    GGC runs: 348
    Pre-IPA-Garbage: 50427k
    Pre-IPA-Leak: 49680k
    Pre-IPA-Overhead: 7550k
    Post-IPA-Garbage: 50427k
    Post-IPA-Leak: 49680k
    Post-IPA-Overhead: 7550k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 149536k
    Peak memory use before GGC: 84844k
    Peak memory use after GGC: 84004k
    Maximum of released memory in single GGC run: 17148k
    Garbage: 201068k
    Leak: 48167k
    Overhead: 24077k
    GGC runs: 417
    Pre-IPA-Garbage: 109656k
    Pre-IPA-Leak: 71354k
    Pre-IPA-Overhead: 12149k
    Post-IPA-Garbage: 109656k
    Post-IPA-Leak: 71354k
    Post-IPA-Overhead: 12149k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169404k
    Peak memory use before GGC: 96057k
    Peak memory use after GGC: 95106k
    Maximum of released memory in single GGC run: 17205k
    Garbage: 206714k
    Leak: 69892k
    Overhead: 29063k
    GGC runs: 391
    Pre-IPA-Garbage: 110300k
    Pre-IPA-Leak: 84635k
    Pre-IPA-Overhead: 14725k
    Post-IPA-Garbage: 110300k
    Post-IPA-Leak: 84635k
    Post-IPA-Overhead: 14725k

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 84526k to 84646k, overall 0.14%
  Peak amount of GGC memory still allocated after garbage collecting increased from 83674k to 83795k, overall 0.14%
  Amount of produced GGC garbage increased from 290478k to 290787k, overall 0.11%
    Overall memory needed: 123311k -> 123395k
    Peak memory use before GGC: 84526k -> 84646k
    Peak memory use after GGC: 83674k -> 83795k
    Maximum of released memory in single GGC run: 16325k
    Garbage: 290478k -> 290787k
    Leak: 47417k -> 47413k
    Overhead: 29395k -> 29426k
    GGC runs: 514
  Amount of memory referenced pre-ipa increased from 88333k to 88460k, overall 0.14%
    Pre-IPA-Garbage: 155088k -> 155072k
    Pre-IPA-Leak: 88333k -> 88460k
    Pre-IPA-Overhead: 17591k -> 17597k
  Amount of memory referenced post-ipa increased from 88333k to 88460k, overall 0.14%
    Post-IPA-Garbage: 155088k -> 155072k
    Post-IPA-Leak: 88333k -> 88460k
    Post-IPA-Overhead: 17591k -> 17597k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 84744k to 84892k, overall 0.17%
  Amount of produced GGC garbage increased from 357660k to 358720k, overall 0.30%
    Overall memory needed: 124219k -> 124339k
    Peak memory use before GGC: 84744k -> 84892k
    Peak memory use after GGC: 83904k -> 83977k
    Maximum of released memory in single GGC run: 16363k
    Garbage: 357660k -> 358720k
    Leak: 48357k -> 48361k
    Overhead: 36423k -> 36471k
    GGC runs: 588
  Amount of memory referenced pre-ipa increased from 88461k to 88594k, overall 0.15%
    Pre-IPA-Garbage: 158356k -> 158420k
    Pre-IPA-Leak: 88461k -> 88594k
    Pre-IPA-Overhead: 17937k -> 17949k
  Amount of memory referenced post-ipa increased from 88461k to 88594k, overall 0.15%
    Post-IPA-Garbage: 158356k -> 158420k
    Post-IPA-Leak: 88461k -> 88594k
    Post-IPA-Overhead: 17937k -> 17949k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 85632k to 86076k, overall 0.52%
  Peak amount of GGC memory still allocated after garbage collecting increased from 84736k to 85212k, overall 0.56%
  Amount of produced GGC garbage increased from 384810k to 385451k, overall 0.17%
    Overall memory needed: 126903k -> 126967k
    Peak memory use before GGC: 85632k -> 86076k
    Peak memory use after GGC: 84736k -> 85212k
    Maximum of released memory in single GGC run: 16722k
    Garbage: 384810k -> 385451k
    Leak: 48965k -> 48969k
    Overhead: 38662k -> 38675k
    GGC runs: 617 -> 620
  Amount of memory referenced pre-ipa increased from 88740k to 88874k, overall 0.15%
    Pre-IPA-Garbage: 161157k -> 161224k
    Pre-IPA-Leak: 88740k -> 88874k
    Pre-IPA-Overhead: 18191k -> 18203k
  Amount of memory referenced post-ipa increased from 88740k to 88874k, overall 0.15%
    Post-IPA-Garbage: 161157k -> 161224k
    Post-IPA-Leak: 88740k -> 88874k
    Post-IPA-Overhead: 18191k -> 18203k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380432k
    Peak memory use before GGC: 101209k
    Peak memory use after GGC: 56862k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178951k
    Leak: 6098k
    Overhead: 30783k
    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: 381232k
    Peak memory use before GGC: 101839k
    Peak memory use after GGC: 57493k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 179066k
    Leak: 7828k
    Overhead: 31215k
    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: 438587k
    Peak memory use before GGC: 78857k
    Peak memory use after GGC: 70436k
    Maximum of released memory in single GGC run: 37753k
    Garbage: 234534k
    Leak: 16073k
    Overhead: 35581k
    GGC runs: 105
    Pre-IPA-Garbage: 52924k
    Pre-IPA-Leak: 49245k
    Pre-IPA-Overhead: 7121k
    Post-IPA-Garbage: 52924k
    Post-IPA-Leak: 49245k
    Post-IPA-Overhead: 7121k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 359427k
    Peak memory use before GGC: 75423k
    Peak memory use after GGC: 70437k
    Maximum of released memory in single GGC run: 32251k
    Garbage: 245332k
    Leak: 16245k
    Overhead: 38769k
    GGC runs: 116
    Pre-IPA-Garbage: 91836k
    Pre-IPA-Leak: 77290k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91836k
    Post-IPA-Leak: 77290k
    Post-IPA-Overhead: 11793k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1196459k
    Peak memory use before GGC: 136584k
    Peak memory use after GGC: 127942k
    Maximum of released memory in single GGC run: 59911k
    Garbage: 371518k
    Leak: 24376k
    Overhead: 49888k
    GGC runs: 103
    Pre-IPA-Garbage: 91836k
    Pre-IPA-Leak: 77290k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91836k
    Post-IPA-Leak: 77290k
    Post-IPA-Overhead: 11793k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-01-28 17:00:35.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-01-29 08:57:14.000000000 +0000
@@ -1,3 +1,36 @@
+2008-01-28  Andy Hutchinson   <hutchinsonandy@netscape.net>
+
+	PR target/34412
+	* config/avr/avr.c (expand_prologue): Use correct QI mode frame 
+	pointer for tiny stack.
+
+2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
+
+	* doc/tree-ssa.texi: Add cindex PHI nodes and improve wording.
+
+2008-01-28  Bernhard Fischer  <aldot@gcc.gnu.org>
+
+	* config/vx-common.h: Fix typo in comment.
+
+2008-01-28  Ian Lance Taylor  <iant@google.com>
+
+	PR c++/34862
+	PR c++/33407
+	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
+	coalesce pointers if they have different DECL_NO_TBAA_P values.
+	* tree-ssa-copy.c (may_propagate_copy): Don't propagate copies
+	between variables with different DECL_NO_TBAA_P values.
+
+2008-01-28  Nathan Froyd  <froydnj@codesourcery.com>
+
+	PR 31535
+	* config/rs6000/rs6000.c (small_data_operand): Vectors and floats
+	are not legitimate small data references on SPE targets.
+
+2008-01-28  David Daney  <ddaney@avtrex.com>
+
+	* doc/install.texi (mips-*-*): Recommend binutils 2.18.
+
 2008-01-28  David Daney  <ddaney@avtrex.com>
 
 	* doc/install.texi (--disable-libgcj-bc):  Reword documentation.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-01-28 17:00:35.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-01-29 08:56:52.000000000 +0000
@@ -1,3 +1,8 @@
+2008-01-28  Jason Merrill  <jason@redhat.com>
+
+	PR c++/35007
+	* class.c (build_base_path): Fix !want_pointer case.
+
 2008-01-27  Jason Merrill  <jason@redhat.com>
 
 	PR c++/27177


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