A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Fri Mar 14 20:04: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 -> 8152k
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 -> 8168k
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 -> 8204k
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 -> 8224k
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 -> 8224k
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: 22641k -> 22640k
Peak memory use before GGC: 7808k
Peak memory use after GGC: 7189k
Maximum of released memory in single GGC run: 1550k
Garbage: 37868k
Leak: 5517k
Overhead: 4635k
GGC runs: 372
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 24669k -> 24672k
Peak memory use before GGC: 9648k
Peak memory use after GGC: 8948k
Maximum of released memory in single GGC run: 1838k
Garbage: 38188k
Leak: 8383k
Overhead: 5263k
GGC runs: 342
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O1 level:
Overall memory needed: 32845k -> 32840k
Peak memory use before GGC: 16263k
Peak memory use after GGC: 16080k
Maximum of released memory in single GGC run: 1379k -> 1380k
Garbage: 51559k -> 51562k
Leak: 5656k
Overhead: 5805k -> 5805k
GGC runs: 439
Pre-IPA-Garbage: 13925k
Pre-IPA-Leak: 17092k
Pre-IPA-Overhead: 2119k
Post-IPA-Garbage: 13925k
Post-IPA-Leak: 17092k
Post-IPA-Overhead: 2119k
comparing combine.c compilation at -O2 level:
Overall memory needed: 34657k -> 34660k
Peak memory use before GGC: 16364k
Peak memory use after GGC: 16197k
Maximum of released memory in single GGC run: 1314k -> 1316k
Garbage: 70936k -> 70945k
Leak: 5995k
Overhead: 8075k -> 8075k
GGC runs: 507
Pre-IPA-Garbage: 14079k
Pre-IPA-Leak: 17155k
Pre-IPA-Overhead: 2133k
Post-IPA-Garbage: 14079k
Post-IPA-Leak: 17155k
Post-IPA-Overhead: 2133k
comparing combine.c compilation at -O3 level:
Amount of produced GGC garbage increased from 87749k to 87899k, overall 0.17%
Overall memory needed: 38541k -> 38464k
Peak memory use before GGC: 16500k
Peak memory use after GGC: 16202k
Maximum of released memory in single GGC run: 2014k -> 2010k
Garbage: 87749k -> 87899k
Leak: 6048k -> 6039k
Overhead: 9994k -> 10011k
GGC runs: 544
Pre-IPA-Garbage: 14081k
Pre-IPA-Leak: 17167k
Pre-IPA-Overhead: 2134k
Post-IPA-Garbage: 14081k
Post-IPA-Leak: 17167k
Post-IPA-Overhead: 2134k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 137433k -> 137436k
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 -> 138684k
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: 142873k -> 142864k
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: 184421k -> 184412k
Peak memory use before GGC: 56855k
Peak memory use after GGC: 51575k
Maximum of released memory in single GGC run: 22891k
Garbage: 245679k -> 245594k
Leak: 10364k
Overhead: 30403k -> 30386k
GGC runs: 346
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: 190069k -> 190256k
Peak memory use before GGC: 66401k
Peak memory use after GGC: 62285k
Maximum of released memory in single GGC run: 23390k
Garbage: 269384k -> 269298k
Leak: 10403k
Overhead: 32192k -> 32174k
GGC runs: 346
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: 148691k -> 148733k
Peak memory use before GGC: 84449k
Peak memory use after GGC: 83613k
Maximum of released memory in single GGC run: 16993k
Garbage: 200804k
Leak: 48035k
Overhead: 23982k
GGC runs: 417
Pre-IPA-Garbage: 109751k
Pre-IPA-Leak: 71096k
Pre-IPA-Overhead: 12096k
Post-IPA-Garbage: 109751k
Post-IPA-Leak: 71096k
Post-IPA-Overhead: 12096k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 169315k -> 169317k
Peak memory use before GGC: 96105k
Peak memory use after GGC: 95153k
Maximum of released memory in single GGC run: 17493k
Garbage: 206431k
Leak: 69718k
Overhead: 28959k
GGC runs: 390
Pre-IPA-Garbage: 110395k
Pre-IPA-Leak: 84377k
Pre-IPA-Overhead: 14672k
Post-IPA-Garbage: 110395k
Post-IPA-Leak: 84377k
Post-IPA-Overhead: 14672k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 122217k -> 122223k
Peak memory use before GGC: 83951k
Peak memory use after GGC: 83111k
Maximum of released memory in single GGC run: 16213k
Garbage: 288629k -> 288622k
Leak: 47320k
Overhead: 29242k -> 29242k
GGC runs: 512
Pre-IPA-Garbage: 154817k
Pre-IPA-Leak: 87733k
Pre-IPA-Overhead: 17481k
Post-IPA-Garbage: 154817k
Post-IPA-Leak: 87733k
Post-IPA-Overhead: 17481k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 124741k -> 124743k
Peak memory use before GGC: 84146k
Peak memory use after GGC: 83312k
Maximum of released memory in single GGC run: 16215k
Garbage: 354028k -> 354021k
Leak: 48415k -> 48418k
Overhead: 36226k -> 36215k
GGC runs: 584
Pre-IPA-Garbage: 157364k
Pre-IPA-Leak: 87884k
Pre-IPA-Overhead: 17762k
Post-IPA-Garbage: 157364k
Post-IPA-Leak: 87884k
Post-IPA-Overhead: 17762k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 127577k -> 127579k
Peak memory use before GGC: 85427k
Peak memory use after GGC: 84551k
Maximum of released memory in single GGC run: 16587k
Garbage: 377252k -> 377249k
Leak: 48995k -> 48998k
Overhead: 38305k -> 38301k
GGC runs: 608
Pre-IPA-Garbage: 160081k
Pre-IPA-Leak: 88167k
Pre-IPA-Overhead: 18011k
Post-IPA-Garbage: 160081k
Post-IPA-Leak: 88167k
Post-IPA-Overhead: 18011k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 380451k -> 380450k
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 -> 381242k
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 -> 437136k
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: 355609k -> 355596k
Peak memory use before GGC: 75428k
Peak memory use after GGC: 70442k
Maximum of released memory in single GGC run: 32242k
Garbage: 245093k
Leak: 16080k
Overhead: 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 -> 1198648k
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-13 18:25:08.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-03-14 16:58:02.000000000 +0000
@@ -1,3 +1,50 @@
+2008-03-14 David Edelsohn <edelsohn@gnu.org>
+
+ * doc/install.texi (Binaries): Remove UCLA archive. Add HVCC
+ archive and Perzl. Update The Written Word listing.
+
+2008-03-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/34043
+ PR tree-optimization/33989
+ * tree-ssa-pre.c (execute_pre): Allow SCCVN to do insertion
+ when doing FRE.
+ (bitmap_find_leader): Use extra argument to verify dominance
+ relationship inside a basic-block.
+ (can_PRE_operation): Add VIEW_CONVERT_EXPR.
+ (find_leader_in_sets): Adjust.
+ (create_component_ref_by_pieces): Take extra argument for
+ dominance check, handle lookup failures.
+ (find_or_generate_expression): Likewise.
+ (create_expression_by_pieces): Likewise.
+ (insert_into_preds_of_block): Adjust.
+ (create_value_expr_from): If asked for, verify all operands
+ are in the blocks AVAIL_OUT set.
+ (make_values_for_stmt): Check for SSA_NAMEs that are life
+ over an abnormal edge.
+ (compute_avail): Remove such check.
+ (do_SCCVN_insertion): New function.
+ (eliminate): If we do not find a leader suitable for replacement
+ insert a replacement expression from SCCVN if available.
+ * tree-ssa-sccvn.h (run_scc_vn): Update prototype.
+ (struct vn_ssa_aux): Add needs_insertion flag.
+ * tree-ssa-sccvn.c (may_insert): New global flag.
+ (copy_reference_ops_from_ref): Value-number union member access
+ based on its size, not type and member if insertion is allowed.
+ (visit_reference_op_load): For a weak match from union type
+ punning lookup a view-converted value and insert a SSA_NAME
+ for that value if that is not found.
+ (visit_use): Make dumps shorter. Do not disallow value numbering
+ SSA_NAMEs that are life over an abnormal edge to constants.
+ (free_scc_vn): Release inserted SSA_NAMEs.
+ (run_scc_vn): New flag to specify whether insertion is allowed.
+ Process SSA_NAMEs in forward order.
+ * tree-ssa-loop-im.c (for_each_index): Handle invariant
+ ADDR_EXPRs inside VIEW_CONVERT_EXPR.
+ * fold-const.c (fold_unary): Fold VIEW_CONVERT_EXPRs from/to
+ pointer type to/from integral types that do not change the
+ precision to regular conversions.
+
2008-03-13 Uros Bizjak <ubizjak@gmail.com>
* doc/extend.texi (X86 Built-in Functions) [__builtin_ia32_psll?,
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