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 increased 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: 8135k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1057k
    Maximum of released memory in single GGC run: 130k
    Garbage: 242k
    Leak: 1018k
    Overhead: 91k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1018k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1018k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8151k
    Peak memory use before GGC: 1184k
    Peak memory use after GGC: 1085k
    Maximum of released memory in single GGC run: 131k
    Garbage: 244k
    Leak: 1051k
    Overhead: 96k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1018k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1018k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8231k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1057k
    Maximum of released memory in single GGC run: 130k
    Garbage: 246k
    Leak: 1018k
    Overhead: 92k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1020k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1020k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8239k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1058k
    Maximum of released memory in single GGC run: 130k
    Garbage: 251k
    Leak: 1019k
    Overhead: 93k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1021k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1021k
    Post-IPA-Overhead: 90k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8243k
    Peak memory use before GGC: 1157k
    Peak memory use after GGC: 1058k
    Maximum of released memory in single GGC run: 130k
    Garbage: 251k
    Leak: 1019k
    Overhead: 93k
    GGC runs: 3
    Pre-IPA-Garbage: 232k
    Pre-IPA-Leak: 1021k
    Pre-IPA-Overhead: 90k
    Post-IPA-Garbage: 232k
    Post-IPA-Leak: 1021k
    Post-IPA-Overhead: 90k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 27383k
    Peak memory use before GGC: 15009k
    Peak memory use after GGC: 14747k
    Maximum of released memory in single GGC run: 1787k
    Garbage: 38075k
    Leak: 5199k
    Overhead: 4666k
    GGC runs: 356
    Pre-IPA-Garbage: 12904k
    Pre-IPA-Leak: 15358k
    Pre-IPA-Overhead: 2000k
    Post-IPA-Garbage: 12904k
    Post-IPA-Leak: 15358k
    Post-IPA-Overhead: 2000k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 29591k
    Peak memory use before GGC: 16869k
    Peak memory use after GGC: 16638k
    Maximum of released memory in single GGC run: 1813k
    Garbage: 38441k
    Leak: 8480k
    Overhead: 5485k
    GGC runs: 337
    Pre-IPA-Garbage: 13004k
    Pre-IPA-Leak: 17633k
    Pre-IPA-Overhead: 2492k
    Post-IPA-Garbage: 13004k
    Post-IPA-Leak: 17633k
    Post-IPA-Overhead: 2492k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30503k
    Peak memory use before GGC: 16339k
    Peak memory use after GGC: 16174k
    Maximum of released memory in single GGC run: 1405k
    Garbage: 51496k
    Leak: 5172k
    Overhead: 5735k
    GGC runs: 433
    Pre-IPA-Garbage: 13939k
    Pre-IPA-Leak: 17190k
    Pre-IPA-Overhead: 2148k
    Post-IPA-Garbage: 13939k
    Post-IPA-Leak: 17190k
    Post-IPA-Overhead: 2148k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 32059k -> 32311k
    Peak memory use before GGC: 16432k
    Peak memory use after GGC: 16266k
    Maximum of released memory in single GGC run: 1334k
    Garbage: 71720k
    Leak: 5204k
    Overhead: 8133k
    GGC runs: 508
    Pre-IPA-Garbage: 14088k
    Pre-IPA-Leak: 17252k
    Pre-IPA-Overhead: 2160k
    Post-IPA-Garbage: 14088k
    Post-IPA-Leak: 17252k
    Post-IPA-Overhead: 2160k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 36367k
    Peak memory use before GGC: 16452k
    Peak memory use after GGC: 16279k
    Maximum of released memory in single GGC run: 2369k
    Garbage: 91193k
    Leak: 5236k
    Overhead: 10453k
    GGC runs: 538
    Pre-IPA-Garbage: 14089k
    Pre-IPA-Leak: 17264k
    Pre-IPA-Overhead: 2162k
    Post-IPA-Garbage: 14089k
    Post-IPA-Leak: 17264k
    Post-IPA-Overhead: 2162k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 141735k
    Peak memory use before GGC: 62360k
    Peak memory use after GGC: 52695k
    Maximum of released memory in single GGC run: 25737k
    Garbage: 130343k
    Leak: 7081k
    Overhead: 14386k
    GGC runs: 274
    Pre-IPA-Garbage: 43125k
    Pre-IPA-Leak: 49951k
    Pre-IPA-Overhead: 7271k
    Post-IPA-Garbage: 43125k
    Post-IPA-Leak: 49951k
    Post-IPA-Overhead: 7271k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 143063k
    Peak memory use before GGC: 63635k
    Peak memory use after GGC: 53967k
    Maximum of released memory in single GGC run: 25737k
    Garbage: 130761k
    Leak: 8733k
    Overhead: 14841k
    GGC runs: 266
    Pre-IPA-Garbage: 43182k
    Pre-IPA-Leak: 51493k
    Pre-IPA-Overhead: 7607k
    Post-IPA-Garbage: 43182k
    Post-IPA-Leak: 51493k
    Post-IPA-Overhead: 7607k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134119k
    Peak memory use before GGC: 54738k
    Peak memory use after GGC: 49016k
    Maximum of released memory in single GGC run: 23290k
    Garbage: 206726k
    Leak: 6471k
    Overhead: 24556k
    GGC runs: 314
    Pre-IPA-Garbage: 50399k
    Pre-IPA-Leak: 49465k
    Pre-IPA-Overhead: 7465k
    Post-IPA-Garbage: 50399k
    Post-IPA-Leak: 49465k
    Post-IPA-Overhead: 7465k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 180575k
    Peak memory use before GGC: 55423k
    Peak memory use after GGC: 50033k
    Maximum of released memory in single GGC run: 22130k
    Garbage: 246026k
    Leak: 6481k
    Overhead: 30234k
    GGC runs: 349
    Pre-IPA-Garbage: 50468k
    Pre-IPA-Leak: 49469k
    Pre-IPA-Overhead: 7472k
    Post-IPA-Garbage: 50468k
    Post-IPA-Leak: 49469k
    Post-IPA-Overhead: 7472k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 189067k
    Peak memory use before GGC: 66916k
    Peak memory use after GGC: 63476k
    Maximum of released memory in single GGC run: 24139k
    Garbage: 273197k
    Leak: 6489k
    Overhead: 32134k
    GGC runs: 352
    Pre-IPA-Garbage: 50468k
    Pre-IPA-Leak: 49469k
    Pre-IPA-Overhead: 7472k
    Post-IPA-Garbage: 50468k
    Post-IPA-Leak: 49469k
    Post-IPA-Overhead: 7472k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 137243k -> 137239k
    Peak memory use before GGC: 79965k
    Peak memory use after GGC: 79173k
    Maximum of released memory in single GGC run: 14878k
    Garbage: 197620k
    Leak: 47681k
    Overhead: 24300k
    GGC runs: 424
    Pre-IPA-Garbage: 107296k
    Pre-IPA-Leak: 68691k
    Pre-IPA-Overhead: 12065k
    Post-IPA-Garbage: 107296k
    Post-IPA-Leak: 68691k
    Post-IPA-Overhead: 12065k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 155463k
    Peak memory use before GGC: 94251k
    Peak memory use after GGC: 93318k
    Maximum of released memory in single GGC run: 15682k
    Garbage: 203264k
    Leak: 74276k
    Overhead: 30991k
    GGC runs: 390
    Pre-IPA-Garbage: 107939k
    Pre-IPA-Leak: 85258k
    Pre-IPA-Overhead: 15603k
    Post-IPA-Garbage: 107939k
    Post-IPA-Leak: 85258k
    Post-IPA-Overhead: 15603k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 110010k -> 110009k
    Peak memory use before GGC: 79057k
    Peak memory use after GGC: 78215k
    Maximum of released memory in single GGC run: 14458k
    Garbage: 286119k
    Leak: 44470k
    Overhead: 28457k
    GGC runs: 516
    Pre-IPA-Garbage: 149422k
    Pre-IPA-Leak: 82335k
    Pre-IPA-Overhead: 16663k
    Post-IPA-Garbage: 149422k
    Post-IPA-Leak: 82335k
    Post-IPA-Overhead: 16663k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 112562k -> 112561k
    Peak memory use before GGC: 79349k
    Peak memory use after GGC: 78562k
    Maximum of released memory in single GGC run: 14426k
    Garbage: 352093k
    Leak: 44606k
    Overhead: 35404k
    GGC runs: 597
    Pre-IPA-Garbage: 151022k
    Pre-IPA-Leak: 82198k
    Pre-IPA-Overhead: 16795k
    Post-IPA-Garbage: 151022k
    Post-IPA-Leak: 82198k
    Post-IPA-Overhead: 16795k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 114982k -> 114985k
    Peak memory use before GGC: 80344k
    Peak memory use after GGC: 79539k
    Maximum of released memory in single GGC run: 14783k
    Garbage: 379138k
    Leak: 44979k
    Overhead: 37632k
    GGC runs: 612
    Pre-IPA-Garbage: 153653k
    Pre-IPA-Leak: 82464k
    Pre-IPA-Overhead: 17038k
    Post-IPA-Garbage: 153653k
    Post-IPA-Leak: 82464k
    Post-IPA-Overhead: 17038k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 377300k
    Peak memory use before GGC: 100912k
    Peak memory use after GGC: 56565k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 178579k
    Leak: 6281k
    Overhead: 30603k
    GGC runs: 94
    Pre-IPA-Garbage: 12151k
    Pre-IPA-Leak: 16544k
    Pre-IPA-Overhead: 1718k
    Post-IPA-Garbage: 12151k
    Post-IPA-Leak: 16544k
    Post-IPA-Overhead: 1718k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 378528k
    Peak memory use before GGC: 101611k
    Peak memory use after GGC: 57264k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178697k
    Leak: 8326k
    Overhead: 31188k
    GGC runs: 103
    Pre-IPA-Garbage: 12159k
    Pre-IPA-Leak: 16793k
    Pre-IPA-Overhead: 1772k
    Post-IPA-Garbage: 12159k
    Post-IPA-Leak: 16793k
    Post-IPA-Overhead: 1772k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Amount of produced GGC garbage increased from 244892k to 247363k, overall 1.01%
    Overall memory needed: 385259k -> 385243k
    Peak memory use before GGC: 75658k
    Peak memory use after GGC: 67602k
    Maximum of released memory in single GGC run: 35733k
    Garbage: 244892k -> 247363k
    Leak: 7901k
    Overhead: 31119k -> 31264k
    GGC runs: 105
    Pre-IPA-Garbage: 49697k
    Pre-IPA-Leak: 63723k
    Pre-IPA-Overhead: 6705k
    Post-IPA-Garbage: 49697k
    Post-IPA-Leak: 63723k
    Post-IPA-Overhead: 6705k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Amount of produced GGC garbage increased from 259039k to 262746k, overall 1.43%
    Overall memory needed: 301599k -> 300819k
    Peak memory use before GGC: 75659k
    Peak memory use after GGC: 67603k
    Maximum of released memory in single GGC run: 32489k
    Garbage: 259039k -> 262746k
    Leak: 8064k
    Overhead: 34164k -> 34382k
    GGC runs: 116
    Pre-IPA-Garbage: 107693k
    Pre-IPA-Leak: 75546k
    Pre-IPA-Overhead: 10956k
    Post-IPA-Garbage: 107693k
    Post-IPA-Leak: 75546k
    Post-IPA-Overhead: 10956k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1068175k -> 1068099k
    Peak memory use before GGC: 142484k
    Peak memory use after GGC: 129140k
    Maximum of released memory in single GGC run: 59679k
    Garbage: 356529k
    Leak: 11044k
    Overhead: 38244k
    GGC runs: 101
    Pre-IPA-Garbage: 107693k
    Pre-IPA-Leak: 75546k
    Pre-IPA-Overhead: 10956k
    Post-IPA-Garbage: 107693k
    Post-IPA-Leak: 75546k
    Post-IPA-Overhead: 10956k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-07-01 11:03:09.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-07-01 15:16:38.000000000 +0000
