This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
A recent patch increased GCC's memory consumption!
- From: gcctest at suse dot de
- To: jh at suse dot cz, gcc-regression at gcc dot gnu dot org
- Date: Mon, 26 May 2008 18:24:09 +0000
- Subject: 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: 8153k
Peak memory use before GGC: 1143k
Peak memory use after GGC: 1047k
Maximum of released memory in single GGC run: 132k
Garbage: 245k
Leak: 1000k
Overhead: 91k
GGC runs: 4
Testing has produced no results
Testing has produced no results
comparing empty function compilation at -O0 -g level:
Overall memory needed: 8237k
Peak memory use before GGC: 1171k
Peak memory use after GGC: 1075k
Maximum of released memory in single GGC run: 134k
Garbage: 247k
Leak: 1033k
Overhead: 95k
GGC runs: 4
Testing has produced no results
Testing has produced no results
comparing empty function compilation at -O1 level:
Overall memory needed: 8229k
Peak memory use before GGC: 1143k
Peak memory use after GGC: 1039k
Maximum of released memory in single GGC run: 131k
Garbage: 248k
Leak: 1000k
Overhead: 91k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1003k
Pre-IPA-Overhead: 89k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1003k
Post-IPA-Overhead: 89k
comparing empty function compilation at -O2 level:
Overall memory needed: 8245k -> 8257k
Peak memory use before GGC: 1143k
Peak memory use after GGC: 1040k
Maximum of released memory in single GGC run: 129k
Garbage: 252k
Leak: 1001k
Overhead: 92k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1003k
Pre-IPA-Overhead: 89k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1003k
Post-IPA-Overhead: 89k
comparing empty function compilation at -O3 level:
Overall memory needed: 8245k
Peak memory use before GGC: 1143k
Peak memory use after GGC: 1040k
Maximum of released memory in single GGC run: 129k
Garbage: 252k
Leak: 1001k
Overhead: 92k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1003k
Pre-IPA-Overhead: 89k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1003k
Post-IPA-Overhead: 89k
comparing combine.c compilation at -O0 level:
Overall memory needed: 22673k
Peak memory use before GGC: 7992k
Peak memory use after GGC: 7369k
Maximum of released memory in single GGC run: 1545k
Garbage: 38078k -> 38103k
Leak: 5498k
Overhead: 4685k -> 4686k
GGC runs: 367
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 24777k
Peak memory use before GGC: 9989k
Peak memory use after GGC: 9369k
Maximum of released memory in single GGC run: 1832k
Garbage: 38444k -> 38429k
Leak: 8807k
Overhead: 5507k -> 5507k
GGC runs: 336
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O1 level:
Overall memory needed: 32705k
Peak memory use before GGC: 16368k
Peak memory use after GGC: 16203k
Maximum of released memory in single GGC run: 1415k
Garbage: 52423k -> 52428k
Leak: 5146k
Overhead: 5842k -> 5843k
GGC runs: 438
Pre-IPA-Garbage: 13941k
Pre-IPA-Leak: 17221k
Pre-IPA-Overhead: 2150k
Post-IPA-Garbage: 13941k
Post-IPA-Leak: 17221k
Post-IPA-Overhead: 2150k
comparing combine.c compilation at -O2 level:
Overall memory needed: 34437k
Peak memory use before GGC: 16467k
Peak memory use after GGC: 16296k
Maximum of released memory in single GGC run: 1344k
Garbage: 72933k -> 72937k
Leak: 5185k
Overhead: 8209k -> 8210k
GGC runs: 509
Pre-IPA-Garbage: 14093k
Pre-IPA-Leak: 17284k
Pre-IPA-Overhead: 2163k
Post-IPA-Garbage: 14093k
Post-IPA-Leak: 17284k
Post-IPA-Overhead: 2163k
comparing combine.c compilation at -O3 level:
Amount of memory still referenced at the end of compilation increased from 5213k to 5221k, overall 0.14%
Overall memory needed: 38605k
Peak memory use before GGC: 16527k
Peak memory use after GGC: 16309k
Maximum of released memory in single GGC run: 2493k
Garbage: 92781k -> 92785k
Leak: 5213k -> 5221k
Overhead: 10739k -> 10740k
GGC runs: 545
Pre-IPA-Garbage: 14093k
Pre-IPA-Leak: 17296k
Pre-IPA-Overhead: 2164k
Post-IPA-Garbage: 14093k
Post-IPA-Leak: 17296k
Post-IPA-Overhead: 2164k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 137545k -> 137541k
Peak memory use before GGC: 57416k
Peak memory use after GGC: 31842k
Maximum of released memory in single GGC run: 33223k
Garbage: 130444k -> 130448k
Leak: 6966k
Overhead: 14394k -> 14394k
GGC runs: 291
Testing has produced no results
Testing has produced no results
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 138833k -> 138829k
Peak memory use before GGC: 58676k
Peak memory use after GGC: 33101k
Maximum of released memory in single GGC run: 33224k
Garbage: 130945k -> 130948k
Leak: 8625k
Overhead: 14852k -> 14853k
GGC runs: 285
Testing has produced no results
Testing has produced no results
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 141401k -> 141405k
Peak memory use before GGC: 54715k
Peak memory use after GGC: 48981k
Maximum of released memory in single GGC run: 24637k
Garbage: 208959k -> 208959k
Leak: 6429k
Overhead: 24720k -> 24720k
GGC runs: 315
Pre-IPA-Garbage: 50402k
Pre-IPA-Leak: 49477k
Pre-IPA-Overhead: 7467k
Post-IPA-Garbage: 50402k
Post-IPA-Leak: 49477k
Post-IPA-Overhead: 7467k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 182761k -> 182757k
Peak memory use before GGC: 55395k
Peak memory use after GGC: 50005k
Maximum of released memory in single GGC run: 23529k
Garbage: 252061k -> 252061k
Leak: 6457k
Overhead: 30760k -> 30760k
GGC runs: 350
Pre-IPA-Garbage: 50474k
Pre-IPA-Leak: 49480k
Pre-IPA-Overhead: 7474k
Post-IPA-Garbage: 50474k
Post-IPA-Leak: 49480k
Post-IPA-Overhead: 7474k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 190609k
Peak memory use before GGC: 68233k
Peak memory use after GGC: 63456k
Maximum of released memory in single GGC run: 25542k
Garbage: 279289k -> 279289k
Leak: 6465k
Overhead: 32667k -> 32667k
GGC runs: 352
Pre-IPA-Garbage: 50474k
Pre-IPA-Leak: 49480k
Pre-IPA-Overhead: 7474k
Post-IPA-Garbage: 50474k
Post-IPA-Leak: 49480k
Post-IPA-Overhead: 7474k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 144253k -> 144269k
Peak memory use before GGC: 80805k
Peak memory use after GGC: 80005k
Maximum of released memory in single GGC run: 15233k
Garbage: 197748k -> 197759k
Leak: 47629k
Overhead: 24191k -> 24193k
GGC runs: 416
Pre-IPA-Garbage: 108027k
Pre-IPA-Leak: 69164k
Pre-IPA-Overhead: 12062k
Post-IPA-Garbage: 108027k
Post-IPA-Leak: 69164k
Post-IPA-Overhead: 12062k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 166541k -> 166569k
Peak memory use before GGC: 94806k
Peak memory use after GGC: 93867k
Maximum of released memory in single GGC run: 15753k
Garbage: 203400k -> 203410k
Leak: 74204k
Overhead: 30880k -> 30882k
GGC runs: 385
Pre-IPA-Garbage: 108670k
Pre-IPA-Leak: 85731k
Pre-IPA-Overhead: 15600k
Post-IPA-Garbage: 108670k
Post-IPA-Leak: 85731k
Post-IPA-Overhead: 15600k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 117881k
Peak memory use before GGC: 79575k
Peak memory use after GGC: 78781k
Maximum of released memory in single GGC run: 14558k
Garbage: 290558k -> 290566k
Leak: 44416k
Overhead: 28739k -> 28740k
GGC runs: 522
Pre-IPA-Garbage: 151913k
Pre-IPA-Leak: 82533k
Pre-IPA-Overhead: 16721k
Post-IPA-Garbage: 151913k
Post-IPA-Leak: 82533k
Post-IPA-Overhead: 16721k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 119909k
Peak memory use before GGC: 79674k
Peak memory use after GGC: 78879k
Maximum of released memory in single GGC run: 14561k
Garbage: 359890k -> 359904k
Leak: 44677k
Overhead: 35894k -> 35895k
GGC runs: 600
Pre-IPA-Garbage: 153530k
Pre-IPA-Leak: 82397k
Pre-IPA-Overhead: 16857k
Post-IPA-Garbage: 153530k
Post-IPA-Leak: 82397k
Post-IPA-Overhead: 16857k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 122945k -> 122941k
Peak memory use before GGC: 80974k
Peak memory use after GGC: 80122k
Maximum of released memory in single GGC run: 14913k
Garbage: 387059k -> 387085k
Leak: 44952k -> 44944k
Overhead: 38186k -> 38187k
GGC runs: 624
Pre-IPA-Garbage: 156169k
Pre-IPA-Leak: 82665k
Pre-IPA-Overhead: 17101k
Post-IPA-Garbage: 156169k
Post-IPA-Leak: 82665k
Post-IPA-Overhead: 17101k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 380753k
Peak memory use before GGC: 101137k
Peak memory use after GGC: 56790k
Maximum of released memory in single GGC run: 50583k
Garbage: 178627k -> 178628k
Leak: 6218k
Overhead: 30603k -> 30603k
GGC runs: 105
Testing has produced no results
Testing has produced no results
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 381629k
Peak memory use before GGC: 101838k
Peak memory use after GGC: 57491k
Maximum of released memory in single GGC run: 50583k
Garbage: 178742k -> 178695k
Leak: 8265k
Overhead: 31188k -> 31188k
GGC runs: 110
Testing has produced no results
Testing has produced no results
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 390473k -> 390213k
Peak memory use before GGC: 75646k
Peak memory use after GGC: 67590k
Maximum of released memory in single GGC run: 35735k -> 35733k
Garbage: 244862k -> 244858k
Leak: 7883k
Overhead: 31115k -> 31115k
GGC runs: 106
Pre-IPA-Garbage: 49701k
Pre-IPA-Leak: 63711k
Pre-IPA-Overhead: 6704k
Post-IPA-Garbage: 49701k
Post-IPA-Leak: 63711k
Post-IPA-Overhead: 6704k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 303965k -> 303961k
Peak memory use before GGC: 75646k
Peak memory use after GGC: 67590k
Maximum of released memory in single GGC run: 32543k
Garbage: 258979k -> 258980k
Leak: 8046k
Overhead: 34158k -> 34158k
GGC runs: 117
Pre-IPA-Garbage: 107696k
Pre-IPA-Leak: 75534k
Pre-IPA-Overhead: 10956k
Post-IPA-Garbage: 107696k
Post-IPA-Leak: 75534k
Post-IPA-Overhead: 10956k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1070297k -> 1070329k
Peak memory use before GGC: 142472k
Peak memory use after GGC: 129127k
Maximum of released memory in single GGC run: 59649k
Garbage: 356496k -> 356497k
Leak: 11026k
Overhead: 38239k -> 38239k
GGC runs: 102
Pre-IPA-Garbage: 107696k
Pre-IPA-Leak: 75534k
Pre-IPA-Overhead: 10956k
Post-IPA-Garbage: 107696k
Post-IPA-Leak: 75534k
Post-IPA-Overhead: 10956k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2008-05-26 10:06:29.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-05-26 14:32:24.000000000 +0000
@@ -1,3 +1,40 @@
+2008-05-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/36253
+ * caller-save.c (insert_restore): Verify alignment of spill
+ space.
+ (insert_save): Likewise.
+
+ * cfgexpand.c (LOCAL_ALIGNMENT): Removed.
+
+ * defaults.h (LOCAL_ALIGNMENT): New. Provide default.
+ (STACK_SLOT_ALIGNMENT): Likewise.
+
+ * function.c (LOCAL_ALIGNMENT): Removed.
+ (get_stack_local_alignment): New.
+ (assign_stack_local): Use it. Set alignment on stack slot.
+ (assign_stack_temp_for_type): Use get_stack_local_alignment.
+
+ * config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
+ (STACK_SLOT_ALIGNMENT): New.
+
+ * config/i386/i386.c (ix86_local_alignment): Handle caller-save
+ stack slot in XFmode.
+
+ * doc/tm.texi (STACK_SLOT_ALIGNMENT): New.
+
+2008-05-26 Kai Tietz <kai.tietz@onevision.com>
+
+ PR/36321
+ * config/i386/i386.md (allocate_stack_worker_64): Make sure
+ argument operand in rax isn't removed.
+
+2008-05-26 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/36300
+ * fold-const.c (extract_muldiv_1): Use TYPE_OVERFLOW_WRAPS,
+ not TYPE_UNSIGNED. Use TYPE_PRECISION instead of GET_MODE_SIZE.
+
2008-05-26 Daniel Franke <franke.daniel@gmail.com>
PR bootstrap/36331
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.