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: 8184k -> 8183k
    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: 8428k -> 8427k
    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: 8240k -> 8239k
    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: 8452k -> 8451k
    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: 8456k -> 8455k
    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:
  Amount of produced GGC garbage increased from 39142k to 39205k, overall 0.16%
    Overall memory needed: 32064k -> 31991k
    Peak memory use before GGC: 18010k
    Peak memory use after GGC: 17797k
    Maximum of released memory in single GGC run: 1825k
    Garbage: 39142k -> 39205k
    Leak: 5800k
    Overhead: 5267k -> 5279k
    GGC runs: 337
    Pre-IPA-Garbage: 12405k
    Pre-IPA-Leak: 19411k
    Pre-IPA-Overhead: 2624k
    Post-IPA-Garbage: 12405k
    Post-IPA-Leak: 19411k
    Post-IPA-Overhead: 2624k

comparing combine.c compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 39427k to 39489k, overall 0.16%
    Overall memory needed: 34088k -> 34019k
    Peak memory use before GGC: 19916k
    Peak memory use after GGC: 19653k
    Maximum of released memory in single GGC run: 1834k
    Garbage: 39427k -> 39489k
    Leak: 9089k
    Overhead: 6084k -> 6096k
    GGC runs: 320
    Pre-IPA-Garbage: 12504k
    Pre-IPA-Leak: 21684k
    Pre-IPA-Overhead: 3114k
    Post-IPA-Garbage: 12504k
    Post-IPA-Leak: 21684k
    Post-IPA-Overhead: 3114k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30820k -> 30751k
    Peak memory use before GGC: 15674k
    Peak memory use after GGC: 15504k
    Maximum of released memory in single GGC run: 1380k
    Garbage: 46606k -> 46608k
    Leak: 5775k
    Overhead: 6087k -> 6088k
    GGC runs: 401
    Pre-IPA-Garbage: 13144k
    Pre-IPA-Leak: 16897k
    Pre-IPA-Overhead: 2532k
    Post-IPA-Garbage: 13144k
    Post-IPA-Leak: 16897k
    Post-IPA-Overhead: 2532k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31504k -> 31515k
    Peak memory use before GGC: 15818k
    Peak memory use after GGC: 15657k
    Maximum of released memory in single GGC run: 1356k
    Garbage: 60651k -> 60659k
    Leak: 5950k
    Overhead: 8146k -> 8148k
    GGC runs: 470
    Pre-IPA-Garbage: 13307k
    Pre-IPA-Leak: 16979k
    Pre-IPA-Overhead: 2553k
    Post-IPA-Garbage: 13307k
    Post-IPA-Leak: 16979k
    Post-IPA-Overhead: 2553k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 31944k -> 31939k
    Peak memory use before GGC: 15817k -> 15818k
    Peak memory use after GGC: 15658k -> 15657k
    Maximum of released memory in single GGC run: 1786k -> 1794k
    Garbage: 76157k -> 76167k
    Leak: 5822k
    Overhead: 9939k -> 9940k
    GGC runs: 506
    Pre-IPA-Garbage: 13307k
    Pre-IPA-Leak: 16979k
    Pre-IPA-Overhead: 2553k
    Post-IPA-Garbage: 13307k
    Post-IPA-Leak: 16979k
    Post-IPA-Overhead: 2553k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 157720k -> 156827k
    Peak memory use before GGC: 65230k
    Peak memory use after GGC: 53275k
    Maximum of released memory in single GGC run: 27424k
    Garbage: 130808k
    Leak: 8497k
    Overhead: 16158k
    GGC runs: 263
    Pre-IPA-Garbage: 38214k
    Pre-IPA-Leak: 55917k
    Pre-IPA-Overhead: 8653k
    Post-IPA-Garbage: 38214k
    Post-IPA-Leak: 55917k
    Post-IPA-Overhead: 8653k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 158992k -> 158099k
    Peak memory use before GGC: 66504k
    Peak memory use after GGC: 54546k
    Maximum of released memory in single GGC run: 27425k
    Garbage: 131286k
    Leak: 10147k
    Overhead: 16613k
    GGC runs: 255
    Pre-IPA-Garbage: 38271k
    Pre-IPA-Leak: 57459k
    Pre-IPA-Overhead: 8989k
    Post-IPA-Garbage: 38271k
    Post-IPA-Leak: 57459k
    Post-IPA-Overhead: 8989k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134568k -> 134827k
    Peak memory use before GGC: 50202k
    Peak memory use after GGC: 43295k
    Maximum of released memory in single GGC run: 22951k
    Garbage: 181074k
    Leak: 7875k
    Overhead: 25327k
    GGC runs: 302
    Pre-IPA-Garbage: 43191k
    Pre-IPA-Leak: 43443k
    Pre-IPA-Overhead: 8052k
    Post-IPA-Garbage: 43191k
    Post-IPA-Leak: 43443k
    Post-IPA-Overhead: 8052k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 149800k -> 149799k
    Peak memory use before GGC: 50202k -> 50205k
    Peak memory use after GGC: 44284k
    Maximum of released memory in single GGC run: 21565k -> 21469k
    Garbage: 212958k -> 212260k
    Leak: 7882k
    Overhead: 31010k -> 30905k
    GGC runs: 334 -> 333
    Pre-IPA-Garbage: 43263k
    Pre-IPA-Leak: 43449k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 43263k
    Post-IPA-Leak: 43449k
    Post-IPA-Overhead: 8061k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 164016k -> 164703k
    Peak memory use before GGC: 61826k
    Peak memory use after GGC: 58726k
    Maximum of released memory in single GGC run: 23713k -> 23616k
    Garbage: 243197k -> 242490k
    Leak: 7889k
    Overhead: 34453k -> 34347k
    GGC runs: 340 -> 339
    Pre-IPA-Garbage: 43263k
    Pre-IPA-Leak: 43449k
    Pre-IPA-Overhead: 8061k
    Post-IPA-Garbage: 43263k
    Post-IPA-Leak: 43449k
    Post-IPA-Overhead: 8061k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 151277k -> 151247k
    Peak memory use before GGC: 82965k
    Peak memory use after GGC: 82143k
    Maximum of released memory in single GGC run: 14701k
    Garbage: 205266k -> 205286k
    Leak: 52055k
    Overhead: 27261k -> 27265k
    GGC runs: 415
    Pre-IPA-Garbage: 111126k
    Pre-IPA-Leak: 88527k
    Pre-IPA-Overhead: 14978k
    Post-IPA-Garbage: 111126k
    Post-IPA-Leak: 88527k
    Post-IPA-Overhead: 14978k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169213k -> 169195k
    Peak memory use before GGC: 96592k
    Peak memory use after GGC: 95634k
    Maximum of released memory in single GGC run: 15130k
    Garbage: 210899k -> 210919k
    Leak: 78618k
    Overhead: 33924k -> 33928k
    GGC runs: 387
    Pre-IPA-Garbage: 111748k
    Pre-IPA-Leak: 105042k
    Pre-IPA-Overhead: 18481k
    Post-IPA-Garbage: 111748k
    Post-IPA-Leak: 105042k
    Post-IPA-Overhead: 18481k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 111197k -> 111191k
    Peak memory use before GGC: 84209k
    Peak memory use after GGC: 83371k
    Maximum of released memory in single GGC run: 14981k
    Garbage: 282272k -> 282272k
    Leak: 49367k
    Overhead: 32309k -> 32309k
    GGC runs: 502
    Pre-IPA-Garbage: 159782k
    Pre-IPA-Leak: 88164k
    Pre-IPA-Overhead: 20278k
    Post-IPA-Garbage: 159782k
    Post-IPA-Leak: 88164k
    Post-IPA-Overhead: 20278k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 112721k -> 112703k
    Peak memory use before GGC: 85982k
    Peak memory use after GGC: 85115k
    Maximum of released memory in single GGC run: 14965k
    Garbage: 336331k -> 336324k
    Leak: 49437k
    Overhead: 38855k -> 38852k
    GGC runs: 568
    Pre-IPA-Garbage: 163775k
    Pre-IPA-Leak: 88524k
    Pre-IPA-Overhead: 20771k
    Post-IPA-Garbage: 163775k
    Post-IPA-Leak: 88524k
    Post-IPA-Overhead: 20771k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 113717k -> 113711k
    Peak memory use before GGC: 86670k
    Peak memory use after GGC: 85729k
    Maximum of released memory in single GGC run: 14965k
    Garbage: 367627k -> 367763k
    Leak: 49424k -> 49424k
    Overhead: 42076k -> 42117k
    GGC runs: 595 -> 597
    Pre-IPA-Garbage: 163855k
    Pre-IPA-Leak: 89183k
    Pre-IPA-Overhead: 20824k
    Post-IPA-Garbage: 163855k
    Post-IPA-Leak: 89183k
    Post-IPA-Overhead: 20824k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 368356k -> 365540k
    Peak memory use before GGC: 78518k
    Peak memory use after GGC: 49452k
    Maximum of released memory in single GGC run: 38186k
    Garbage: 144651k
    Leak: 7110k
    Overhead: 24890k
    GGC runs: 87
    Pre-IPA-Garbage: 12561k
    Pre-IPA-Leak: 20191k
    Pre-IPA-Overhead: 2242k
    Post-IPA-Garbage: 12561k
    Post-IPA-Leak: 20191k
    Post-IPA-Overhead: 2242k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 369148k -> 366332k
    Peak memory use before GGC: 79215k
    Peak memory use after GGC: 50149k
    Maximum of released memory in single GGC run: 38171k
    Garbage: 144752k
    Leak: 9152k
    Overhead: 25474k
    GGC runs: 93
    Pre-IPA-Garbage: 12569k
    Pre-IPA-Leak: 20440k
    Pre-IPA-Overhead: 2296k
    Post-IPA-Garbage: 12569k
    Post-IPA-Leak: 20440k
    Post-IPA-Overhead: 2296k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 230232k to 244983k, overall 6.41%
    Overall memory needed: 230232k -> 244983k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 34721k
    Garbage: 222459k
    Leak: 7807k
    Overhead: 30741k
    GGC runs: 97
    Pre-IPA-Garbage: 48348k
    Pre-IPA-Leak: 63005k
    Pre-IPA-Overhead: 8907k
    Post-IPA-Garbage: 48348k
    Post-IPA-Leak: 63005k
    Post-IPA-Overhead: 8907k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 361152k to 372123k, overall 3.04%
    Overall memory needed: 361152k -> 372123k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 36044k
    Garbage: 250448k
    Leak: 7901k
    Overhead: 36820k
    GGC runs: 106
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 76121k
    Pre-IPA-Overhead: 15359k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 76121k
    Post-IPA-Overhead: 15359k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1026652k -> 1026651k
    Peak memory use before GGC: 141898k
    Peak memory use after GGC: 129175k
    Maximum of released memory in single GGC run: 62686k
    Garbage: 362576k
    Leak: 9383k
    Overhead: 45335k
    GGC runs: 103
    Pre-IPA-Garbage: 107058k
    Pre-IPA-Leak: 76121k
    Pre-IPA-Overhead: 15359k
    Post-IPA-Garbage: 107058k
    Post-IPA-Leak: 76121k
    Post-IPA-Overhead: 15359k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-09-25 21:50:13.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-09-26 14:30:30.000000000 +0000
