A recent patch decreased GCC's memory consumption.
gcctest@suse.de
gcctest@suse.de
Sat Mar 22 23:11:00 GMT 2008
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
Peak memory use before GGC: 1103k
Peak memory use after GGC: 1000k
Maximum of released memory in single GGC run: 130k
Garbage: 239k
Leak: 957k
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
Peak memory use before GGC: 1130k
Peak memory use after GGC: 1035k
Maximum of released memory in single GGC run: 129k
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
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: 960k
Pre-IPA-Overhead: 79k
Post-IPA-Garbage: 228k
Post-IPA-Leak: 960k
Post-IPA-Overhead: 79k
comparing empty function compilation at -O2 level:
Overall memory needed: 8224k
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
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: 22644k
Peak memory use before GGC: 7810k
Peak memory use after GGC: 7189k
Maximum of released memory in single GGC run: 1550k
Garbage: 37894k
Leak: 5517k
Overhead: 4637k
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
Peak memory use before GGC: 9648k
Peak memory use after GGC: 8948k
Maximum of released memory in single GGC run: 1838k
Garbage: 38215k
Leak: 8383k
Overhead: 5264k
GGC runs: 343
Testing has produced no results
Testing has produced no results
comparing combine.c compilation at -O1 level:
Overall memory needed: 32856k
Peak memory use before GGC: 16268k
Peak memory use after GGC: 16084k
Maximum of released memory in single GGC run: 1380k
Garbage: 51611k
Leak: 5663k
Overhead: 5810k
GGC runs: 438
Pre-IPA-Garbage: 13937k
Pre-IPA-Leak: 17097k
Pre-IPA-Overhead: 2120k
Post-IPA-Garbage: 13937k
Post-IPA-Leak: 17097k
Post-IPA-Overhead: 2120k
comparing combine.c compilation at -O2 level:
Overall memory needed: 34656k
Peak memory use before GGC: 16368k
Peak memory use after GGC: 16201k
Maximum of released memory in single GGC run: 1315k
Garbage: 70958k
Leak: 5994k
Overhead: 8068k
GGC runs: 508
Pre-IPA-Garbage: 14091k
Pre-IPA-Leak: 17160k
Pre-IPA-Overhead: 2134k
Post-IPA-Garbage: 14091k
Post-IPA-Leak: 17160k
Post-IPA-Overhead: 2134k
comparing combine.c compilation at -O3 level:
Overall memory needed: 38468k
Peak memory use before GGC: 16506k
Peak memory use after GGC: 16207k
Maximum of released memory in single GGC run: 2012k
Garbage: 87960k
Leak: 6038k
Overhead: 10009k
GGC runs: 545
Pre-IPA-Garbage: 14093k
Pre-IPA-Leak: 17172k
Pre-IPA-Overhead: 2136k
Post-IPA-Garbage: 14093k
Post-IPA-Leak: 17172k
Post-IPA-Overhead: 2136k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 137432k
Peak memory use before GGC: 57005k
Peak memory use after GGC: 31462k
Maximum of released memory in single GGC run: 33256k
Garbage: 128634k
Leak: 8368k
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: 138680k
Peak memory use before GGC: 58147k
Peak memory use after GGC: 32604k
Maximum of released memory in single GGC run: 33256k
Garbage: 128886k
Leak: 10043k
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: 142840k
Peak memory use before GGC: 56207k
Peak memory use after GGC: 49970k
Maximum of released memory in single GGC run: 23976k
Garbage: 205213k
Leak: 9261k
Overhead: 24762k
GGC runs: 315
Pre-IPA-Garbage: 50376k
Pre-IPA-Leak: 49662k
Pre-IPA-Overhead: 7543k
Post-IPA-Garbage: 50376k
Post-IPA-Leak: 49662k
Post-IPA-Overhead: 7543k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 184568k
Peak memory use before GGC: 56838k
Peak memory use after GGC: 51558k
Maximum of released memory in single GGC run: 22891k
Garbage: 245878k
Leak: 10345k
Overhead: 30414k
GGC runs: 346
Pre-IPA-Garbage: 50448k
Pre-IPA-Leak: 49666k
Pre-IPA-Overhead: 7551k
Post-IPA-Garbage: 50448k
Post-IPA-Leak: 49666k
Post-IPA-Overhead: 7551k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 190416k
Peak memory use before GGC: 66384k
Peak memory use after GGC: 62267k
Maximum of released memory in single GGC run: 23391k
Garbage: 269582k
Leak: 10383k
Overhead: 32203k
GGC runs: 346
Pre-IPA-Garbage: 50448k
Pre-IPA-Leak: 49666k
Pre-IPA-Overhead: 7551k
Post-IPA-Garbage: 50448k
Post-IPA-Leak: 49666k
Post-IPA-Overhead: 7551k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 148730k -> 148745k
Peak memory use before GGC: 84475k
Peak memory use after GGC: 83639k
Maximum of released memory in single GGC run: 17028k
Garbage: 200756k
Leak: 48035k
Overhead: 23977k
GGC runs: 417
Pre-IPA-Garbage: 109718k
Pre-IPA-Leak: 71086k
Pre-IPA-Overhead: 12093k
Post-IPA-Garbage: 109718k
Post-IPA-Leak: 71086k
Post-IPA-Overhead: 12093k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 169574k -> 169569k
Peak memory use before GGC: 96073k
Peak memory use after GGC: 95120k
Maximum of released memory in single GGC run: 17470k
Garbage: 206402k
Leak: 69717k
Overhead: 28955k
GGC runs: 390
Pre-IPA-Garbage: 110362k
Pre-IPA-Leak: 84367k
Pre-IPA-Overhead: 14669k
Post-IPA-Garbage: 110362k
Post-IPA-Leak: 84367k
Post-IPA-Overhead: 14669k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 122172k -> 122168k
Peak memory use before GGC: 83935k
Peak memory use after GGC: 83098k
Maximum of released memory in single GGC run: 16195k
Garbage: 288394k -> 288392k
Leak: 47316k
Overhead: 29216k -> 29216k
GGC runs: 513
Pre-IPA-Garbage: 154776k
Pre-IPA-Leak: 87719k
Pre-IPA-Overhead: 17477k
Post-IPA-Garbage: 154776k
Post-IPA-Leak: 87719k
Post-IPA-Overhead: 17477k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 124676k
Peak memory use before GGC: 84226k
Peak memory use after GGC: 83296k
Maximum of released memory in single GGC run: 16197k
Garbage: 354453k -> 354451k
Leak: 48418k
Overhead: 36264k -> 36264k
GGC runs: 586
Pre-IPA-Garbage: 157324k
Pre-IPA-Leak: 87866k
Pre-IPA-Overhead: 17759k
Post-IPA-Garbage: 157324k
Post-IPA-Leak: 87866k
Post-IPA-Overhead: 17759k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 127504k
Peak memory use before GGC: 85407k
Peak memory use after GGC: 84532k
Maximum of released memory in single GGC run: 16568k
Garbage: 377804k -> 377801k
Leak: 49000k
Overhead: 38373k -> 38372k
GGC runs: 611
Pre-IPA-Garbage: 160036k
Pre-IPA-Leak: 88149k
Pre-IPA-Overhead: 18007k
Post-IPA-Garbage: 160036k
Post-IPA-Leak: 88149k
Post-IPA-Overhead: 18007k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 380451k
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: 381239k -> 381243k
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 memory still referenced at the end of compilation decreased from 15907k to 15009k, overall -5.98%
Overall memory needed: 437264k -> 428080k
Peak memory use before GGC: 78692k
Peak memory use after GGC: 70441k
Maximum of released memory in single GGC run: 37596k
Garbage: 234583k -> 233151k
Leak: 15907k -> 15009k
Overhead: 35646k -> 33234k
GGC runs: 106
Pre-IPA-Garbage: 52926k
Pre-IPA-Leak: 49238k
Pre-IPA-Overhead: 7120k
Post-IPA-Garbage: 52926k
Post-IPA-Leak: 49238k
Post-IPA-Overhead: 7120k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Amount of memory still referenced at the end of compilation decreased from 16079k to 15182k, overall -5.91%
Overall memory needed: 357664k -> 353524k
Peak memory use before GGC: 75428k
Peak memory use after GGC: 70442k
Maximum of released memory in single GGC run: 32234k -> 31731k
Garbage: 245359k -> 243948k
Leak: 16079k -> 15182k
Overhead: 38822k -> 35646k
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: 1198728k -> 1198588k
Peak memory use before GGC: 136589k
Peak memory use after GGC: 127947k
Maximum of released memory in single GGC run: 59910k -> 59901k
Garbage: 369974k -> 369963k
Leak: 24893k
Overhead: 49889k -> 49887k
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-22 01:26:06.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-03-22 20:03:40.000000000 +0000
@@ -1,3 +1,35 @@
+2008-03-22 Richard Guenther <rguenther@suse.de>
+
+ * tree-cfg.c (verify_expr): Recurse again for invariant addresses.
+ For PHI nodes verify the address is invariant.
+ * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove.
+ (get_symbol_constant_value): Use is_gimple_min_invariant.
+ (maybe_fold_stmt_indirect): Likewise.
+
+2008-03-22 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ PR rtl-optimization/33927
+ * Makefile.in (dse.o): Depend on $(TM_P_H).
+ * expr.h (extract_low_bits): Declare.
+ * expmed.c (extract_low_bits): New function.
+ * rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
+ * dse.c: Include tm_p.h.
+ (find_shift_sequence): Remove the read_reg argument and return the
+ read value. Emit the instructions instead of returning them.
+ Iterate on new_mode rather than calculating it each time.
+ Check MODES_TIEABLE_P. Use simplify_gen_subreg to convert the
+ source to NEW_MODE and extract_low_bits to convert the shifted
+ value to READ_MODE.
+ (replace_read): Allow the load and store to have different mode
+ classes. Use extract_low_bits when SHIFT == 0. Create the shift
+ or extraction instructions before trying the replacement. Update
+ dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
+
+2008-03-22 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (assign_386_stack_local): Align DImode slots
+ to their natural alignment to avoid store forwarding stalls.
+
2008-03-21 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/27946
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