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: 8151k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 129k
    Garbage: 237k
    Leak: 951k
    Overhead: 80k
    GGC runs: 2
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8167k
    Peak memory use before GGC: 1123k
    Peak memory use after GGC: 1021k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 984k
    Overhead: 84k
    GGC runs: 3
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8211k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 952k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 954k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 954k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8231k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 243k
    Leak: 953k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 955k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 955k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8231k
    Peak memory use before GGC: 1096k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 243k
    Leak: 953k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 226k
    Pre-IPA-Leak: 955k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 226k
    Post-IPA-Leak: 955k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22703k
    Peak memory use before GGC: 7809k
    Peak memory use after GGC: 7186k
    Maximum of released memory in single GGC run: 1550k
    Garbage: 37949k
    Leak: 5506k
    Overhead: 4649k
    GGC runs: 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24707k
    Peak memory use before GGC: 9648k
    Peak memory use after GGC: 8954k
    Maximum of released memory in single GGC run: 1838k
    Garbage: 38291k
    Leak: 8380k
    Overhead: 5276k
    GGC runs: 342
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32939k -> 32935k
    Peak memory use before GGC: 16345k
    Peak memory use after GGC: 16161k
    Maximum of released memory in single GGC run: 1362k -> 1361k
    Garbage: 51444k -> 51447k
    Leak: 5660k -> 5659k
    Overhead: 5778k -> 5778k
    GGC runs: 443
    Pre-IPA-Garbage: 13921k
    Pre-IPA-Leak: 17182k
    Pre-IPA-Overhead: 2129k
    Post-IPA-Garbage: 13921k
    Post-IPA-Leak: 17182k
    Post-IPA-Overhead: 2129k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 35775k -> 35779k
    Peak memory use before GGC: 16446k
    Peak memory use after GGC: 16280k
    Maximum of released memory in single GGC run: 1316k -> 1317k
    Garbage: 71105k -> 71123k
    Leak: 5986k -> 5985k
    Overhead: 8061k -> 8062k
    GGC runs: 512
    Pre-IPA-Garbage: 14078k
    Pre-IPA-Leak: 17247k
    Pre-IPA-Overhead: 2144k
    Post-IPA-Garbage: 14078k
    Post-IPA-Leak: 17247k
    Post-IPA-Overhead: 2144k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 38607k -> 38779k
    Peak memory use before GGC: 16616k -> 16615k
    Peak memory use after GGC: 16293k
    Maximum of released memory in single GGC run: 2019k -> 2041k
    Garbage: 88749k -> 88688k
    Leak: 6047k -> 6039k
    Overhead: 10085k -> 10006k
    GGC runs: 539 -> 544
    Pre-IPA-Garbage: 14084k
    Pre-IPA-Leak: 17259k -> 17258k
    Pre-IPA-Overhead: 2145k -> 2145k
    Post-IPA-Garbage: 14084k
    Post-IPA-Leak: 17259k -> 17258k
    Post-IPA-Overhead: 2145k -> 2145k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137443k -> 137439k
    Peak memory use before GGC: 56999k
    Peak memory use after GGC: 31456k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128624k
    Leak: 8382k
    Overhead: 14368k
    GGC runs: 293
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138695k -> 138699k
    Peak memory use before GGC: 58141k
    Peak memory use after GGC: 32598k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128862k
    Leak: 10057k
    Overhead: 14724k
    GGC runs: 289
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 143011k -> 143007k
    Peak memory use before GGC: 56219k
    Peak memory use after GGC: 49983k
    Maximum of released memory in single GGC run: 23976k -> 23977k
    Garbage: 206435k -> 206437k
    Leak: 9275k
    Overhead: 24742k -> 24742k
    GGC runs: 315
    Pre-IPA-Garbage: 50355k
    Pre-IPA-Leak: 49676k
    Pre-IPA-Overhead: 7543k
    Post-IPA-Garbage: 50355k
    Post-IPA-Leak: 49676k
    Post-IPA-Overhead: 7543k

