GCC memory consumption increased by recent patch!

gcctest@suse.de gcctest@suse.de
Thu Dec 2 01:18:00 GMT 2004


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: 25329k
    Peak memory use before GGC: 9329k
    Peak memory use after GGC: 8641k
    Maximum of released memory in single GGC run: 2926k
    Garbage: 42603k
    Leak: 6088k
    Overhead: 5744k
    GGC runs: 354

comparing combine.c compilation at -O1 level:
  Amount of produced GGC garbage increased from 67807k to 68059k, overall 0.37%
    Overall memory needed: 25889k -> 25885k
    Peak memory use before GGC: 9200k
    Peak memory use after GGC: 8722k
    Maximum of released memory in single GGC run: 2062k -> 2063k
    Garbage: 67807k -> 68059k
    Leak: 6485k
    Overhead: 10640k -> 10671k
    GGC runs: 544 -> 547

comparing combine.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 82118k to 82350k, overall 0.28%
    Overall memory needed: 29969k -> 29977k
    Peak memory use before GGC: 12705k
    Peak memory use after GGC: 12579k
    Maximum of released memory in single GGC run: 2575k
    Garbage: 82118k -> 82350k
    Leak: 6305k
    Overhead: 14853k -> 14872k
    GGC runs: 547 -> 549

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 20144k to 20704k, overall 2.78%
  Amount of produced GGC garbage increased from 110893k to 111176k, overall 0.26%
    Overall memory needed: 20144k -> 20704k
    Peak memory use before GGC: 13004k -> 12993k
    Peak memory use after GGC: 12579k
    Maximum of released memory in single GGC run: 3412k
    Garbage: 110893k -> 111176k
    Leak: 6849k -> 6817k
    Overhead: 19851k -> 19881k
    GGC runs: 612 -> 615

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 118468k
    Peak memory use before GGC: 79386k
    Peak memory use after GGC: 46137k
    Maximum of released memory in single GGC run: 43335k
    Garbage: 162034k
    Leak: 10610k
    Overhead: 21250k
    GGC runs: 295

comparing insn-attrtab.c compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 131528k to 132096k, overall 0.43%
  Amount of produced GGC garbage increased from 444430k to 449315k, overall 1.10%
    Overall memory needed: 131528k -> 132096k
    Peak memory use before GGC: 85228k
    Peak memory use after GGC: 70039k -> 70033k
    Maximum of released memory in single GGC run: 41127k -> 41128k
    Garbage: 444430k -> 449315k
    Leak: 10956k
    Overhead: 79425k -> 79591k
    GGC runs: 426 -> 429

comparing insn-attrtab.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 491396k to 496293k, overall 1.00%
    Overall memory needed: 154172k -> 154220k
    Peak memory use before GGC: 101239k
    Peak memory use after GGC: 85452k -> 85446k
    Maximum of released memory in single GGC run: 42306k
    Garbage: 491396k -> 496293k
    Leak: 10876k
    Overhead: 87683k -> 87852k
    GGC runs: 358 -> 362

comparing insn-attrtab.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 492684k to 497581k, overall 0.99%
    Overall memory needed: 154228k -> 154224k
    Peak memory use before GGC: 101241k
    Peak memory use after GGC: 85454k -> 85448k
    Maximum of released memory in single GGC run: 42306k
    Garbage: 492684k -> 497581k
    Leak: 10923k
    Overhead: 87871k -> 88040k
    GGC runs: 366 -> 370

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 112880k
    Peak memory use before GGC: 89412k
    Peak memory use after GGC: 88519k
    Maximum of released memory in single GGC run: 19741k
    Garbage: 248674k -> 248657k
    Leak: 57170k
    Overhead: 45230k -> 45229k
    GGC runs: 362

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 95408k
    Peak memory use before GGC: 88428k
    Peak memory use after GGC: 87443k
    Maximum of released memory in single GGC run: 19381k
    Garbage: 553677k -> 553953k
    Leak: 59207k
    Overhead: 116228k -> 116291k
    GGC runs: 610 -> 611

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 600367k to 602807k, overall 0.41%
    Overall memory needed: 95408k -> 95416k
    Peak memory use before GGC: 88428k
    Peak memory use after GGC: 87443k
    Maximum of released memory in single GGC run: 19381k
    Garbage: 600367k -> 602807k
    Leak: 59790k -> 59790k
    Overhead: 137624k -> 137707k
    GGC runs: 650 -> 654

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 640015k to 642339k, overall 0.36%
    Overall memory needed: 103080k
    Peak memory use before GGC: 95525k
    Peak memory use after GGC: 88742k
    Maximum of released memory in single GGC run: 20197k
    Garbage: 640015k -> 642339k
    Leak: 60125k -> 60133k
    Overhead: 148739k -> 148768k
    GGC runs: 646 -> 648

