This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

A recent patch decreased GCC's memory consumption.


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 empty function compilation at -O0 level:
    Overall memory needed: 8184k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 218k
    Leak: 1222k
    Overhead: 136k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8428k
    Peak memory use before GGC: 1319k
    Peak memory use after GGC: 1245k
    Maximum of released memory in single GGC run: 133k
    Garbage: 220k
    Leak: 1254k
    Overhead: 141k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8236k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 221k
    Leak: 1222k
    Overhead: 137k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8456k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1222k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1225k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1225k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8460k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1222k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1225k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1225k
    Post-IPA-Overhead: 135k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 32044k
    Peak memory use before GGC: 18032k
    Peak memory use after GGC: 17774k
    Maximum of released memory in single GGC run: 1866k
    Garbage: 39943k
    Leak: 5639k
    Overhead: 5266k
    GGC runs: 339
    Pre-IPA-Garbage: 12581k
    Pre-IPA-Leak: 19385k
    Pre-IPA-Overhead: 2623k
    Post-IPA-Garbage: 12581k
    Post-IPA-Leak: 19385k
    Post-IPA-Overhead: 2623k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34056k
    Peak memory use before GGC: 19957k
    Peak memory use after GGC: 19629k
    Maximum of released memory in single GGC run: 1875k
    Garbage: 40245k
    Leak: 8928k
    Overhead: 6083k
    GGC runs: 322
    Pre-IPA-Garbage: 12680k
    Pre-IPA-Leak: 21658k
    Pre-IPA-Overhead: 3113k
    Post-IPA-Garbage: 12680k
    Post-IPA-Leak: 21658k
    Post-IPA-Overhead: 3113k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31024k
    Peak memory use before GGC: 15689k
    Peak memory use after GGC: 15518k
    Maximum of released memory in single GGC run: 1366k
    Garbage: 47221k
    Leak: 5624k
    Overhead: 6102k
    GGC runs: 404
    Pre-IPA-Garbage: 13457k
    Pre-IPA-Leak: 16876k
    Pre-IPA-Overhead: 2532k
    Post-IPA-Garbage: 13457k
    Post-IPA-Leak: 16876k
    Post-IPA-Overhead: 2532k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31876k -> 31868k
    Peak memory use before GGC: 15780k
    Peak memory use after GGC: 15621k
    Maximum of released memory in single GGC run: 1326k
    Garbage: 61239k
    Leak: 5800k
    Overhead: 8186k
    GGC runs: 474
    Pre-IPA-Garbage: 13631k
    Pre-IPA-Leak: 16952k
    Pre-IPA-Overhead: 2554k
    Post-IPA-Garbage: 13631k
    Post-IPA-Leak: 16952k
    Post-IPA-Overhead: 2554k

