A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Wed Jun 8 11:49:00 GMT 2005


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 combine.c compilation at -O0 level:
    Overall memory needed: 25308k
    Peak memory use before GGC: 9665k
    Peak memory use after GGC: 8978k
    Maximum of released memory in single GGC run: 2790k
    Garbage: 42282k
    Leak: 6723k
    Overhead: 5888k
    GGC runs: 328

comparing combine.c compilation at -O1 level:
    Overall memory needed: 27840k -> 27820k
    Peak memory use before GGC: 9116k
    Peak memory use after GGC: 8758k
    Maximum of released memory in single GGC run: 2138k
    Garbage: 63282k
    Leak: 7111k
    Overhead: 8035k
    GGC runs: 525

comparing combine.c compilation at -O2 level:
    Overall memory needed: 24868k -> 24872k
    Peak memory use before GGC: 18290k
    Peak memory use after GGC: 18109k
    Maximum of released memory in single GGC run: 2524k
    Garbage: 86557k -> 86495k
    Leak: 7098k
    Overhead: 11193k -> 11188k
    GGC runs: 485

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 7178k to 7194k, overall 0.22%
    Overall memory needed: 25096k -> 25076k
    Peak memory use before GGC: 18296k
    Peak memory use after GGC: 18109k
    Maximum of released memory in single GGC run: 3101k
    Garbage: 115270k -> 115159k
    Leak: 7178k -> 7194k
    Overhead: 14847k -> 14838k
    GGC runs: 538

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 85588k
    Peak memory use before GGC: 73387k
    Peak memory use after GGC: 45373k
    Maximum of released memory in single GGC run: 37597k
    Garbage: 153190k
    Leak: 11550k
    Overhead: 19638k
    GGC runs: 268

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 101600k
    Peak memory use before GGC: 76700k
    Peak memory use after GGC: 65854k
    Maximum of released memory in single GGC run: 37075k
    Garbage: 304697k
    Leak: 11612k
    Overhead: 39365k
    GGC runs: 382

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 158280k -> 158276k
    Peak memory use before GGC: 121367k
    Peak memory use after GGC: 92459k
    Maximum of released memory in single GGC run: 32951k
    Garbage: 402985k -> 402985k
    Leak: 11452k
    Overhead: 52241k -> 52241k
    GGC runs: 306

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 158292k
    Peak memory use before GGC: 121369k
    Peak memory use after GGC: 92461k
    Maximum of released memory in single GGC run: 32951k
    Garbage: 403800k -> 403799k
    Leak: 11475k
    Overhead: 52370k -> 52370k
    GGC runs: 311

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 127340k
    Peak memory use before GGC: 103091k
    Peak memory use after GGC: 102069k
    Maximum of released memory in single GGC run: 21524k
    Garbage: 247458k
    Leak: 53769k
    Overhead: 42886k
    GGC runs: 346

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 121452k
    Peak memory use before GGC: 112534k
    Peak memory use after GGC: 100711k
    Maximum of released memory in single GGC run: 20027k
    Garbage: 662136k -> 662137k
    Leak: 58743k
    Overhead: 91321k -> 91321k
    GGC runs: 514

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 121424k
    Peak memory use before GGC: 112534k
    Peak memory use after GGC: 100711k
    Maximum of released memory in single GGC run: 20027k
    Garbage: 758824k -> 758653k
    Leak: 59626k -> 59618k
    Overhead: 109579k -> 109568k
    GGC runs: 595

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 124376k
    Peak memory use before GGC: 115276k
    Peak memory use after GGC: 102537k
    Maximum of released memory in single GGC run: 21386k
    Garbage: 815846k -> 815620k
    Leak: 60868k -> 60868k
    Overhead: 116743k -> 116728k
    GGC runs: 601

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-06-08 07:48:42.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-06-08 10:45:50.000000000 +0000
@@ -1,3 +1,35 @@
+2005-06-08  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/bfin.c (bfin_return_in_memory): Simplify; return
+	everything larger than 8 bytes in memory.
+
+	* config/bfin/bfin.h (enum bfin_builtins): New.
+	* config/bfin/bfin.md (UNSPEC_VOLATILE_CSYNC, UNSPEC_VOLATILE_SSYNC):
+	New constants.
+	(csync, ssync): New insn patterns.
+	* config/bfin/bfin.c (bfin_init_builtins, bfin_expand_builtin):
+	New functions.
+	(def_builtin): New macro.
+	(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
+
+	From Jie Zhang  <jie.zhang@analog.com>
+	* config/bfin/bfin.h (ASM_OUTPUT_ALIGN): Gas now emulates the
+	behavior of the native assembler in VDSP. So change accordingly.
+	
+2005-06-08  Sebastian Pop  <pop@cri.ensmp.fr>
+
+	* tree-data-ref.c (compute_estimated_nb_iterations,
+	analyze_array_indexes, compute_overlap_steps_for_affine_1_2,
+	analyze_subscript_affine_affine, find_data_references_in_loop):
+	Fixed to use chrec_contains_undetermined to test the values of
+	loop->estimated_nb_iterations.
+	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
+	Compute the estimation only when loop->estimated_nb_iterations
+	has not yet been initialized.
+	(convert_step_widening, scev_probably_wraps_p): Add a call to
+	estimate_numbers_of_iterations_loop.
+	* tree-vrp.c (execute_vrp): Don't call estimate_numbers_of_iterations.
+
 2005-06-08  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
 	PR debug/21946


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