A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Wed May 27 13:39:00 GMT 2009


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: 8801k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 85k
    Garbage: 218k
    Leak: 1537k
    Overhead: 187k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8825k
    Peak memory use before GGC: 1516k
    Peak memory use after GGC: 1464k
    Maximum of released memory in single GGC run: 87k
    Garbage: 219k
    Leak: 1570k
    Overhead: 192k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8801k -> 8929k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 90k
    Garbage: 223k
    Leak: 1537k
    Overhead: 188k
    GGC runs: 4
    Pre-IPA-Garbage: 212k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 212k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8941k -> 8929k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 90k
    Garbage: 228k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 5
    Pre-IPA-Garbage: 212k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 212k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8929k -> 8933k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 90k
    Garbage: 228k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 5
    Pre-IPA-Garbage: 212k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 212k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing combine.c compilation at -O0 level:
  Amount of memory still referenced at the end of compilation increased from 7147k to 7155k, overall 0.11%
    Overall memory needed: 31445k
    Peak memory use before GGC: 17469k
    Peak memory use after GGC: 17020k
    Maximum of released memory in single GGC run: 1910k
    Garbage: 37904k
    Leak: 7147k -> 7155k
    Overhead: 5490k -> 5491k
    GGC runs: 331
    Pre-IPA-Garbage: 12540k
    Pre-IPA-Leak: 18401k
    Pre-IPA-Overhead: 2504k
    Post-IPA-Garbage: 12540k
    Post-IPA-Leak: 18401k
    Post-IPA-Overhead: 2504k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 33401k -> 33369k
    Peak memory use before GGC: 19377k
    Peak memory use after GGC: 18859k
    Maximum of released memory in single GGC run: 1920k
    Garbage: 38119k
    Leak: 10441k
    Overhead: 6303k
    GGC runs: 315
    Pre-IPA-Garbage: 12559k
    Pre-IPA-Leak: 20650k
    Pre-IPA-Overhead: 2986k
    Post-IPA-Garbage: 12559k
    Post-IPA-Leak: 20650k
    Post-IPA-Overhead: 2986k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32017k -> 31993k
    Peak memory use before GGC: 16555k
    Peak memory use after GGC: 16383k
    Maximum of released memory in single GGC run: 1378k
    Garbage: 45806k
    Leak: 7156k
    Overhead: 6440k -> 6440k
    GGC runs: 388
    Pre-IPA-Garbage: 13405k
    Pre-IPA-Leak: 17702k
    Pre-IPA-Overhead: 2552k
    Post-IPA-Garbage: 13405k
    Post-IPA-Leak: 17702k
    Post-IPA-Overhead: 2552k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 32841k -> 32973k
    Peak memory use before GGC: 16628k
    Peak memory use after GGC: 16454k
    Maximum of released memory in single GGC run: 1488k
    Garbage: 56651k -> 56651k
    Leak: 7188k
    Overhead: 8057k -> 8057k
    GGC runs: 441
    Pre-IPA-Garbage: 13435k
    Pre-IPA-Leak: 17724k
    Pre-IPA-Overhead: 2555k
    Post-IPA-Garbage: 13435k
    Post-IPA-Leak: 17724k
    Post-IPA-Overhead: 2555k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 36765k -> 36789k
    Peak memory use before GGC: 16726k
    Peak memory use after GGC: 16557k
    Maximum of released memory in single GGC run: 1690k
    Garbage: 82481k
    Leak: 7249k
    Overhead: 11238k -> 11238k
    GGC runs: 529
    Pre-IPA-Garbage: 13435k
    Pre-IPA-Leak: 17759k
    Pre-IPA-Overhead: 2555k
    Post-IPA-Garbage: 13435k
    Post-IPA-Leak: 17759k
    Post-IPA-Overhead: 2555k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 152505k -> 152473k
    Peak memory use before GGC: 65254k
    Peak memory use after GGC: 52818k
    Maximum of released memory in single GGC run: 26250k
    Garbage: 128569k
    Leak: 9587k
    Overhead: 16691k
    GGC runs: 258
    Pre-IPA-Garbage: 40782k
    Pre-IPA-Leak: 51014k
    Pre-IPA-Overhead: 7761k
    Post-IPA-Garbage: 40782k
    Post-IPA-Leak: 51014k
    Post-IPA-Overhead: 7761k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 153817k
    Peak memory use before GGC: 66520k
    Peak memory use after GGC: 54081k
    Maximum of released memory in single GGC run: 26251k
    Garbage: 128907k
    Leak: 11219k
    Overhead: 17144k
    GGC runs: 252
    Pre-IPA-Garbage: 40791k
    Pre-IPA-Leak: 52539k
    Pre-IPA-Overhead: 8091k
    Post-IPA-Garbage: 40791k
    Post-IPA-Leak: 52539k
    Post-IPA-Overhead: 8091k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 154545k
    Peak memory use before GGC: 54972k
    Peak memory use after GGC: 44902k
    Maximum of released memory in single GGC run: 17233k
    Garbage: 181124k
    Leak: 9178k
    Overhead: 23427k
    GGC runs: 298
    Pre-IPA-Garbage: 45256k
    Pre-IPA-Leak: 45116k
    Pre-IPA-Overhead: 7607k
    Post-IPA-Garbage: 45256k
    Post-IPA-Leak: 45116k
    Post-IPA-Overhead: 7607k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 202245k -> 202213k
    Peak memory use before GGC: 54418k
    Peak memory use after GGC: 44649k
    Maximum of released memory in single GGC run: 18696k
    Garbage: 211672k
    Leak: 9193k
    Overhead: 29299k
    GGC runs: 331
    Pre-IPA-Garbage: 45281k
    Pre-IPA-Leak: 45120k
    Pre-IPA-Overhead: 7609k
    Post-IPA-Garbage: 45281k
    Post-IPA-Leak: 45120k
    Post-IPA-Overhead: 7609k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 205469k
    Peak memory use before GGC: 54430k
    Peak memory use after GGC: 44658k -> 44662k
    Maximum of released memory in single GGC run: 18680k
    Garbage: 229953k
    Leak: 9211k
    Overhead: 31199k -> 31199k
    GGC runs: 352
    Pre-IPA-Garbage: 45281k
    Pre-IPA-Leak: 45120k
    Pre-IPA-Overhead: 7609k
    Post-IPA-Garbage: 45281k
    Post-IPA-Leak: 45120k
    Post-IPA-Overhead: 7609k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 146221k -> 146341k
    Peak memory use before GGC: 81786k
    Peak memory use after GGC: 80976k
    Maximum of released memory in single GGC run: 13629k
    Garbage: 193642k
    Leak: 55413k
    Overhead: 28735k
    GGC runs: 439
    Pre-IPA-Garbage: 105771k
    Pre-IPA-Leak: 84526k
    Pre-IPA-Overhead: 15486k
    Post-IPA-Garbage: 105771k
    Post-IPA-Leak: 84526k
    Post-IPA-Overhead: 15486k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 164105k -> 164065k
    Peak memory use before GGC: 95912k
    Peak memory use after GGC: 94960k
    Maximum of released memory in single GGC run: 13880k
    Garbage: 198965k -> 198964k
    Leak: 82505k
    Overhead: 35297k -> 35297k
    GGC runs: 410
    Pre-IPA-Garbage: 106356k
    Pre-IPA-Leak: 101047k
    Pre-IPA-Overhead: 18992k
    Post-IPA-Garbage: 106356k
    Post-IPA-Leak: 101047k
    Post-IPA-Overhead: 18992k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 108737k -> 108741k
    Peak memory use before GGC: 82625k
    Peak memory use after GGC: 81800k -> 81801k
    Maximum of released memory in single GGC run: 13771k
    Garbage: 270245k -> 270247k
    Leak: 52220k
    Overhead: 31613k -> 31613k
    GGC runs: 528
    Pre-IPA-Garbage: 154364k
    Pre-IPA-Leak: 86837k
    Pre-IPA-Overhead: 19157k
    Post-IPA-Garbage: 154364k
    Post-IPA-Leak: 86837k
    Post-IPA-Overhead: 19157k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 108129k
    Peak memory use before GGC: 82646k -> 82647k
    Peak memory use after GGC: 80941k -> 80940k
    Maximum of released memory in single GGC run: 13774k
    Garbage: 309000k -> 308999k
    Leak: 52323k
    Overhead: 36913k -> 36913k
    GGC runs: 574
    Pre-IPA-Garbage: 157397k
    Pre-IPA-Leak: 85927k -> 85926k
    Pre-IPA-Overhead: 19369k -> 19369k
    Post-IPA-Garbage: 157397k
    Post-IPA-Leak: 85927k -> 85926k
    Post-IPA-Overhead: 19369k -> 19369k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 114513k -> 114489k
    Peak memory use before GGC: 83112k -> 83113k
    Peak memory use after GGC: 81047k
    Maximum of released memory in single GGC run: 13774k
    Garbage: 343348k -> 343348k
    Leak: 52360k
    Overhead: 41128k -> 41128k
    GGC runs: 616
    Pre-IPA-Garbage: 157397k
    Pre-IPA-Leak: 85931k -> 85930k
    Pre-IPA-Overhead: 19369k -> 19369k
    Post-IPA-Garbage: 157397k
    Post-IPA-Leak: 85931k -> 85930k
    Post-IPA-Overhead: 19369k -> 19369k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 358809k -> 358701k
    Peak memory use before GGC: 78173k
    Peak memory use after GGC: 49107k
    Maximum of released memory in single GGC run: 37057k
    Garbage: 140190k
    Leak: 7711k
    Overhead: 24960k
    GGC runs: 86
    Pre-IPA-Garbage: 12171k
    Pre-IPA-Leak: 18626k
    Pre-IPA-Overhead: 2403k
    Post-IPA-Garbage: 12171k
    Post-IPA-Leak: 18626k
    Post-IPA-Overhead: 2403k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 359449k -> 359509k
    Peak memory use before GGC: 78856k
    Peak memory use after GGC: 49791k
    Maximum of released memory in single GGC run: 37041k
    Garbage: 140255k
    Leak: 9707k
    Overhead: 25529k
    GGC runs: 94
    Pre-IPA-Garbage: 12173k
    Pre-IPA-Leak: 18873k
    Pre-IPA-Overhead: 2456k
    Post-IPA-Garbage: 12173k
    Post-IPA-Leak: 18873k
    Post-IPA-Overhead: 2456k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 308965k -> 309157k
    Peak memory use before GGC: 80235k
    Peak memory use after GGC: 69462k
    Maximum of released memory in single GGC run: 38514k
    Garbage: 225540k
    Leak: 9462k
    Overhead: 32458k
    GGC runs: 96
    Pre-IPA-Garbage: 41119k
    Pre-IPA-Leak: 63974k
    Pre-IPA-Overhead: 7105k
    Post-IPA-Garbage: 41119k
    Post-IPA-Leak: 63974k
    Post-IPA-Overhead: 7105k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 517889k -> 521561k
    Peak memory use before GGC: 80260k
    Peak memory use after GGC: 69463k
    Maximum of released memory in single GGC run: 39109k
    Garbage: 268248k
    Leak: 9463k
    Overhead: 42139k
    GGC runs: 108
    Pre-IPA-Garbage: 90152k
    Pre-IPA-Leak: 80240k
    Pre-IPA-Overhead: 11095k
    Post-IPA-Garbage: 90152k
    Post-IPA-Leak: 80240k
    Post-IPA-Overhead: 11095k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1031317k -> 1031021k
    Peak memory use before GGC: 135102k
    Peak memory use after GGC: 126444k
    Maximum of released memory in single GGC run: 54329k
    Garbage: 329142k
    Leak: 10302k
    Overhead: 42368k
    GGC runs: 106
    Pre-IPA-Garbage: 90152k
    Pre-IPA-Leak: 80240k
    Pre-IPA-Overhead: 11095k
    Post-IPA-Garbage: 90152k
    Post-IPA-Leak: 80240k
    Post-IPA-Overhead: 11095k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog	2009-05-26 17:33:59.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog	2009-05-27 11:21:53.000000000 +0000
@@ -1,3 +1,14 @@
+2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
+
+	* config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
+	applicable.
+	* config/m32r/m32r.h: Ditto.
+	* config/m32r/m32r.md: Ditto.
+	* config/m32r/predicates.md: Ditto.
+
+2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
+
+	* cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
 
 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
 


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