comparing insn-attrtab.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 246622k to 247263k, overall 0.26%
    Overall memory needed: 184487k -> 184551k
    Peak memory use before GGC: 56853k
    Peak memory use after GGC: 51573k
    Maximum of released memory in single GGC run: 22363k -> 22909k
    Garbage: 246622k -> 247263k
    Leak: 10362k
    Overhead: 30341k -> 30401k
    GGC runs: 346
    Pre-IPA-Garbage: 50427k
    Pre-IPA-Leak: 49680k
    Pre-IPA-Overhead: 7550k
    Post-IPA-Garbage: 50427k
    Post-IPA-Leak: 49680k
    Post-IPA-Overhead: 7550k

comparing insn-attrtab.c compilation at -O3 level:
  Amount of produced GGC garbage increased from 274485k to 275126k, overall 0.23%
    Overall memory needed: 190715k
    Peak memory use before GGC: 68036k
    Peak memory use after GGC: 62280k
    Maximum of released memory in single GGC run: 22863k -> 23409k
    Garbage: 274485k -> 275126k
    Leak: 10399k
    Overhead: 32130k -> 32190k
    GGC runs: 348
    Pre-IPA-Garbage: 50427k
    Pre-IPA-Leak: 49680k
    Pre-IPA-Overhead: 7550k
    Post-IPA-Garbage: 50427k
    Post-IPA-Leak: 49680k
    Post-IPA-Overhead: 7550k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 148816k
    Peak memory use before GGC: 84543k
    Peak memory use after GGC: 83706k
    Maximum of released memory in single GGC run: 17034k
    Garbage: 200451k
    Leak: 48022k
    Overhead: 23992k
    GGC runs: 416
    Pre-IPA-Garbage: 109324k
    Pre-IPA-Leak: 71150k
    Pre-IPA-Overhead: 12099k
    Post-IPA-Garbage: 109324k
    Post-IPA-Leak: 71150k
    Post-IPA-Overhead: 12099k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169708k
    Peak memory use before GGC: 96211k
    Peak memory use after GGC: 95246k
    Maximum of released memory in single GGC run: 17546k
    Garbage: 206097k
    Leak: 69705k
    Overhead: 28969k
    GGC runs: 389
    Pre-IPA-Garbage: 109968k
    Pre-IPA-Leak: 84430k
    Pre-IPA-Overhead: 14675k
    Post-IPA-Garbage: 109968k
    Post-IPA-Leak: 84430k
    Post-IPA-Overhead: 14675k

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Amount of memory still referenced at the end of compilation increased from 47308k to 47430k, overall 0.26%
    Overall memory needed: 122487k -> 122775k
    Peak memory use before GGC: 84153k -> 84150k
    Peak memory use after GGC: 83319k -> 83316k
    Maximum of released memory in single GGC run: 16219k
    Garbage: 290186k -> 289653k
    Leak: 47308k -> 47430k
    Overhead: 29357k -> 29318k
    GGC runs: 517 -> 514
    Pre-IPA-Garbage: 154543k -> 154543k
    Pre-IPA-Leak: 87950k -> 87946k
    Pre-IPA-Overhead: 17503k -> 17503k
    Post-IPA-Garbage: 154543k -> 154543k
    Post-IPA-Leak: 87950k -> 87946k
    Post-IPA-Overhead: 17503k -> 17503k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 48285k to 48439k, overall 0.32%
    Overall memory needed: 124723k -> 124623k
    Peak memory use before GGC: 84378k
    Peak memory use after GGC: 83498k -> 83499k
    Maximum of released memory in single GGC run: 16221k
    Garbage: 355723k -> 355003k
    Leak: 48285k -> 48439k
    Overhead: 36262k -> 36193k
    GGC runs: 590 -> 591
    Pre-IPA-Garbage: 157189k
    Pre-IPA-Leak: 88095k -> 88095k
    Pre-IPA-Overhead: 17796k -> 17796k
    Post-IPA-Garbage: 157189k
    Post-IPA-Leak: 88095k -> 88095k
    Post-IPA-Overhead: 17796k -> 17796k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 127715k -> 127863k
    Peak memory use before GGC: 85608k -> 85613k
    Peak memory use after GGC: 84748k -> 84749k
    Maximum of released memory in single GGC run: 16599k
    Garbage: 381688k -> 380821k
    Leak: 48869k -> 48883k
    Overhead: 38452k -> 38393k
    GGC runs: 611 -> 610
    Pre-IPA-Garbage: 159924k
    Pre-IPA-Leak: 88378k -> 88378k
    Pre-IPA-Overhead: 18046k -> 18046k
    Post-IPA-Garbage: 159924k
    Post-IPA-Leak: 88378k -> 88378k
    Post-IPA-Overhead: 18046k -> 18046k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380435k
    Peak memory use before GGC: 101209k
    Peak memory use after GGC: 56862k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178951k
    Leak: 6098k
    Overhead: 30783k
    GGC runs: 106
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381235k
    Peak memory use before GGC: 101839k
    Peak memory use after GGC: 57493k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 179066k
    Leak: 7828k
    Overhead: 31215k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 437931k -> 437991k
    Peak memory use before GGC: 78685k
    Peak memory use after GGC: 70436k
    Maximum of released memory in single GGC run: 37594k
    Garbage: 234296k -> 234296k
    Leak: 15902k
    Overhead: 35589k
    GGC runs: 105
    Pre-IPA-Garbage: 52924k
    Pre-IPA-Leak: 49232k
    Pre-IPA-Overhead: 7120k
    Post-IPA-Garbage: 52924k
    Post-IPA-Leak: 49232k
    Post-IPA-Overhead: 7120k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 358371k -> 357903k
    Peak memory use before GGC: 75423k
    Peak memory use after GGC: 70437k
    Maximum of released memory in single GGC run: 32242k
    Garbage: 245002k -> 245002k
    Leak: 16074k
    Overhead: 38757k
    GGC runs: 116
    Pre-IPA-Garbage: 91836k
    Pre-IPA-Leak: 77290k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91836k
    Post-IPA-Leak: 77290k
    Post-IPA-Overhead: 11793k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1197859k -> 1196659k
    Peak memory use before GGC: 136584k
    Peak memory use after GGC: 127942k
    Maximum of released memory in single GGC run: 59911k
    Garbage: 371518k
    Leak: 24376k
    Overhead: 49888k
    GGC runs: 103
    Pre-IPA-Garbage: 91836k
    Pre-IPA-Leak: 77290k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91836k
    Post-IPA-Leak: 77290k
    Post-IPA-Overhead: 11793k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-02-21 16:04:56.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-02-22 07:59:48.000000000 +0000
