A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Mon Mar 10 22:55:00 GMT 2008
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: 8149k
Peak memory use before GGC: 1103k
Peak memory use after GGC: 1000k
Maximum of released memory in single GGC run: 130k
Garbage: 239k
Leak: 956k
Overhead: 80k
GGC runs: 2
Testing has produced no results
Testing has produced no results
comparing empty function compilation at -O0 -g level:
Overall memory needed: 8165k
Peak memory use before GGC: 1130k
Peak memory use after GGC: 1035k
Maximum of released memory in single GGC run: 130k
Garbage: 241k
Leak: 989k
Overhead: 85k
GGC runs: 4
Testing has produced no results
Testing has produced no results
comparing empty function compilation at -O1 level:
Overall memory needed: 8205k
Peak memory use before GGC: 1103k
Peak memory use after GGC: 1000k
Maximum of released memory in single GGC run: 132k
Garbage: 241k
Leak: 957k
Overhead: 81k
GGC runs: 2
Pre-IPA-Garbage: 228k
Pre-IPA-Leak: 959k
Pre-IPA-Overhead: 79k
Post-IPA-Garbage: 228k
Post-IPA-Leak: 959k
Post-IPA-Overhead: 79k
comparing empty function compilation at -O2 level:
Overall memory needed: 8225k
Peak memory use before GGC: 1103k
Peak memory use after GGC: 1000k
Maximum of released memory in single GGC run: 135k
Garbage: 245k
Leak: 958k
Overhead: 82k
GGC runs: 2
Pre-IPA-Garbage: 228k
Pre-IPA-Leak: 960k
Pre-IPA-Overhead: 79k
Post-IPA-Garbage: 228k
Post-IPA-Leak: 960k
Post-IPA-Overhead: 79k
comparing empty function compilation at -O3 level:
Overall memory needed: 8225k
Peak memory use before GGC: 1103k
Peak memory use after GGC: 1000k
Maximum of released memory in single GGC run: 135k
Garbage: 245k
Leak: 958k
Overhead: 82k
GGC runs: 2
Pre-IPA-Garbage: 228k
Pre-IPA-Leak: 960k
Pre-IPA-Overhead: 79k
Post-IPA-Garbage: 228k
Post-IPA-Leak: 960k
Post-IPA-Overhead: 79k
comparing combine.c compilation at -O0 level:
Overall memory needed: 22677k
Peak memory use before GGC: 7811k
Peak memory use after GGC: 7192k
Maximum of released memory in single GGC run: 1550k
Garbage: 37936k
Leak: 5519k
Overhead: 4650k
GGC runs: 371
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 24701k
Peak memory use before GGC: 9651k
Peak memory use after GGC: 8959k
Maximum of released memory in single GGC run: 1838k
Garbage: 38298k
Leak: 8385k
Overhead: 5277k
GGC runs: 342
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O1 level:
Overall memory needed: 32921k
Peak memory use before GGC: 16336k
Peak memory use after GGC: 16152k
Maximum of released memory in single GGC run: 1381k
Garbage: 51798k
Leak: 5664k
Overhead: 5845k
GGC runs: 440
Pre-IPA-Garbage: 13916k
Pre-IPA-Leak: 17170k
Pre-IPA-Overhead: 2124k
Post-IPA-Garbage: 13916k
Post-IPA-Leak: 17170k
Post-IPA-Overhead: 2124k
comparing combine.c compilation at -O2 level:
Amount of memory still referenced at the end of compilation increased from 5995k to 6006k, overall 0.18%
Overall memory needed: 34689k -> 34737k
Peak memory use before GGC: 16434k
Peak memory use after GGC: 16271k
Maximum of released memory in single GGC run: 1317k
Garbage: 71321k -> 71360k
Leak: 5995k -> 6006k
Overhead: 8148k -> 8137k
GGC runs: 508 -> 509
Pre-IPA-Garbage: 14070k
Pre-IPA-Leak: 17234k
Pre-IPA-Overhead: 2139k
Post-IPA-Garbage: 14070k
Post-IPA-Leak: 17234k
Post-IPA-Overhead: 2139k
comparing combine.c compilation at -O3 level:
Amount of produced GGC garbage increased from 88182k to 88297k, overall 0.13%
Amount of memory still referenced at the end of compilation increased from 6041k to 6051k, overall 0.18%
Overall memory needed: 38469k -> 38617k
Peak memory use before GGC: 16569k
Peak memory use after GGC: 16287k
Maximum of released memory in single GGC run: 1998k -> 1999k
Garbage: 88182k -> 88297k
Leak: 6041k -> 6051k
Overhead: 10110k -> 10119k
GGC runs: 544
Pre-IPA-Garbage: 14072k
Pre-IPA-Leak: 17246k
Pre-IPA-Overhead: 2140k
Post-IPA-Garbage: 14072k
Post-IPA-Leak: 17246k
Post-IPA-Overhead: 2140k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 137433k
Peak memory use before GGC: 57004k
Peak memory use after GGC: 31462k
Maximum of released memory in single GGC run: 33255k
Garbage: 128871k
Leak: 8133k
Overhead: 14369k
GGC runs: 292
Testing has produced no results
Testing has produced no results
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 138685k
Peak memory use before GGC: 58147k
Peak memory use after GGC: 32604k
Maximum of released memory in single GGC run: 33257k
Garbage: 128867k
Leak: 10062k
Overhead: 14724k
GGC runs: 288
Testing has produced no results
Testing has produced no results
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 142861k -> 142849k
Peak memory use before GGC: 56224k
Peak memory use after GGC: 49987k
Maximum of released memory in single GGC run: 23976k
Garbage: 205052k
Leak: 9280k
Overhead: 24747k
GGC runs: 315
Pre-IPA-Garbage: 50357k
Pre-IPA-Leak: 49682k
Pre-IPA-Overhead: 7543k
Post-IPA-Garbage: 50357k
Post-IPA-Leak: 49682k
Post-IPA-Overhead: 7543k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 184581k -> 184409k
Peak memory use before GGC: 56855k
Peak memory use after GGC: 51575k
Maximum of released memory in single GGC run: 22901k -> 22899k
Garbage: 245706k -> 245751k
Leak: 10364k -> 10364k
Overhead: 30403k -> 30407k
GGC runs: 347
Pre-IPA-Garbage: 50429k
Pre-IPA-Leak: 49685k
Pre-IPA-Overhead: 7551k
Post-IPA-Garbage: 50429k
Post-IPA-Leak: 49685k
Post-IPA-Overhead: 7551k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 190053k -> 190085k
Peak memory use before GGC: 66400k -> 66401k
Peak memory use after GGC: 62284k
Maximum of released memory in single GGC run: 23392k -> 23397k
Garbage: 269386k -> 269429k
Leak: 10401k -> 10402k
Overhead: 32191k -> 32194k
GGC runs: 348
Pre-IPA-Garbage: 50429k
Pre-IPA-Leak: 49685k
Pre-IPA-Overhead: 7551k
Post-IPA-Garbage: 50429k
Post-IPA-Leak: 49685k
Post-IPA-Overhead: 7551k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 148303k -> 148364k
Peak memory use before GGC: 84247k
Peak memory use after GGC: 83412k
Maximum of released memory in single GGC run: 16731k
Garbage: 200925k
Leak: 48029k
Overhead: 23992k
GGC runs: 417
Pre-IPA-Garbage: 109792k
Pre-IPA-Leak: 71157k
Pre-IPA-Overhead: 12100k
Post-IPA-Garbage: 109792k
Post-IPA-Leak: 71157k
Post-IPA-Overhead: 12100k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 169715k -> 169720k
Peak memory use before GGC: 96218k
Peak memory use after GGC: 95253k
Maximum of released memory in single GGC run: 17546k
Garbage: 206563k
Leak: 69712k
Overhead: 28969k
GGC runs: 390
Pre-IPA-Garbage: 110435k
Pre-IPA-Leak: 84438k
Pre-IPA-Overhead: 14676k
Post-IPA-Garbage: 110435k
Post-IPA-Leak: 84438k
Post-IPA-Overhead: 14676k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 122501k -> 122505k
Peak memory use before GGC: 84168k
Peak memory use after GGC: 83331k
Maximum of released memory in single GGC run: 16273k
Garbage: 290373k
Leak: 47320k
Overhead: 29430k
GGC runs: 518
Pre-IPA-Garbage: 155006k
Pre-IPA-Leak: 87961k
Pre-IPA-Overhead: 17505k
Post-IPA-Garbage: 155006k
Post-IPA-Leak: 87961k
Post-IPA-Overhead: 17505k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Amount of produced GGC garbage increased from 354284k to 356078k, overall 0.51%
Amount of memory still referenced at the end of compilation increased from 48282k to 48426k, overall 0.30%
Overall memory needed: 124549k -> 124921k
Peak memory use before GGC: 84375k -> 84337k
Peak memory use after GGC: 83499k -> 83498k
Maximum of released memory in single GGC run: 16276k
Garbage: 354284k -> 356078k
Leak: 48282k -> 48426k
Overhead: 36328k -> 36428k
GGC runs: 586 -> 587
Pre-IPA-Garbage: 157573k
Pre-IPA-Leak: 88094k
Pre-IPA-Overhead: 17788k
Post-IPA-Garbage: 157573k
Post-IPA-Leak: 88094k
Post-IPA-Overhead: 17788k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Amount of produced GGC garbage increased from 378412k to 380143k, overall 0.46%
Amount of memory still referenced at the end of compilation increased from 48870k to 49006k, overall 0.28%
Overall memory needed: 127497k -> 127861k
Peak memory use before GGC: 85604k -> 85602k
Peak memory use after GGC: 84752k
Maximum of released memory in single GGC run: 16625k
Garbage: 378412k -> 380143k
Leak: 48870k -> 49006k
Overhead: 38508k -> 38622k
GGC runs: 609 -> 611
Pre-IPA-Garbage: 160292k
Pre-IPA-Leak: 88379k
Pre-IPA-Overhead: 18037k
Post-IPA-Garbage: 160292k
Post-IPA-Leak: 88379k
Post-IPA-Overhead: 18037k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 380451k
Peak memory use before GGC: 101215k
Peak memory use after GGC: 56868k
Maximum of released memory in single GGC run: 50583k
Garbage: 178905k
Leak: 6103k
Overhead: 30783k
GGC runs: 107
Testing has produced no results
Testing has produced no results
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 381243k
Peak memory use before GGC: 101845k
Peak memory use after GGC: 57499k
Maximum of released memory in single GGC run: 50582k
Garbage: 179020k
Leak: 7833k
Overhead: 31215k
GGC runs: 111
Testing has produced no results
Testing has produced no results
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 437301k -> 437209k
Peak memory use before GGC: 78692k
Peak memory use after GGC: 70441k
Maximum of released memory in single GGC run: 37596k
Garbage: 234302k
Leak: 15907k
Overhead: 35590k
GGC runs: 106
Pre-IPA-Garbage: 52926k
Pre-IPA-Leak: 49237k
Pre-IPA-Overhead: 7120k
Post-IPA-Garbage: 52926k
Post-IPA-Leak: 49237k
Post-IPA-Overhead: 7120k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 356213k -> 355681k
Peak memory use before GGC: 75428k
Peak memory use after GGC: 70442k
Maximum of released memory in single GGC run: 32242k
Garbage: 245004k -> 245093k
Leak: 16079k -> 16080k
Overhead: 38757k -> 38768k
GGC runs: 117
Pre-IPA-Garbage: 91838k
Pre-IPA-Leak: 77295k
Pre-IPA-Overhead: 11793k
Post-IPA-Garbage: 91838k
Post-IPA-Leak: 77295k
Post-IPA-Overhead: 11793k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1199189k -> 1199149k
Peak memory use before GGC: 136589k
Peak memory use after GGC: 127947k
Maximum of released memory in single GGC run: 59911k
Garbage: 369974k
Leak: 24893k
Overhead: 49889k
GGC runs: 104
Pre-IPA-Garbage: 91838k
Pre-IPA-Leak: 77295k
Pre-IPA-Overhead: 11793k
Post-IPA-Garbage: 91838k
Post-IPA-Leak: 77295k
Post-IPA-Overhead: 11793k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2008-03-10 15:54:11.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-03-10 19:43:19.000000000 +0000
@@ -1,3 +1,35 @@
+2008-03-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/35438
+ PR c/35439
+ * c-parser.c (c_parser_omp_threadprivate): Don't add vars with
+ errorneous type. Check that v is a VAR_DECL.
+
+ PR middle-end/35099
+ * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid.
+
+2008-03-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR tree-optimization/35494
+ * tree-ssa-ccp.c (get_symbol_constant_value): Check if value
+ may be overriden at link and run time.
+
+2008-03-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/34677
+ * tree-ssa-pre.c (modify_expr_node_pool): Remove.
+ (poolify_tree): Likewise.
+ (modify_expr_template): Likewise.
+ (poolify_modify_stmt): Likewise.
+ (insert_fake_stores): Handle all component-ref style stores
+ in addition to INDIRECT_REF. Also handle complex types.
+ Do not poolify the inserted load.
+ (realify_fake_stores): Do not rebuild the tree but only
+ make it a SSA_NAME copy.
+ (init_pre): Remove initialzation of modify_expr_template.
+ Do not allocate modify_expr_node_pool.
+ (fini_pre): Do not free modify_expr_node_pool.
+
2008-03-10 Paul Brook <paul@codesourcery.com>
* config/arm/arm.md (UNSPEC_STACK_ALIGN, UNSPEC_PIC_OFFSET): Renumber
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