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, hubicka at ucw dot cz, gcc-regression at gcc dot gnu dot org
- Date: Thu, 21 May 2009 23:11:30 +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: 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.