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: 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.


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