A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Wed Dec 12 19:20:00 GMT 2007


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: 6632k
    Peak memory use before GGC: 1095k
    Peak memory use after GGC: 993k
    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: 6648k
    Peak memory use before GGC: 1122k
    Peak memory use after GGC: 1020k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 983k
    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: 6692k
    Peak memory use before GGC: 1095k
    Peak memory use after GGC: 993k
    Maximum of released memory in single GGC run: 131k
    Garbage: 239k
    Leak: 951k
    Overhead: 80k
    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: 6712k
    Peak memory use before GGC: 1095k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 242k
    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 -O3 level:
    Overall memory needed: 6712k
    Peak memory use before GGC: 1095k
    Peak memory use after GGC: 994k
    Maximum of released memory in single GGC run: 134k
    Garbage: 242k
    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 combine.c compilation at -O0 level:
    Overall memory needed: 21176k
    Peak memory use before GGC: 7806k
    Peak memory use after GGC: 7185k
    Maximum of released memory in single GGC run: 1550k
    Garbage: 37872k -> 37872k
    Leak: 5512k
    Overhead: 4577k -> 4577k
    GGC runs: 371
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 23180k
    Peak memory use before GGC: 9647k -> 9645k
    Peak memory use after GGC: 8953k
    Maximum of released memory in single GGC run: 1838k
    Garbage: 38233k -> 38235k
    Leak: 8317k
    Overhead: 5204k -> 5204k
    GGC runs: 342
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 31680k -> 31628k
    Peak memory use before GGC: 16359k -> 16344k
    Peak memory use after GGC: 16190k -> 16160k
    Maximum of released memory in single GGC run: 1367k
    Garbage: 51670k -> 51683k
    Leak: 5659k -> 5659k
    Overhead: 5719k -> 5720k
    GGC runs: 442 -> 443
    Pre-IPA-Garbage: 13922k -> 13922k
    Pre-IPA-Leak: 17125k -> 17126k
    Pre-IPA-Overhead: 2069k -> 2069k
    Post-IPA-Garbage: 13922k -> 13922k
    Post-IPA-Leak: 17125k -> 17126k
    Post-IPA-Overhead: 2069k -> 2069k