@@ -1,4 +1,25 @@
+2008-07-01  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/36666
+	* tree-ssa-structalias.c (get_constraint_for_1): Declare.
+	(get_constraint_exp_from_ssa_var): Split into ...
+	(get_constraint_exp_for_temp): ... this ...
+	(get_constraint_for_ssa_var): ... and that.
+	Return constraint expressions for all touched sub-fields
+	if the results address is not taken.
+	(process_constraint): Remove assertion that aggregate
+	assignments do not happen at this place.
+	(get_constraint_for_component_ref): Add address_p argument.
+	Return constraint expressions for all touched sub-fields
+	if the results address is not taken.
+	(do_deref): Use get_constraint_exp_for_temp.
+	(get_constraint_for_1): Rename from ...
+	(get_constraint_for): ... this.  Add the old function as
+	wrapper.
+	(do_structure_copy): Use get_constraint_for_1.
+
 2008-07-01  Martin Jambor  <mjambor@suse.cz>
+
         * Makefile.in (tree-switch-conversion.o): Add.
         (OBJS-common): Add tree-swtch-conversion.o.
         * passes.c (init_optimization_passes): Add pass_convert_switch.
@@ -30,6 +51,7 @@
 	
 2008-06-30  Kenneth Zadeck <zadeck@naturalbridge.com>
 
+	PR rtl-optimization/34744
 	* df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New
 	macros.
        	(df_scan_free_internal): Free data structures not
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-06-30 22:13:25.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-07-01 15:16:38.000000000 +0000
@@ -1,3 +1,8 @@
+2008-07-01  Andrew Haley  <aph@redhat.com>
+
+	* decl.c (finish_constructor_body): Don't set the return value of
+	the constructor if the constructor is that of a Java type.
+
 2008-06-30  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/36662


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]