This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

A recent patch increased GCC's memory consumption!


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: 8184k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 218k
    Leak: 1222k
    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: 8428k
    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: 8236k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 221k
    Leak: 1222k
    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: 8456k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1222k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1225k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1225k
    Post-IPA-Overhead: 135k

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

comparing combine.c compilation at -O0 level:
    Overall memory needed: 32044k -> 32048k
    Peak memory use before GGC: 18032k -> 18040k
    Peak memory use after GGC: 17774k
    Maximum of released memory in single GGC run: 1866k
    Garbage: 39943k -> 39946k
    Leak: 5639k -> 5639k
    Overhead: 5266k -> 5266k
    GGC runs: 339
    Pre-IPA-Garbage: 12581k -> 12580k
    Pre-IPA-Leak: 19385k -> 19385k
    Pre-IPA-Overhead: 2623k -> 2623k
    Post-IPA-Garbage: 12581k -> 12580k
    Post-IPA-Leak: 19385k -> 19385k
    Post-IPA-Overhead: 2623k -> 2623k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34056k -> 34060k
    Peak memory use before GGC: 19957k
    Peak memory use after GGC: 19629k -> 19630k
    Maximum of released memory in single GGC run: 1875k -> 1876k
    Garbage: 40245k -> 40222k
    Leak: 8928k -> 8920k
    Overhead: 6083k -> 6083k
    GGC runs: 322 -> 321
    Pre-IPA-Garbage: 12680k -> 12679k
    Pre-IPA-Leak: 21658k -> 21659k
    Pre-IPA-Overhead: 3113k -> 3113k
    Post-IPA-Garbage: 12680k -> 12679k
    Post-IPA-Leak: 21658k -> 21659k
    Post-IPA-Overhead: 3113k -> 3113k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31024k -> 31012k
    Peak memory use before GGC: 15689k -> 15669k
    Peak memory use after GGC: 15518k -> 15488k
    Maximum of released memory in single GGC run: 1366k
    Garbage: 47221k -> 47249k
    Leak: 5624k -> 5624k
    Overhead: 6102k -> 6103k
    GGC runs: 404
    Pre-IPA-Garbage: 13457k -> 13456k
    Pre-IPA-Leak: 16876k -> 16877k
    Pre-IPA-Overhead: 2532k -> 2532k
    Post-IPA-Garbage: 13457k -> 13456k
    Post-IPA-Leak: 16876k -> 16877k
    Post-IPA-Overhead: 2532k -> 2532k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31868k -> 31876k
    Peak memory use before GGC: 15780k -> 15775k
    Peak memory use after GGC: 15621k -> 15608k
    Maximum of released memory in single GGC run: 1326k -> 1325k
    Garbage: 61239k -> 61236k
    Leak: 5800k -> 5798k
    Overhead: 8186k -> 8186k
    GGC runs: 474 -> 475
    Pre-IPA-Garbage: 13631k -> 13631k
    Pre-IPA-Leak: 16952k -> 16953k
    Pre-IPA-Overhead: 2554k -> 2554k
    Post-IPA-Garbage: 13631k -> 13631k
    Post-IPA-Leak: 16952k -> 16953k
    Post-IPA-Overhead: 2554k -> 2554k

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 5676k to 5683k, overall 0.13%
    Overall memory needed: 33128k -> 33060k
    Peak memory use before GGC: 15924k -> 15809k
    Peak memory use after GGC: 15720k -> 15651k
    Maximum of released memory in single GGC run: 1818k -> 1813k
    Garbage: 76737k -> 76733k
    Leak: 5676k -> 5683k
    Overhead: 10029k -> 10029k
    GGC runs: 508
    Pre-IPA-Garbage: 13632k -> 13632k
    Pre-IPA-Leak: 16963k -> 16964k
    Pre-IPA-Overhead: 2555k -> 2555k
    Post-IPA-Garbage: 13632k -> 13632k
    Post-IPA-Leak: 16963k -> 16964k
    Post-IPA-Overhead: 2555k -> 2555k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 158228k
    Peak memory use before GGC: 65873k
    Peak memory use after GGC: 53242k
    Maximum of released memory in single GGC run: 28569k
    Garbage: 134335k
    Leak: 7489k
    Overhead: 16157k
    GGC runs: 265
    Pre-IPA-Garbage: 39228k
    Pre-IPA-Leak: 55907k
    Pre-IPA-Overhead: 8653k
    Post-IPA-Garbage: 39228k
    Post-IPA-Leak: 55907k
    Post-IPA-Overhead: 8653k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 159532k
    Peak memory use before GGC: 67147k
    Peak memory use after GGC: 54514k
    Maximum of released memory in single GGC run: 28569k
    Garbage: 134814k
    Leak: 9140k
    Overhead: 16613k
    GGC runs: 258
    Pre-IPA-Garbage: 39285k
    Pre-IPA-Leak: 57449k
    Pre-IPA-Overhead: 8988k
    Post-IPA-Garbage: 39285k
    Post-IPA-Leak: 57449k
    Post-IPA-Overhead: 8988k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134892k
    Peak memory use before GGC: 50247k
    Peak memory use after GGC: 43080k
    Maximum of released memory in single GGC run: 23393k
    Garbage: 184506k
    Leak: 6871k
    Overhead: 25327k
    GGC runs: 305
    Pre-IPA-Garbage: 45205k
    Pre-IPA-Leak: 43436k
    Pre-IPA-Overhead: 8052k
    Post-IPA-Garbage: 45205k
    Post-IPA-Leak: 43436k
    Post-IPA-Overhead: 8052k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 150260k
    Peak memory use before GGC: 50279k
    Peak memory use after GGC: 43994k
    Maximum of released memory in single GGC run: 22010k
    Garbage: 216414k
    Leak: 6879k
    Overhead: 31033k
    GGC runs: 340
    Pre-IPA-Garbage: 45283k
    Pre-IPA-Leak: 43441k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 45283k
    Post-IPA-Leak: 43441k
    Post-IPA-Overhead: 8061k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 162584k -> 164668k
    Peak memory use before GGC: 61578k
    Peak memory use after GGC: 58454k
    Maximum of released memory in single GGC run: 24308k -> 24309k
    Garbage: 246737k -> 246756k
    Leak: 6886k
    Overhead: 34484k -> 34484k
    GGC runs: 343
    Pre-IPA-Garbage: 45283k
    Pre-IPA-Leak: 43441k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 45283k
    Post-IPA-Leak: 43441k
    Post-IPA-Overhead: 8061k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 150435k
    Peak memory use before GGC: 82283k
    Peak memory use after GGC: 81468k
    Maximum of released memory in single GGC run: 16450k
    Garbage: 212604k
    Leak: 49791k
    Overhead: 27190k
    GGC runs: 424
    Pre-IPA-Garbage: 114063k
    Pre-IPA-Leak: 87272k
    Pre-IPA-Overhead: 14907k
    Post-IPA-Garbage: 114063k
    Post-IPA-Leak: 87272k
    Post-IPA-Overhead: 14907k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 168003k
    Peak memory use before GGC: 95772k
    Peak memory use after GGC: 94820k
    Maximum of released memory in single GGC run: 16877k
    Garbage: 218255k
    Leak: 76354k
    Overhead: 33854k
    GGC runs: 394
    Pre-IPA-Garbage: 114685k
    Pre-IPA-Leak: 103786k
    Pre-IPA-Overhead: 18410k
    Post-IPA-Garbage: 114685k
    Post-IPA-Leak: 103786k
    Post-IPA-Overhead: 18410k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 112087k -> 112095k
    Peak memory use before GGC: 82329k
    Peak memory use after GGC: 81503k
    Maximum of released memory in single GGC run: 16685k
    Garbage: 291411k
    Leak: 46585k
    Overhead: 32515k
    GGC runs: 516
    Pre-IPA-Garbage: 167245k
    Pre-IPA-Leak: 86056k
    Pre-IPA-Overhead: 20408k
    Post-IPA-Garbage: 167245k
    Post-IPA-Leak: 86056k
    Post-IPA-Overhead: 20408k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 115371k -> 115375k
    Peak memory use before GGC: 83778k
    Peak memory use after GGC: 82799k
    Maximum of released memory in single GGC run: 16656k
    Garbage: 345503k
    Leak: 46506k
    Overhead: 39162k
    GGC runs: 580
    Pre-IPA-Garbage: 171448k
    Pre-IPA-Leak: 86362k
    Pre-IPA-Overhead: 20902k
    Post-IPA-Garbage: 171448k
    Post-IPA-Leak: 86362k
    Post-IPA-Overhead: 20902k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 116951k -> 116995k
    Peak memory use before GGC: 84478k
    Peak memory use after GGC: 83419k
    Maximum of released memory in single GGC run: 16656k
    Garbage: 376955k -> 376977k
    Leak: 46507k -> 46498k
    Overhead: 42457k -> 42457k
    GGC runs: 615 -> 614
    Pre-IPA-Garbage: 171534k
    Pre-IPA-Leak: 87044k
    Pre-IPA-Overhead: 20957k
    Post-IPA-Garbage: 171534k
    Post-IPA-Leak: 87044k
    Post-IPA-Overhead: 20957k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 368859k
    Peak memory use before GGC: 78451k
    Peak memory use after GGC: 49385k
    Maximum of released memory in single GGC run: 38763k
    Garbage: 147530k
    Leak: 6511k
    Overhead: 24890k
    GGC runs: 87
    Pre-IPA-Garbage: 13630k
    Pre-IPA-Leak: 20190k
    Pre-IPA-Overhead: 2241k
    Post-IPA-Garbage: 13630k
    Post-IPA-Leak: 20190k
    Post-IPA-Overhead: 2241k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 369635k
    Peak memory use before GGC: 79148k
    Peak memory use after GGC: 50082k
    Maximum of released memory in single GGC run: 38748k
    Garbage: 147631k
    Leak: 8553k
    Overhead: 25474k
    GGC runs: 93
    Pre-IPA-Garbage: 13637k
    Pre-IPA-Leak: 20439k
    Pre-IPA-Overhead: 2296k
    Post-IPA-Garbage: 13637k
    Post-IPA-Leak: 20439k
    Post-IPA-Overhead: 2296k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 227888k
    Peak memory use before GGC: 71433k
    Peak memory use after GGC: 63951k
    Maximum of released memory in single GGC run: 35392k
    Garbage: 226744k
    Leak: 7088k
    Overhead: 30781k
    GGC runs: 98
    Pre-IPA-Garbage: 51799k
    Pre-IPA-Leak: 62150k
    Pre-IPA-Overhead: 8965k
    Post-IPA-Garbage: 51799k
    Post-IPA-Leak: 62150k
    Post-IPA-Overhead: 8965k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 369660k
    Peak memory use before GGC: 71433k
    Peak memory use after GGC: 63952k
    Maximum of released memory in single GGC run: 36706k
    Garbage: 255087k
    Leak: 6910k
    Overhead: 36877k
    GGC runs: 109
    Pre-IPA-Garbage: 111829k
    Pre-IPA-Leak: 73071k
    Pre-IPA-Overhead: 15408k
    Post-IPA-Garbage: 111829k
    Post-IPA-Leak: 73071k
    Post-IPA-Overhead: 15408k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1024508k
    Peak memory use before GGC: 138535k
    Peak memory use after GGC: 125812k
    Maximum of released memory in single GGC run: 62503k
    Garbage: 366227k
    Leak: 9422k
    Overhead: 45446k
    GGC runs: 106
    Pre-IPA-Garbage: 111829k
    Pre-IPA-Leak: 73071k
    Pre-IPA-Overhead: 15408k
    Post-IPA-Garbage: 111829k
    Post-IPA-Leak: 73071k
    Post-IPA-Overhead: 15408k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-09-10 17:01:39.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-09-11 09:35:20.000000000 +0000
@@ -1,3 +1,26 @@
+2008-09-11  Jakub Jelinek  <jakub@redhat.com>
+
+	PR target/37382
+	* expmed.c (extract_low_bits): Avoid creating invalid subregs.
+	* dse.c (find_shift_sequence): Use extract_low_bits instead of
+	simplify_gen_subreg.
+
+2008-09-11  Ira Rosen  <irar@il.ibm.com>
+
+	* tree-vect-transform.c (vectorizable_store): Use the rhs vector type
+	for alias check.
+
+2008-09-10  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/37338
+	* gimplify.c (gimplify_body): Call default_rtl_profile.
+
+	PR target/36904
+	* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Return NULL
+	instead of tok->val.node if not expanding to something else.  Handle
+	intervening CPP_PADDING tokens.
+	(altivec_categorize_keyword): Remove unneeded comparisons.
+
 2008-09-10  Richard Guenther  <rguenther@suse.de>
 
 	* tree-ssa-pre.c (phi_translate_1): Fix memory leak.


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]