A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Tue May 5 20:20:00 GMT 2009


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: 8801k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 85k
    Garbage: 218k
    Leak: 1537k
    Overhead: 187k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8825k
    Peak memory use before GGC: 1515k
    Peak memory use after GGC: 1464k
    Maximum of released memory in single GGC run: 86k
    Garbage: 219k
    Leak: 1570k
    Overhead: 192k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8929k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 87k
    Garbage: 220k
    Leak: 1537k
    Overhead: 188k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8929k -> 8925k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 92k
    Garbage: 225k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8933k -> 8925k
    Peak memory use before GGC: 1488k
    Peak memory use after GGC: 1437k
    Maximum of released memory in single GGC run: 92k
    Garbage: 225k
    Leak: 1537k
    Overhead: 189k
    GGC runs: 4
    Pre-IPA-Garbage: 210k
    Pre-IPA-Leak: 1540k
    Pre-IPA-Overhead: 186k
    Post-IPA-Garbage: 210k
    Post-IPA-Leak: 1540k
    Post-IPA-Overhead: 186k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 31457k
    Peak memory use before GGC: 17484k
    Peak memory use after GGC: 17020k
    Maximum of released memory in single GGC run: 1913k
    Garbage: 38030k -> 38030k
    Leak: 7164k
    Overhead: 5526k -> 5526k
    GGC runs: 333 -> 332
    Pre-IPA-Garbage: 12539k
    Pre-IPA-Leak: 18410k
    Pre-IPA-Overhead: 2515k
    Post-IPA-Garbage: 12539k
    Post-IPA-Leak: 18410k
    Post-IPA-Overhead: 2515k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 33397k
    Peak memory use before GGC: 19392k
    Peak memory use after GGC: 18859k
    Maximum of released memory in single GGC run: 1923k
    Garbage: 38245k
    Leak: 10450k
    Overhead: 6339k
    GGC runs: 316
    Pre-IPA-Garbage: 12558k
    Pre-IPA-Leak: 20659k
    Pre-IPA-Overhead: 2998k
    Post-IPA-Garbage: 12558k
    Post-IPA-Leak: 20659k
    Post-IPA-Overhead: 2998k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31969k -> 32005k
    Peak memory use before GGC: 16491k
    Peak memory use after GGC: 16317k
    Maximum of released memory in single GGC run: 1389k
    Garbage: 44943k
    Leak: 7164k
    Overhead: 6323k -> 6323k
    GGC runs: 382
    Pre-IPA-Garbage: 12958k
    Pre-IPA-Leak: 17629k
    Pre-IPA-Overhead: 2512k
    Post-IPA-Garbage: 12958k
    Post-IPA-Leak: 17629k
    Post-IPA-Overhead: 2512k

