A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Tue Aug 16 07:20: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: 24825k
    Peak memory use before GGC: 9590k
    Peak memory use after GGC: 8937k
    Maximum of released memory in single GGC run: 2739k
    Garbage: 40379k
    Leak: 6698k
    Overhead: 5813k
    GGC runs: 317

comparing combine.c compilation at -O1 level:
  Amount of produced GGC garbage increased from 60560k to 60633k, overall 0.12%
    Overall memory needed: 26812k
    Peak memory use before GGC: 17359k
    Peak memory use after GGC: 17173k
    Maximum of released memory in single GGC run: 2373k
    Garbage: 60560k -> 60633k
    Leak: 7082k
    Overhead: 7606k -> 7620k
    GGC runs: 389

comparing combine.c compilation at -O2 level:
    Overall memory needed: 26812k
    Peak memory use before GGC: 17361k
    Peak memory use after GGC: 17173k
    Maximum of released memory in single GGC run: 2459k
    Garbage: 75209k -> 75281k
    Leak: 7432k
    Overhead: 9893k -> 9907k
    GGC runs: 459

comparing combine.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 106472k to 106597k, overall 0.12%
    Overall memory needed: 26812k
    Peak memory use before GGC: 18416k
    Peak memory use after GGC: 18108k
    Maximum of released memory in single GGC run: 3496k
    Garbage: 106472k -> 106597k
    Leak: 7537k
    Overhead: 13560k -> 13585k
    GGC runs: 518

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 81076k
    Peak memory use before GGC: 69691k
    Peak memory use after GGC: 45002k
    Maximum of released memory in single GGC run: 36475k
    Garbage: 147322k
    Leak: 9851k
    Overhead: 19857k
    GGC runs: 251

comparing insn-attrtab.c compilation at -O1 level:
  Amount of produced GGC garbage increased from 290390k to 290800k, overall 0.14%
    Overall memory needed: 112512k -> 112112k
    Peak memory use before GGC: 94162k
    Peak memory use after GGC: 83709k
    Maximum of released memory in single GGC run: 32587k
    Garbage: 290390k -> 290800k
    Leak: 10077k
    Overhead: 36716k -> 36798k
    GGC runs: 245

comparing insn-attrtab.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 335822k to 336231k, overall 0.12%
    Overall memory needed: 120324k
    Peak memory use before GGC: 94288k
    Peak memory use after GGC: 83882k
    Maximum of released memory in single GGC run: 32535k
    Garbage: 335822k -> 336231k
    Leak: 10087k
    Overhead: 44964k -> 45046k
    GGC runs: 273

comparing insn-attrtab.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 336378k to 336787k, overall 0.12%
    Overall memory needed: 120444k
    Peak memory use before GGC: 94313k
    Peak memory use after GGC: 83907k
    Maximum of released memory in single GGC run: 32855k
    Garbage: 336378k -> 336787k
    Leak: 10106k
    Overhead: 45113k -> 45195k
    GGC runs: 275

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 118616k
    Peak memory use before GGC: 95329k
    Peak memory use after GGC: 94374k
    Maximum of released memory in single GGC run: 20170k
    Garbage: 226620k
    Leak: 49361k
    Overhead: 36902k
    GGC runs: 342

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 105708k
    Peak memory use before GGC: 94383k
    Peak memory use after GGC: 93446k
    Maximum of released memory in single GGC run: 19454k
    Garbage: 573947k -> 573986k
    Leak: 55682k
    Overhead: 68217k -> 68225k
    GGC runs: 491

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 105724k
    Peak memory use before GGC: 94383k
    Peak memory use after GGC: 93446k
    Maximum of released memory in single GGC run: 19454k
    Garbage: 647605k -> 647561k
    Leak: 56454k -> 56455k
    Overhead: 78853k -> 78860k
    GGC runs: 547 -> 546

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 109532k -> 109528k
    Peak memory use before GGC: 95464k
    Peak memory use after GGC: 94518k
    Maximum of released memory in single GGC run: 19608k
    Garbage: 700604k -> 700641k
    Leak: 57432k
    Overhead: 83615k -> 83622k
    GGC runs: 553

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-08-15 19:27:15.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-08-16 06:11:36.000000000 +0000
@@ -1,3 +1,39 @@
+2005-08-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	PR middle-end/23369
+	* fold-const.c (build_range_check): Disable optimization for function
+	pointer expressions on targets that require function pointer
+	canonicalization.
+
+2005-08-15  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* simplify-rtx.c (simplify_const_relational_operation): When
+	extracting arguments of a COMPARE, recompute the mode as well.
+
+2005-08-15  Ian Lance Taylor  <ian@airs.com>
+
+	* tree.c (build_string): Mark tree CONSTANT and INVARIANT.
+
+2005-08-15  DJ Delorie  <dj@redhat.com>
+
+	* config/m32c/mov.md (movqi_op): Immediates can't be moved to
+	the stack.
+	(movsi_splittable): Allow, but split, moves to the stack.
+	* config/m32c/m32c.c (m32c_split_move): Always split moves to the
+	stack.
+
+2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* aclocal.m4 (gcc_AC_FUNC_PRINTF_PTR): Delete.
+	* configure.ac: Don't call gcc_AC_FUNC_PRINTF_PTR.
+	* system.h (HOST_PTR_PRINTF): Don't define, poison it.
+	
+	* bitmap.c, c-decl.c, config/i386/i386-interix.h,
+	config/iq2000/iq2000.c, mips-tfile.c, print-rtl.c, print-tree.c:
+	Delete HOST_PTR_PRINTF.
+
+	* configure, config.in: Regenerate.
+
 2005-08-15  David Edelsohn  <edelsohn@gnu.org>
 
 	* config/rs6000/rs6000.md (QHSI): New mode macro.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2005-08-16 00:01:02.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2005-08-16 06:11:37.000000000 +0000
@@ -1,3 +1,7 @@
+2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.
+
 2005-08-15 Fariborz Jahanian <fjahanian@apple.com>
 
         * cp-tree.h (can_convert_arg, fn_type_unification): New argument.


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