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 -> 1537k
    Overhead: 187k -> 187k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k -> 1539k
    Pre-IPA-Overhead: 186k -> 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k -> 1539k
    Post-IPA-Overhead: 186k -> 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 -> 1570k
    Overhead: 192k -> 192k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k -> 1539k
    Pre-IPA-Overhead: 186k -> 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k -> 1539k
    Post-IPA-Overhead: 186k -> 186k

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

comparing empty function compilation at -O2 level:
    Overall memory needed: 8925k -> 8929k
    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 -> 1537k
    Overhead: 189k -> 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k -> 1540k
    Pre-IPA-Overhead: 186k -> 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k -> 1540k
    Post-IPA-Overhead: 186k -> 186k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8933k -> 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 -> 1537k
    Overhead: 189k -> 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k -> 1540k
    Pre-IPA-Overhead: 186k -> 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k -> 1540k
    Post-IPA-Overhead: 186k -> 186k

comparing combine.c compilation at -O0 level:
  Amount of memory still referenced at the end of compilation increased from 7155k to 7173k, overall 0.25%
    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: 7155k -> 7173k
    Overhead: 5491k -> 5493k
    GGC runs: 331
    Pre-IPA-Garbage: 12540k
    Pre-IPA-Leak: 18401k -> 18404k
    Pre-IPA-Overhead: 2504k -> 2506k
    Post-IPA-Garbage: 12540k
    Post-IPA-Leak: 18401k -> 18404k
    Post-IPA-Overhead: 2504k -> 2506k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 33405k -> 33401k
    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 -> 10443k
    Overhead: 6303k -> 6305k
    GGC runs: 315
    Pre-IPA-Garbage: 12559k
    Pre-IPA-Leak: 20650k -> 20652k
    Pre-IPA-Overhead: 2986k -> 2988k
    Post-IPA-Garbage: 12559k
    Post-IPA-Leak: 20650k -> 20652k
    Post-IPA-Overhead: 2986k -> 2988k