comparing combine.c compilation at -O2 level:
  Amount of memory still referenced at the end of compilation increased from 7179k to 7191k, overall 0.17%
    Overall memory needed: 33085k -> 33365k
    Peak memory use before GGC: 16585k
    Peak memory use after GGC: 16415k
    Maximum of released memory in single GGC run: 1489k
    Garbage: 56737k -> 56734k
    Leak: 7179k -> 7191k
    Overhead: 8197k -> 8197k
    GGC runs: 442
    Pre-IPA-Garbage: 13096k
    Pre-IPA-Leak: 17716k
    Pre-IPA-Overhead: 2528k
    Post-IPA-Garbage: 13096k
    Post-IPA-Leak: 17716k
    Post-IPA-Overhead: 2528k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 33449k -> 33613k
    Peak memory use before GGC: 16586k
    Peak memory use after GGC: 16420k
    Maximum of released memory in single GGC run: 1673k
    Garbage: 67613k
    Leak: 7227k
    Overhead: 9712k
    GGC runs: 468
    Pre-IPA-Garbage: 13096k
    Pre-IPA-Leak: 17716k
    Pre-IPA-Overhead: 2528k
    Post-IPA-Garbage: 13096k
    Post-IPA-Leak: 17716k
    Post-IPA-Overhead: 2528k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 152705k
    Peak memory use before GGC: 65608k
    Peak memory use after GGC: 52818k
    Maximum of released memory in single GGC run: 26604k
    Garbage: 129481k
    Leak: 9591k
    Overhead: 16876k
    GGC runs: 259
    Pre-IPA-Garbage: 40782k
    Pre-IPA-Leak: 51017k
    Pre-IPA-Overhead: 7764k
    Post-IPA-Garbage: 40782k
    Post-IPA-Leak: 51017k
    Post-IPA-Overhead: 7764k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 154013k
    Peak memory use before GGC: 66873k
    Peak memory use after GGC: 54081k
    Maximum of released memory in single GGC run: 26604k
    Garbage: 129818k
    Leak: 11222k
    Overhead: 17329k
    GGC runs: 253
    Pre-IPA-Garbage: 40791k
    Pre-IPA-Leak: 52542k
    Pre-IPA-Overhead: 8094k
    Post-IPA-Garbage: 40791k
    Post-IPA-Leak: 52542k
    Post-IPA-Overhead: 8094k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 137841k -> 137845k
    Peak memory use before GGC: 54138k
    Peak memory use after GGC: 43653k
    Maximum of released memory in single GGC run: 17381k
    Garbage: 178724k
    Leak: 9181k
    Overhead: 22974k
    GGC runs: 290
    Pre-IPA-Garbage: 45067k
    Pre-IPA-Leak: 45088k
    Pre-IPA-Overhead: 7589k
    Post-IPA-Garbage: 45067k
    Post-IPA-Leak: 45088k
    Post-IPA-Overhead: 7589k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 201581k
    Peak memory use before GGC: 53557k
    Peak memory use after GGC: 43378k
    Maximum of released memory in single GGC run: 18700k
    Garbage: 212037k
    Leak: 9196k
    Overhead: 29422k
    GGC runs: 324
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45095k
    Pre-IPA-Overhead: 7594k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45095k
    Post-IPA-Overhead: 7594k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 201509k -> 201501k
    Peak memory use before GGC: 53562k
    Peak memory use after GGC: 43382k
    Maximum of released memory in single GGC run: 18646k
    Garbage: 213251k
    Leak: 9203k
    Overhead: 29815k -> 29815k
    GGC runs: 330
    Pre-IPA-Garbage: 45129k
    Pre-IPA-Leak: 45095k
    Pre-IPA-Overhead: 7594k
    Post-IPA-Garbage: 45129k
    Post-IPA-Leak: 45095k
    Post-IPA-Overhead: 7594k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 145981k -> 145965k
    Peak memory use before GGC: 81663k
    Peak memory use after GGC: 80854k
    Maximum of released memory in single GGC run: 13633k
    Garbage: 197989k -> 197989k
    Leak: 55608k
    Overhead: 28464k -> 28464k
    GGC runs: 447
    Pre-IPA-Garbage: 110138k
    Pre-IPA-Leak: 84667k
    Pre-IPA-Overhead: 15210k
    Post-IPA-Garbage: 110138k
    Post-IPA-Leak: 84667k
    Post-IPA-Overhead: 15210k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 164053k -> 163893k
    Peak memory use before GGC: 95805k
    Peak memory use after GGC: 94854k
    Maximum of released memory in single GGC run: 13895k
    Garbage: 203318k -> 203319k
    Leak: 82700k
    Overhead: 35027k -> 35027k
    GGC runs: 419
    Pre-IPA-Garbage: 110724k
    Pre-IPA-Leak: 101188k
    Pre-IPA-Overhead: 18715k
    Post-IPA-Garbage: 110724k
    Post-IPA-Leak: 101188k
    Post-IPA-Overhead: 18715k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 108001k -> 108045k
    Peak memory use before GGC: 82668k
    Peak memory use after GGC: 81786k
    Maximum of released memory in single GGC run: 13451k
    Garbage: 258715k
    Leak: 52401k
    Overhead: 29710k -> 29710k
    GGC runs: 513
    Pre-IPA-Garbage: 150372k
    Pre-IPA-Leak: 87178k
    Pre-IPA-Overhead: 18330k
    Post-IPA-Garbage: 150372k
    Post-IPA-Leak: 87178k
    Post-IPA-Overhead: 18330k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 109261k -> 109129k
    Peak memory use before GGC: 82971k
    Peak memory use after GGC: 82148k
    Maximum of released memory in single GGC run: 13453k
    Garbage: 299348k
    Leak: 52487k
    Overhead: 35309k -> 35309k
    GGC runs: 567
    Pre-IPA-Garbage: 154592k
    Pre-IPA-Leak: 86244k
    Pre-IPA-Overhead: 18642k
    Post-IPA-Garbage: 154592k
    Post-IPA-Leak: 86244k
    Post-IPA-Overhead: 18642k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 109017k -> 108901k
    Peak memory use before GGC: 83377k
    Peak memory use after GGC: 82550k
    Maximum of released memory in single GGC run: 13453k
    Garbage: 317995k -> 317999k
    Leak: 52486k -> 52480k
    Overhead: 37619k -> 37620k
    GGC runs: 582
    Pre-IPA-Garbage: 154653k
    Pre-IPA-Leak: 86665k
    Pre-IPA-Overhead: 18668k
    Post-IPA-Garbage: 154653k
    Post-IPA-Leak: 86665k
    Post-IPA-Overhead: 18668k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 358877k -> 358897k
    Peak memory use before GGC: 78173k
    Peak memory use after GGC: 49107k
    Maximum of released memory in single GGC run: 37057k
    Garbage: 140058k
    Leak: 7711k
    Overhead: 25005k
    GGC runs: 86
    Pre-IPA-Garbage: 12037k
    Pre-IPA-Leak: 18627k
    Pre-IPA-Overhead: 2448k
    Post-IPA-Garbage: 12037k
    Post-IPA-Leak: 18627k
    Post-IPA-Overhead: 2448k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 358613k -> 359633k
    Peak memory use before GGC: 78856k
    Peak memory use after GGC: 49791k
    Maximum of released memory in single GGC run: 37041k
    Garbage: 140123k
    Leak: 9708k
    Overhead: 25574k
    GGC runs: 94
    Pre-IPA-Garbage: 12039k
    Pre-IPA-Leak: 18873k
    Pre-IPA-Overhead: 2501k
    Post-IPA-Garbage: 12039k
    Post-IPA-Leak: 18873k
    Post-IPA-Overhead: 2501k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 207549k -> 207281k
    Peak memory use before GGC: 71011k
    Peak memory use after GGC: 66115k
    Maximum of released memory in single GGC run: 35381k
    Garbage: 210888k
    Leak: 9405k
    Overhead: 31867k
    GGC runs: 94
    Pre-IPA-Garbage: 39202k
    Pre-IPA-Leak: 63828k
    Pre-IPA-Overhead: 7142k
    Post-IPA-Garbage: 39202k
    Post-IPA-Leak: 63828k
    Post-IPA-Overhead: 7142k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 527873k -> 528929k
    Peak memory use before GGC: 70831k
    Peak memory use after GGC: 66115k
    Maximum of released memory in single GGC run: 37550k
    Garbage: 267163k
    Leak: 9152k
    Overhead: 40049k
    GGC runs: 106
    Pre-IPA-Garbage: 89543k
    Pre-IPA-Leak: 80531k
    Pre-IPA-Overhead: 11392k
    Post-IPA-Garbage: 89543k
    Post-IPA-Leak: 80531k
    Post-IPA-Overhead: 11392k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1249781k -> 1248897k
    Peak memory use before GGC: 131401k
    Peak memory use after GGC: 123130k
    Maximum of released memory in single GGC run: 49333k
    Garbage: 342807k
    Leak: 10574k
    Overhead: 44260k
    GGC runs: 106
    Pre-IPA-Garbage: 89543k
    Pre-IPA-Leak: 80531k
    Pre-IPA-Overhead: 11392k
    Post-IPA-Garbage: 89543k
    Post-IPA-Leak: 80531k
    Post-IPA-Overhead: 11392k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog	2009-05-05 09:02:27.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/ChangeLog	2009-05-05 18:12:33.000000000 +0000
