A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Mon Jun 1 19:46:00 GMT 2009
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: 86k
Garbage: 219k
Leak: 1537k
Overhead: 187k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 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: 220k
Leak: 1569k
Overhead: 192k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O1 level:
Overall memory needed: 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 90k
Garbage: 224k
Leak: 1537k
Overhead: 188k
GGC runs: 4
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O2 level:
Overall memory needed: 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 88k
Garbage: 229k
Leak: 1537k
Overhead: 189k
GGC runs: 5
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O3 level:
Overall memory needed: 8933k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 88k
Garbage: 229k
Leak: 1537k
Overhead: 189k
GGC runs: 5
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing combine.c compilation at -O0 level:
Overall memory needed: 31453k
Peak memory use before GGC: 17484k
Peak memory use after GGC: 17031k
Maximum of released memory in single GGC run: 1913k
Garbage: 37964k
Leak: 7177k -> 7161k
Overhead: 5496k -> 5496k
GGC runs: 333
Pre-IPA-Garbage: 12532k
Pre-IPA-Leak: 18412k
Pre-IPA-Overhead: 2504k
Post-IPA-Garbage: 12532k
Post-IPA-Leak: 18412k
Post-IPA-Overhead: 2504k
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 33369k
Peak memory use before GGC: 19390k
Peak memory use after GGC: 18870k
Maximum of released memory in single GGC run: 1923k
Garbage: 38167k -> 38166k
Leak: 10437k -> 10429k
Overhead: 6308k -> 6308k
GGC runs: 316 -> 315
Pre-IPA-Garbage: 12551k
Pre-IPA-Leak: 20661k
Pre-IPA-Overhead: 2986k
Post-IPA-Garbage: 12551k
Post-IPA-Leak: 20661k
Post-IPA-Overhead: 2986k
comparing combine.c compilation at -O1 level:
Amount of memory still referenced at the end of compilation increased from 7156k to 7168k, overall 0.17%
Overall memory needed: 32061k -> 32085k
Peak memory use before GGC: 16554k
Peak memory use after GGC: 16381k
Maximum of released memory in single GGC run: 1379k
Garbage: 46007k
Leak: 7156k -> 7168k
Overhead: 6458k -> 6458k
GGC runs: 388
Pre-IPA-Garbage: 13407k
Pre-IPA-Leak: 17703k
Pre-IPA-Overhead: 2552k
Post-IPA-Garbage: 13407k
Post-IPA-Leak: 17703k
Post-IPA-Overhead: 2552k
comparing combine.c compilation at -O2 level:
Overall memory needed: 33149k -> 32893k
Peak memory use before GGC: 16618k
Peak memory use after GGC: 16448k
Maximum of released memory in single GGC run: 1491k
Garbage: 56639k -> 56639k
Leak: 7217k
Overhead: 8100k -> 8100k
GGC runs: 443
Pre-IPA-Garbage: 13436k
Pre-IPA-Leak: 17725k
Pre-IPA-Overhead: 2555k
Post-IPA-Garbage: 13436k
Post-IPA-Leak: 17725k
Post-IPA-Overhead: 2555k
comparing combine.c compilation at -O3 level:
Overall memory needed: 37341k -> 37441k
Peak memory use before GGC: 16718k
Peak memory use after GGC: 16552k
Maximum of released memory in single GGC run: 1683k
Garbage: 80807k
Leak: 7278k
Overhead: 11089k -> 11089k
GGC runs: 529
Pre-IPA-Garbage: 13436k
Pre-IPA-Leak: 17760k
Pre-IPA-Overhead: 2555k
Post-IPA-Garbage: 13436k
Post-IPA-Leak: 17760k
Post-IPA-Overhead: 2555k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 152505k -> 152501k
Peak memory use before GGC: 65256k
Peak memory use after GGC: 52819k
Maximum of released memory in single GGC run: 26251k
Garbage: 128610k
Leak: 9591k
Overhead: 16694k
GGC runs: 258
Pre-IPA-Garbage: 40783k
Pre-IPA-Leak: 51014k
Pre-IPA-Overhead: 7761k
Post-IPA-Garbage: 40783k
Post-IPA-Leak: 51014k
Post-IPA-Overhead: 7761k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 153825k
Peak memory use before GGC: 66521k
Peak memory use after GGC: 54081k
Maximum of released memory in single GGC run: 26252k
Garbage: 128933k
Leak: 11222k
Overhead: 17147k
GGC runs: 252
Pre-IPA-Garbage: 40792k
Pre-IPA-Leak: 52539k
Pre-IPA-Overhead: 8091k
Post-IPA-Garbage: 40792k
Post-IPA-Leak: 52539k
Post-IPA-Overhead: 8091k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 154425k
Peak memory use before GGC: 54974k
Peak memory use after GGC: 44904k
Maximum of released memory in single GGC run: 17234k
Garbage: 181164k
Leak: 9182k
Overhead: 23431k -> 23431k
GGC runs: 298
Pre-IPA-Garbage: 45256k
Pre-IPA-Leak: 45117k
Pre-IPA-Overhead: 7607k
Post-IPA-Garbage: 45256k
Post-IPA-Leak: 45117k
Post-IPA-Overhead: 7607k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 202417k -> 202197k
Peak memory use before GGC: 54436k
Peak memory use after GGC: 44668k
Maximum of released memory in single GGC run: 18698k
Garbage: 211801k
Leak: 9218k
Overhead: 29318k
GGC runs: 331
Pre-IPA-Garbage: 45281k
Pre-IPA-Leak: 45121k
Pre-IPA-Overhead: 7609k
Post-IPA-Garbage: 45281k
Post-IPA-Leak: 45121k
Post-IPA-Overhead: 7609k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 205693k -> 205505k
Peak memory use before GGC: 54449k
Peak memory use after GGC: 44680k
Maximum of released memory in single GGC run: 18680k
Garbage: 230141k
Leak: 9237k
Overhead: 31241k -> 31241k
GGC runs: 353
Pre-IPA-Garbage: 45281k
Pre-IPA-Leak: 45121k
Pre-IPA-Overhead: 7609k
Post-IPA-Garbage: 45281k
Post-IPA-Leak: 45121k
Post-IPA-Overhead: 7609k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 146477k -> 146449k
Peak memory use before GGC: 81548k
Peak memory use after GGC: 80740k
Maximum of released memory in single GGC run: 13881k
Garbage: 195498k -> 195498k
Leak: 55823k
Overhead: 29072k -> 29072k
GGC runs: 441
Pre-IPA-Garbage: 105344k
Pre-IPA-Leak: 84661k
Pre-IPA-Overhead: 15579k
Post-IPA-Garbage: 105344k
Post-IPA-Leak: 84661k
Post-IPA-Overhead: 15579k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 163989k -> 163949k
Peak memory use before GGC: 95759k
Peak memory use after GGC: 94810k
Maximum of released memory in single GGC run: 14051k
Garbage: 201063k
Leak: 83080k
Overhead: 35639k
GGC runs: 412
Pre-IPA-Garbage: 105846k
Pre-IPA-Leak: 101111k
Pre-IPA-Overhead: 19072k
Post-IPA-Garbage: 105846k
Post-IPA-Leak: 101111k
Post-IPA-Overhead: 19072k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 107869k -> 107861k
Peak memory use before GGC: 81549k
Peak memory use after GGC: 80741k
Maximum of released memory in single GGC run: 13844k
Garbage: 270755k -> 270754k
Leak: 52421k
Overhead: 32027k -> 32027k
GGC runs: 526
Pre-IPA-Garbage: 153192k
Pre-IPA-Leak: 85862k
Pre-IPA-Overhead: 19154k
Post-IPA-Garbage: 153192k
Post-IPA-Leak: 85862k
Post-IPA-Overhead: 19154k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 107717k -> 107577k
Peak memory use before GGC: 81323k
Peak memory use after GGC: 80299k
Maximum of released memory in single GGC run: 13840k
Garbage: 307097k -> 307097k
Leak: 52588k -> 52595k
Overhead: 37234k -> 37233k
GGC runs: 572
Pre-IPA-Garbage: 156507k
Pre-IPA-Leak: 85153k
Pre-IPA-Overhead: 19383k
Post-IPA-Garbage: 156507k
Post-IPA-Leak: 85153k
Post-IPA-Overhead: 19383k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 113857k -> 113973k
Peak memory use before GGC: 81791k -> 81789k
Peak memory use after GGC: 80299k
Maximum of released memory in single GGC run: 13840k
Garbage: 337682k -> 337681k
Leak: 52633k
Overhead: 40848k
GGC runs: 610
Pre-IPA-Garbage: 156507k
Pre-IPA-Leak: 85157k
Pre-IPA-Overhead: 19383k
Post-IPA-Garbage: 156507k
Post-IPA-Leak: 85157k
Post-IPA-Overhead: 19383k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 358525k -> 358781k
Peak memory use before GGC: 78174k
Peak memory use after GGC: 49108k
Maximum of released memory in single GGC run: 37058k
Garbage: 140207k
Leak: 7712k
Overhead: 24962k
GGC runs: 86
Pre-IPA-Garbage: 12171k
Pre-IPA-Leak: 18627k
Pre-IPA-Overhead: 2403k
Post-IPA-Garbage: 12171k
Post-IPA-Leak: 18627k
Post-IPA-Overhead: 2403k
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 359585k -> 358529k
Peak memory use before GGC: 78855k
Peak memory use after GGC: 49789k
Maximum of released memory in single GGC run: 37038k
Garbage: 140270k
Leak: 9706k
Overhead: 25530k
GGC runs: 94
Pre-IPA-Garbage: 12173k
Pre-IPA-Leak: 18873k
Pre-IPA-Overhead: 2456k
Post-IPA-Garbage: 12173k
Post-IPA-Leak: 18873k
Post-IPA-Overhead: 2456k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 347449k -> 347473k
Peak memory use before GGC: 94212k
Peak memory use after GGC: 82936k
Maximum of released memory in single GGC run: 47307k
Garbage: 256021k
Leak: 9536k
Overhead: 35485k
GGC runs: 97
Pre-IPA-Garbage: 42051k
Pre-IPA-Leak: 64580k
Pre-IPA-Overhead: 7108k
Post-IPA-Garbage: 42051k
Post-IPA-Leak: 64580k
Post-IPA-Overhead: 7108k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 666941k -> 667605k
Peak memory use before GGC: 90305k
Peak memory use after GGC: 82937k
Maximum of released memory in single GGC run: 38641k
Garbage: 302308k
Leak: 11373k
Overhead: 50853k
GGC runs: 108
Pre-IPA-Garbage: 84972k
Pre-IPA-Leak: 86483k
Pre-IPA-Overhead: 11064k
Post-IPA-Garbage: 84972k
Post-IPA-Leak: 86483k
Post-IPA-Overhead: 11064k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1234225k -> 1234273k
Peak memory use before GGC: 133837k
Peak memory use after GGC: 126292k
Maximum of released memory in single GGC run: 51245k
Garbage: 347523k
Leak: 10290k
Overhead: 43799k
GGC runs: 107
Pre-IPA-Garbage: 84972k
Pre-IPA-Leak: 86483k
Pre-IPA-Overhead: 11064k
Post-IPA-Garbage: 84972k
Post-IPA-Leak: 86483k
Post-IPA-Overhead: 11064k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog 2009-06-01 07:09:47.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog 2009-06-01 17:02:35.000000000 +0000
@@ -1,3 +1,116 @@
+2009-06-01 Steve Ellcey <sje@cup.hp.com>
+
+ * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
+ fixuns_truncrfdi2): New.
+ (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
+ *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
+ *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
+ *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
+ *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
+ *recip_approx): Remove.
+ (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
+ moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
+ divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
+ move to div.md.
+ * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
+ setf_exp_rf): New.
+
+2009-06-01 Ian Lance Taylor <iant@google.com>
+
+ * attribs.c (register_attribute): Use CONST_CAST.
+ * collect2.c (main): Use CONST_CAST2.
+ (scan_prog_file): Likewise.
+ * gcc.c (process_command, main): Likewise.
+ * toplev.c (toplev_main): Likewise.
+
+ * c-typeck.c (handle_warn_cast_qual): New static function,
+ partially broken out of build_c_cast.
+ (build_c_cast): Call handle_warn_cast_qual.
+ * doc/invoke.texi (Warning Options): Document new effect of
+ -Wcast-qual.
+
+2009-06-01 Aldy Hernandez <aldyh@redhat.com>
+
+ * diagnostic.c (diagnostic_build_prefix): Always print columns.
+ (diagnostic_report_current_module): Print columns.
+ * common.opt (flag_show_column): Enable by default.
+
+2009-06-01 Luis Machado <luisgpm@br.ibm.com>
+
+ * alias.c (find_base_term): Check for NULL term before returning.
+
+2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ Revert due to PR40320:
+
+ 2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+ * calls.c (emit_library_call_value_1): Don't force_operand for move
+ and push insns.
+
+2009-06-01 Olivier Hainque <hainque@adacore.com>
+ Eric Botcazou <botcazou@adacore.com>
+
+ * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
+ to be processed as a bitfield for constructor output purposes.
+ * output.h (initializer_constant_valid_for_bitfield_p): Declare
+ new function.
+ * varasm.c (oc_local_state): New type, output_constructor
+ local state to support communication with helpers.
+ (oc_outer_state): New type, output_constructor outer state of
+ relevance in recursive calls.
+ (output_constructor_array_range): New output_constructor helper,
+ extracted code for an array range element.
+ (output_constructor_regular_field): New output_constructor helper,
+ extracted code for an element that is not a bitfield.
+ (output_constructor_bitfield): New output_constructor helper,
+ extracted code for a bitfield element. Accept an OUTER state
+ argument for recursive processing. Recurse on record or array
+ CONSTRUCTOR values, possibly past noop conversions.
+ (initializer_constant_valid_for_bitfield_p): New predicate. Whether
+ VALUE is a valid constant-valued expression for use in a static
+ bit-field initializer.
+ (output_constructor): Rework to use helpers. Accept and honor an
+ OUTER state argument for recursive calls. Return total size. Be
+ prepared for nested constructors initializing bitfields.
+ (output_constant): Feed OUTER in calls to output_constructor.
+
+2009-06-01 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * calls.c (emit_library_call_value_1): Don't force_operand for move
+ and push insns.
+
+2009-06-01 Nick Clifton <nickc@redhat.com>
+
+ * doc/invoke.texi (IA-64 Options): Fix typo.
+
+2009-06-01 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/39129
+ * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
+ printed message.
+ (vect_do_peeling_for_loop_bound): Use
+ LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
+ LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
+ (vect_loop_versioning): Likewise.
+ (vect_create_cond_for_alias_checks): Fix indentation.
+ * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
+ macros.
+ (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
+ (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
+ * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
+ "control flow in loop".
+ (vect_estimate_min_profitable_iters): Use
+ LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
+ LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
+ (vect_create_data_ref_ptr): Don't mention array dimension in printing.
+ * tree-vect-stmts.c (vectorizable_store): Replace the check that the
+ statement belongs to a group of strided accesses with the exact code
+ check.
+ (vectorizable_load): Likewise.
+ * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
+ (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
+
2009-06-01 Gerald Pfeifer <gerald@pfeifer.com>
* config/freebsd-stdint.h: New file.
--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog.cp 2009-05-30 07:41:16.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/cp/ChangeLog 2009-06-01 17:02:34.000000000 +0000
@@ -1,3 +1,8 @@
+2009-06-01 Aldy Hernandez <aldyh@redhat.com>
+
+ * error.c (print_instantiation_partial_context): Print column
+ numbers.
+
2009-05-29 Ian Lance Taylor <iant@google.com>
* error.c (cp_printer): Don't use va_arg with enum type.
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