A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Tue Oct 4 23:02: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: 24905k -> 24881k
    Peak memory use before GGC: 9628k -> 9594k
    Peak memory use after GGC: 8975k -> 8941k
    Maximum of released memory in single GGC run: 2768k -> 2737k
    Garbage: 40300k -> 40083k
    Leak: 6705k -> 6702k
    Overhead: 5787k -> 5787k
    GGC runs: 316

comparing combine.c compilation at -O1 level:
    Overall memory needed: 27024k -> 26816k
    Peak memory use before GGC: 17568k -> 17363k
    Peak memory use after GGC: 17382k -> 17177k
    Maximum of released memory in single GGC run: 2384k -> 2373k
    Garbage: 60765k -> 60548k
    Leak: 6890k
    Overhead: 7588k -> 7589k
    GGC runs: 385 -> 386

comparing combine.c compilation at -O2 level:
    Overall memory needed: 27024k -> 26816k
    Peak memory use before GGC: 17571k -> 17365k
    Peak memory use after GGC: 17382k -> 17177k
    Maximum of released memory in single GGC run: 2464k -> 2454k
    Garbage: 78190k -> 77964k
    Leak: 6978k
    Overhead: 10086k -> 10084k
    GGC runs: 456 -> 458

comparing combine.c compilation at -O3 level:
    Overall memory needed: 27024k -> 26816k
    Peak memory use before GGC: 18553k -> 18366k
    Peak memory use after GGC: 18182k -> 17995k
    Maximum of released memory in single GGC run: 3518k -> 3507k
    Garbage: 111249k -> 111013k
    Leak: 7073k
    Overhead: 13913k -> 13912k
    GGC runs: 518 -> 519

comparing insn-attrtab.c compilation at -O0 level:
  Amount of memory still referenced at the end of compilation increased from 9843k to 10095k, overall 2.56%
    Overall memory needed: 82020k -> 80920k
    Peak memory use before GGC: 70571k -> 69468k
    Peak memory use after GGC: 45585k -> 45006k
    Maximum of released memory in single GGC run: 36772k -> 36248k
    Garbage: 147814k -> 146344k
    Leak: 9843k -> 10095k
    Overhead: 19790k -> 19790k
    GGC runs: 251

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 113016k -> 111880k
    Peak memory use before GGC: 95226k -> 94160k
    Peak memory use after GGC: 84765k -> 83707k
    Maximum of released memory in single GGC run: 32903k -> 32587k
    Garbage: 291231k -> 290035k
    Leak: 10076k
    Overhead: 36690k -> 36692k
    GGC runs: 244 -> 245

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 128264k -> 127112k
    Peak memory use before GGC: 114499k -> 113404k
    Peak memory use after GGC: 84716k -> 83667k
    Maximum of released memory in single GGC run: 32496k -> 32200k
    Garbage: 377332k -> 376138k
    Leak: 10182k
    Overhead: 48583k -> 48586k
    GGC runs: 273 -> 274

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 128312k -> 127172k
    Peak memory use before GGC: 114527k -> 113434k
    Peak memory use after GGC: 84746k -> 83696k
    Maximum of released memory in single GGC run: 32820k -> 32523k
    Garbage: 377891k -> 376702k
    Leak: 10186k
    Overhead: 48733k -> 48736k
    GGC runs: 275 -> 276

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 118988k -> 118148k
    Peak memory use before GGC: 95750k -> 94920k
    Peak memory use after GGC: 94799k -> 93973k
    Maximum of released memory in single GGC run: 20733k -> 20293k
    Garbage: 226868k -> 225925k
    Leak: 49198k -> 49147k
    Overhead: 36816k -> 36819k
    GGC runs: 368 -> 369

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 106152k -> 105432k
    Peak memory use before GGC: 95909k -> 95209k
    Peak memory use after GGC: 93434k -> 92607k
    Maximum of released memory in single GGC run: 20638k -> 20357k
    Garbage: 571271k -> 570293k
    Leak: 54996k -> 54942k
    Overhead: 67787k -> 67786k
    GGC runs: 516

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 106836k -> 106220k
    Peak memory use before GGC: 95909k -> 95209k
    Peak memory use after GGC: 93434k -> 92607k
    Maximum of released memory in single GGC run: 20637k -> 20356k
    Garbage: 653495k -> 652557k
    Leak: 55767k -> 55729k
    Overhead: 79097k -> 79099k
    GGC runs: 582

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 109652k -> 108948k
    Peak memory use before GGC: 97394k -> 96500k
    Peak memory use after GGC: 94505k -> 94549k
    Maximum of released memory in single GGC run: 21140k -> 20676k
    Garbage: 709848k -> 708807k
    Leak: 56966k -> 56912k
    Overhead: 84155k -> 84154k
    GGC runs: 584 -> 585

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-10-04 15:40:26.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-10-04 21:52:41.000000000 +0000
@@ -1,3 +1,40 @@
+2005-10-04  Devang Patel  <dpatel@apple.com>
+
+	* c-common.c (vector_types_convertible_p): Check TYPE_PRECISION for
+	real types.
+	
+2005-10-04  Steve Ellcey  <sje@cup.hp.com>
+
+	* tree-vect-transform.c (vect_create_epilog_for_reduction):
+	Use BYTES_BIG_ENDIAN instead of BITS_BIG_ENDIAN.
+
+2005-10-04  Adrian Straetling  <straetling@de.ibm.com>
+
+	* config/s390/s390.md ("TDSI","DP"): New mode macros.
+	("TE","tg"): New mode attributes.
+	("sync_compare_and_swap<mode>"): Replace with a define_expand.
+	("sync_compare_and_swap<mode>_cc"): Replace GPR with TDSI.
+	("*sync_compare_and_swap<mode>_cc"): Replace with one pattern for
+	dword_mode and one for GPRmode.
+
+2005-10-04  Ian Lance Taylor  <ian@airs.com>
+
+	PR preprocessor/13726
+	* c-ppoutput.c (cb_include): Add comments parameter, and print out
+	any comments passed in.
+
+2005-10-04  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	* tree.c (annotate_with_file_line): Fix typo.
+
+2005-10-04  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
+
+	PR ada/19382
+	* builtins.c (fold_builtin_memcmp): When constructing the pointer
+	type used to access data in the inlined length == 1 case, use
+	build_pointer_type_for_mode with CAN_ALIAS_ALL set to true.
+	(fold_builtin_strcmp, fold_builtin_strncmp): Likewise.
+
 2005-10-04  Uros Bizjak  <uros@kss-loka.si>
 
 	* config/i386/i386.h (TARGET_FISTTP): Enable also for


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