comparing combine.c compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 7143k to 7158k, overall 0.20%
    Overall memory needed: 31941k -> 31825k
    Peak memory use before GGC: 16476k
    Peak memory use after GGC: 16310k
    Maximum of released memory in single GGC run: 1378k
    Garbage: 45345k -> 45345k
    Leak: 7143k -> 7158k
    Overhead: 6389k -> 6391k
    GGC runs: 387
    Pre-IPA-Garbage: 12959k
    Pre-IPA-Leak: 17620k -> 17622k
    Pre-IPA-Overhead: 2500k -> 2502k
    Post-IPA-Garbage: 12959k
    Post-IPA-Leak: 17620k -> 17622k
    Post-IPA-Overhead: 2500k -> 2502k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 32813k -> 32797k
    Peak memory use before GGC: 16539k
    Peak memory use after GGC: 16375k
    Maximum of released memory in single GGC run: 1488k
    Garbage: 56232k
    Leak: 7188k -> 7191k
    Overhead: 8011k -> 8013k
    GGC runs: 441
    Pre-IPA-Garbage: 13012k
    Pre-IPA-Leak: 17643k -> 17645k
    Pre-IPA-Overhead: 2506k -> 2508k
    Post-IPA-Garbage: 13012k
    Post-IPA-Leak: 17643k -> 17645k
    Post-IPA-Overhead: 2506k -> 2508k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 33313k -> 33329k
    Peak memory use before GGC: 16507k
    Peak memory use after GGC: 16341k
    Maximum of released memory in single GGC run: 1671k
    Garbage: 65050k
    Leak: 7211k -> 7213k
    Overhead: 9284k -> 9286k
    GGC runs: 471
    Pre-IPA-Garbage: 13012k
    Pre-IPA-Leak: 17643k -> 17645k
    Pre-IPA-Overhead: 2506k -> 2508k
    Post-IPA-Garbage: 13012k
    Post-IPA-Leak: 17643k -> 17645k
    Post-IPA-Overhead: 2506k -> 2508k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 152505k
    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 -> 9588k
    Overhead: 16691k -> 16692k
    GGC runs: 258
    Pre-IPA-Garbage: 40782k
    Pre-IPA-Leak: 51014k -> 51015k
    Pre-IPA-Overhead: 7761k -> 7761k
    Post-IPA-Garbage: 40782k
    Post-IPA-Leak: 51014k -> 51015k
    Post-IPA-Overhead: 7761k -> 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 -> 11220k
    Overhead: 17144k -> 17145k
    GGC runs: 252
    Pre-IPA-Garbage: 40791k
    Pre-IPA-Leak: 52539k -> 52540k
    Pre-IPA-Overhead: 8091k -> 8092k
    Post-IPA-Garbage: 40791k
    Post-IPA-Leak: 52539k -> 52540k
    Post-IPA-Overhead: 8091k -> 8092k

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: 180928k
    Leak: 9178k -> 9179k
    Overhead: 23406k -> 23407k
    GGC runs: 297
    Pre-IPA-Garbage: 45067k
    Pre-IPA-Leak: 45085k -> 45086k
    Pre-IPA-Overhead: 7586k -> 7587k
    Post-IPA-Garbage: 45067k
    Post-IPA-Leak: 45085k -> 45086k
    Post-IPA-Overhead: 7586k -> 7587k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 202221k
    Peak memory use before GGC: 54409k
    Peak memory use after GGC: 44641k
    Maximum of released memory in single GGC run: 18696k
    Garbage: 211478k
    Leak: 9192k -> 9193k
    Overhead: 29279k -> 29279k
    GGC runs: 330
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45092k -> 45093k
    Pre-IPA-Overhead: 7591k -> 7592k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45092k -> 45093k
    Post-IPA-Overhead: 7591k -> 7592k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 202233k
    Peak memory use before GGC: 54409k
    Peak memory use after GGC: 44641k -> 44637k
    Maximum of released memory in single GGC run: 18695k
    Garbage: 212700k
    Leak: 9199k -> 9200k
    Overhead: 29670k -> 29671k
    GGC runs: 338
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45092k -> 45093k
    Pre-IPA-Overhead: 7591k -> 7592k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45092k -> 45093k
    Post-IPA-Overhead: 7591k -> 7592k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 146301k -> 146429k
    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 -> 55468k
    Overhead: 28735k -> 28789k
    GGC runs: 439
    Pre-IPA-Garbage: 105771k
    Pre-IPA-Leak: 84526k -> 84581k
    Pre-IPA-Overhead: 15486k -> 15541k
    Post-IPA-Garbage: 105771k
    Post-IPA-Leak: 84526k -> 84581k
    Post-IPA-Overhead: 15486k -> 15541k

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

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 52212k to 52267k, overall 0.10%
    Overall memory needed: 107421k -> 107437k
    Peak memory use before GGC: 81741k
    Peak memory use after GGC: 80929k
    Maximum of released memory in single GGC run: 13498k
    Garbage: 255384k -> 255385k
    Leak: 52212k -> 52267k
    Overhead: 30188k -> 30243k
    GGC runs: 510
    Pre-IPA-Garbage: 145188k
    Pre-IPA-Leak: 85917k -> 85972k
    Pre-IPA-Overhead: 18458k -> 18513k
    Post-IPA-Garbage: 145188k
    Post-IPA-Leak: 85917k -> 85972k
    Post-IPA-Overhead: 18458k -> 18513k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 107301k -> 106717k
    Peak memory use before GGC: 81673k
    Peak memory use after GGC: 80089k
    Maximum of released memory in single GGC run: 13525k
    Garbage: 294551k -> 294556k
    Leak: 52286k -> 52333k
    Overhead: 35265k -> 35320k
    GGC runs: 557
    Pre-IPA-Garbage: 148374k
    Pre-IPA-Leak: 85022k -> 85077k
    Pre-IPA-Overhead: 18672k -> 18727k
    Post-IPA-Garbage: 148374k
    Post-IPA-Leak: 85022k -> 85077k
    Post-IPA-Overhead: 18672k -> 18727k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 52289k to 52351k, overall 0.12%
    Overall memory needed: 107465k -> 107445k
    Peak memory use before GGC: 82133k
    Peak memory use after GGC: 80213k
    Maximum of released memory in single GGC run: 13525k
    Garbage: 313472k -> 313473k
    Leak: 52289k -> 52351k
    Overhead: 37726k -> 37781k
    GGC runs: 580
    Pre-IPA-Garbage: 148374k
    Pre-IPA-Leak: 85026k -> 85081k
    Pre-IPA-Overhead: 18672k -> 18727k
    Post-IPA-Garbage: 148374k
    Post-IPA-Leak: 85026k -> 85081k
    Post-IPA-Overhead: 18672k -> 18727k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 358793k -> 358773k
    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 -> 7711k
    Overhead: 24960k -> 24961k
    GGC runs: 86
    Pre-IPA-Garbage: 12171k
    Pre-IPA-Leak: 18626k -> 18627k
    Pre-IPA-Overhead: 2403k -> 2403k
    Post-IPA-Garbage: 12171k
    Post-IPA-Leak: 18626k -> 18627k
    Post-IPA-Overhead: 2403k -> 2403k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 359553k -> 359445k
    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 -> 9707k
    Overhead: 25529k -> 25529k
    GGC runs: 94
    Pre-IPA-Garbage: 12173k
    Pre-IPA-Leak: 18873k -> 18873k
    Pre-IPA-Overhead: 2456k -> 2457k
    Post-IPA-Garbage: 12173k
    Post-IPA-Leak: 18873k -> 18873k
    Post-IPA-Overhead: 2456k -> 2457k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 9258k to 9295k, overall 0.40%
    Overall memory needed: 208529k -> 208641k
    Peak memory use before GGC: 74131k
    Peak memory use after GGC: 69415k
    Maximum of released memory in single GGC run: 35390k
    Garbage: 216024k
    Leak: 9258k -> 9295k
    Overhead: 32752k -> 32789k
    GGC runs: 95
    Pre-IPA-Garbage: 39335k
    Pre-IPA-Leak: 63682k -> 63718k
    Pre-IPA-Overhead: 6952k -> 6988k
    Post-IPA-Garbage: 39335k
    Post-IPA-Leak: 63682k -> 63718k
    Post-IPA-Overhead: 6952k -> 6988k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 9008k to 9045k, overall 0.41%
    Overall memory needed: 530321k -> 527813k
    Peak memory use before GGC: 74132k
    Peak memory use after GGC: 69415k
    Maximum of released memory in single GGC run: 37541k
    Garbage: 255773k
    Leak: 9008k -> 9045k
    Overhead: 38310k -> 38347k
    GGC runs: 106
    Pre-IPA-Garbage: 89677k
    Pre-IPA-Leak: 80238k -> 80311k
    Pre-IPA-Overhead: 11055k -> 11128k
    Post-IPA-Garbage: 89677k
    Post-IPA-Leak: 80238k -> 80311k
    Post-IPA-Overhead: 11055k -> 11128k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Amount of memory still referenced at the end of compilation increased from 10282k to 10355k, overall 0.71%
    Overall memory needed: 1233801k -> 1234853k
    Peak memory use before GGC: 134702k
    Peak memory use after GGC: 126430k
    Maximum of released memory in single GGC run: 54316k
    Garbage: 340166k
    Leak: 10282k -> 10355k
    Overhead: 43367k -> 43440k
    GGC runs: 106
    Pre-IPA-Garbage: 89677k
    Pre-IPA-Leak: 80238k -> 80311k
    Pre-IPA-Overhead: 11055k -> 11128k
    Post-IPA-Garbage: 89677k
    Post-IPA-Leak: 80238k -> 80311k
    Post-IPA-Overhead: 11055k -> 11128k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog	2009-05-21 18:29:51.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog	2009-05-21 21:04:07.000000000 +0000
