A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Thu Dec 11 06:41:00 GMT 2008


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: 8207k -> 8210k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 218k
    Leak: 1221k
    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: 8451k -> 8454k
    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: 8239k -> 8238k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 221k
    Leak: 1221k
    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: 8467k -> 8466k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1221k
    Overhead: 138k
    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 -O3 level:
    Overall memory needed: 8471k -> 8470k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1221k
    Overhead: 138k
    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 combine.c compilation at -O0 level:
    Overall memory needed: 31991k -> 31994k
    Peak memory use before GGC: 18026k
    Peak memory use after GGC: 17809k
    Maximum of released memory in single GGC run: 1839k
    Garbage: 39472k
    Leak: 5816k
    Overhead: 5219k
    GGC runs: 338
    Pre-IPA-Garbage: 12410k
    Pre-IPA-Leak: 19357k
    Pre-IPA-Overhead: 2559k
    Post-IPA-Garbage: 12410k
    Post-IPA-Leak: 19357k
    Post-IPA-Overhead: 2559k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34015k -> 34018k
    Peak memory use before GGC: 20026k
    Peak memory use after GGC: 19665k
    Maximum of released memory in single GGC run: 1849k
    Garbage: 39775k
    Leak: 9106k
    Overhead: 6037k
    GGC runs: 320
    Pre-IPA-Garbage: 12509k
    Pre-IPA-Leak: 21631k
    Pre-IPA-Overhead: 3049k
    Post-IPA-Garbage: 12509k
    Post-IPA-Leak: 21631k
    Post-IPA-Overhead: 3049k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30611k -> 30614k
    Peak memory use before GGC: 15689k
    Peak memory use after GGC: 15514k
    Maximum of released memory in single GGC run: 1340k
    Garbage: 46847k
    Leak: 5780k
    Overhead: 6009k
    GGC runs: 403
    Pre-IPA-Garbage: 13151k
    Pre-IPA-Leak: 16852k
    Pre-IPA-Overhead: 2472k
    Post-IPA-Garbage: 13151k
    Post-IPA-Leak: 16852k
    Post-IPA-Overhead: 2472k

comparing combine.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 60537k to 60841k, overall 0.50%
    Overall memory needed: 31303k -> 31258k
    Peak memory use before GGC: 15831k -> 15835k
    Peak memory use after GGC: 15668k -> 15672k
    Maximum of released memory in single GGC run: 1352k -> 1353k
    Garbage: 60537k -> 60841k
    Leak: 5809k -> 5811k
    Overhead: 8012k -> 8041k
    GGC runs: 468
    Pre-IPA-Garbage: 13314k
    Pre-IPA-Leak: 16934k
    Pre-IPA-Overhead: 2492k
    Post-IPA-Garbage: 13314k
    Post-IPA-Leak: 16934k
    Post-IPA-Overhead: 2492k