Head of changelog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2004-11-30 05:09:11.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2004-12-02 00:12:04.000000000 +0000
@@ -1,3 +1,216 @@
+2004-12-02  Andreas Schwab  <schwab@suse.de>
+
+	* gcc.c (struct option_map): Add entry for "--pass-exit-codes".
+
+2004-12-01  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	PR tree-opt/18763
+	PR tree-opt/18746
+	* tree-ssa-alias.c (init_alias_info): Get statement operands for all
+	the statements if aliases_computed_p is true.
+
+2004-12-01  Mark Mitchell  <mark@codesourcery.com>
+
+	* Makefile.in (WERROR): New variable.
+	(STRICT2_WARN): Use it.
+	(STAGE2_FLAGS_TO_PASS): Likewise.
+	* config/i386/x-mingw32 (WERROR): Add -Wno-format.
+
+2004-12-01  Richard Henderson  <rth@redhat.com>
+
+	* expr.c (get_inner_reference): Fix thinko in REAL/IMAGPART_EXPR
+	offsetting.
+
+2004-12-01  Diego Novillo  <dnovillo@redhat.com>
+
+	PR tree-optimization/18291
+	* tree-ssa-copy.c (merge_alias_info): Fix merging of
+	flow-sensitive alias information.  If the new pointer has no
+	name tag, copy it from the original pointer.  Otherwise, make
+	sure that the pointed-to sets have a common intersection.
+
+2004-12-01  Richard Henderson  <rth@redhat.com>
+
+	PR rtl-opt/15289
+	* emit-rtl.c (gen_complex_constant_part): Remove.
+	(gen_realpart, gen_imagpart): Remove.
+	* rtl.h (gen_realpart, gen_imagpart): Remove.
+	* expmed.c (extract_bit_field): Remove CONCAT hack catering to
+	gen_realpart/gen_imagpart.
+	* expr.c (write_complex_part, read_complex_part): New.
+	(emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push,
+	emit_move_complex_push, emit_move_complex, emit_move_ccmode, 
+	emit_move_multi_word): Split out from ...
+	(emit_move_insn_1): ... here.
+	(expand_expr_real_1) <COMPLEX_EXPR>: Use write_complex_part.
+	<REALPART_EXPR, IMAGPART_EXPR>: Use read_complex_part.
+	* function.c (assign_parm_setup_reg): Hard-code transformations
+	instead of using gen_realpart/gen_imagpart.
+
+	* expr.c (optimize_bitfield_assignment_op): Split out from ... 
+	(expand_assignment): ... here.  Use handled_component_p to gate
+	get_inner_reference code.  Simplify MEM handling.  Special case
+	CONCAT destinations.
+
+	* expmed.c (store_bit_field): Use simplify_gen_subreg instead
+	of gen_rtx_SUBREG directly.
+
+2004-12-01  David Edelsohn  <edelsohn@gnu.org>
+	    Nathan Sidwell  <nathan@codesourcery.com>
+
+	PR target/17107
+	* config/rs6000/rs6000.md (sge): Enable for non-TARGET_POWER.
+	(sgt): Same.
+	(sle): Same.
+	(slt): Same.
+
+2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+	PR middle-end/18667
+	* params.c (set_param_value): Add range check.
+	* params.def: Add min and max values. Reformat long strings.
+	* params.h (struct param_info): Add min and max fields.
+	(enum compiler_param): Adjust DEFPARAM.
+	* toplev.c (lang_independent_params): Likewise.
+
+2004-12-01  Alan Modra  <amodra@bigpond.net.au>
+
+	PR target/12817
+	* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.
+
+2004-12-01  Joseph S. Myers  <joseph@codesourcery.com>
+
+	* doc/standards.texi: Update for C99 TC2.
+
+2004-11-30  Jeff Law  <law@redhat.com>
+
+	* sbitmap.c (sbitmap_any_common_bits): New function.
+	* sbitmap.h (sbitmap_any_common_bits): Prototype.
+	* modulo-sched.c (sms_schedule_by_order): Use sbitmap_any_common_bits
+	No longer allocate/free "psp", "pss" sbitmaps.
+	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Similarly for
+	the "res" sbitmap.
+	(group_aliases): Similarly.
+
+2004-11-30  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* tree-vectorizer.c (vect_analyze_data_refs): Reformat and avoid
+	uninitialized variable.
+
+2004-11-30  Eric Christopher  <echristo@redhat.com>
+
+	* fold-const.c (fold_widened_comparison): Make sure that we're
+	passing an INTEGER_TYPE to int_fits_type_p.
+	(fold): Clean up comment.
+
+2004-11-30  Zack Weinberg  <zack@codesourcery.com>
+
+	* mklibgcc.in: Correct calculation of libgcc_s_soname and
+	libunwind_soname.  Use $out, not $outS, in commands for
+	no-shared-library case.  Move EXTRA_MULTILIB_PARTS rules above
+	library build rules, make $libunwind_so and $libgcc_s_so
+	depend on them in the normal fashion, and filter those objects
+	out of @shlib_objs@.
+
+2004-11-30  Janis Johnson  <janis187@us.ibm.com>
+
+	* config/rs6000/altivec.h (vec_step_help): Support const vector types.
+
+2004-11-30  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	PR tree-opt/18298
+	* tree-optimize.c (init_tree_optimization_passes): Add a may_alias
+	pass right after fold builtins.
+
+2004-11-30  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+	* config/s390/s390-modes.def: Added cc modes documentation.
+	* config/s390/s390.c: (s390_tm_ccmode, s390_select_ccmode,
+	s390_expand_addcc): Added cc mode comments.
+	* config/s390/s390.md: Removed old cc mode documentation.
+
+2004-11-30  Mark Dettinger  <dettinge@de.ibm.com>
+
+	* config/s390/s390.c (struct processor_costs): New data type.
+	(s390_cost, z900_cost, z990_cost): New global variables.
+	(override_options): Initialize s390_cost.
+	(s390_rtx_costs): Reimplement.
+
+2004-11-29  Daniel Berlin  <dberlin@dberlin.org>
+
+	Fix PR tree-optimization/18673
+
+	* tree-ssa-pre.c: Remove splay-tree.h include.
+	(bitmap_value_replace_in_set): Fix to add if it does not exist.
+	(find_or_generate_expression): Remove now-wrong condition.
+	(create_expression_by_pieces): Fix condition and comment reason
+	for it.
+	(insert_aux): Fix condition and comment reasons for it.
+	Factor insertion code from here.
+	(insert_into_preds_of_block): To here.  Fix conditions in factored
+	function and comment reasons for them.
+
+2004-11-30  Ira Rosen  <irar@il.ibm.com>
+
+	PR tree-opt/18607
+	* tree-vectorizer.c (vect_analyze_data_refs): Use temporary
+	variable for data_reference when looking for memtag.
+
+2004-11-30  Jakub Jelinek  <jakub@redhat.com>
+
+	* c-opts.c (check_deps_environment_vars): If spec != NULL, set
+	deps_seen.
+
+2004-11-30  Dorit Naishlos  <dorit@il.ibm.com>
+
+	* tree-vectorizer.c (vect_gen_niters_for_prolog_loop): Use
+	tree_low_cst instead of TREE_INT_CST_LOW.
+
+2004-11-30  Dorit Naishlos  <dorit@il.ibm.com>
+
+	PR target/18173
+	* tree-vectorizer.c (vect_can_force_dr_alignment_p): Return false for
+	decls that are assembled before vectorization takes place.
+	(vect_compute_data_ref_alignment): Set DECL_USER_ALIGN to 1.
+
+2004-11-30  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* passes.c (rest_of_handle_old_regalloc): Delete unreachable blocks
+	if local_alloc modified jumps.
+
+2004-11-30  Alan Modra  <amodra@bigpond.net.au>
+
+	* varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_SMALL
+	on TLS symbols.
+	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Remove TLS
+	check.
+
+2004-11-30  Zack Weinberg  <zack@codesourcery.com>
+
+	* gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.h
+	* unwind.h: Surround all visibility pragmas with #ifndef HIDE_EXPORTS.
+
+	* mklibgcc.in: Drastic restructure for comprehensibility.
+	Remove the old hidden-directive hack.
+	Eliminate support for .txt files in LIB2ADD etc (never used).
+	Eliminate support for assembly source files in LIB2ADDEH* and
+	LIBUNWIND (also never used).
+	Build up dependency lists for libraries incrementally.
+	If we have SHLIB_LINK, compile each file twice, once for the
+	static and once for the shared library; also probe for
+	-fvisibility=hidden in the generated libgcc.mk.  If found,
+	pass that and -DHIDE_EXPORTS to the compilation of every C
+	source file going into the static library.  If found, generate
+	hidden-directive lists for every assembly source file going
+	into the static library, but incorporate them with -include
+	instead of ld -r.
+	Write comments into generated libgcc.mk to facilitate debugging.
+	* Makefile.in: Pass ASM_HIDDEN_OP to mklibgcc.
+	* config/t-slibgcc-darwin: Define ASM_HIDDEN_OP.
+
+	* config/darwin.h (REAL_LIBGCC_SPEC): Put -lgcc back in
+	-Zdynamiclib case.
+
 2004-11-29  Richard Henderson  <rth@redhat.com>
 
 	* expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2004-11-30 00:33:27.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2004-12-02 00:12:06.000000000 +0000
@@ -1,3 +1,24 @@
+2004-12-01  Matt Austern  <austern@apple.com>
+
+	* name-lookup.c (namespace_binding): Omit alias check for global namespace.
+
+2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+	PR c++/18729
+	* parser.c (cp_parser_class_name): Check decl's type is not
+	error_mark_node.
+
+	PR c++/17431
+	* call.c (standard_conversion): Add FLAGS parameter. Do not allow
+	derived to base conversion when checking constructor
+	accessibility.
+	(implicit_conversion): Pass FLAGS to standard_conversion.
+	(check_constructir_callable): Disallow conversion functions.
+
+2004-11-30  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* parser.c: Fix comment typos.
+
 2004-11-27  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/18368

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.



More information about the Gcc-regression mailing list