GCC memory consumption increased by recent patch!

gcctest@suse.de gcctest@suse.de
Tue Sep 7 00:29: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:
Peak memory use before GGC: 12120k -> 12120k
Peak memory use after GGC: 11641k -> 11641k
Maximum of released memory in single GGC run: 2368k -> 2368k
Garbage: 42976k -> 42976k
Leak: 10910k -> 10910k
Overhead: 5810k -> 5810k
GGC runs: 447 -> 447

comparing combine.c compilation at -O1 level:
Amount of produced GGC garbage increased from 86850k to 86977k, overall 0.15%
Peak memory use before GGC: 11131k -> 11131k
Peak memory use after GGC: 10454k -> 10454k
Maximum of released memory in single GGC run: 1767k -> 1767k
Garbage: 86850k -> 86977k
Leak: 10005k -> 10005k
Overhead: 14989k -> 14998k
GGC runs: 668 -> 668

comparing combine.c compilation at -O2 level:
Amount of produced GGC garbage increased from 102943k to 103085k, overall 0.14%
Peak memory use before GGC: 13613k -> 13597k
Peak memory use after GGC: 13160k -> 13160k
Maximum of released memory in single GGC run: 2104k -> 2104k
Garbage: 102943k -> 103085k
Leak: 10025k -> 10025k
Overhead: 19886k -> 19894k
GGC runs: 673 -> 674

comparing combine.c compilation at -O3 level:
Amount of produced GGC garbage increased from 135722k to 135931k, overall 0.15%
Peak memory use before GGC: 17554k -> 17554k
Peak memory use after GGC: 15529k -> 15529k
Maximum of released memory in single GGC run: 3047k -> 3047k
Garbage: 135722k -> 135931k
Leak: 12211k -> 12211k
Overhead: 26200k -> 26217k
GGC runs: 727 -> 727

comparing Gerald's testcase PR8361 compilation at -O0 level:
Peak memory use before GGC: 93183k -> 93183k
Peak memory use after GGC: 91694k -> 91694k
Maximum of released memory in single GGC run: 20289k -> 20289k
Garbage: 255121k -> 255121k
Leak: 72853k -> 72853k
Overhead: 34608k -> 34608k
GGC runs: 538 -> 538

comparing Gerald's testcase PR8361 compilation at -O1 level:
Amount of produced GGC garbage increased from 675503k to 677082k, overall 0.23%
Peak memory use before GGC: 97174k -> 97174k
Peak memory use after GGC: 90561k -> 90561k
Maximum of released memory in single GGC run: 19488k -> 19488k
Garbage: 675503k -> 677082k
Leak: 90181k -> 90181k
Overhead: 147559k -> 147670k
GGC runs: 820 -> 821

comparing Gerald's testcase PR8361 compilation at -O2 level:
Amount of produced GGC garbage increased from 742180k to 743773k, overall 0.21%
Peak memory use before GGC: 97175k -> 97175k
Peak memory use after GGC: 90562k -> 90562k
Maximum of released memory in single GGC run: 19489k -> 19489k
Garbage: 742180k -> 743773k
Leak: 89222k -> 89222k
Overhead: 170322k -> 170435k
GGC runs: 867 -> 867

comparing Gerald's testcase PR8361 compilation at -O3 level:
Amount of produced GGC garbage increased from 793533k to 795455k, overall 0.24%
Peak memory use before GGC: 92864k -> 92864k
Peak memory use after GGC: 91396k -> 91396k
Maximum of released memory in single GGC run: 20194k -> 20194k
Garbage: 793533k -> 795455k
Leak: 90657k -> 90657k
Overhead: 185147k -> 185287k
GGC runs: 865 -> 866