comparing combine.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 72993k to 73710k, overall 0.98%
  Amount of memory still referenced at the end of compilation increased from 7137k to 7179k, overall 0.59%
    Overall memory needed: 32039k -> 31862k
    Peak memory use before GGC: 15999k -> 16004k
    Peak memory use after GGC: 15761k -> 15766k
    Maximum of released memory in single GGC run: 1630k -> 1657k
    Garbage: 72993k -> 73710k
    Leak: 7137k -> 7179k
    Overhead: 9450k -> 9529k
    GGC runs: 497
    Pre-IPA-Garbage: 13314k
    Pre-IPA-Leak: 16934k
    Pre-IPA-Overhead: 2492k
    Post-IPA-Garbage: 13314k
    Post-IPA-Leak: 16934k
    Post-IPA-Overhead: 2492k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 155451k -> 156214k
    Peak memory use before GGC: 65504k
    Peak memory use after GGC: 53919k
    Maximum of released memory in single GGC run: 27354k
    Garbage: 131299k
    Leak: 8497k
    Overhead: 15723k
    GGC runs: 264
    Pre-IPA-Garbage: 38215k
    Pre-IPA-Leak: 55487k
    Pre-IPA-Overhead: 8223k
    Post-IPA-Garbage: 38215k
    Post-IPA-Leak: 55487k
    Post-IPA-Overhead: 8223k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 156727k -> 156726k
    Peak memory use before GGC: 66777k
    Peak memory use after GGC: 55193k
    Maximum of released memory in single GGC run: 27354k
    Garbage: 131779k
    Leak: 10143k
    Overhead: 16179k
    GGC runs: 257
    Pre-IPA-Garbage: 38272k
    Pre-IPA-Leak: 57029k
    Pre-IPA-Overhead: 8558k
    Post-IPA-Garbage: 38272k
    Post-IPA-Leak: 57029k
    Post-IPA-Overhead: 8558k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 133511k -> 133510k
    Peak memory use before GGC: 50313k
    Peak memory use after GGC: 43428k
    Maximum of released memory in single GGC run: 23088k
    Garbage: 181543k
    Leak: 7873k
    Overhead: 24504k
    GGC runs: 301
    Pre-IPA-Garbage: 43193k
    Pre-IPA-Leak: 43086k
    Pre-IPA-Overhead: 7642k
    Post-IPA-Garbage: 43193k
    Post-IPA-Leak: 43086k
    Post-IPA-Overhead: 7642k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 148851k -> 148846k
    Peak memory use before GGC: 50278k
    Peak memory use after GGC: 45087k
    Maximum of released memory in single GGC run: 18101k
    Garbage: 204774k -> 204778k
    Leak: 15536k
    Overhead: 29918k -> 29919k
    GGC runs: 325
    Pre-IPA-Garbage: 43265k
    Pre-IPA-Leak: 43092k
    Pre-IPA-Overhead: 7651k
    Post-IPA-Garbage: 43265k
    Post-IPA-Leak: 43092k
    Post-IPA-Overhead: 7651k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 162747k -> 164802k
    Peak memory use before GGC: 61900k
    Peak memory use after GGC: 58800k
    Maximum of released memory in single GGC run: 24087k
    Garbage: 242638k -> 242653k
    Leak: 7899k
    Overhead: 33381k -> 33382k
    GGC runs: 335 -> 336
    Pre-IPA-Garbage: 43265k
    Pre-IPA-Leak: 43092k
    Pre-IPA-Overhead: 7651k
    Post-IPA-Garbage: 43265k
    Post-IPA-Leak: 43092k
    Post-IPA-Overhead: 7651k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 149104k -> 149092k
    Peak memory use before GGC: 81861k
    Peak memory use after GGC: 81050k
    Maximum of released memory in single GGC run: 14466k
    Garbage: 203500k
    Leak: 51679k
    Overhead: 26794k
    GGC runs: 415
    Pre-IPA-Garbage: 110428k
    Pre-IPA-Leak: 87218k
    Pre-IPA-Overhead: 14731k
    Post-IPA-Garbage: 110428k
    Post-IPA-Leak: 87218k
    Post-IPA-Overhead: 14731k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 167172k -> 167176k
    Peak memory use before GGC: 95524k
    Peak memory use after GGC: 94577k
    Maximum of released memory in single GGC run: 14899k
    Garbage: 209181k
    Leak: 78420k
    Overhead: 33467k
    GGC runs: 389
    Pre-IPA-Garbage: 111050k
    Pre-IPA-Leak: 103733k
    Pre-IPA-Overhead: 18235k
    Post-IPA-Garbage: 111050k
    Post-IPA-Leak: 103733k
    Post-IPA-Overhead: 18235k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 110155k -> 110159k
    Peak memory use before GGC: 83518k
    Peak memory use after GGC: 82675k
    Maximum of released memory in single GGC run: 14867k
    Garbage: 279583k
    Leak: 48421k
    Overhead: 31413k
    GGC runs: 502
    Pre-IPA-Garbage: 158188k
    Pre-IPA-Leak: 87362k
    Pre-IPA-Overhead: 19750k
    Post-IPA-Garbage: 158188k
    Post-IPA-Leak: 87362k
    Post-IPA-Overhead: 19750k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 335177k to 335586k, overall 0.12%
    Overall memory needed: 111411k -> 111447k
    Peak memory use before GGC: 85275k -> 85273k
    Peak memory use after GGC: 84429k
    Maximum of released memory in single GGC run: 14870k
    Garbage: 335177k -> 335586k
    Leak: 48449k -> 48465k
    Overhead: 38077k -> 38102k
    GGC runs: 574 -> 575
    Pre-IPA-Garbage: 162110k
    Pre-IPA-Leak: 87734k
    Pre-IPA-Overhead: 20224k
    Post-IPA-Garbage: 162110k
    Post-IPA-Leak: 87734k
    Post-IPA-Overhead: 20224k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 112027k -> 112067k
    Peak memory use before GGC: 85896k -> 85897k
    Peak memory use after GGC: 85042k
    Maximum of released memory in single GGC run: 14870k
    Garbage: 367533k -> 367840k
    Leak: 48452k
    Overhead: 41446k -> 41447k
    GGC runs: 605 -> 604
    Pre-IPA-Garbage: 162190k
    Pre-IPA-Leak: 88391k
    Pre-IPA-Overhead: 20276k
    Post-IPA-Garbage: 162190k
    Post-IPA-Leak: 88391k
    Post-IPA-Overhead: 20276k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 361961k -> 361964k
    Peak memory use before GGC: 78540k
    Peak memory use after GGC: 49474k
    Maximum of released memory in single GGC run: 38208k
    Garbage: 144672k
    Leak: 7110k
    Overhead: 24889k
    GGC runs: 87
    Pre-IPA-Garbage: 12561k
    Pre-IPA-Leak: 20190k
    Pre-IPA-Overhead: 2241k
    Post-IPA-Garbage: 12561k
    Post-IPA-Leak: 20190k
    Post-IPA-Overhead: 2241k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 362749k -> 362752k
    Peak memory use before GGC: 79237k
    Peak memory use after GGC: 50171k
    Maximum of released memory in single GGC run: 38192k
    Garbage: 144774k
    Leak: 9152k
    Overhead: 25473k
    GGC runs: 93
    Pre-IPA-Garbage: 12569k
    Pre-IPA-Leak: 20439k
    Pre-IPA-Overhead: 2295k
    Post-IPA-Garbage: 12569k
    Post-IPA-Leak: 20439k
    Post-IPA-Overhead: 2295k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 227395k -> 227662k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 34735k
    Garbage: 222523k
    Leak: 7551k
    Overhead: 30652k
    GGC runs: 97
    Pre-IPA-Garbage: 48348k
    Pre-IPA-Leak: 63005k
    Pre-IPA-Overhead: 8797k
    Post-IPA-Garbage: 48348k
    Post-IPA-Leak: 63005k
    Post-IPA-Overhead: 8797k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 358419k -> 358482k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 36061k -> 36073k
    Garbage: 251037k -> 251050k
    Leak: 7553k
    Overhead: 36772k -> 36773k
    GGC runs: 106
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 75901k
    Pre-IPA-Overhead: 14919k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 75901k
    Post-IPA-Overhead: 14919k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1026643k -> 1026642k
    Peak memory use before GGC: 141898k
    Peak memory use after GGC: 129175k
    Maximum of released memory in single GGC run: 62763k
    Garbage: 366863k
    Leak: 9099k
    Overhead: 45135k
    GGC runs: 103
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 75901k
    Pre-IPA-Overhead: 14919k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 75901k
    Post-IPA-Overhead: 14919k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-12-10 10:28:37.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-12-11 03:08:42.000000000 +0000
