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: 7385k -> 7381k
    Peak memory use before GGC: 2260k
    Peak memory use after GGC: 1949k
    Maximum of released memory in single GGC run: 311k
    Garbage: 446k
    Leak: 2283k
    Overhead: 456k
    GGC runs: 3

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 7401k
    Peak memory use before GGC: 2288k
    Peak memory use after GGC: 1977k
    Maximum of released memory in single GGC run: 311k
    Garbage: 449k
    Leak: 2316k
    Overhead: 461k
    GGC runs: 3

comparing empty function compilation at -O1 level:
    Overall memory needed: 7509k
    Peak memory use before GGC: 2260k
    Peak memory use after GGC: 1949k
    Maximum of released memory in single GGC run: 311k
    Garbage: 452k
    Leak: 2286k
    Overhead: 457k
    GGC runs: 4

comparing empty function compilation at -O2 level:
    Overall memory needed: 7577k -> 7517k
    Peak memory use before GGC: 2261k
    Peak memory use after GGC: 1950k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k
    Leak: 2286k
    Overhead: 457k
    GGC runs: 4

comparing empty function compilation at -O3 level:
    Overall memory needed: 7577k -> 7517k
    Peak memory use before GGC: 2261k
    Peak memory use after GGC: 1950k
    Maximum of released memory in single GGC run: 311k
    Garbage: 455k
    Leak: 2286k
    Overhead: 457k
    GGC runs: 4

comparing combine.c compilation at -O0 level:
    Overall memory needed: 17725k -> 17721k
    Peak memory use before GGC: 9262k
    Peak memory use after GGC: 8849k
    Maximum of released memory in single GGC run: 2578k
    Garbage: 37152k
    Leak: 6578k
    Overhead: 5053k
    GGC runs: 282

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 19861k
    Peak memory use before GGC: 10877k
    Peak memory use after GGC: 10509k
    Maximum of released memory in single GGC run: 2351k
    Garbage: 37718k
    Leak: 9471k
    Overhead: 5759k
    GGC runs: 269

comparing combine.c compilation at -O1 level:
    Overall memory needed: 35257k -> 35261k
    Peak memory use before GGC: 19331k
    Peak memory use after GGC: 19125k
    Maximum of released memory in single GGC run: 2177k
    Garbage: 56861k
    Leak: 6607k
    Overhead: 6313k
    GGC runs: 353

comparing combine.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 68421k to 69274k, overall 1.25%
    Overall memory needed: 37509k -> 37585k
    Peak memory use before GGC: 19371k
    Peak memory use after GGC: 19177k
    Maximum of released memory in single GGC run: 2164k -> 2170k
    Garbage: 68421k -> 69274k
    Leak: 6735k -> 6739k
    Overhead: 8049k -> 8155k
    GGC runs: 407 -> 406

comparing combine.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 19525k to 19559k, overall 0.17%
  Amount of produced GGC garbage increased from 88297k to 90724k, overall 2.75%
    Overall memory needed: 41873k -> 42681k
    Peak memory use before GGC: 19525k -> 19559k
    Peak memory use after GGC: 19263k
    Maximum of released memory in single GGC run: 3035k -> 3644k
    Garbage: 88297k -> 90724k
    Leak: 6837k -> 6841k
    Overhead: 10831k -> 11158k
    GGC runs: 430 -> 429

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 102969k
    Peak memory use before GGC: 68624k
    Peak memory use after GGC: 44728k
    Maximum of released memory in single GGC run: 36429k
    Garbage: 131233k
    Leak: 9581k
    Overhead: 16927k
    GGC runs: 212

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 104201k
    Peak memory use before GGC: 69786k
    Peak memory use after GGC: 45996k
    Maximum of released memory in single GGC run: 36430k
    Garbage: 132452k
    Leak: 11289k
    Overhead: 17324k
    GGC runs: 209

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 145577k -> 147585k
    Peak memory use before GGC: 85946k
    Peak memory use after GGC: 80068k
    Maximum of released memory in single GGC run: 32842k
    Garbage: 265258k
    Leak: 9401k
    Overhead: 27688k
    GGC runs: 227

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 193413k -> 193409k
    Peak memory use before GGC: 87233k
    Peak memory use after GGC: 80138k
    Maximum of released memory in single GGC run: 30051k
    Garbage: 301440k -> 301513k
    Leak: 9399k
    Overhead: 33331k -> 33341k
    GGC runs: 248

