This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
    Overhead: 187k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k
    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: 219k
    Leak: 1570k
    Overhead: 192k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1539k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1539k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8929k -> 8801k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 90k
    Garbage: 223k
    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: 90k
    Garbage: 228k
    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 -> 8929k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 90k
    Garbage: 228k
    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: 31457k
    Peak memory use before GGC: 17478k
    Peak memory use after GGC: 17029k
    Maximum of released memory in single GGC run: 1911k
    Garbage: 37895k -> 37895k
    Leak: 7171k -> 7155k
    Overhead: 5490k -> 5491k
    GGC runs: 331 -> 330
    Pre-IPA-Garbage: 12530k
    Pre-IPA-Leak: 18411k
    Pre-IPA-Overhead: 2504k
    Post-IPA-Garbage: 12530k
    Post-IPA-Leak: 18411k
    Post-IPA-Overhead: 2504k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 33401k -> 33369k
    Peak memory use before GGC: 19386k
    Peak memory use after GGC: 18869k
    Maximum of released memory in single GGC run: 1920k
    Garbage: 38110k
    Leak: 10441k
    Overhead: 6303k -> 6303k
    GGC runs: 315
    Pre-IPA-Garbage: 12549k
    Pre-IPA-Leak: 20660k
    Pre-IPA-Overhead: 2986k
    Post-IPA-Garbage: 12549k
    Post-IPA-Leak: 20660k
    Post-IPA-Overhead: 2986k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31993k -> 31905k
    Peak memory use before GGC: 16555k
    Peak memory use after GGC: 16383k
    Maximum of released memory in single GGC run: 1378k
    Garbage: 45806k
    Leak: 7156k
    Overhead: 6440k
    GGC runs: 388
    Pre-IPA-Garbage: 13405k
    Pre-IPA-Leak: 17702k
    Pre-IPA-Overhead: 2552k
    Post-IPA-Garbage: 13405k
    Post-IPA-Leak: 17702k
    Post-IPA-Overhead: 2552k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 32857k -> 32973k
    Peak memory use before GGC: 16628k
    Peak memory use after GGC: 16454k
    Maximum of released memory in single GGC run: 1488k -> 1489k
    Garbage: 56651k -> 56306k
    Leak: 7188k
    Overhead: 8057k -> 8033k
    GGC runs: 441
    Pre-IPA-Garbage: 13435k
    Pre-IPA-Leak: 17724k
    Pre-IPA-Overhead: 2555k
    Post-IPA-Garbage: 13435k
    Post-IPA-Leak: 17724k
    Post-IPA-Overhead: 2555k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 36769k -> 36945k
    Peak memory use before GGC: 16727k
    Peak memory use after GGC: 16557k
    Maximum of released memory in single GGC run: 1690k -> 1681k
    Garbage: 82563k -> 80462k
    Leak: 7249k
    Overhead: 11245k -> 11103k
    GGC runs: 529 -> 527
    Pre-IPA-Garbage: 13435k
    Pre-IPA-Leak: 17759k
    Pre-IPA-Overhead: 2555k
    Post-IPA-Garbage: 13435k
    Post-IPA-Leak: 17759k
    Post-IPA-Overhead: 2555k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 152505k -> 152473k
    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
    Overhead: 16691k
    GGC runs: 258
    Pre-IPA-Garbage: 40782k
    Pre-IPA-Leak: 51014k
    Pre-IPA-Overhead: 7761k
    Post-IPA-Garbage: 40782k
    Post-IPA-Leak: 51014k
    Post-IPA-Overhead: 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
    Overhead: 17144k
    GGC runs: 252
    Pre-IPA-Garbage: 40791k
    Pre-IPA-Leak: 52539k
    Pre-IPA-Overhead: 8091k
    Post-IPA-Garbage: 40791k
    Post-IPA-Leak: 52539k
    Post-IPA-Overhead: 8091k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 154545k
    Peak memory use before GGC: 54972k
    Peak memory use after GGC: 44902k
    Maximum of released memory in single GGC run: 17233k
    Garbage: 181124k
    Leak: 9178k
    Overhead: 23427k
    GGC runs: 298
    Pre-IPA-Garbage: 45256k
    Pre-IPA-Leak: 45116k
    Pre-IPA-Overhead: 7607k
    Post-IPA-Garbage: 45256k
    Post-IPA-Leak: 45116k
    Post-IPA-Overhead: 7607k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 202245k -> 202233k
    Peak memory use before GGC: 54418k
    Peak memory use after GGC: 44649k
    Maximum of released memory in single GGC run: 18696k
    Garbage: 211672k -> 211641k
    Leak: 9193k
    Overhead: 29299k -> 29298k
    GGC runs: 331
    Pre-IPA-Garbage: 45281k
    Pre-IPA-Leak: 45120k
    Pre-IPA-Overhead: 7609k
    Post-IPA-Garbage: 45281k
    Post-IPA-Leak: 45120k
    Post-IPA-Overhead: 7609k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 205457k -> 206109k
    Peak memory use before GGC: 54430k
    Peak memory use after GGC: 44658k
    Maximum of released memory in single GGC run: 18680k -> 18679k
    Garbage: 230035k -> 229893k
    Leak: 9211k
    Overhead: 31207k -> 31200k
    GGC runs: 352 -> 351
    Pre-IPA-Garbage: 45281k
    Pre-IPA-Leak: 45120k
    Pre-IPA-Overhead: 7609k
    Post-IPA-Garbage: 45281k
    Post-IPA-Leak: 45120k
    Post-IPA-Overhead: 7609k

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 81786k to 81868k, overall 0.10%
  Peak amount of GGC memory still allocated after garbage collecting increased from 80976k to 81058k, overall 0.10%
    Overall memory needed: 146249k -> 146293k
    Peak memory use before GGC: 81786k -> 81868k
    Peak memory use after GGC: 80976k -> 81058k
    Maximum of released memory in single GGC run: 13627k -> 13542k
    Garbage: 193638k -> 192383k
    Leak: 55413k -> 55448k
    Overhead: 28735k -> 28823k
    GGC runs: 439 -> 436
    Pre-IPA-Garbage: 105757k -> 105277k
    Pre-IPA-Leak: 84540k -> 84587k
    Pre-IPA-Overhead: 15486k -> 15579k
    Post-IPA-Garbage: 105757k -> 105277k
    Post-IPA-Leak: 84540k -> 84587k
    Post-IPA-Overhead: 15486k -> 15579k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 164037k -> 163825k
    Peak memory use before GGC: 95912k -> 95614k
    Peak memory use after GGC: 94960k -> 94667k
    Maximum of released memory in single GGC run: 13877k -> 13985k
    Garbage: 198961k -> 197353k
    Leak: 82505k -> 82400k
    Overhead: 35297k -> 35357k
    GGC runs: 410 -> 409
    Pre-IPA-Garbage: 106343k -> 105779k
    Pre-IPA-Leak: 101060k -> 101036k
    Pre-IPA-Overhead: 18992k -> 19072k
    Post-IPA-Garbage: 106343k -> 105779k
    Post-IPA-Leak: 101060k -> 101036k
    Post-IPA-Overhead: 18992k -> 19072k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 108749k -> 108773k
    Peak memory use before GGC: 82625k -> 82538k
    Peak memory use after GGC: 81801k -> 81713k
    Maximum of released memory in single GGC run: 13771k -> 13775k
    Garbage: 270248k -> 269059k
    Leak: 52220k -> 52272k
    Overhead: 31613k -> 31688k
    GGC runs: 528 -> 525
    Pre-IPA-Garbage: 154364k -> 153885k
    Pre-IPA-Leak: 86837k -> 86856k
    Pre-IPA-Overhead: 19157k -> 19248k
    Post-IPA-Garbage: 154364k -> 153885k
    Post-IPA-Leak: 86837k -> 86856k
    Post-IPA-Overhead: 19157k -> 19248k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 108137k -> 108129k
    Peak memory use before GGC: 82646k -> 82565k
    Peak memory use after GGC: 80941k -> 80858k
    Maximum of released memory in single GGC run: 13774k -> 13773k
    Garbage: 309000k -> 304549k
    Leak: 52323k -> 52369k
    Overhead: 36913k -> 36687k
    GGC runs: 574 -> 569
    Pre-IPA-Garbage: 157397k -> 156917k
    Pre-IPA-Leak: 85926k -> 85949k
    Pre-IPA-Overhead: 19369k -> 19461k
    Post-IPA-Garbage: 157397k -> 156917k
    Post-IPA-Leak: 85926k -> 85949k
    Post-IPA-Overhead: 19369k -> 19461k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 52360k to 52415k, overall 0.10%
    Overall memory needed: 114385k -> 114581k
    Peak memory use before GGC: 83113k -> 83031k
    Peak memory use after GGC: 81047k -> 80966k
    Maximum of released memory in single GGC run: 13774k -> 13773k
    Garbage: 343348k -> 335373k
    Leak: 52360k -> 52415k
    Overhead: 41128k -> 40618k
    GGC runs: 616 -> 606
    Pre-IPA-Garbage: 157397k -> 156917k
    Pre-IPA-Leak: 85930k -> 85953k
    Pre-IPA-Overhead: 19369k -> 19461k
    Post-IPA-Garbage: 157397k -> 156917k
    Post-IPA-Leak: 85930k -> 85953k
    Post-IPA-Overhead: 19369k -> 19461k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 358725k -> 358689k
    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
    Overhead: 24960k
    GGC runs: 86
    Pre-IPA-Garbage: 12171k
    Pre-IPA-Leak: 18626k
    Pre-IPA-Overhead: 2403k
    Post-IPA-Garbage: 12171k
    Post-IPA-Leak: 18626k
    Post-IPA-Overhead: 2403k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 358409k -> 359477k
    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
    Overhead: 25529k
    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: 308921k -> 309189k
    Peak memory use before GGC: 80235k
    Peak memory use after GGC: 69462k
    Maximum of released memory in single GGC run: 38514k
    Garbage: 225540k -> 224434k
    Leak: 9462k
    Overhead: 32458k -> 32358k
    GGC runs: 96 -> 95
    Pre-IPA-Garbage: 41119k
    Pre-IPA-Leak: 63974k
    Pre-IPA-Overhead: 7105k
    Post-IPA-Garbage: 41119k
    Post-IPA-Leak: 63974k
    Post-IPA-Overhead: 7105k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 517441k -> 518265k
    Peak memory use before GGC: 80260k
    Peak memory use after GGC: 69463k
    Maximum of released memory in single GGC run: 39109k -> 38750k
    Garbage: 268248k -> 266746k
    Leak: 9463k
    Overhead: 42139k -> 42002k
    GGC runs: 108 -> 107
    Pre-IPA-Garbage: 90152k
    Pre-IPA-Leak: 80240k
    Pre-IPA-Overhead: 11095k
    Post-IPA-Garbage: 90152k
    Post-IPA-Leak: 80240k
    Post-IPA-Overhead: 11095k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1031253k -> 1031477k
    Peak memory use before GGC: 135102k
    Peak memory use after GGC: 126444k
    Maximum of released memory in single GGC run: 54329k
    Garbage: 329142k
    Leak: 10302k
    Overhead: 42368k
    GGC runs: 106
    Pre-IPA-Garbage: 90152k
    Pre-IPA-Leak: 80240k
    Pre-IPA-Overhead: 11095k
    Post-IPA-Garbage: 90152k
    Post-IPA-Leak: 80240k
    Post-IPA-Overhead: 11095k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog	2009-05-28 11:03:49.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog	2009-05-29 01:38:54.000000000 +0000
