A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Sat Oct 4 18:59: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
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 218k
    Leak: 1221k
    Overhead: 136k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8427k
    Peak memory use before GGC: 1319k
    Peak memory use after GGC: 1245k
    Maximum of released memory in single GGC run: 133k
    Garbage: 220k
    Leak: 1254k
    Overhead: 141k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8239k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 221k
    Leak: 1221k
    Overhead: 137k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8451k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1221k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8455k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1221k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 31991k
    Peak memory use before GGC: 18010k
    Peak memory use after GGC: 17797k
    Maximum of released memory in single GGC run: 1825k
    Garbage: 39142k
    Leak: 5800k
    Overhead: 5267k
    GGC runs: 337
    Pre-IPA-Garbage: 12405k
    Pre-IPA-Leak: 19411k
    Pre-IPA-Overhead: 2624k
    Post-IPA-Garbage: 12405k
    Post-IPA-Leak: 19411k
    Post-IPA-Overhead: 2624k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34019k
    Peak memory use before GGC: 19916k
    Peak memory use after GGC: 19653k
    Maximum of released memory in single GGC run: 1834k
    Garbage: 39427k
    Leak: 9089k
    Overhead: 6084k
    GGC runs: 320
    Pre-IPA-Garbage: 12504k
    Pre-IPA-Leak: 21684k
    Pre-IPA-Overhead: 3114k
    Post-IPA-Garbage: 12504k
    Post-IPA-Leak: 21684k
    Post-IPA-Overhead: 3114k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30751k -> 30767k
    Peak memory use before GGC: 15674k
    Peak memory use after GGC: 15504k
    Maximum of released memory in single GGC run: 1380k
    Garbage: 46606k -> 46607k
    Leak: 5775k
    Overhead: 6087k -> 6087k
    GGC runs: 401
    Pre-IPA-Garbage: 13144k
    Pre-IPA-Leak: 16897k
    Pre-IPA-Overhead: 2532k
    Post-IPA-Garbage: 13144k
    Post-IPA-Leak: 16897k
    Post-IPA-Overhead: 2532k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31511k -> 31663k
    Peak memory use before GGC: 15818k
    Peak memory use after GGC: 15657k
    Maximum of released memory in single GGC run: 1356k
    Garbage: 60644k -> 60665k
    Leak: 5950k -> 5950k
    Overhead: 8145k -> 8148k
    GGC runs: 470
    Pre-IPA-Garbage: 13307k
    Pre-IPA-Leak: 16979k
    Pre-IPA-Overhead: 2553k
    Post-IPA-Garbage: 13307k
    Post-IPA-Leak: 16979k
    Post-IPA-Overhead: 2553k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 31779k -> 31935k
    Peak memory use before GGC: 15818k
    Peak memory use after GGC: 15657k
    Maximum of released memory in single GGC run: 1794k
    Garbage: 76152k -> 76139k
    Leak: 5822k
    Overhead: 9938k -> 9938k
    GGC runs: 506
    Pre-IPA-Garbage: 13307k
    Pre-IPA-Leak: 16979k
    Pre-IPA-Overhead: 2553k
    Post-IPA-Garbage: 13307k
    Post-IPA-Leak: 16979k
    Post-IPA-Overhead: 2553k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 156827k
    Peak memory use before GGC: 65230k
    Peak memory use after GGC: 53275k
    Maximum of released memory in single GGC run: 27424k
    Garbage: 130808k
    Leak: 8497k
    Overhead: 16158k
    GGC runs: 263
    Pre-IPA-Garbage: 38214k
    Pre-IPA-Leak: 55917k
    Pre-IPA-Overhead: 8653k
    Post-IPA-Garbage: 38214k
    Post-IPA-Leak: 55917k
    Post-IPA-Overhead: 8653k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 158099k
    Peak memory use before GGC: 66504k
    Peak memory use after GGC: 54546k
    Maximum of released memory in single GGC run: 27425k
    Garbage: 131286k
    Leak: 10147k
    Overhead: 16613k
    GGC runs: 255
    Pre-IPA-Garbage: 38271k
    Pre-IPA-Leak: 57459k
    Pre-IPA-Overhead: 8989k
    Post-IPA-Garbage: 38271k
    Post-IPA-Leak: 57459k
    Post-IPA-Overhead: 8989k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134827k
    Peak memory use before GGC: 50202k
    Peak memory use after GGC: 43295k
    Maximum of released memory in single GGC run: 22951k
    Garbage: 181074k
    Leak: 7875k
    Overhead: 25327k
    GGC runs: 302
    Pre-IPA-Garbage: 43191k
    Pre-IPA-Leak: 43443k
    Pre-IPA-Overhead: 8052k
    Post-IPA-Garbage: 43191k
    Post-IPA-Leak: 43443k
    Post-IPA-Overhead: 8052k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 149799k
    Peak memory use before GGC: 50205k
    Peak memory use after GGC: 44284k
    Maximum of released memory in single GGC run: 21469k
    Garbage: 212260k
    Leak: 7882k
    Overhead: 30905k
    GGC runs: 333
    Pre-IPA-Garbage: 43263k
    Pre-IPA-Leak: 43449k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 43263k
    Post-IPA-Leak: 43449k
    Post-IPA-Overhead: 8061k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 164703k
    Peak memory use before GGC: 61826k
    Peak memory use after GGC: 58726k
    Maximum of released memory in single GGC run: 23616k
    Garbage: 242488k
    Leak: 7889k
    Overhead: 34347k
    GGC runs: 339
    Pre-IPA-Garbage: 43263k
    Pre-IPA-Leak: 43449k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 43263k
    Post-IPA-Leak: 43449k
    Post-IPA-Overhead: 8061k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 151245k
    Peak memory use before GGC: 82965k
    Peak memory use after GGC: 82143k
    Maximum of released memory in single GGC run: 14701k
    Garbage: 205266k
    Leak: 52055k
    Overhead: 27261k
    GGC runs: 415
    Pre-IPA-Garbage: 111126k
    Pre-IPA-Leak: 88527k
    Pre-IPA-Overhead: 14978k
    Post-IPA-Garbage: 111126k
    Post-IPA-Leak: 88527k
    Post-IPA-Overhead: 14978k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169181k
    Peak memory use before GGC: 96592k
    Peak memory use after GGC: 95634k
    Maximum of released memory in single GGC run: 15130k
    Garbage: 210899k
    Leak: 78618k
    Overhead: 33924k
    GGC runs: 387
    Pre-IPA-Garbage: 111748k
    Pre-IPA-Leak: 105042k
    Pre-IPA-Overhead: 18481k
    Post-IPA-Garbage: 111748k
    Post-IPA-Leak: 105042k
    Post-IPA-Overhead: 18481k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 111201k
    Peak memory use before GGC: 84209k
    Peak memory use after GGC: 83371k
    Maximum of released memory in single GGC run: 14981k
    Garbage: 282272k -> 282374k
    Leak: 49367k -> 49367k
    Overhead: 32309k -> 32318k
    GGC runs: 502
    Pre-IPA-Garbage: 159782k
    Pre-IPA-Leak: 88164k
    Pre-IPA-Overhead: 20278k
    Post-IPA-Garbage: 159782k
    Post-IPA-Leak: 88164k
    Post-IPA-Overhead: 20278k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 112725k -> 112689k
    Peak memory use before GGC: 85982k
    Peak memory use after GGC: 85115k
    Maximum of released memory in single GGC run: 14965k
    Garbage: 336381k -> 336645k
    Leak: 49421k -> 49437k
    Overhead: 38870k -> 38883k
    GGC runs: 569 -> 568
    Pre-IPA-Garbage: 163775k
    Pre-IPA-Leak: 88524k
    Pre-IPA-Overhead: 20771k
    Post-IPA-Garbage: 163775k
    Post-IPA-Leak: 88524k
    Post-IPA-Overhead: 20771k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 367195k to 367651k, overall 0.12%
    Overall memory needed: 113689k -> 113753k
    Peak memory use before GGC: 86670k
    Peak memory use after GGC: 85729k
    Maximum of released memory in single GGC run: 14965k
    Garbage: 367195k -> 367651k
    Leak: 49424k -> 49423k
    Overhead: 42042k -> 42175k
    GGC runs: 595 -> 596
    Pre-IPA-Garbage: 163855k
    Pre-IPA-Leak: 89183k
    Pre-IPA-Overhead: 20824k
    Post-IPA-Garbage: 163855k
    Post-IPA-Leak: 89183k
    Post-IPA-Overhead: 20824k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 365539k
    Peak memory use before GGC: 78518k
    Peak memory use after GGC: 49452k
    Maximum of released memory in single GGC run: 38186k
    Garbage: 144651k
    Leak: 7110k
    Overhead: 24890k
    GGC runs: 87
    Pre-IPA-Garbage: 12561k
    Pre-IPA-Leak: 20191k
    Pre-IPA-Overhead: 2242k
    Post-IPA-Garbage: 12561k
    Post-IPA-Leak: 20191k
    Post-IPA-Overhead: 2242k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 366331k
    Peak memory use before GGC: 79215k
    Peak memory use after GGC: 50149k
    Maximum of released memory in single GGC run: 38171k
    Garbage: 144752k
    Leak: 9152k
    Overhead: 25474k
    GGC runs: 93
    Pre-IPA-Garbage: 12569k
    Pre-IPA-Leak: 20440k
    Pre-IPA-Overhead: 2296k
    Post-IPA-Garbage: 12569k
    Post-IPA-Leak: 20440k
    Post-IPA-Overhead: 2296k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 244983k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 34721k
    Garbage: 222459k
    Leak: 7807k
    Overhead: 30741k
    GGC runs: 97
    Pre-IPA-Garbage: 48348k
    Pre-IPA-Leak: 63005k
    Pre-IPA-Overhead: 8907k
    Post-IPA-Garbage: 48348k
    Post-IPA-Leak: 63005k
    Post-IPA-Overhead: 8907k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 372123k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 36044k
    Garbage: 250448k
    Leak: 7901k
    Overhead: 36820k
    GGC runs: 106
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 76121k
    Pre-IPA-Overhead: 15359k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 76121k
    Post-IPA-Overhead: 15359k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1026651k
    Peak memory use before GGC: 141898k
    Peak memory use after GGC: 129175k
    Maximum of released memory in single GGC run: 62686k
    Garbage: 362576k
    Leak: 9383k
    Overhead: 45335k
    GGC runs: 103
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 76121k
    Pre-IPA-Overhead: 15359k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 76121k
    Post-IPA-Overhead: 15359k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-10-03 21:13:49.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-10-04 14:36:31.000000000 +0000
@@ -1,3 +1,16 @@
+2008-10-04  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-sccvn.c (vn_reference_op_eq): Use types_compatible_p
+	instead of pointer equality.
+	(vn_nary_op_eq): Likewise.
+
+2008-10-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	* config/rs6000/rs6000.md (fseldfsf4): Add TARGET_SINGLE_FLOAT 
+	condition.
+	(fselsfdf4): Make condition on "TARGET_HARD_FLOAT && TARGET_FPRS &&
+	TARGET_DOUBLE_FLOAT && TARGET_SINGLE_FLOAT".
+
 2008-10-03  Danny Smith  <dannysmith@users.sourceforge.net>
 
 	* config/i386/winnt.c (i386_pe_strip_name_encoding_full):


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