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, 09 Oct 2008 21:08:08 +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: 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:
Amount of produced GGC garbage increased from 39415k to 39485k, overall 0.18%
Overall memory needed: 32039k
Peak memory use before GGC: 18016k
Peak memory use after GGC: 17797k
Maximum of released memory in single GGC run: 1838k -> 1840k
Garbage: 39415k -> 39485k
Leak: 5800k
Overhead: 5227k -> 5232k
GGC runs: 337
Pre-IPA-Garbage: 12405k
Pre-IPA-Leak: 19346k
Pre-IPA-Overhead: 2558k
Post-IPA-Garbage: 12405k
Post-IPA-Leak: 19346k
Post-IPA-Overhead: 2558k
comparing combine.c compilation at -O0 -g level:
Amount of produced GGC garbage increased from 39746k to 39790k, overall 0.11%
Overall memory needed: 34063k
Peak memory use before GGC: 20012k -> 20016k
Peak memory use after GGC: 19653k
Maximum of released memory in single GGC run: 1848k -> 1850k
Garbage: 39746k -> 39790k
Leak: 9088k -> 9089k
Overhead: 6046k -> 6050k
GGC runs: 321
Pre-IPA-Garbage: 12504k
Pre-IPA-Leak: 21619k
Pre-IPA-Overhead: 3049k
Post-IPA-Garbage: 12504k
Post-IPA-Leak: 21619k
Post-IPA-Overhead: 3049k
comparing combine.c compilation at -O1 level:
Amount of produced GGC garbage increased from 46552k to 46626k, overall 0.16%
Overall memory needed: 30771k -> 30751k
Peak memory use before GGC: 15674k -> 15675k
Peak memory use after GGC: 15504k
Maximum of released memory in single GGC run: 1380k
Garbage: 46552k -> 46626k
Leak: 5775k
Overhead: 5969k -> 5975k
GGC runs: 401
Pre-IPA-Garbage: 13144k
Pre-IPA-Leak: 16841k
Pre-IPA-Overhead: 2471k
Post-IPA-Garbage: 13144k
Post-IPA-Leak: 16841k
Post-IPA-Overhead: 2471k
comparing combine.c compilation at -O2 level:
Amount of produced GGC garbage increased from 60626k to 60688k, overall 0.10%
Overall memory needed: 31655k -> 31403k
Peak memory use before GGC: 15818k -> 15820k
Peak memory use after GGC: 15657k
Maximum of released memory in single GGC run: 1356k
Garbage: 60626k -> 60688k
Leak: 5950k
Overhead: 8012k -> 8013k
GGC runs: 471
Pre-IPA-Garbage: 13307k
Pre-IPA-Leak: 16923k
Pre-IPA-Overhead: 2491k
Post-IPA-Garbage: 13307k
Post-IPA-Leak: 16923k
Post-IPA-Overhead: 2491k
comparing combine.c compilation at -O3 level:
Amount of produced GGC garbage increased from 76088k to 76176k, overall 0.12%
Overall memory needed: 31939k -> 31935k
Peak memory use before GGC: 15818k -> 15819k
Peak memory use after GGC: 15657k -> 15658k
Maximum of released memory in single GGC run: 1798k -> 1809k
Garbage: 76088k -> 76176k
Leak: 5822k
Overhead: 9786k -> 9792k
GGC runs: 506
Pre-IPA-Garbage: 13307k
Pre-IPA-Leak: 16923k
Pre-IPA-Overhead: 2491k
Post-IPA-Garbage: 13307k
Post-IPA-Leak: 16923k
Post-IPA-Overhead: 2491k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 156827k
Peak memory use before GGC: 65231k
Peak memory use after GGC: 53275k
Maximum of released memory in single GGC run: 27425k
Garbage: 130415k -> 130451k
Leak: 8497k
Overhead: 15721k -> 15725k
GGC runs: 263
Pre-IPA-Garbage: 38214k
Pre-IPA-Leak: 55487k
Pre-IPA-Overhead: 8223k
Post-IPA-Garbage: 38214k
Post-IPA-Leak: 55487k
Post-IPA-Overhead: 8223k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 158103k -> 158099k
Peak memory use before GGC: 66505k
Peak memory use after GGC: 54547k
Maximum of released memory in single GGC run: 27426k
Garbage: 130936k -> 130929k
Leak: 10147k -> 10147k
Overhead: 16179k -> 16180k
GGC runs: 255
Pre-IPA-Garbage: 38271k
Pre-IPA-Leak: 57029k
Pre-IPA-Overhead: 8558k
Post-IPA-Garbage: 38271k
Post-IPA-Leak: 57029k
Post-IPA-Overhead: 8558k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 134911k
Peak memory use before GGC: 50202k
Peak memory use after GGC: 43295k
Maximum of released memory in single GGC run: 22951k
Garbage: 180927k -> 180962k
Leak: 7875k
Overhead: 24522k -> 24525k
GGC runs: 302
Pre-IPA-Garbage: 43191k
Pre-IPA-Leak: 43086k
Pre-IPA-Overhead: 7642k
Post-IPA-Garbage: 43191k
Post-IPA-Leak: 43086k
Post-IPA-Overhead: 7642k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 149811k -> 149807k
Peak memory use before GGC: 50205k
Peak memory use after GGC: 44284k
Maximum of released memory in single GGC run: 21469k
Garbage: 212139k -> 212172k
Leak: 7882k
Overhead: 29995k -> 29998k
GGC runs: 333
Pre-IPA-Garbage: 43263k
Pre-IPA-Leak: 43092k
Pre-IPA-Overhead: 7651k
Post-IPA-Garbage: 43263k
Post-IPA-Leak: 43092k
Post-IPA-Overhead: 7651k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 164719k -> 164031k
Peak memory use before GGC: 61823k
Peak memory use after GGC: 58723k
Maximum of released memory in single GGC run: 23616k
Garbage: 242367k -> 242406k
Leak: 7889k
Overhead: 33435k -> 33439k
GGC runs: 339
Pre-IPA-Garbage: 43263k
Pre-IPA-Leak: 43092k
Pre-IPA-Overhead: 7651k
Post-IPA-Garbage: 43263k
Post-IPA-Leak: 43092k
Post-IPA-Overhead: 7651k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 151264k -> 151284k
Peak memory use before GGC: 82965k
Peak memory use after GGC: 82143k
Maximum of released memory in single GGC run: 14701k
Garbage: 205364k
Leak: 52055k
Overhead: 26934k
GGC runs: 415
Pre-IPA-Garbage: 111126k
Pre-IPA-Leak: 88384k
Pre-IPA-Overhead: 14817k
Post-IPA-Garbage: 111126k
Post-IPA-Leak: 88384k
Post-IPA-Overhead: 14817k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 169212k -> 169216k
Peak memory use before GGC: 96592k -> 96591k
Peak memory use after GGC: 95634k
Maximum of released memory in single GGC run: 15129k
Garbage: 211021k -> 210983k
Leak: 78615k -> 78617k
Overhead: 33599k -> 33598k
GGC runs: 387
Pre-IPA-Garbage: 111748k
Pre-IPA-Leak: 104899k
Pre-IPA-Overhead: 18320k
Post-IPA-Garbage: 111748k
Post-IPA-Leak: 104899k
Post-IPA-Overhead: 18320k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 111184k -> 111196k
Peak memory use before GGC: 84209k
Peak memory use after GGC: 83371k
Maximum of released memory in single GGC run: 14981k
Garbage: 282254k -> 282253k
Leak: 49359k
Overhead: 31648k -> 31648k
GGC runs: 502
Pre-IPA-Garbage: 159782k
Pre-IPA-Leak: 88068k
Pre-IPA-Overhead: 19881k
Post-IPA-Garbage: 159782k
Post-IPA-Leak: 88068k
Post-IPA-Overhead: 19881k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 112700k -> 112692k
Peak memory use before GGC: 85982k
Peak memory use after GGC: 85115k
Maximum of released memory in single GGC run: 14965k
Garbage: 336499k -> 336506k
Leak: 49429k -> 49437k
Overhead: 38150k -> 38151k
GGC runs: 568
Pre-IPA-Garbage: 163775k
Pre-IPA-Leak: 88430k
Pre-IPA-Overhead: 20357k
Post-IPA-Garbage: 163775k
Post-IPA-Leak: 88430k
Post-IPA-Overhead: 20357k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 113756k -> 113768k
Peak memory use before GGC: 86670k
Peak memory use after GGC: 85729k
Maximum of released memory in single GGC run: 14965k
Garbage: 367528k -> 367606k
Leak: 49424k
Overhead: 41423k -> 41427k
GGC runs: 596 -> 597
Pre-IPA-Garbage: 163855k
Pre-IPA-Leak: 89088k
Pre-IPA-Overhead: 20409k
Post-IPA-Garbage: 163855k
Post-IPA-Leak: 89088k
Post-IPA-Overhead: 20409k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 365551k -> 365547k
Peak memory use before GGC: 78518k
Peak memory use after GGC: 49452k
Maximum of released memory in single GGC run: 38186k
Garbage: 144652k
Leak: 7110k
Overhead: 24889k
GGC runs: 87
Pre-IPA-Garbage: 12561k
Pre-IPA-Leak: 20190k
Pre-IPA-Overhead: 2241k
Post-IPA-Garbage: 12561k
Post-IPA-Leak: 20190k
Post-IPA-Overhead: 2241k
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 366343k
Peak memory use before GGC: 79215k
Peak memory use after GGC: 50149k
Maximum of released memory in single GGC run: 38171k
Garbage: 144753k
Leak: 9152k
Overhead: 25473k
GGC runs: 93
Pre-IPA-Garbage: 12569k
Pre-IPA-Leak: 20439k
Pre-IPA-Overhead: 2295k
Post-IPA-Garbage: 12569k
Post-IPA-Leak: 20439k
Post-IPA-Overhead: 2295k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 244987k -> 245251k
Peak memory use before GGC: 73624k
Peak memory use after GGC: 66143k
Maximum of released memory in single GGC run: 34721k
Garbage: 222457k
Leak: 7807k
Overhead: 30583k
GGC runs: 97
Pre-IPA-Garbage: 48348k
Pre-IPA-Leak: 63005k
Pre-IPA-Overhead: 8797k
Post-IPA-Garbage: 48348k
Post-IPA-Leak: 63005k
Post-IPA-Overhead: 8797k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 372139k -> 372135k
Peak memory use before GGC: 73624k
Peak memory use after GGC: 66143k
Maximum of released memory in single GGC run: 36044k
Garbage: 250446k
Leak: 7901k
Overhead: 36662k
GGC runs: 106
Pre-IPA-Garbage: 107058k
Pre-IPA-Leak: 75901k
Pre-IPA-Overhead: 14919k
Post-IPA-Garbage: 107058k
Post-IPA-Leak: 75901k
Post-IPA-Overhead: 14919k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1026915k -> 1026651k
Peak memory use before GGC: 141898k
Peak memory use after GGC: 129175k
Maximum of released memory in single GGC run: 62686k
Garbage: 362325k
Leak: 9383k
Overhead: 44297k
GGC runs: 103
Pre-IPA-Garbage: 107058k
Pre-IPA-Leak: 75901k
Pre-IPA-Overhead: 14919k
Post-IPA-Garbage: 107058k
Post-IPA-Leak: 75901k
Post-IPA-Overhead: 14919k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2008-10-08 23:28:37.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-10-09 16:51:44.000000000 +0000
@@ -1,3 +1,21 @@
+2008-10-09 Jakub Jelinek <jakub@redhat.com>
+
+ * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
+ as used.
+ * gimple-low.c (lower_function_body, lower_gimple_return,
+ lower_builtin_setjmp): Set gimple_block on the newly created stmts.
+ * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
+ goto_block on edges if goto_locus is known.
+
+ PR middle-end/37774
+ * tree.h (get_object_alignment): Declare.
+ * emit-rtl.c (set_mem_attributes_minus_bitpos): Call
+ get_object_alignment if needed.
+ * builtins.c (get_pointer_alignment): Move ADDR_EXPR operand handling
+ to ...
+ (get_object_alignment): ... here. New function. Try harder to
+ determine alignment from get_inner_reference returned offset.
+
2008-10-08 Jakub Jelinek <jakub@redhat.com>
* graphite.c (gloog): Don't call find_unreachable_blocks
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.