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: 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: 8929k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 87k
    Garbage: 221k
    Leak: 1537k
    Overhead: 188k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8929k -> 8925k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 92k
    Garbage: 226k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8925k -> 8933k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 92k
    Garbage: 226k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    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 7155k to 7171k, overall 0.22%
    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: 37902k -> 37903k
    Leak: 7155k -> 7171k
    Overhead: 5492k -> 5492k
    GGC runs: 330 -> 331
    Pre-IPA-Garbage: 12539k
    Pre-IPA-Leak: 18401k
    Pre-IPA-Overhead: 2507k
    Post-IPA-Garbage: 12539k
    Post-IPA-Leak: 18401k
    Post-IPA-Overhead: 2507k

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

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31781k -> 31869k
    Peak memory use before GGC: 16476k
    Peak memory use after GGC: 16310k
    Maximum of released memory in single GGC run: 1378k
    Garbage: 45344k
    Leak: 7155k
    Overhead: 6390k -> 6390k
    GGC runs: 387
    Pre-IPA-Garbage: 12959k
    Pre-IPA-Leak: 17620k
    Pre-IPA-Overhead: 2503k
    Post-IPA-Garbage: 12959k
    Post-IPA-Leak: 17620k
    Post-IPA-Overhead: 2503k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 32817k -> 33033k
    Peak memory use before GGC: 16539k
    Peak memory use after GGC: 16375k
    Maximum of released memory in single GGC run: 1489k
    Garbage: 56246k
    Leak: 7188k
    Overhead: 8014k -> 8015k
    GGC runs: 442
    Pre-IPA-Garbage: 13011k
    Pre-IPA-Leak: 17643k
    Pre-IPA-Overhead: 2509k
    Post-IPA-Garbage: 13011k
    Post-IPA-Leak: 17643k
    Post-IPA-Overhead: 2509k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 33433k -> 33317k
    Peak memory use before GGC: 16508k
    Peak memory use after GGC: 16341k
    Maximum of released memory in single GGC run: 1672k
    Garbage: 65057k
    Leak: 7211k
    Overhead: 9286k -> 9286k
    GGC runs: 471
    Pre-IPA-Garbage: 13011k
    Pre-IPA-Leak: 17643k
    Pre-IPA-Overhead: 2509k
    Post-IPA-Garbage: 13011k
    Post-IPA-Leak: 17643k
    Post-IPA-Overhead: 2509k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 152469k -> 152501k
    Peak memory use before GGC: 65254k
    Peak memory use after GGC: 52818k
    Maximum of released memory in single GGC run: 26250k
    Garbage: 128573k
    Leak: 9587k
    Overhead: 16691k
    GGC runs: 259
    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: 128911k
    Leak: 11219k
    Overhead: 17144k
    GGC runs: 253
    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: 154685k
    Peak memory use before GGC: 54960k
    Peak memory use after GGC: 44890k
    Maximum of released memory in single GGC run: 17233k
    Garbage: 180932k
    Leak: 9178k
    Overhead: 23406k
    GGC runs: 298
    Pre-IPA-Garbage: 45067k
    Pre-IPA-Leak: 45085k
    Pre-IPA-Overhead: 7586k
    Post-IPA-Garbage: 45067k
    Post-IPA-Leak: 45085k
    Post-IPA-Overhead: 7586k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 202233k -> 202017k
    Peak memory use before GGC: 54409k
    Peak memory use after GGC: 44640k
    Maximum of released memory in single GGC run: 18700k
    Garbage: 211511k
    Leak: 9192k
    Overhead: 29281k -> 29281k
    GGC runs: 331
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45092k
    Pre-IPA-Overhead: 7591k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45092k
    Post-IPA-Overhead: 7591k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 202049k -> 202233k
    Peak memory use before GGC: 54409k
    Peak memory use after GGC: 44640k
    Maximum of released memory in single GGC run: 18698k
    Garbage: 212732k
    Leak: 9199k
    Overhead: 29673k -> 29673k
    GGC runs: 339
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45092k
    Pre-IPA-Overhead: 7591k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45092k
    Post-IPA-Overhead: 7591k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 145925k -> 145917k
    Peak memory use before GGC: 81663k
    Peak memory use after GGC: 80854k
    Maximum of released memory in single GGC run: 13633k
    Garbage: 197870k -> 197870k
    Leak: 55388k
    Overhead: 28221k
    GGC runs: 447
    Pre-IPA-Garbage: 110139k
    Pre-IPA-Leak: 84448k
    Pre-IPA-Overhead: 14991k
    Post-IPA-Garbage: 110139k
    Post-IPA-Leak: 84448k
    Post-IPA-Overhead: 14991k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 163849k -> 163885k
    Peak memory use before GGC: 95804k
    Peak memory use after GGC: 94854k
    Maximum of released memory in single GGC run: 13895k
    Garbage: 203198k -> 203198k
    Leak: 82480k
    Overhead: 34783k -> 34783k
    GGC runs: 419
    Pre-IPA-Garbage: 110724k
    Pre-IPA-Leak: 100969k
    Pre-IPA-Overhead: 18496k
    Post-IPA-Garbage: 110724k
    Post-IPA-Leak: 100969k
    Post-IPA-Overhead: 18496k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 107297k -> 107309k
    Peak memory use before GGC: 81692k
    Peak memory use after GGC: 80879k -> 80871k
    Maximum of released memory in single GGC run: 13476k
    Garbage: 258326k -> 258326k
    Leak: 52198k
    Overhead: 29637k -> 29637k
    GGC runs: 515
    Pre-IPA-Garbage: 149436k
    Pre-IPA-Leak: 85862k
    Pre-IPA-Overhead: 17966k
    Post-IPA-Garbage: 149436k
    Post-IPA-Leak: 85862k
    Post-IPA-Overhead: 17966k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 106877k -> 107325k
    Peak memory use before GGC: 81618k -> 81617k
    Peak memory use after GGC: 80159k
    Maximum of released memory in single GGC run: 13480k
    Garbage: 296591k -> 296591k
    Leak: 52281k
    Overhead: 34690k -> 34690k
    GGC runs: 561
    Pre-IPA-Garbage: 152499k
    Pre-IPA-Leak: 84967k
    Pre-IPA-Overhead: 18176k
    Post-IPA-Garbage: 152499k
    Post-IPA-Leak: 84967k
    Post-IPA-Overhead: 18176k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 107505k
    Peak memory use before GGC: 82078k
    Peak memory use after GGC: 80162k
    Maximum of released memory in single GGC run: 13480k
    Garbage: 313881k -> 313882k
    Leak: 52290k
    Overhead: 37002k -> 37002k
    GGC runs: 581
    Pre-IPA-Garbage: 152499k
    Pre-IPA-Leak: 84971k
    Pre-IPA-Overhead: 18177k
    Post-IPA-Garbage: 152499k
    Post-IPA-Leak: 84971k
    Post-IPA-Overhead: 18177k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 358697k -> 358725k
    Peak memory use before GGC: 78173k
    Peak memory use after GGC: 49107k
    Maximum of released memory in single GGC run: 37057k
    Garbage: 140058k
    Leak: 7711k
    Overhead: 25004k
    GGC runs: 86
    Pre-IPA-Garbage: 12038k
    Pre-IPA-Leak: 18626k
    Pre-IPA-Overhead: 2447k
    Post-IPA-Garbage: 12038k
    Post-IPA-Leak: 18626k
    Post-IPA-Overhead: 2447k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 358425k -> 359561k
    Peak memory use before GGC: 78856k
    Peak memory use after GGC: 49791k
    Maximum of released memory in single GGC run: 37041k
    Garbage: 140124k
    Leak: 9707k
    Overhead: 25573k
    GGC runs: 94
    Pre-IPA-Garbage: 12040k
    Pre-IPA-Leak: 18873k
    Pre-IPA-Overhead: 2500k
    Post-IPA-Garbage: 12040k
    Post-IPA-Leak: 18873k
    Post-IPA-Overhead: 2500k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 208641k -> 208637k
    Peak memory use before GGC: 74131k
    Peak memory use after GGC: 69415k
    Maximum of released memory in single GGC run: 35390k
    Garbage: 215892k
    Leak: 9258k
    Overhead: 32795k
    GGC runs: 95
    Pre-IPA-Garbage: 39202k
    Pre-IPA-Leak: 63682k
    Pre-IPA-Overhead: 6995k
    Post-IPA-Garbage: 39202k
    Post-IPA-Leak: 63682k
    Post-IPA-Overhead: 6995k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 533557k -> 530229k
    Peak memory use before GGC: 74132k
    Peak memory use after GGC: 69415k
    Maximum of released memory in single GGC run: 37540k
    Garbage: 255641k
    Leak: 9008k
    Overhead: 38354k
    GGC runs: 106
    Pre-IPA-Garbage: 89544k
    Pre-IPA-Leak: 80238k
    Pre-IPA-Overhead: 11099k
    Post-IPA-Garbage: 89544k
    Post-IPA-Leak: 80238k
    Post-IPA-Overhead: 11099k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1234989k -> 1234013k
    Peak memory use before GGC: 134702k
    Peak memory use after GGC: 126430k
    Maximum of released memory in single GGC run: 54316k
    Garbage: 340036k
    Leak: 10282k
    Overhead: 43411k
    GGC runs: 106
    Pre-IPA-Garbage: 89544k
    Pre-IPA-Leak: 80238k
    Pre-IPA-Overhead: 11099k
    Post-IPA-Garbage: 89544k
    Post-IPA-Leak: 80238k
    Post-IPA-Overhead: 11099k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog	2009-05-13 08:04:03.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog	2009-05-13 19:52:51.000000000 +0000
@@ -1,3 +1,25 @@
+2009-05-13  Janis Johnson  <janis187@us.ibm.com>
+
+	* c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
+	(handle_stdc_pragma): Use new enum constant names.
+	(handle_pragma_float_const_decimal64): Ditto.
+
+2009-05-13  Ian Lance Taylor  <iant@google.com>
+
+	* Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
+	tree.def.
+
+2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
+	* config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
+	multilibs.
+	* config/m68k/m68k.h (FL_UCLINUX): Define.
+
+2009-05-13  Jan Hubicka  <jh@suse.cz>
+
+	* options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
+
 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
 
 	* config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns


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]