Head of changelog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2004-09-06 18:08:12.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2004-09-06 23:57:21.000000000 +0000
@@ -1,3 +1,34 @@
+2004-09-06  James E Wilson  <wilson@specifixinc.com>
+
+	* config/mips/mips.md (movsf_hardfloat, movdf_hardfloat_64bit,
+	movdf_hardfloat_32bit): Split fG into two alternatives.
+	(movv2sf_hardfloat_64bit): Split fYG into two alternatives.
+
+	* emit-rtl.c (try_split): Check INSN_P before may_trap_p call.
+
+2004-09-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+	* final.c (output_in_slot): Delete.
+	(final_scan_insn): Revert 2004-09-03 change.
+	(output_asm_insn): Likewise.
+	* config/sparc/sparc.c (output_return): Likewise.
+	(output_sibcall): Likewise.
+
+2004-09-06  Jan Hubicka  <jh@suse.cz>
+
+	* loop.c (loop_dump_aux): Do not print RTL when not available.
+	* tree-ssa-loop-ivopts.c (add_standard_iv_candidates): Do not use
+	frontend specific type nodes.
+	(produce_memory_decl_rtl): Break out from ...
+	(prepare_decl_rtl): ... here.  Handle ADDR_EXPR correctly.
+	(get_computation_at): Avoid random tree sharing.
+	(tree_ssa_iv_optimize): Verify tree sharing; dump loops.
+
+2004-09-06  Zack Weinberg  <zack@codesourcery.com>
+
+	* Makefile.in (rtl.o, bitmap.o): Correct dependencies, remove
+	unnecessary commands.
+
 2004-09-06  Mohan Embar  <gnustuff@thisiscool.com>
 
 	* Makefile.in (rtl.o): Remove -DGENERATOR_FILE.
@@ -422,20 +453,20 @@
 
 2004-09-03  Richard Henderson  <rth@redhat.com>
 
-        PR middle-end/9997
-        * cfgexpand.c (LOCAL_ALIGNMENT): Provide default.
-        (STACK_ALIGNMENT_NEEDED, FRAME_GROWS_DOWNWARD): Likewise.
-        (struct stack_var, EOC, stack_vars, stack_vars_alloc, stack_vars_num,
-        stack_vars_sorted, stack_vars_conflict, stack_vars_conflict_alloc,
-        frame_phase, get_decl_align_unit, add_stack_var, triangular_index,
-        resize_stack_vars_conflict, add_stack_var_conflict,
-        stack_var_conflict_p, add_alias_set_conflicts, stack_var_size_cmp,
-        union_stack_vars, partition_stack_vars, dump_stack_var_partition,
-        expand_one_stack_var_at, expand_stack_vars, expand_one_stack_var,
+	PR middle-end/9997
+	* cfgexpand.c (LOCAL_ALIGNMENT): Provide default.
+	(STACK_ALIGNMENT_NEEDED, FRAME_GROWS_DOWNWARD): Likewise.
+	(struct stack_var, EOC, stack_vars, stack_vars_alloc, stack_vars_num,
+	stack_vars_sorted, stack_vars_conflict, stack_vars_conflict_alloc,
+	frame_phase, get_decl_align_unit, add_stack_var, triangular_index,
+	resize_stack_vars_conflict, add_stack_var_conflict,
+	stack_var_conflict_p, add_alias_set_conflicts, stack_var_size_cmp,
+	union_stack_vars, partition_stack_vars, dump_stack_var_partition,
+	expand_one_stack_var_at, expand_stack_vars, expand_one_stack_var,
 	expand_one_static_var, expand_one_hard_reg_var,
 	expand_one_register_var, expand_one_error_var, defer_stack_allocation,
 	expand_one_var, expand_used_vars_for_block, clear_tree_used): New.
-        (expand_used_vars): Rewrite.
+	(expand_used_vars): Rewrite.
 	* Makefile.in (cfgexpand.o): Update dependencies.
 
 2004-09-04  Jan Hubicka  <jh@suse.cz>
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2004-09-06 18:08:15.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2004-09-06 23:57:27.000000000 +0000
@@ -1,3 +1,7 @@
+2004-09-06  Daniel Jacobowitz  <dan@debian.org>
+
+	* semantics.c (expand_body): Assert that we are not nested.
+
 2004-09-06  Zack Weinberg  <zack@codesourcery.com>
 
 	* decl.c (build_enumerator): Use add_double and int_fits_type_p

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