GCC memory consumption increased by recent patch!

gcctest@suse.de gcctest@suse.de
Mon Feb 7 05:57:00 GMT 2005


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: 24649k
    Peak memory use before GGC: 9351k
    Peak memory use after GGC: 8665k
    Maximum of released memory in single GGC run: 2864k
    Garbage: 41665k
    Leak: 6387k
    Overhead: 5772k
    GGC runs: 328

comparing combine.c compilation at -O1 level:
    Overall memory needed: 25505k -> 25485k
    Peak memory use before GGC: 9229k -> 9224k
    Peak memory use after GGC: 8733k
    Maximum of released memory in single GGC run: 2029k -> 2027k
    Garbage: 61222k -> 61170k
    Leak: 6749k
    Overhead: 9981k -> 9978k
    GGC runs: 503

comparing combine.c compilation at -O2 level:
    Overall memory needed: 29549k
    Peak memory use before GGC: 12663k
    Peak memory use after GGC: 12537k
    Maximum of released memory in single GGC run: 2597k
    Garbage: 79460k -> 79387k
    Leak: 6585k
    Overhead: 14133k -> 14118k
    GGC runs: 516

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 20156k to 20228k, overall 0.36%
    Overall memory needed: 20156k -> 20228k
    Peak memory use before GGC: 12796k -> 12795k
    Peak memory use after GGC: 12537k
    Maximum of released memory in single GGC run: 3409k -> 3406k
    Garbage: 107428k -> 107335k
    Leak: 7107k -> 7110k
    Overhead: 18953k -> 18947k
    GGC runs: 582

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 114136k
    Peak memory use before GGC: 74739k
    Peak memory use after GGC: 45485k
    Maximum of released memory in single GGC run: 39340k
    Garbage: 152660k
    Leak: 10976k
    Overhead: 19969k
    GGC runs: 273

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 124276k
    Peak memory use before GGC: 78748k
    Peak memory use after GGC: 70095k
    Maximum of released memory in single GGC run: 40779k
    Garbage: 366127k -> 366122k
    Leak: 11353k
    Overhead: 69302k -> 69302k
    GGC runs: 396

comparing insn-attrtab.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 147408k to 149040k, overall 1.11%
    Overall memory needed: 147408k -> 149040k
    Peak memory use before GGC: 98349k
    Peak memory use after GGC: 83466k
    Maximum of released memory in single GGC run: 39384k
    Garbage: 480610k -> 480607k
    Leak: 11234k
    Overhead: 84552k -> 84551k
    GGC runs: 341

comparing insn-attrtab.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 137904k to 147392k, overall 6.88%
    Overall memory needed: 137904k -> 147392k
    Peak memory use before GGC: 98351k
    Peak memory use after GGC: 83467k
    Maximum of released memory in single GGC run: 39385k
    Garbage: 481658k -> 481652k
    Leak: 11273k
    Overhead: 84702k -> 84702k
    GGC runs: 347

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 111096k
    Peak memory use before GGC: 86885k
    Peak memory use after GGC: 85935k
    Maximum of released memory in single GGC run: 19282k
    Garbage: 245826k
    Leak: 55495k
    Overhead: 43290k
    GGC runs: 367

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 103705k -> 103701k
    Peak memory use before GGC: 85967k
    Peak memory use after GGC: 84933k
    Maximum of released memory in single GGC run: 18946k
    Garbage: 445585k -> 444943k
    Leak: 56775k -> 56775k
    Overhead: 65539k -> 65509k
    GGC runs: 526

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 104741k -> 104725k
    Peak memory use before GGC: 85967k
    Peak memory use after GGC: 84933k
    Maximum of released memory in single GGC run: 18945k
    Garbage: 488690k -> 488034k
    Leak: 57372k -> 57364k
    Overhead: 75296k -> 75261k
    GGC runs: 584

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 112437k -> 112441k
    Peak memory use before GGC: 92707k
    Peak memory use after GGC: 86227k
    Maximum of released memory in single GGC run: 19713k
    Garbage: 504549k -> 503688k
    Leak: 57531k -> 57531k
    Overhead: 76986k -> 76947k
    GGC runs: 569 -> 570

Head of changelog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-02-06 15:23:53.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-02-07 00:16:53.000000000 +0000
@@ -1,3 +1,52 @@
+2005-02-06  Roger Sayle  <roger@eyesopen.com>
+	    Andrew Pinski  <pinskia@physics.uc.edu>
+	    Paolo Bonzini  <paolo.bonzini@lu.unisi.ch>
+
+	* simplify-rtx.c (simplify_relational_operation_1): Simplify
+	(ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))
+	into just (zero_extract:SI FOO (const_int 1) BAR).
+
+2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
+
+	* doc/cpp.texi: Include gcc-common.texi.  Don't define gcctabopt
+	macro locally.  Don't give last revision date.  Use GCC version
+	number from gcc-common.texi.
+	* doc/cppinternals.texi: Include gcc-common.texi.  Don't give last
+	revision date.  Use GCC version number from gcc-common.texi.
+	Describe being a library as current state rather than as 3.x
+	history.
+	* doc/gcc.texi: Remove last update date.
+	* doc/gccint.texi: Likewise.  Update copyright dates.
+	* doc/install.texi: Update copyright dates.
+
+2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>
+
+	PR other/7549
+	* doc/invoke.texi: Mention for each option included in -Wall that
+	it is included in -Wall.
+	* doc/gcc.texi: Update copyright and last modification date.
+
+2005-02-06  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Do not add
+	unnecessary cast to original induction variable increments.
+
+2005-02-06  Zdenek Dvorak  <dvorakz@suse.cz>
+
+	PR tree-optimization/18219
+	* tree-ssa-loop-ivopts.c (get_computation_at): Produce computations
+	in distributed form.
+
+2005-02-06  Richard Sandiford  <rsandifo@redhat.com>
+
+	* expmed.c (store_bit_field): Make the SUBREG code adjust bitnum.
+	Set bitpos and offset later in the function.  Do nothing if the
+	target is a register and if the bitfield lies completely outside
+	that register.
+	(extract_bit_field): Make the same SUBREG, bitpos and offset changes
+	here.  Return an uninitialised register if the source value is stored
+	in a register and the bitfield lies completely outside that register.
+
 2005-02-06  Steven Bosscher  <stevenb@suse.de>
 
 	* df.c (df_insn_refs_record): Use XEXP to get the operand of a USE,

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