@@ -1,3 +1,39 @@
+2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	PR c/19999
+	* c-typeck.c (build_binary_op): Warn about floating point
+	comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
+2008-02-21  Janis Johnson  <janis187@us.ibm.com>
+
+	PR target/34526
+	* config/rs6000/rs6000.c (rs6000_altivec_abi): Clarify comment.
+	(rs6000_explicit_options): Split abi into spe_abi and altivec_abi,
+	add vrsave.
+	(rs6000_override_options): Set altivec_abi as default, not override,
+	for 64-bit GNU/Linux; for 32-bit GNU/Linux default to altivec_abi for
+	TARGET_ALTIVEC; default to TARGET_ALTIVEC_VRSAVE when AltiVec ABI
+	is used; use new member spe_abi.
+	(rs6000_handle_option): Set rs6000_explicit_options.vrsave; use
+	spe_abi and altivec_abi.
+
+2008-02-22  Tomas Bily  <tbily@suse.cz>
+
+	* tree-vectorizer.c (vect_is_simple_reduction): Fix comment typo.
+
+2008-02-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	PR bootstrap/35273
+	* config.build (build_file_translate): Set to `CMD //c' only if
+	it works.
+	* Makefile.in (build_file_translate): Improve comment.
+
+2008-02-21  Jan Hubicka  <jh@suse.cz>
+
+	* predict.def (PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL,
+	PRED_TREE_OPCODE_POSITIVE, PRED_TREE_OPCODE_NONEQUAL, PRED_CALL,
+	PRED_TREE_EARLY_RETURN, PRED_NULL_RETURN): Update.
+
 2008-02-21  Michael Matz  <matz@suse.de>
 
 	PR target/35264
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-02-20 08:05:22.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-02-22 07:59:47.000000000 +0000
@@ -1,3 +1,9 @@
+2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+	PR c/19999
+	* typeck.c (build_binary_op): Warn about floating point
+	comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
 2008-02-19  Jason Merrill  <jason@redhat.com>
 
 	PR c++/34950


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]