comparing combine.c compilation at -O3 level:
  Ovarall memory allocated via mmap and sbrk decreased from 36684k to 33128k, overall -10.73%
    Overall memory needed: 36684k -> 33128k
    Peak memory use before GGC: 15924k
    Peak memory use after GGC: 15720k
    Maximum of released memory in single GGC run: 1818k
    Garbage: 76737k
    Leak: 5676k
    Overhead: 10029k
    GGC runs: 508
    Pre-IPA-Garbage: 13632k
    Pre-IPA-Leak: 16963k
    Pre-IPA-Overhead: 2555k
    Post-IPA-Garbage: 13632k
    Post-IPA-Leak: 16963k
    Post-IPA-Overhead: 2555k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 158228k
    Peak memory use before GGC: 65873k
    Peak memory use after GGC: 53242k
    Maximum of released memory in single GGC run: 28569k
    Garbage: 134335k
    Leak: 7489k
    Overhead: 16157k
    GGC runs: 265
    Pre-IPA-Garbage: 39228k
    Pre-IPA-Leak: 55907k
    Pre-IPA-Overhead: 8653k
    Post-IPA-Garbage: 39228k
    Post-IPA-Leak: 55907k
    Post-IPA-Overhead: 8653k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 159532k
    Peak memory use before GGC: 67147k
    Peak memory use after GGC: 54514k
    Maximum of released memory in single GGC run: 28569k
    Garbage: 134814k
    Leak: 9140k
    Overhead: 16613k
    GGC runs: 258
    Pre-IPA-Garbage: 39285k
    Pre-IPA-Leak: 57449k
    Pre-IPA-Overhead: 8988k
    Post-IPA-Garbage: 39285k
    Post-IPA-Leak: 57449k
    Post-IPA-Overhead: 8988k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134892k
    Peak memory use before GGC: 50247k
    Peak memory use after GGC: 43080k
    Maximum of released memory in single GGC run: 23393k
    Garbage: 184506k
    Leak: 6871k
    Overhead: 25327k
    GGC runs: 305
    Pre-IPA-Garbage: 45205k
    Pre-IPA-Leak: 43436k
    Pre-IPA-Overhead: 8052k
    Post-IPA-Garbage: 45205k
    Post-IPA-Leak: 43436k
    Post-IPA-Overhead: 8052k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 150260k
    Peak memory use before GGC: 50279k
    Peak memory use after GGC: 43994k
    Maximum of released memory in single GGC run: 22010k
    Garbage: 216414k
    Leak: 6879k
    Overhead: 31033k
    GGC runs: 340
    Pre-IPA-Garbage: 45283k
    Pre-IPA-Leak: 43441k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 45283k
    Post-IPA-Leak: 43441k
    Post-IPA-Overhead: 8061k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 162584k
    Peak memory use before GGC: 61578k
    Peak memory use after GGC: 58454k
    Maximum of released memory in single GGC run: 24308k
    Garbage: 246737k
    Leak: 6886k
    Overhead: 34484k
    GGC runs: 343
    Pre-IPA-Garbage: 45283k
    Pre-IPA-Leak: 43441k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 45283k
    Post-IPA-Leak: 43441k
    Post-IPA-Overhead: 8061k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 150448k -> 150435k
    Peak memory use before GGC: 82283k
    Peak memory use after GGC: 81468k
    Maximum of released memory in single GGC run: 16450k
    Garbage: 212604k
    Leak: 49791k
    Overhead: 27190k
    GGC runs: 424
    Pre-IPA-Garbage: 114063k
    Pre-IPA-Leak: 87272k
    Pre-IPA-Overhead: 14907k
    Post-IPA-Garbage: 114063k
    Post-IPA-Leak: 87272k
    Post-IPA-Overhead: 14907k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 167976k -> 168003k
    Peak memory use before GGC: 95772k
    Peak memory use after GGC: 94820k
    Maximum of released memory in single GGC run: 16877k
    Garbage: 218255k
    Leak: 76354k
    Overhead: 33854k
    GGC runs: 394
    Pre-IPA-Garbage: 114685k
    Pre-IPA-Leak: 103786k
    Pre-IPA-Overhead: 18410k
    Post-IPA-Garbage: 114685k
    Post-IPA-Leak: 103786k
    Post-IPA-Overhead: 18410k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 112088k -> 112087k
    Peak memory use before GGC: 82328k -> 82329k
    Peak memory use after GGC: 81502k -> 81503k
    Maximum of released memory in single GGC run: 16685k
    Garbage: 291436k -> 291411k
    Leak: 46577k -> 46585k
    Overhead: 32515k -> 32515k
    GGC runs: 516
    Pre-IPA-Garbage: 167245k -> 167245k
    Pre-IPA-Leak: 86055k -> 86056k
    Pre-IPA-Overhead: 20408k -> 20408k
    Post-IPA-Garbage: 167245k -> 167245k
    Post-IPA-Leak: 86055k -> 86056k
    Post-IPA-Overhead: 20408k -> 20408k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 115408k -> 115371k
    Peak memory use before GGC: 83778k
    Peak memory use after GGC: 82799k
    Maximum of released memory in single GGC run: 16656k
    Garbage: 345503k
    Leak: 46506k
    Overhead: 39162k
    GGC runs: 580
    Pre-IPA-Garbage: 171448k
    Pre-IPA-Leak: 86362k
    Pre-IPA-Overhead: 20902k
    Post-IPA-Garbage: 171448k
    Post-IPA-Leak: 86362k
    Post-IPA-Overhead: 20902k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Ovarall memory allocated via mmap and sbrk decreased from 122752k to 116951k, overall -4.96%
    Overall memory needed: 122752k -> 116951k
    Peak memory use before GGC: 84478k
    Peak memory use after GGC: 83419k
    Maximum of released memory in single GGC run: 16656k
    Garbage: 376955k
    Leak: 46507k
    Overhead: 42457k
    GGC runs: 615
    Pre-IPA-Garbage: 171534k
    Pre-IPA-Leak: 87044k
    Pre-IPA-Overhead: 20957k
    Post-IPA-Garbage: 171534k
    Post-IPA-Leak: 87044k
    Post-IPA-Overhead: 20957k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 368860k -> 368859k
    Peak memory use before GGC: 78451k
    Peak memory use after GGC: 49385k
    Maximum of released memory in single GGC run: 38763k
    Garbage: 147530k
    Leak: 6511k
    Overhead: 24890k
    GGC runs: 87
    Pre-IPA-Garbage: 13630k
    Pre-IPA-Leak: 20190k
    Pre-IPA-Overhead: 2241k
    Post-IPA-Garbage: 13630k
    Post-IPA-Leak: 20190k
    Post-IPA-Overhead: 2241k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 369636k -> 369635k
    Peak memory use before GGC: 79148k
    Peak memory use after GGC: 50082k
    Maximum of released memory in single GGC run: 38748k
    Garbage: 147631k
    Leak: 8553k
    Overhead: 25474k
    GGC runs: 93
    Pre-IPA-Garbage: 13637k
    Pre-IPA-Leak: 20439k
    Pre-IPA-Overhead: 2296k
    Post-IPA-Garbage: 13637k
    Post-IPA-Leak: 20439k
    Post-IPA-Overhead: 2296k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 227888k
    Peak memory use before GGC: 71433k
    Peak memory use after GGC: 63951k
    Maximum of released memory in single GGC run: 35392k
    Garbage: 226744k
    Leak: 7088k
    Overhead: 30781k
    GGC runs: 98
    Pre-IPA-Garbage: 51799k
    Pre-IPA-Leak: 62150k
    Pre-IPA-Overhead: 8965k
    Post-IPA-Garbage: 51799k
    Post-IPA-Leak: 62150k
    Post-IPA-Overhead: 8965k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 376120k -> 369660k
    Peak memory use before GGC: 71433k
    Peak memory use after GGC: 63952k
    Maximum of released memory in single GGC run: 36706k
    Garbage: 255087k
    Leak: 6910k
    Overhead: 36877k
    GGC runs: 109
    Pre-IPA-Garbage: 111829k
    Pre-IPA-Leak: 73071k
    Pre-IPA-Overhead: 15408k
    Post-IPA-Garbage: 111829k
    Post-IPA-Leak: 73071k
    Post-IPA-Overhead: 15408k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1024508k
    Peak memory use before GGC: 138535k
    Peak memory use after GGC: 125812k
    Maximum of released memory in single GGC run: 62503k
    Garbage: 366227k
    Leak: 9422k
    Overhead: 45446k
    GGC runs: 106
    Pre-IPA-Garbage: 111829k
    Pre-IPA-Leak: 73071k
    Pre-IPA-Overhead: 15408k
    Post-IPA-Garbage: 111829k
    Post-IPA-Leak: 73071k
    Post-IPA-Overhead: 15408k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-09-10 11:46:18.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-09-10 17:01:39.000000000 +0000
