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: 8152k -> 8153k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 130k
    Garbage: 239k
    Leak: 956k
    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: 8168k -> 8169k
    Peak memory use before GGC: 1130k
    Peak memory use after GGC: 1035k
    Maximum of released memory in single GGC run: 130k
    Garbage: 241k
    Leak: 989k
    Overhead: 85k
    GGC runs: 4
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8204k -> 8205k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 132k
    Garbage: 241k
    Leak: 957k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 959k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 959k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8224k -> 8225k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 245k
    Leak: 958k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 960k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 960k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8224k -> 8225k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 245k
    Leak: 958k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 960k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 960k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22640k -> 22641k
    Peak memory use before GGC: 7808k
    Peak memory use after GGC: 7189k
    Maximum of released memory in single GGC run: 1550k
    Garbage: 37868k
    Leak: 5517k
    Overhead: 4635k
    GGC runs: 372
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24672k -> 24669k
    Peak memory use before GGC: 9648k
    Peak memory use after GGC: 8948k
    Maximum of released memory in single GGC run: 1838k
    Garbage: 38188k
    Leak: 8383k
    Overhead: 5263k
    GGC runs: 342
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32840k -> 32841k
    Peak memory use before GGC: 16263k
    Peak memory use after GGC: 16080k
    Maximum of released memory in single GGC run: 1380k -> 1379k
    Garbage: 51562k -> 51570k
    Leak: 5656k -> 5656k
    Overhead: 5805k -> 5805k
    GGC runs: 439
    Pre-IPA-Garbage: 13925k
    Pre-IPA-Leak: 17092k
    Pre-IPA-Overhead: 2119k
    Post-IPA-Garbage: 13925k
    Post-IPA-Leak: 17092k
    Post-IPA-Overhead: 2119k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 34660k -> 34661k
    Peak memory use before GGC: 16364k
    Peak memory use after GGC: 16197k
    Maximum of released memory in single GGC run: 1316k -> 1315k
    Garbage: 70945k -> 71002k
    Leak: 5995k -> 5995k
    Overhead: 8075k -> 8078k
    GGC runs: 507
    Pre-IPA-Garbage: 14079k
    Pre-IPA-Leak: 17155k
    Pre-IPA-Overhead: 2133k
    Post-IPA-Garbage: 14079k
    Post-IPA-Leak: 17155k
    Post-IPA-Overhead: 2133k

