A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Sat Jul 12 00:57: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: 8135k -> 8133k
Peak memory use before GGC: 1165k
Peak memory use after GGC: 1063k
Maximum of released memory in single GGC run: 131k
Garbage: 245k
Leak: 1024k -> 1024k
Overhead: 92k -> 92k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1024k -> 1024k
Pre-IPA-Overhead: 90k -> 90k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1024k -> 1024k
Post-IPA-Overhead: 90k -> 90k
comparing empty function compilation at -O0 -g level:
Overall memory needed: 8151k -> 8153k
Peak memory use before GGC: 1193k
Peak memory use after GGC: 1091k
Maximum of released memory in single GGC run: 131k
Garbage: 247k
Leak: 1057k -> 1057k
Overhead: 96k -> 96k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1024k -> 1024k
Pre-IPA-Overhead: 90k -> 90k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1024k -> 1024k
Post-IPA-Overhead: 90k -> 90k
comparing empty function compilation at -O1 level:
Overall memory needed: 8223k -> 8221k
Peak memory use before GGC: 1165k
Peak memory use after GGC: 1063k
Maximum of released memory in single GGC run: 131k
Garbage: 249k
Leak: 1024k -> 1024k
Overhead: 93k -> 93k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1026k -> 1026k
Pre-IPA-Overhead: 91k -> 91k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1026k -> 1026k
Post-IPA-Overhead: 91k -> 91k
comparing empty function compilation at -O2 level:
Overall memory needed: 8231k -> 8233k
Peak memory use before GGC: 1165k
Peak memory use after GGC: 1064k
Maximum of released memory in single GGC run: 130k
Garbage: 254k
Leak: 1024k -> 1024k
Overhead: 94k -> 94k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1027k -> 1027k
Pre-IPA-Overhead: 91k -> 91k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1027k -> 1027k
Post-IPA-Overhead: 91k -> 91k
comparing empty function compilation at -O3 level:
Overall memory needed: 8239k -> 8237k
Peak memory use before GGC: 1165k
Peak memory use after GGC: 1064k
Maximum of released memory in single GGC run: 130k
Garbage: 254k
Leak: 1024k -> 1024k
Overhead: 94k -> 94k
GGC runs: 3
Pre-IPA-Garbage: 235k
Pre-IPA-Leak: 1027k -> 1027k
Pre-IPA-Overhead: 91k -> 91k
Post-IPA-Garbage: 235k
Post-IPA-Leak: 1027k -> 1027k
Post-IPA-Overhead: 91k -> 91k
comparing combine.c compilation at -O0 level:
Overall memory needed: 27395k -> 27393k
Peak memory use before GGC: 15015k
Peak memory use after GGC: 14752k
Maximum of released memory in single GGC run: 1787k -> 1788k
Garbage: 38067k -> 38075k
Leak: 5205k -> 5189k
Overhead: 4643k -> 4644k
GGC runs: 354
Pre-IPA-Garbage: 12896k
Pre-IPA-Leak: 15352k -> 15352k
Pre-IPA-Overhead: 1978k -> 1978k
Post-IPA-Garbage: 12896k
Post-IPA-Leak: 15352k -> 15352k
Post-IPA-Overhead: 1978k -> 1978k
comparing combine.c compilation at -O0 -g level:
Amount of memory still referenced at the end of compilation increased from 8470k to 8486k, overall 0.19%
Overall memory needed: 29599k -> 29601k
Peak memory use before GGC: 16874k -> 16875k
Peak memory use after GGC: 16644k
Maximum of released memory in single GGC run: 1796k -> 1812k
Garbage: 38439k -> 38416k
Leak: 8470k -> 8486k
Overhead: 5462k -> 5462k
GGC runs: 336 -> 337
Pre-IPA-Garbage: 12996k
Pre-IPA-Leak: 17628k -> 17628k
Pre-IPA-Overhead: 2469k -> 2469k
Post-IPA-Garbage: 12996k
Post-IPA-Leak: 17628k -> 17628k
Post-IPA-Overhead: 2469k -> 2469k
comparing combine.c compilation at -O1 level:
Overall memory needed: 30319k -> 30321k
Peak memory use before GGC: 16342k
Peak memory use after GGC: 16180k
Maximum of released memory in single GGC run: 1395k
Garbage: 50530k
Leak: 5178k -> 5178k
Overhead: 5602k -> 5602k
GGC runs: 430
Pre-IPA-Garbage: 13919k
Pre-IPA-Leak: 17185k -> 17185k
Pre-IPA-Overhead: 2114k -> 2114k
Post-IPA-Garbage: 13919k
Post-IPA-Leak: 17185k -> 17185k
Post-IPA-Overhead: 2114k -> 2114k
comparing combine.c compilation at -O2 level:
Overall memory needed: 31643k -> 31641k
Peak memory use before GGC: 16439k
Peak memory use after GGC: 16276k
Maximum of released memory in single GGC run: 1333k
Garbage: 66537k -> 66538k
Leak: 5207k -> 5208k
Overhead: 7421k -> 7421k
GGC runs: 505
Pre-IPA-Garbage: 14068k
Pre-IPA-Leak: 17247k -> 17247k
Pre-IPA-Overhead: 2127k -> 2127k
Post-IPA-Garbage: 14068k
Post-IPA-Leak: 17247k -> 17247k
Post-IPA-Overhead: 2127k -> 2127k
comparing combine.c compilation at -O3 level:
Overall memory needed: 37383k -> 37365k
Peak memory use before GGC: 16466k
Peak memory use after GGC: 16293k
Maximum of released memory in single GGC run: 2127k
Garbage: 83128k -> 83127k
Leak: 5227k -> 5231k
Overhead: 9048k -> 9048k
GGC runs: 534
Pre-IPA-Garbage: 14069k
Pre-IPA-Leak: 17258k -> 17258k
Pre-IPA-Overhead: 2128k -> 2128k
Post-IPA-Garbage: 14069k
Post-IPA-Leak: 17258k -> 17258k
Post-IPA-Overhead: 2128k -> 2128k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 141735k -> 141741k
Peak memory use before GGC: 62365k
Peak memory use after GGC: 52700k
Maximum of released memory in single GGC run: 25736k
Garbage: 130179k
Leak: 7087k -> 7087k
Overhead: 14220k -> 14220k
GGC runs: 272
Pre-IPA-Garbage: 43045k
Pre-IPA-Leak: 49873k -> 49873k
Pre-IPA-Overhead: 7105k -> 7105k
Post-IPA-Garbage: 43045k
Post-IPA-Leak: 49873k -> 49873k
Post-IPA-Overhead: 7105k -> 7105k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 143035k -> 143037k
Peak memory use before GGC: 63640k
Peak memory use after GGC: 53973k
Maximum of released memory in single GGC run: 25737k
Garbage: 130597k
Leak: 8739k -> 8739k
Overhead: 14675k -> 14675k
GGC runs: 263
Pre-IPA-Garbage: 43102k
Pre-IPA-Leak: 51416k -> 51416k
Pre-IPA-Overhead: 7441k -> 7441k
Post-IPA-Garbage: 43102k
Post-IPA-Leak: 51416k -> 51416k
Post-IPA-Overhead: 7441k -> 7441k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 133011k -> 133013k
Peak memory use before GGC: 54287k
Peak memory use after GGC: 48560k
Maximum of released memory in single GGC run: 23289k
Garbage: 203580k
Leak: 6477k -> 6477k
Overhead: 24012k -> 24012k
GGC runs: 313
Pre-IPA-Garbage: 50236k
Pre-IPA-Leak: 49387k -> 49387k
Pre-IPA-Overhead: 7216k -> 7216k
Post-IPA-Garbage: 50236k
Post-IPA-Leak: 49387k -> 49387k
Post-IPA-Overhead: 7216k -> 7216k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 179739k -> 179733k
Peak memory use before GGC: 54969k
Peak memory use after GGC: 49573k -> 49574k
Maximum of released memory in single GGC run: 22125k
Garbage: 240505k -> 240508k
Leak: 6485k -> 6485k
Overhead: 29589k -> 29589k
GGC runs: 346
Pre-IPA-Garbage: 50305k
Pre-IPA-Leak: 49392k -> 49392k
Pre-IPA-Overhead: 7223k -> 7223k
Post-IPA-Garbage: 50305k
Post-IPA-Leak: 49392k -> 49392k
Post-IPA-Overhead: 7223k -> 7223k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 188287k -> 188289k
Peak memory use before GGC: 65890k
Peak memory use after GGC: 63022k
Maximum of released memory in single GGC run: 24136k
Garbage: 267145k
Leak: 6493k -> 6493k
Overhead: 31425k -> 31425k
GGC runs: 349
Pre-IPA-Garbage: 50305k
Pre-IPA-Leak: 49392k -> 49392k
Pre-IPA-Overhead: 7223k -> 7223k
Post-IPA-Garbage: 50305k
Post-IPA-Leak: 49392k -> 49392k
Post-IPA-Overhead: 7223k -> 7223k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 137224k -> 137215k
Peak memory use before GGC: 79972k -> 79974k
Peak memory use after GGC: 79180k -> 79182k
Maximum of released memory in single GGC run: 14878k
Garbage: 197846k -> 197831k
Leak: 47686k -> 47687k
Overhead: 24132k -> 24133k
GGC runs: 425 -> 424
Pre-IPA-Garbage: 107619k -> 107619k
Pre-IPA-Leak: 68615k -> 68617k
Pre-IPA-Overhead: 11898k -> 11898k
Post-IPA-Garbage: 107619k -> 107619k
Post-IPA-Leak: 68615k -> 68617k
Post-IPA-Overhead: 11898k -> 11898k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 155432k -> 155447k
Peak memory use before GGC: 94257k -> 94258k
Peak memory use after GGC: 93323k -> 93325k
Maximum of released memory in single GGC run: 15679k -> 15678k
Garbage: 203486k -> 203503k
Leak: 74284k -> 74285k
Overhead: 30823k -> 30824k
GGC runs: 390 -> 391
Pre-IPA-Garbage: 108258k -> 108258k
Pre-IPA-Leak: 85185k -> 85186k
Pre-IPA-Overhead: 15436k -> 15436k
Post-IPA-Garbage: 108258k -> 108258k
Post-IPA-Leak: 85185k -> 85186k
Post-IPA-Overhead: 15436k -> 15436k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 108563k -> 108527k
Peak memory use before GGC: 79064k -> 79066k
Peak memory use after GGC: 78222k -> 78223k
Maximum of released memory in single GGC run: 14459k
Garbage: 283146k -> 283157k
Leak: 44475k -> 44476k
Overhead: 27890k -> 27889k
GGC runs: 513
Pre-IPA-Garbage: 149639k -> 149633k
Pre-IPA-Leak: 82294k -> 82295k
Pre-IPA-Overhead: 16420k -> 16420k
Post-IPA-Garbage: 149639k -> 149633k
Post-IPA-Leak: 82294k -> 82295k
Post-IPA-Overhead: 16420k -> 16420k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 110095k -> 110111k
Peak memory use before GGC: 79356k -> 79357k
Peak memory use after GGC: 78569k -> 78571k
Maximum of released memory in single GGC run: 14427k -> 14426k
Garbage: 334884k -> 334887k
Leak: 44575k -> 44584k
Overhead: 32775k -> 32765k
GGC runs: 581
Pre-IPA-Garbage: 151231k -> 151234k
Pre-IPA-Leak: 82159k -> 82160k
Pre-IPA-Overhead: 16555k -> 16555k
Post-IPA-Garbage: 151231k -> 151234k
Post-IPA-Leak: 82159k -> 82160k
Post-IPA-Overhead: 16555k -> 16555k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 117731k -> 117763k
Peak memory use before GGC: 80351k -> 80352k
Peak memory use after GGC: 79545k -> 79547k
Maximum of released memory in single GGC run: 14783k -> 14782k
Garbage: 363935k -> 363884k
Leak: 44963k -> 44953k
Overhead: 35002k -> 35025k
GGC runs: 603 -> 602
Pre-IPA-Garbage: 153864k -> 153862k
Pre-IPA-Leak: 82424k -> 82425k
Pre-IPA-Overhead: 16792k -> 16792k
Post-IPA-Garbage: 153864k -> 153862k
Post-IPA-Leak: 82424k -> 82425k
Post-IPA-Overhead: 16792k -> 16792k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 377301k -> 377304k
Peak memory use before GGC: 100917k -> 100918k
Peak memory use after GGC: 56571k
Maximum of released memory in single GGC run: 50582k -> 50583k
Garbage: 178404k
Leak: 6287k -> 6287k
Overhead: 30426k -> 30426k
GGC runs: 94
Pre-IPA-Garbage: 12065k
Pre-IPA-Leak: 16461k -> 16461k
Pre-IPA-Overhead: 1540k -> 1540k
Post-IPA-Garbage: 12065k
Post-IPA-Leak: 16461k -> 16461k
Post-IPA-Overhead: 1540k -> 1540k
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 378541k -> 378536k
Peak memory use before GGC: 101616k -> 101617k
Peak memory use after GGC: 57270k
Maximum of released memory in single GGC run: 50582k -> 50583k
Garbage: 178522k
Leak: 8332k -> 8332k
Overhead: 31011k -> 31011k
GGC runs: 103
Pre-IPA-Garbage: 12073k
Pre-IPA-Leak: 16710k -> 16710k
Pre-IPA-Overhead: 1594k -> 1594k
Post-IPA-Garbage: 12073k
Post-IPA-Leak: 16710k -> 16710k
Post-IPA-Overhead: 1594k -> 1594k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 383735k -> 383569k
Peak memory use before GGC: 75664k
Peak memory use after GGC: 67608k
Maximum of released memory in single GGC run: 34791k -> 34790k
Garbage: 243330k
Leak: 7907k -> 7907k
Overhead: 30630k -> 30630k
GGC runs: 103
Pre-IPA-Garbage: 49522k
Pre-IPA-Leak: 63645k -> 63645k
Pre-IPA-Overhead: 6443k -> 6443k
Post-IPA-Garbage: 49522k
Post-IPA-Leak: 63645k -> 63645k
Post-IPA-Overhead: 6443k -> 6443k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 322171k -> 320605k
Peak memory use before GGC: 75664k
Peak memory use after GGC: 67608k
Maximum of released memory in single GGC run: 32489k
Garbage: 254886k
Leak: 8070k -> 8070k
Overhead: 33405k -> 33405k
GGC runs: 115
Pre-IPA-Garbage: 107518k
Pre-IPA-Leak: 75534k -> 75534k
Pre-IPA-Overhead: 10761k -> 10761k
Post-IPA-Garbage: 107518k
Post-IPA-Leak: 75534k -> 75534k
Post-IPA-Overhead: 10761k -> 10761k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1068131k -> 1068269k
Peak memory use before GGC: 142490k
Peak memory use after GGC: 129145k
Maximum of released memory in single GGC run: 59679k -> 59680k
Garbage: 356335k
Leak: 11049k -> 11049k
Overhead: 38047k -> 38047k
GGC runs: 101
Pre-IPA-Garbage: 107518k
Pre-IPA-Leak: 75534k -> 75534k
Pre-IPA-Overhead: 10761k -> 10761k
Post-IPA-Garbage: 107518k
Post-IPA-Leak: 75534k -> 75534k
Post-IPA-Overhead: 10761k -> 10761k
Head of the ChangeLog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2008-07-11 14:09:52.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2008-07-11 21:44:09.000000000 +0000
@@ -1,3 +1,45 @@
+2008-07-11 Anatoly Sokolov <aesok@post.ru>
+
+ * config/avr/avr-protos.h (avr_peep2_scratch_safe): Remove prototype.
+ * config/avr/avr.c (avr_peep2_scratch_safe): Remove.
+ (avr_hard_regno_scratch_ok): New function.
+ (TARGET_HARD_REGNO_SCRATCH_OK): Define.
+ * config/avr/avr.md (all peepholes that request a scratch register):
+ Remove avr_peep2_scratch_safe use.
+
+2008-07-11 Tom Tromey <tromey@redhat.com>
+ Ian Lance Taylor <iant@google.com>
+
+ * c-common.h (enum rid): Add RID_CXX_COMPAT_WARN.
+ (struct c_common_resword): Define.
+ (D_CONLY, D_CXXONLY, D_C99, D_CXX0X, D_EXT, D_EXT89): Define.
+ (D_ASM, D_OBJC, D_CXX_OBJC, D_CXXWARN): Define.
+ (c_common_reswords, num_c_common_reswords): Declare.
+ * c-common.c (c_common_reswords): New global const array.
+ (num_c_common_reswords): New const int.
+ * c-parser.c (struct resword, reswords): Don't define.
+ (D_C89, D_EXT, D_EXT89, D_OBJC): Don't define.
+ (c_parse_init): Clarify mask code. Use c_common_reswords rather
+ than reswords. If warning about C++ keywords, give them a special
+ RID code.
+ (c_lex_one_token): Warn about C++ keywords. Call
+ objc_is_reserved_word rather than OBJC_IS_AT_KEYWORD.
+ (c_parser_external_declaration): Look for RID_xxx rather than
+ RID_AT_xxx, for ObjC++ keywords which are also C++ keywords.
+ (c_parser_statement_after_labels): Likewise.
+ (c_parser_objc_class_instance_variables): Likewise.
+ (c_parser_objc_class_declaration): Likewise.
+ (c_parser_objc_try_catch_statement): Likewise.
+ * c-decl.c (c_print_identifier): Ignore RID_CXX_COMPAT_WARN.
+ (declspecs_add_type): Likewise.
+
+2008-07-11 Angelo Graziosi <angelo.graziosi@alice.it>
+
+ * ggc-page.c (alloc_page):
+ Substituting xmalloc, xcalloc with
+ XNEWVEC and XCNEWVAR macros which add the
+ needed casts.
+
2008-07-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36765
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp 2008-07-11 17:57:37.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog 2008-07-11 21:44:09.000000000 +0000
@@ -1,3 +1,18 @@
+2008-07-11 Tom Tromey <tromey@redhat.com>
+ Ian Lance Taylor <iant@google.com>
+
+ * lex.c (struct resword, reswords): Don't define.
+ (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
+ (init_reswords): Clarify mask code. Use c_common_reswords rather
+ than reswords.
+
+2008-07-11 Dodji Seketeli <dseketel@redhat.com>
+
+ PR c++/13101
+ * decl.c (grokdeclarator): Warn about initializing variables
+ of storage class 'extern' only after the type of the declarator
+ has been properly computed.
+
2008-07-11 Dodji Seketeli <dseketel@redhat.com>
PR c++/31754
@@ -13,7 +28,8 @@
cp_parser_type_specifier, cp_parser_simple_type_specifier,
cp_parser_omp_for_loop, cp_parser_pragma): use location in error messages.
-2008-06-30 Dodji Seketeli <dseketel@redhat.com>
+
+2008-07-11 Dodji Seketeli <dseketel@redhat.com>
PR c++/31754
* pt.c, semantic.c:
@@ -148,7 +164,7 @@
* pt.c: (tsubst_copy_and_build): Adjust.
(unify): Handle { }.
* name-lookup.c (arg_assoc_type): Handle init_list_type_node.
-
+
2008-07-01 Daniel Jacobowitz <dan@codesourcery.com>
* typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
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