comparing insn-attrtab.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 189605k to 193469k, overall 2.04%
    Overall memory needed: 189605k -> 193469k
    Peak memory use before GGC: 87247k
    Peak memory use after GGC: 80152k
    Maximum of released memory in single GGC run: 30112k
    Garbage: 302087k -> 302169k
    Leak: 9404k
    Overhead: 33530k -> 33541k
    GGC runs: 247

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 147352k -> 147372k
    Peak memory use before GGC: 90241k
    Peak memory use after GGC: 89347k
    Maximum of released memory in single GGC run: 17774k
    Garbage: 208227k
    Leak: 49207k
    Overhead: 23914k
    GGC runs: 411

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 165192k -> 165172k
    Peak memory use before GGC: 102847k
    Peak memory use after GGC: 101829k
    Maximum of released memory in single GGC run: 18128k
    Garbage: 214756k
    Leak: 72521k
    Overhead: 29811k
    GGC runs: 385

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 141840k -> 141828k
    Peak memory use before GGC: 101826k
    Peak memory use after GGC: 100807k
    Maximum of released memory in single GGC run: 17236k
    Garbage: 344927k
    Leak: 49939k
    Overhead: 30478k
    GGC runs: 528

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 374002k to 376382k, overall 0.64%
    Overall memory needed: 143772k -> 143708k
    Peak memory use before GGC: 102424k
    Peak memory use after GGC: 101409k
    Maximum of released memory in single GGC run: 17233k
    Garbage: 374002k -> 376382k
    Leak: 50978k -> 51029k
    Overhead: 34486k -> 34785k
    GGC runs: 564 -> 566

comparing Gerald's testcase PR8361 compilation at -O3 level:
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 244575k -> 244573k
    Peak memory use before GGC: 80960k
    Peak memory use after GGC: 58699k
    Maximum of released memory in single GGC run: 44133k
    Garbage: 144344k
    Leak: 7611k
    Overhead: 24815k
    GGC runs: 79

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 245411k -> 245409k
    Peak memory use before GGC: 81606k
    Peak memory use after GGC: 59345k
    Maximum of released memory in single GGC run: 44122k
    Garbage: 144515k
    Leak: 9378k
    Overhead: 25310k
    GGC runs: 89

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 244977k -> 245201k
    Peak memory use before GGC: 85157k
    Peak memory use after GGC: 74845k
    Maximum of released memory in single GGC run: 36137k
    Garbage: 222621k
    Leak: 20854k
    Overhead: 30548k
    GGC runs: 81

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 498565k
    Peak memory use before GGC: 79831k
    Peak memory use after GGC: 74845k
    Maximum of released memory in single GGC run: 33438k
    Garbage: 229668k -> 229668k
    Leak: 20944k
    Overhead: 32630k
    GGC runs: 91

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1215421k
    Peak memory use before GGC: 201747k
    Peak memory use after GGC: 190209k
    Maximum of released memory in single GGC run: 80686k
    Garbage: 363594k
    Leak: 46310k
    Overhead: 46513k
    GGC runs: 71

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-03-17 10:21:47.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-03-18 02:53:27.000000000 +0000
@@ -1,3 +1,45 @@
+2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
+
+	Fix PR tree-optimization/29922
+	* tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
+	(get_representative): Removed.
+	(value_dies_in_block_x): Update for rvuse removal.
+	(valid_in_sets): Update for renaming of vuses_dies_in_block_x.
+	(compute_antic_aux): Handle when PHI nodes appear in
+	non-single-successors. 
+	(dump_bitmap_of_names): Removed.
+	(compute_antic_safe): Renamed and removed rvuse calculation.
+	Calculate only antic safe.
+	(insert_into_preds_of_block): Remove assert.
+	(execute_pre): Update for renamed functions.
+	(defer_or_phi_translate_block): New function.
+	
+2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
+
+	* config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
+	config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
+	typos.
+	* doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
+	Follow spelling conventions.
+
+	* tree-data-ref.h: Remove the prototype for analyze_array.
+
+2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
+
+	PR tree-optimization/31041
+	* tree-vect-transform.c (get_initial_def_for_induction): Call
+	force_gimple_operand.
+	
+2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
+  
+  	* ipa-type-escape.c (look_for_casts) : Revert code to use
+	handled_component_p due to ada test a-numaux.adb.
+
+2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
+
+	* final.c (final_scan_insn): Alter the condition of a
+	conditional trap if we have nonstandard CC.
+
 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
 
 	* configure.ac: Remove excess quoting from asm line 0 test.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2007-03-17 10:21:47.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2007-03-18 02:53:25.000000000 +0000
@@ -1,3 +1,7 @@
+2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
+
+	* cp-tree.def, parser.c, pt.c: Fix comment typos.
+
 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
 	* cvt.c (cp_convert_and_check) : Define.


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]