Hi,
Comparing memory consumption on compilation of combine.i and generate-3.4.ii I got:
comparing combine.c compilation at -O0 level:
Overall memory needed: 17820k
Peak memory use before GGC: 9294k
Peak memory use after GGC: 8606k
Maximum of released memory in single GGC run: 2867k
Garbage: 42475k -> 42487k
Leak: 6107k -> 6087k
Overhead: 5590k -> 5586k
GGC runs: 363
comparing combine.c compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 18540k to 18652k, overall 0.60%
Peak amount of GGC memory allocated before garbage collecting increased from 9573k to 9710k, overall 1.43%
Peak amount of GGC memory still allocated after garbage collectin increased from 8663k to 8800k, overall 1.58%
Amount of produced GGC garbage increased from 78747k to 79460k, overall 0.90%
Amount of memory still referenced at the end of compilation increased from 6483k to 6669k, overall 2.87%
Overall memory needed: 18540k -> 18652k
Peak memory use before GGC: 9573k -> 9710k
Peak memory use after GGC: 8663k -> 8800k
Maximum of released memory in single GGC run: 2067k -> 2073k
Garbage: 78747k -> 79460k
Leak: 6483k -> 6669k
Overhead: 13868k -> 14291k
GGC runs: 589 -> 591
comparing combine.c compilation at -O2 level:
Peak amount of GGC memory allocated before garbage collecting increased from 12756k to 12769k, overall 0.10%
Amount of produced GGC garbage increased from 94713k to 95369k, overall 0.69%
Amount of memory still referenced at the end of compilation increased from 6304k to 6424k, overall 1.89%
Overall memory needed: 22076k -> 21988k
Peak memory use before GGC: 12756k -> 12769k
Peak memory use after GGC: 12610k
Maximum of released memory in single GGC run: 2576k -> 2577k
Garbage: 94713k -> 95369k
Leak: 6304k -> 6424k
Overhead: 18777k -> 19165k
GGC runs: 580 -> 582
comparing combine.c compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 23972k to 26384k, overall 10.06%
Peak amount of GGC memory allocated before garbage collecting increased from 13246k to 13426k, overall 1.36%
Peak amount of GGC memory still allocated after garbage collectin increased from 12610k to 12742k, overall 1.05%
Amount of produced GGC garbage increased from 126026k to 127206k, overall 0.94%
Amount of memory still referenced at the end of compilation increased from 6852k to 6991k, overall 2.03%
Overall memory needed: 23972k -> 26384k
Peak memory use before GGC: 13246k -> 13426k
Peak memory use after GGC: 12610k -> 12742k
Maximum of released memory in single GGC run: 3483k
Garbage: 126026k -> 127206k
Leak: 6852k -> 6991k
Overhead: 24652k -> 25258k
GGC runs: 646 -> 650
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 132860k
Peak memory use before GGC: 76388k
Peak memory use after GGC: 45185k
Maximum of released memory in single GGC run: 41417k
Garbage: 157790k -> 157803k
Leak: 10620k -> 10618k
Overhead: 19800k -> 19798k
GGC runs: 310
comparing insn-attrtab.c compilation at -O1 level:
Peak amount of GGC memory allocated before garbage collecting increased from 94307k to 94612k, overall 0.32%
Peak amount of GGC memory still allocated after garbage collectin increased from 71401k to 71706k, overall 0.43%
Amount of memory still referenced at the end of compilation increased from 10968k to 11052k, overall 0.77%
Overall memory needed: 151600k -> 150756k
Peak memory use before GGC: 94307k -> 94612k
Peak memory use after GGC: 71401k -> 71706k
Maximum of released memory in single GGC run: 40513k
Garbage: 474239k -> 474241k
Leak: 10968k -> 11052k
Overhead: 84931k -> 85779k
GGC runs: 461 -> 462
comparing insn-attrtab.c compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 237408k to 241428k, overall 1.69%
Peak amount of GGC memory allocated before garbage collecting increased from 109880k to 110181k, overall 0.27%
Peak amount of GGC memory still allocated after garbage collectin increased from 86974k to 87274k, overall 0.34%
Amount of memory still referenced at the end of compilation increased from 11150k to 11207k, overall 0.51%
Overall memory needed: 237408k -> 241428k
Peak memory use before GGC: 109880k -> 110181k
Peak memory use after GGC: 86974k -> 87274k
Maximum of released memory in single GGC run: 35488k -> 35489k
Garbage: 525180k -> 525164k
Leak: 11150k -> 11207k
Overhead: 95096k -> 95934k
GGC runs: 383
comparing insn-attrtab.c compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 237384k to 241444k, overall 1.71%
Peak amount of GGC memory allocated before garbage collecting increased from 109882k to 110181k, overall 0.27%
Peak amount of GGC memory still allocated after garbage collectin increased from 86975k to 87275k, overall 0.34%
Amount of memory still referenced at the end of compilation increased from 11223k to 11271k, overall 0.43%
Overall memory needed: 237384k -> 241444k
Peak memory use before GGC: 109882k -> 110181k
Peak memory use after GGC: 86975k -> 87275k
Maximum of released memory in single GGC run: 35488k
Garbage: 527525k -> 527533k
Leak: 11223k -> 11271k
Overhead: 95873k -> 96717k
GGC runs: 392
comparing Gerald's testcase PR8361 compilation at -O0 level:
Amount of memory still referenced at the end of compilation increased from 58324k to 59855k, overall 2.63%
Overall memory needed: 114844k
Peak memory use before GGC: 92008k -> 92009k
Peak memory use after GGC: 90475k -> 90476k
Maximum of released memory in single GGC run: 20896k -> 20897k
Garbage: 270774k -> 271018k
Leak: 58324k -> 59855k
Overhead: 34949k -> 35160k
GGC runs: 552 -> 551
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 120248k to 126228k, overall 4.97%
Peak amount of GGC memory allocated before garbage collecting increased from 96217k to 96401k, overall 0.19%
Amount of produced GGC garbage increased from 671500k to 689097k, overall 2.62%
Amount of memory still referenced at the end of compilation increased from 60665k to 62390k, overall 2.84%
Overall memory needed: 120248k -> 126228k
Peak memory use before GGC: 96217k -> 96401k
Peak memory use after GGC: 89741k
Maximum of released memory in single GGC run: 20047k -> 20069k
Garbage: 671500k -> 689097k
Leak: 60665k -> 62390k
Overhead: 145200k -> 151336k
GGC runs: 835 -> 820
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 121648k to 127504k, overall 4.81%
Peak amount of GGC memory allocated before garbage collecting increased from 96218k to 96401k, overall 0.19%
Amount of produced GGC garbage increased from 732787k to 750297k, overall 2.39%
Amount of memory still referenced at the end of compilation increased from 61238k to 62963k, overall 2.82%
Overall memory needed: 121648k -> 127504k
Peak memory use before GGC: 96218k -> 96401k
Peak memory use after GGC: 89741k
Maximum of released memory in single GGC run: 20048k -> 20069k
Garbage: 732787k -> 750297k
Leak: 61238k -> 62963k
Overhead: 171765k -> 177962k
GGC runs: 866 -> 848
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 120456k to 126044k, overall 4.64%
Peak amount of GGC memory allocated before garbage collecting increased from 92007k to 92781k, overall 0.84%
Peak amount of GGC memory still allocated after garbage collectin increased from 90540k to 90698k, overall 0.17%
Amount of produced GGC garbage increased from 770315k to 790042k, overall 2.56%
Amount of memory still referenced at the end of compilation increased from 61606k to 63353k, overall 2.84%
Overall memory needed: 120456k -> 126044k
Peak memory use before GGC: 92007k -> 92781k
Peak memory use after GGC: 90540k -> 90698k
Maximum of released memory in single GGC run: 20814k
Garbage: 770315k -> 790042k
Leak: 61606k -> 63353k
Overhead: 183430k -> 190014k
GGC runs: 853 -> 836
Head of changelog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2004-09-13 21:44:05.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2004-09-14 03:38:36.000000000 +0000
@@ -1,3 +1,69 @@
+2004-09-14 Jan Hubicka <jh@suse.cz>
+
+ * Makefile.in (predict.o): Depend on tree-scalar-evolution.h
+ * predict.c: Include tree-scalar-evolution.h and cfgloop.h
+ (predict_loops): Use number_of_iterations_exit to predict
+ number of iterations on trees.
+
+2004-09-13 Dale Johannesen <dalej@apple.com>
+
+ PR 17408
+ PR 17409
+ * c-decl.c (start_decl): Repair TREE_STATIC for initialized
+ objects declared extern.
+
+2004-09-14 Paul Brook <paul@codesourcery.com>
+
+ * config/arm/arm.c (arm_expand_prologue): Make args_to_push a
+ HOST_WIDE_INT.
+
+2004-09-13 Daniel Jacobowitz <dan@debian.org>
+
+ * fold-const.c (fold_checksum_tree): Ignore TYPE_CACHED_VALUES.
+ Only use TYPE_BINFO for aggregates.
+
+2004-09-13 Daniel Jacobowitz <dan@debian.org>
+
+ * expmed.c (synth_mult): Initialize latency. Check cost before
+ checking ops count.
+
+2004-09-13 Kenneth Zadeck <Kenneth.Zadeck@NaturalBridge.com>
+
+
+ * tree-ssa-operands.c (get_call_expr_operands): Added parm to
+ add_call_clobber_ops and add_call_read_ops.
+ (add_call_clobber_ops, add_call_read_ops): Added code to reduce
+ the number of vdefs and vuses inserted based on analysis of global
+ variables across calls. * tree-dfa.c (find_referenced_vars):
+ Needed to reset static var maps before each function is compiled.
+ * cgraphunit.c:
+ (static_vars_to_consider_by_tree,static_vars_to_consider_by_uid,
+ static_vars_info,functions_to_static_vars_info,module_statics_escape,
+ all_module_statics,searchc_env,dfs_info): New fields to support
+ analysis of static global variables.
+ (print_order, convert_UIDs_in_bitmap, new_static_vars_info,
+ cgraph_reset_static_var_maps, get_global_static_vars_info,
+ get_global_statics_not_read, get_global_statics_not_written,
+ searchc, cgraph_reduced_inorder, has_proper_scope_for_analysis,
+ check_rhs_var, check_lhs_var, get_asm_expr_operands,
+ process_call_for_static_vars, scan_for_static_refs,
+ cgraph_characterize_statics_local, cgraph_get_static_name_by_uid,
+ clear_static_vars_maps, cgraph_propagate_bits,
+ cgraph_characterize_statics): New. Functions to support analysis
+ of static global variables.
+ (cgraph_mark_local_and_external_functions): Renamed from:
+ (cgraph_mark_local_functions)
+ (cgraph_expand_all_functions): Remove call to
+ cgraph_mark_local_and_external_functions.
+ (cgraph_optimize): Added driver to analyze static variables whose
+ scope is within the compilation unit. * cgraph.h (struct
+ cgraph_local_info, GTY): Added statics_read, statics_written,
+ local, calls_read_all, calls_write_all, for_functions_valid.
+ (struct cgraph_node): Added next_cycle. * cgraph.c
+ (dump_cgraph_node): Added print routines for new fields. *
+ makefile.in: macroized cgraph.h, added cgraphunit.c to the ggc
+ list.
+
2004-09-13 Joseph S. Myers <jsm@polyomino.org.uk>
* c-decl.c (grokdeclarator): Correct comments about where storage
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp 2004-09-12 21:43:28.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog 2004-09-14 03:38:37.000000000 +0000
@@ -1,3 +1,13 @@
+2004-09-13 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/16716
+ * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
+ Robustify.
+
+ PR c++/17327
+ * pt.c (unify): Add ENUMERAL_TYPE case. Replace sorry with
+ gcc_unreacable.
+
2004-09-12 Richard Henderson <rth@redhat.com>
PR c++/16254
I am friendly script caring about memory consumption in GCC. Please contact
jh@suse.cz if something is going wrong.
The results can be reproduced by building 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.
Yours testing script.