@@ -1,3 +1,41 @@
+2008-09-10  Richard Guenther  <rguenther@suse.de>
+
+	* tree-ssa-pre.c (phi_translate_1): Fix memory leak.
+
+2008-09-10  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/37432
+	* tree-inline.c (insert_init_stmt): Make sure to not
+	insert invalid gimple stores.
+
+2008-09-10  Sebastian Pop  <sebastian.pop@amd.com>
+
+	PR tree-optimization/37388
+	* toplev.c (process_options): Fail and warn when graphite
+	flags are used, but the compiler has not been configured
+	with graphite libraries.
+	* graphite.c (graphite_transform_loops): Remove printfs
+	to dump_file for the case when graphite is not available.
+
+2008-09-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/37434:
+	* config/i386/i386.c (ix86_expand_vector_init_interleave): Force
+	the even element into register.
+	(ix86_expand_vector_init_general): Don't use
+	ix86_expand_vector_init_interleave on V16QImode and V8HImode
+	if we can't move from GPR to SSE register directly.
+
+2008-09-10  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+	* config/bfin/bfin.c (workaround_speculation): Correct algorithm to
+	not lose track of the number of NOPs needed.  Number of NOPs needed
+	for sync vs. loads workaround was switched; corrected.  Run second
+	pass for all workarounds.  No NOPs needed after call insns.  Change
+	second pass to use find_next_insn_start and find_load helpers in order
+	to properly detect parallel insns.
+	* config/bfin/bfin.md (cbranch_with_nops): Increase length.
+
 2008-09-10  Jan Hubicka  <jh@suse.cz>
 
 	* value-prof.c (gimple_ic): Fix tuplification bug.
@@ -158,7 +196,7 @@
 
 2008-09-09  Andrey Belevantsev  <abel@ispras.ru>
 
-        PR rtl-optimization/37360
+	PR rtl-optimization/37360
 	* haifa-sched.c (max_issue): Do not assert that we never issue more
 	insns than issue_rate.  Add comment.
 	
@@ -302,19 +340,19 @@
 
 2008-09-07  Helge Deller  <deller@gmx.de>
 
-        * pa/linux-atomic.c: New file.
+	* pa/linux-atomic.c: New file.
 	* pa/t-linux (LIB2FUNCS_STATIC_EXTRA): Define.
 	* pa/t-linux64 (LIB2FUNCS_STATIC_EXTRA): Define.
 
 2008-09-07  Richard Guenther  <rguenther@suse.de>
-            Ira Rosen  <irar@il.ibm.com>
+	    Ira Rosen  <irar@il.ibm.com>
 
 	PR tree-optimization/36630
 	* tree-vect-transform.c (vect_update_ivs_after_vectorizer):
 	Call STRIP_NOPS before calling evolution_part_in_loop_num.
 
 2008-09-07  Dorit Nuzman  <dorit@il.ibm.com>
-            Ira Rosen  <irar@il.ibm.com>
+	    Ira Rosen  <irar@il.ibm.com>
 
 	PR tree-optimization/35642
 	* config/rs6000/altivec.md (mulv8hi3): Implement.


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]