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: 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]