@@ -1,3 +1,31 @@
+2009-05-05  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/40022
+	* tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
+	the only vuse.
+	(phivn_valid_p): Fix tuplification error, simplify.
+	(phiprop_insert_phi): Add dumps.
+	(propagate_with_phi): Simplify.
+
+2009-05-05  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/40023
+	* builtins.c (gimplify_va_arg_expr): Properly build the
+	address.
+
+2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
+
+	* tree.h (strip_float_extensions): Remove duplicate declaration.
+      	(build_low_bits_mask, debug_fold_checksum, expand_function_end,
+      	expand_function_start, stack_protect_prologue, stack_protect_epilogue,
+      	block_ultimate_origin): Rearrange the declarations line to match the
+      	comment that indicates the .c file which the functions are defined.
+      	(dwarf2out_*, set_decl_rtl): Add comment.
+      	(get_base_address): Adjust comment.
+      	(change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
+      	declarations line and add comment.
+      	(is_builtin_name): Add blank after function name, for clarity.
+
 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
 
 	* attribs.c (decl_attributes): Use %qE for identifiers in
--- /usr/src/SpecTests/sandbox-haydn-memory/x86_64/mem-result/ChangeLog.cp	2009-05-05 09:02:26.000000000 +0000
+++ /usr/src/SpecTests/sandbox-haydn-memory/gcc/gcc/cp/ChangeLog	2009-05-05 18:12:33.000000000 +0000
@@ -1,3 +1,12 @@
+2009-05-05  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* typeck.c (cp_build_compound_expr): Require RHS to have a known
+	type.
+	* class.c (resolve_address_of_overloaded_function): Use
+	OVL_CURRENT for error message.
+	(instantiate_type): Forbid COMPOUND_EXPRs and remove code dealing
+	with them.  Do not copy the node.
+
 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/40013


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