comparing combine.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 33564k to 34528k, overall 2.87%
    Overall memory needed: 33564k -> 34528k
    Peak memory use before GGC: 16445k
    Peak memory use after GGC: 16278k -> 16279k
    Maximum of released memory in single GGC run: 1316k
    Garbage: 71696k -> 71700k
    Leak: 5989k -> 5985k
    Overhead: 8064k -> 8064k
    GGC runs: 511 -> 512
    Pre-IPA-Garbage: 14079k -> 14079k
    Pre-IPA-Leak: 17189k -> 17190k
    Pre-IPA-Overhead: 2082k -> 2082k
    Post-IPA-Garbage: 14079k -> 14079k
    Post-IPA-Leak: 17189k -> 17190k
    Post-IPA-Overhead: 2082k -> 2082k

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 6097k to 6109k, overall 0.20%
    Overall memory needed: 37884k -> 37864k
    Peak memory use before GGC: 16668k -> 16580k
    Peak memory use after GGC: 16388k -> 16300k
    Maximum of released memory in single GGC run: 2119k -> 2120k
    Garbage: 93655k -> 93662k
    Leak: 6097k -> 6109k
    Overhead: 10663k -> 10663k
    GGC runs: 547 -> 546
    Pre-IPA-Garbage: 14084k -> 14085k
    Pre-IPA-Leak: 17209k -> 17210k
    Pre-IPA-Overhead: 2085k -> 2085k
    Post-IPA-Garbage: 14084k -> 14085k
    Post-IPA-Leak: 17209k -> 17210k
    Post-IPA-Overhead: 2085k -> 2085k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 135920k
    Peak memory use before GGC: 56998k
    Peak memory use after GGC: 31455k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128179k
    Leak: 8380k
    Overhead: 13927k
    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: 137176k
    Peak memory use before GGC: 58140k
    Peak memory use after GGC: 32597k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128410k
    Leak: 10040k
    Overhead: 14283k
    GGC runs: 289
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 143184k
    Peak memory use before GGC: 56210k
    Peak memory use after GGC: 49982k
    Maximum of released memory in single GGC run: 23977k
    Garbage: 206550k
    Leak: 9274k
    Overhead: 23998k
    GGC runs: 315
    Pre-IPA-Garbage: 50355k
    Pre-IPA-Leak: 49319k
    Pre-IPA-Overhead: 7133k
    Post-IPA-Garbage: 50355k
    Post-IPA-Leak: 49319k
    Post-IPA-Overhead: 7133k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 186588k
    Peak memory use before GGC: 56852k
    Peak memory use after GGC: 51572k
    Maximum of released memory in single GGC run: 22735k
    Garbage: 248134k
    Leak: 10361k
    Overhead: 29756k
    GGC runs: 347
    Pre-IPA-Garbage: 50426k
    Pre-IPA-Leak: 49323k
    Pre-IPA-Overhead: 7140k
    Post-IPA-Garbage: 50426k
    Post-IPA-Leak: 49323k
    Post-IPA-Overhead: 7140k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190944k
    Peak memory use before GGC: 68526k
    Peak memory use after GGC: 62279k
    Maximum of released memory in single GGC run: 23235k
    Garbage: 276085k
    Leak: 10399k
    Overhead: 31632k
    GGC runs: 349
    Pre-IPA-Garbage: 50426k
    Pre-IPA-Leak: 49323k
    Pre-IPA-Overhead: 7140k
    Post-IPA-Garbage: 50426k
    Post-IPA-Leak: 49323k
    Post-IPA-Overhead: 7140k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 147442k -> 147446k
    Peak memory use before GGC: 84523k
    Peak memory use after GGC: 83686k
    Maximum of released memory in single GGC run: 16844k
    Garbage: 202407k
    Leak: 48152k
    Overhead: 23847k
    GGC runs: 420
    Pre-IPA-Garbage: 111123k
    Pre-IPA-Leak: 71212k
    Pre-IPA-Overhead: 12089k
    Post-IPA-Garbage: 111123k
    Post-IPA-Leak: 71212k
    Post-IPA-Overhead: 12089k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 168258k
    Peak memory use before GGC: 96488k
    Peak memory use after GGC: 95531k
    Maximum of released memory in single GGC run: 17652k
    Garbage: 207935k
    Leak: 69765k
    Overhead: 28833k
    GGC runs: 392
    Pre-IPA-Garbage: 111767k
    Pre-IPA-Leak: 84492k
    Pre-IPA-Overhead: 14665k
    Post-IPA-Garbage: 111767k
    Post-IPA-Leak: 84492k
    Post-IPA-Overhead: 14665k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 122027k
    Peak memory use before GGC: 84497k
    Peak memory use after GGC: 83659k
    Maximum of released memory in single GGC run: 16328k
    Garbage: 294285k
    Leak: 47403k
    Overhead: 29140k
    GGC runs: 521
    Pre-IPA-Garbage: 156483k
    Pre-IPA-Leak: 88226k
    Pre-IPA-Overhead: 17299k
    Post-IPA-Garbage: 156483k
    Post-IPA-Leak: 88226k
    Post-IPA-Overhead: 17299k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 125015k
    Peak memory use before GGC: 84722k
    Peak memory use after GGC: 83877k
    Maximum of released memory in single GGC run: 16327k
    Garbage: 366261k
    Leak: 48339k
    Overhead: 36614k
    GGC runs: 599
    Pre-IPA-Garbage: 159741k
    Pre-IPA-Leak: 88354k
    Pre-IPA-Overhead: 17629k
    Post-IPA-Garbage: 159741k
    Post-IPA-Leak: 88354k
    Post-IPA-Overhead: 17629k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 129847k
    Peak memory use before GGC: 85929k
    Peak memory use after GGC: 85071k
    Maximum of released memory in single GGC run: 16721k
    Garbage: 397016k
    Leak: 48866k
    Overhead: 39213k
    GGC runs: 626
    Pre-IPA-Garbage: 162532k
    Pre-IPA-Leak: 88634k
    Pre-IPA-Overhead: 17876k
    Post-IPA-Garbage: 162532k
    Post-IPA-Leak: 88634k
    Post-IPA-Overhead: 17876k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 378596k
    Peak memory use before GGC: 101208k
    Peak memory use after GGC: 56862k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 178902k
    Leak: 6097k
    Overhead: 30781k
    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: 379392k
    Peak memory use before GGC: 101839k
    Peak memory use after GGC: 57492k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 179007k
    Leak: 7799k
    Overhead: 31213k
    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: 437740k
    Peak memory use before GGC: 78857k
    Peak memory use after GGC: 70436k
    Maximum of released memory in single GGC run: 37753k
    Garbage: 235356k
    Leak: 16073k
    Overhead: 35563k
    GGC runs: 105
    Pre-IPA-Garbage: 52924k
    Pre-IPA-Leak: 49244k
    Pre-IPA-Overhead: 7011k
    Post-IPA-Garbage: 52924k
    Post-IPA-Leak: 49244k
    Post-IPA-Overhead: 7011k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 358192k
    Peak memory use before GGC: 75422k
    Peak memory use after GGC: 70436k
    Maximum of released memory in single GGC run: 32245k
    Garbage: 246837k
    Leak: 16245k
    Overhead: 38881k
    GGC runs: 116
    Pre-IPA-Garbage: 91835k
    Pre-IPA-Leak: 77069k
    Pre-IPA-Overhead: 11353k
    Post-IPA-Garbage: 91835k
    Post-IPA-Leak: 77069k
    Post-IPA-Overhead: 11353k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1312616k
    Peak memory use before GGC: 136584k
    Peak memory use after GGC: 127941k
    Maximum of released memory in single GGC run: 59911k
    Garbage: 371407k
    Leak: 24376k
    Overhead: 48461k
    GGC runs: 103
    Pre-IPA-Garbage: 91835k
    Pre-IPA-Leak: 77069k
    Pre-IPA-Overhead: 11353k
    Post-IPA-Garbage: 91835k
    Post-IPA-Leak: 77069k
    Post-IPA-Overhead: 11353k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-12-12 09:37:34.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-12-12 14:42:20.000000000 +0000
@@ -1,3 +1,10 @@
+2007-12-12  Aldy Hernandez  <aldyh@redhat.com>
+
+	PR tree-optimization/32901
+	* gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
+	are assigning from a constant constructor.
+	Fix wrapping in function comment.
+
 2007-12-12  Andreas Krebbel  <krebbel1@de.ibm.com>
 
 	* config/s390/s390.c (s390_O_constraint_str): Limit the range


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