@@ -1,9 +1,51 @@
+2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
+
+	* config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
+	regular pattern from a template and rename it ...
+	(*extzv_truncsi_exts): ... to this.
+
+2009-05-21  Richard Guenther  <rguenther@suse.de>
+
+	* cgraph.h (struct cgraph_node): Remove inline_decl member.
+	* ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
+	(cgraph_default_inline_p): Likewise.
+	(cgraph_decide_inlining_incrementally): Likewise.
+
+2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
+	    Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/cpuid.h (bit_MOVBE): New.
+
+	* config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
+
+	* config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
+	(OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
+	(ix86_handle_option): Handle OPT_mmovbe.
+	(ix86_target_string): Add -mmovbe.
+	(pta_flags): Add PTA_MOVBE.
+	(processor_alias_table): Add PTA_MOVBE to "atom".
+	(override_options): Handle PTA_MOVBE.
+
+	* config/i386/i386.h (TARGET_MOVBE): New.
+
+	* config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
+	(*bswapsi_movbe): New.
+	(*bswapdi_movbe): Likewise.
+	(bswapdi2): Renamed to ...
+	(*bswapdi_1): This.
+	(bswapdi2): New expander.
+
+	* config/i386/i386.opt (mmovbe): New.
+
+	* doc/invoke.texi: Document -mmovbe.
+
 2009-05-21  Taras Glek  <tglek@mozilla.com>
 
 	* plugin.c (try_init_one_plugin): Updated to new plugin_init API.
 	* gcc-plugin.h (plugin_init): Updated signature.
 	* gcc-plugin.h (plugin_name_args): Moved to this header.
-	* doc/plugins.texi (plugin_init): Updated documention to reflect API change.
+	* doc/plugins.texi (plugin_init): Updated documention to reflect
+	API change.
 	* doc/plugins.texi (plugin_name_args): Added to documention.
 
 2009-05-21  Mark Mitchell  <mark@codesourcery.com>


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]