@@ -1,3 +1,85 @@
+2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
+
+	* config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
+	component.
+	(thumb2_zero_extendqidi2): Likewise.
+
+2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+	* config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
+	instead of gen_movrt.
+	* config/sh/sh.md (movrt): Remove.
+
+2009-05-28  Steve Ellcey  <sje@cup.hp.com>
+
+	* doc/invoke.texi (IA-64 Options)
+	Add -msdata, -mfused-madd, -mno-inline-float-divide, 
+	-mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
+	-msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
+	-msched-prefer-non-control-spec-insns,
+	-msched-stop-bits-after-every-cycle,
+	-msched-count-spec-in-critical-path,
+	-msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
+	-msched-max-memory-insns-hard-limit, -msched-max-memory-insns
+	Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
+	and -msched-spec-verbose.
+
+2009-05-28  Joseph Myers  <joseph@codesourcery.com>
+
+	* config/arm/lib1funcs.asm (__clear_cache): Define if
+	L_clear_cache.
+	* config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
+	error if used.
+	* config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
+
+2009-05-28  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-alias.c (ao_ref_init): New function.
+	(ao_ref_base): Likewise.
+	(ao_ref_base_alias_set): Likewise.
+	(ao_ref_alias_set): Likewise.
+	(refs_may_alias_p_1): Change signature.
+	(refs_may_alias_p): Adjust.
+	(refs_anti_dependent_p): Likewise.
+	(refs_output_dependent_p): Likewise.
+	(call_may_clobber_ref_p_1): Change signature.
+	(call_may_clobber_ref_p): Adjust.
+	(stmt_may_clobber_ref_p_1): New function split out from ...
+	(stmt_may_clobber_ref_p): ... here.
+	(maybe_skip_until): Adjust signature.
+	(get_continuation_for_phi): Likewise.
+	(walk_non_aliased_vuses): Likewise.
+	* tree-ssa-alias.h (struct ao_ref_s): New structure type.
+	(ao_ref_init): Declare.
+	(ao_ref_base): Likewise.
+	(ao_ref_alias_set): Likewise.
+	(stmt_may_clobber_ref_p_1): Likewise.
+	(walk_non_aliased_vuses): Adjust.
+	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
+	(get_ref_from_reference_ops): remove.
+	(vn_reference_lookup_2): Adjust signature.
+	(vn_reference_lookup_3): Do not re-build trees.  Handle unions.
+	(vn_reference_lookup_pieces): Adjust signature, do not re-build
+	trees.
+	(vn_reference_lookup): Adjust.
+	(vn_reference_insert): Likewise.
+	(vn_reference_insert_pieces): Adjust signature.
+	(visit_reference_op_call): Adjust.
+	* tree-ssa-pre.c (get_expr_type): Simplify.
+	(phi_translate_1): Adjust.
+	(compute_avail): Likewise.
+	(translate_vuse_through_block): Do not re-build trees.
+	(value_dies_in_block_x): Likewise.
+	* tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
+	fields.
+	(vn_reference_lookup_pieces): Adjust declaration.
+	(vn_reference_insert_pieces): Likewise.
+
+2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
+	with checking disabled.
+
 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
 
 	PR target/37216
--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog.cp	2009-05-28 05:14:05.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/cp/ChangeLog	2009-05-29 01:38:53.000000000 +0000
@@ -1,3 +1,19 @@
+2009-05-28  Dodji Seketeli  <dodji@redhat.com>
+
+	PR c++/39754
+	* cp-tree.h (canonical_type_variant): Remove this function declaration.
+	(strip_typedefs): New function declaration.
+	* tree.c (strip_typedefs): New function definition.
+	(canonical_type_variant): Remove function definition.
+	* cvt.c (convert_from_reference): No need to use
+	canonical_type_variant.
+	* typeck.c (cp_build_indirect_ref): Likewise.
+	* error.c (dump_template_bindings): Use strip_typedefs instead of
+	canonical_type_variant.
+	* pt.c (convert_template_argument, unify): Likewise.
+	* mangle.c (canonicalize_for_substitution): Don't use
+	canonical_type_variant.
+
 2009-05-27  Jason Merrill  <jason@redhat.com>
 
 	* call.c (implicit_conversion): Handle conversion from


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]