This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
A recent patch increased GCC's memory consumption!
- From: gcctest at suse dot de
- To: jh at suse dot cz, gcc-regression at gcc dot gnu dot org
- Date: Thu, 11 Sep 2008 13:10:38 +0000
- Subject: 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.