@@ -1,3 +1,34 @@
+2008-12-10  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/36792
+	* tree-ssa-pre.c (compute_avail): Handle tcc_comparison like
+	tcc_binary.
+
+2008-12-10  Daniel Berlin  <dberlin@dberlin.org>
+
+	PR tree-optimization/36792
+	* tree-ssa-pre.c (compute_avail): Don't insert defs into maximal
+	set.
+
+2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
+
+	PR target/37033
+	* dwarf2out.c (saved_do_cfi_asm): New.
+	(dwarf2out_do_frame): Take it into account.
+	(dwarf2out_d_cfi_asm): Likewise.  Set it when appropriate.
+
+2008-12-10  Alexandre Oliva  <aoliva@redhat.com>
+
+	PR middle-end/38271
+	* tree-sra.c (sra_build_bf_assignment): Avoid warnings for
+	variables initialized from SRAed bit fields.
+
+2008-12-10  Martin Guy <martinwguy@yahoo.it>
+
+	PR target/37668
+	* arm.c (arm_size_rtx_costs, case NEG): Don't fall through if the
+	result will be in an FPU register.
+
 2008-12-10  Eric Botcazou  <ebotcazou@adacore.com>
 
 	PR target/37170
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-12-10 10:28:36.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-12-11 03:08:42.000000000 +0000
@@ -1,3 +1,10 @@
+2008-12-10  Jason Merrill  <jason@redhat.com>
+
+	PR c++/35319
+	* mangle.c (write_builtin_type): Add mangling for decimal floating 
+	point and fixed point types.
+	(write_type): Pass FIXED_POINT_TYPE along.
+
 2008-12-09  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/37971


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