comparing combine.c compilation at -O3 level:
    Overall memory needed: 38464k -> 38465k
    Peak memory use before GGC: 16500k
    Peak memory use after GGC: 16202k
    Maximum of released memory in single GGC run: 2010k
    Garbage: 87899k -> 87974k
    Leak: 6039k -> 6039k
    Overhead: 10011k -> 10016k
    GGC runs: 544
    Pre-IPA-Garbage: 14081k
    Pre-IPA-Leak: 17167k
    Pre-IPA-Overhead: 2134k
    Post-IPA-Garbage: 14081k
    Post-IPA-Leak: 17167k
    Post-IPA-Overhead: 2134k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137436k -> 137437k
    Peak memory use before GGC: 57004k
    Peak memory use after GGC: 31462k
    Maximum of released memory in single GGC run: 33255k
    Garbage: 128871k
    Leak: 8133k
    Overhead: 14369k
    GGC runs: 292
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138684k -> 138681k
    Peak memory use before GGC: 58147k
    Peak memory use after GGC: 32604k
    Maximum of released memory in single GGC run: 33257k
    Garbage: 128867k
    Leak: 10062k
    Overhead: 14724k
    GGC runs: 288
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142864k -> 142865k
    Peak memory use before GGC: 56224k
    Peak memory use after GGC: 49987k
    Maximum of released memory in single GGC run: 23976k
    Garbage: 205052k
    Leak: 9280k
    Overhead: 24747k
    GGC runs: 315
    Pre-IPA-Garbage: 50357k
    Pre-IPA-Leak: 49682k
    Pre-IPA-Overhead: 7543k
    Post-IPA-Garbage: 50357k
    Post-IPA-Leak: 49682k
    Post-IPA-Overhead: 7543k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184412k -> 184425k
    Peak memory use before GGC: 56855k
    Peak memory use after GGC: 51575k
    Maximum of released memory in single GGC run: 22891k
    Garbage: 245594k -> 245601k
    Leak: 10364k
    Overhead: 30386k -> 30386k
    GGC runs: 346
    Pre-IPA-Garbage: 50429k
    Pre-IPA-Leak: 49685k
    Pre-IPA-Overhead: 7551k
    Post-IPA-Garbage: 50429k
    Post-IPA-Leak: 49685k
    Post-IPA-Overhead: 7551k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190256k -> 190253k
    Peak memory use before GGC: 66401k
    Peak memory use after GGC: 62285k
    Maximum of released memory in single GGC run: 23390k -> 23391k
    Garbage: 269298k -> 269304k
    Leak: 10403k
    Overhead: 32174k -> 32174k
    GGC runs: 346
    Pre-IPA-Garbage: 50429k
    Pre-IPA-Leak: 49685k
    Pre-IPA-Overhead: 7551k
    Post-IPA-Garbage: 50429k
    Post-IPA-Leak: 49685k
    Post-IPA-Overhead: 7551k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 148733k -> 148690k
    Peak memory use before GGC: 84449k
    Peak memory use after GGC: 83613k
    Maximum of released memory in single GGC run: 16993k
    Garbage: 200804k
    Leak: 48035k
    Overhead: 23982k
    GGC runs: 417
    Pre-IPA-Garbage: 109751k
    Pre-IPA-Leak: 71096k
    Pre-IPA-Overhead: 12096k
    Post-IPA-Garbage: 109751k
    Post-IPA-Leak: 71096k
    Post-IPA-Overhead: 12096k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169317k -> 169318k
    Peak memory use before GGC: 96105k
    Peak memory use after GGC: 95153k
    Maximum of released memory in single GGC run: 17493k
    Garbage: 206431k
    Leak: 69718k
    Overhead: 28959k
    GGC runs: 390
    Pre-IPA-Garbage: 110395k
    Pre-IPA-Leak: 84377k
    Pre-IPA-Overhead: 14672k
    Post-IPA-Garbage: 110395k
    Post-IPA-Leak: 84377k
    Post-IPA-Overhead: 14672k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 122223k -> 122221k
    Peak memory use before GGC: 83951k
    Peak memory use after GGC: 83111k
    Maximum of released memory in single GGC run: 16213k
    Garbage: 288622k -> 288582k
    Leak: 47320k -> 47318k
    Overhead: 29242k -> 29237k
    GGC runs: 512
    Pre-IPA-Garbage: 154817k
    Pre-IPA-Leak: 87733k
    Pre-IPA-Overhead: 17481k
    Post-IPA-Garbage: 154817k
    Post-IPA-Leak: 87733k
    Post-IPA-Overhead: 17481k

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 354021k to 354382k, overall 0.10%
    Overall memory needed: 124743k -> 124709k
    Peak memory use before GGC: 84146k -> 84160k
    Peak memory use after GGC: 83312k
    Maximum of released memory in single GGC run: 16215k
    Garbage: 354021k -> 354382k
    Leak: 48418k -> 48410k
    Overhead: 36215k -> 36234k
    GGC runs: 584 -> 585
    Pre-IPA-Garbage: 157364k
    Pre-IPA-Leak: 87884k
    Pre-IPA-Overhead: 17762k
    Post-IPA-Garbage: 157364k
    Post-IPA-Leak: 87884k
    Post-IPA-Overhead: 17762k

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 377249k to 377957k, overall 0.19%
    Overall memory needed: 127579k -> 127549k
    Peak memory use before GGC: 85427k
    Peak memory use after GGC: 84551k
    Maximum of released memory in single GGC run: 16587k
    Garbage: 377249k -> 377957k
    Leak: 48998k -> 48993k
    Overhead: 38301k -> 38361k
    GGC runs: 608 -> 610
    Pre-IPA-Garbage: 160081k
    Pre-IPA-Leak: 88167k
    Pre-IPA-Overhead: 18011k
    Post-IPA-Garbage: 160081k
    Post-IPA-Leak: 88167k
    Post-IPA-Overhead: 18011k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380450k -> 380452k
    Peak memory use before GGC: 101215k
    Peak memory use after GGC: 56868k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178905k
    Leak: 6103k
    Overhead: 30783k
    GGC runs: 107
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381242k -> 381244k
    Peak memory use before GGC: 101845k
    Peak memory use after GGC: 57499k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 179020k
    Leak: 7833k
    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:
  Amount of produced GGC garbage increased from 234302k to 234583k, overall 0.12%
    Overall memory needed: 437136k -> 437337k
    Peak memory use before GGC: 78692k
    Peak memory use after GGC: 70441k
    Maximum of released memory in single GGC run: 37596k
    Garbage: 234302k -> 234583k
    Leak: 15907k
    Overhead: 35590k -> 35646k
    GGC runs: 106
    Pre-IPA-Garbage: 52926k
    Pre-IPA-Leak: 49237k
    Pre-IPA-Overhead: 7120k
    Post-IPA-Garbage: 52926k
    Post-IPA-Leak: 49237k
    Post-IPA-Overhead: 7120k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Amount of produced GGC garbage increased from 245093k to 245354k, overall 0.11%
    Overall memory needed: 355596k -> 358069k
    Peak memory use before GGC: 75428k
    Peak memory use after GGC: 70442k
    Maximum of released memory in single GGC run: 32242k -> 32234k
    Garbage: 245093k -> 245354k
    Leak: 16080k -> 16079k
    Overhead: 38768k -> 38822k
    GGC runs: 117
    Pre-IPA-Garbage: 91838k
    Pre-IPA-Leak: 77295k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91838k
    Post-IPA-Leak: 77295k
    Post-IPA-Overhead: 11793k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1198648k -> 1198713k
    Peak memory use before GGC: 136589k
    Peak memory use after GGC: 127947k
    Maximum of released memory in single GGC run: 59911k
    Garbage: 369974k
    Leak: 24893k
    Overhead: 49889k
    GGC runs: 104
    Pre-IPA-Garbage: 91838k
    Pre-IPA-Leak: 77295k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91838k
    Post-IPA-Leak: 77295k
    Post-IPA-Overhead: 11793k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-03-14 16:58:02.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-03-14 20:36:21.000000000 +0000
@@ -1,3 +1,20 @@
+2008-03-14  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/34172
+	* tree-flow.h (refs_may_alias_p): Declare.
+	(get_single_def_stmt): Likewise.
+	(get_single_def_stmt_from_phi): Likewise.
+	(get_single_def_stmt_with_phi): Likewise.
+	* tree-dfa.c (refs_may_alias_p): New function.
+	(get_single_def_stmt): Likewise.
+	(get_single_def_stmt_from_phi): Likewise.
+	(get_single_def_stmt_with_phi): Likewise.
+	* tree-ssa-sccvn.c (get_def_ref_stmt_vuses): New function.
+	(vn_reference_lookup_1): New helper function.
+	(vn_reference_lookup): Walk the virtual use-def chain to
+	continue searching for a match if the def does not alias the
+	reference we are looking for.
+
 2008-03-14  David Edelsohn  <edelsohn@gnu.org>
 
 	* doc/install.texi (Binaries): Remove UCLA archive.  Add HVCC


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]