@@ -1,3 +1,55 @@
+2008-09-26  Dorit Nuzman  <dorit@il.ibm.com>
+
+	PR tree-optimization/37574
+	* tree-vectorizer.c (vect_is_simple_use): Fix indentation.
+	* tree-vect-transform.c (vect_get_constant_vectors): Use vectype
+	instead of vector_type for constants. Take computation out of loop.
+	(vect_get_vec_def_for_operand): Use only vectype for constant case,
+	and use only vector_type for invariant case.
+	(get_initial_def_for_reduction): Use vectype instead of vector_type.
+
+2008-09-25  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/37645
+	* c-common.c (handle_weakref_attribute): Ignore the attribute unless
+	the decl is a VAR_DECL or FUNCTION_DECL.
+
+2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR middle-end/37535
+	* ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
+	(mark_ref_live, mark_ref_dead): Use them.
+	(def_conflicts_with_inputs_p): Remove.
+	(mark_early_clobbers): New function.
+	(process_bb_node_lives): Call preprocess_constraints and
+	mark_early_clobbers.
+
+	* doc/rtl.texi (clobber): Change how RA deals with clobbers.
+
+2008-09-25  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR middle-end/37448
+	* ira-int.h (IRA_ALLOCNO_TEMP): Rename to ALLOCNO_TEMP.
+	(ira_compress_allocno_live_ranges): New prototype.
+
+	* ira-color.c: Rename IRA_ALLOCNO_TEMP to ALLOCNO_TEMP.
+	(coalesced_allocnos_living_at_program_points): New.
+	(coalesced_allocnos_live_at_points_p,
+	set_coalesced_allocnos_live_points): New functions.
+	(coalesce_spill_slots): Rewrite.
+	
+	* ira-lives.c (remove_some_program_points_and_update_live_ranges,
+	ira_compress_allocno_live_ranges): New functions.
+
+	* ira-build.c (ira_flattening): Call
+	ira_compress_allocno_live_ranges.
+	(ira_build): Ditto.
+
+2008-09-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.md: Check cmp/branch fuse for cmp peephole
+	optimization.
+
 2008-09-25  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	* combine.c (make_compound_operation): Handle the 'E' format.
@@ -11,7 +63,7 @@
 
 2008-09-25 Sergei Dyshel <sergeid@il.ibm.com>
 
-      * matrix-reorg.c (transform_allocation_sites): Initializers 
+	* matrix-reorg.c (transform_allocation_sites): Initializers 
 	added to avoid the warning.
 
 2008-09-25  Martin Jambor  <mjambor@suse.cz>


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]