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: 8184k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 218k
    Leak: 1221k
    Overhead: 136k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8428k
    Peak memory use before GGC: 1319k
    Peak memory use after GGC: 1245k
    Maximum of released memory in single GGC run: 133k
    Garbage: 220k
    Leak: 1254k
    Overhead: 141k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O1 level:
    Overall memory needed: 8240k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1217k
    Maximum of released memory in single GGC run: 134k
    Garbage: 221k
    Leak: 1221k
    Overhead: 137k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1224k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1224k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8452k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1222k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1225k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1225k
    Post-IPA-Overhead: 135k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8456k
    Peak memory use before GGC: 1291k
    Peak memory use after GGC: 1218k
    Maximum of released memory in single GGC run: 135k
    Garbage: 226k
    Leak: 1222k
    Overhead: 138k
    GGC runs: 4
    Pre-IPA-Garbage: 207k
    Pre-IPA-Leak: 1225k
    Pre-IPA-Overhead: 135k
    Post-IPA-Garbage: 207k
    Post-IPA-Leak: 1225k
    Post-IPA-Overhead: 135k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 32044k
    Peak memory use before GGC: 18063k
    Peak memory use after GGC: 17791k
    Maximum of released memory in single GGC run: 1842k
    Garbage: 39592k
    Leak: 5792k
    Overhead: 5267k
    GGC runs: 337
    Pre-IPA-Garbage: 12430k
    Pre-IPA-Leak: 19386k
    Pre-IPA-Overhead: 2624k
    Post-IPA-Garbage: 12430k
    Post-IPA-Leak: 19386k
    Post-IPA-Overhead: 2624k

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 34072k
    Peak memory use before GGC: 19980k
    Peak memory use after GGC: 19646k
    Maximum of released memory in single GGC run: 1851k
    Garbage: 39879k
    Leak: 9082k
    Overhead: 6084k
    GGC runs: 320
    Pre-IPA-Garbage: 12529k
    Pre-IPA-Leak: 21659k
    Pre-IPA-Overhead: 3114k
    Post-IPA-Garbage: 12529k
    Post-IPA-Leak: 21659k
    Post-IPA-Overhead: 3114k

comparing combine.c compilation at -O1 level:
    Overall memory needed: 30804k -> 30796k
    Peak memory use before GGC: 15657k -> 15661k
    Peak memory use after GGC: 15482k -> 15483k
    Maximum of released memory in single GGC run: 1393k
    Garbage: 46656k -> 46660k
    Leak: 5795k -> 5785k
    Overhead: 6090k -> 6090k
    GGC runs: 401
    Pre-IPA-Garbage: 13169k -> 13169k
    Pre-IPA-Leak: 16877k -> 16883k
    Pre-IPA-Overhead: 2533k -> 2534k
    Post-IPA-Garbage: 13169k -> 13169k
    Post-IPA-Leak: 16877k -> 16883k
    Post-IPA-Overhead: 2533k -> 2534k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 31636k -> 31484k
    Peak memory use before GGC: 15800k -> 15804k
    Peak memory use after GGC: 15637k -> 15641k
    Maximum of released memory in single GGC run: 1357k
    Garbage: 60721k -> 60721k
    Leak: 5964k -> 5962k
    Overhead: 8146k
    GGC runs: 471
    Pre-IPA-Garbage: 13336k -> 13336k
    Pre-IPA-Leak: 16957k -> 16962k
    Pre-IPA-Overhead: 2554k -> 2555k
    Post-IPA-Garbage: 13336k -> 13336k
    Post-IPA-Leak: 16957k -> 16962k
    Post-IPA-Overhead: 2554k -> 2555k

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 5833k to 5843k, overall 0.18%
    Overall memory needed: 31748k -> 31864k
    Peak memory use before GGC: 15833k -> 15836k
    Peak memory use after GGC: 15673k -> 15674k
    Maximum of released memory in single GGC run: 1814k -> 1806k
    Garbage: 76188k -> 76196k
    Leak: 5833k -> 5843k
    Overhead: 9939k -> 9940k
    GGC runs: 506 -> 507
    Pre-IPA-Garbage: 13336k -> 13336k
    Pre-IPA-Leak: 16965k -> 16970k
    Pre-IPA-Overhead: 2555k -> 2556k
    Post-IPA-Garbage: 13336k -> 13336k
    Post-IPA-Leak: 16965k -> 16970k
    Post-IPA-Overhead: 2555k -> 2556k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 158012k -> 158008k
    Peak memory use before GGC: 65981k
    Peak memory use after GGC: 53351k
    Maximum of released memory in single GGC run: 16942k
    Garbage: 105215k
    Leak: 35563k
    Overhead: 16157k
    GGC runs: 251
    Pre-IPA-Garbage: 38224k
    Pre-IPA-Leak: 55908k
    Pre-IPA-Overhead: 8653k
    Post-IPA-Garbage: 38224k
    Post-IPA-Leak: 55908k
    Post-IPA-Overhead: 8653k

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 159324k
    Peak memory use before GGC: 67255k
    Peak memory use after GGC: 54623k
    Maximum of released memory in single GGC run: 16943k
    Garbage: 105695k
    Leak: 37213k
    Overhead: 16613k
    GGC runs: 246
    Pre-IPA-Garbage: 38281k
    Pre-IPA-Leak: 57449k
    Pre-IPA-Overhead: 8989k
    Post-IPA-Garbage: 38281k
    Post-IPA-Leak: 57449k
    Post-IPA-Overhead: 8989k

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 134844k -> 134840k
    Peak memory use before GGC: 50578k
    Peak memory use after GGC: 43415k
    Maximum of released memory in single GGC run: 22952k
    Garbage: 181256k
    Leak: 8079k -> 8078k
    Overhead: 25327k
    GGC runs: 302
    Pre-IPA-Garbage: 43202k
    Pre-IPA-Leak: 43436k -> 43438k
    Pre-IPA-Overhead: 8052k -> 8052k
    Post-IPA-Garbage: 43202k
    Post-IPA-Leak: 43436k -> 43438k
    Post-IPA-Overhead: 8052k -> 8052k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 150008k -> 150004k
    Peak memory use before GGC: 50580k -> 50581k
    Peak memory use after GGC: 44410k
    Maximum of released memory in single GGC run: 21566k
    Garbage: 213204k
    Leak: 8063k -> 8063k
    Overhead: 31010k
    GGC runs: 335
    Pre-IPA-Garbage: 43275k
    Pre-IPA-Leak: 43442k -> 43444k
    Pre-IPA-Overhead: 8062k -> 8062k
    Post-IPA-Garbage: 43275k
    Post-IPA-Leak: 43442k -> 43444k
    Post-IPA-Overhead: 8062k -> 8062k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 164852k -> 164856k
    Peak memory use before GGC: 61949k
    Peak memory use after GGC: 58849k
    Maximum of released memory in single GGC run: 23862k -> 23860k
    Garbage: 243482k -> 243462k
    Leak: 8071k -> 8070k
    Overhead: 34455k -> 34455k
    GGC runs: 341
    Pre-IPA-Garbage: 43275k
    Pre-IPA-Leak: 43442k -> 43444k
    Pre-IPA-Overhead: 8062k -> 8062k
    Post-IPA-Garbage: 43275k
    Post-IPA-Leak: 43442k -> 43444k
    Post-IPA-Overhead: 8062k -> 8062k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 150598k -> 150587k
    Peak memory use before GGC: 82047k
    Peak memory use after GGC: 81235k
    Maximum of released memory in single GGC run: 15776k
    Garbage: 207469k
    Leak: 50844k
    Overhead: 27261k
    GGC runs: 419
    Pre-IPA-Garbage: 112337k
    Pre-IPA-Leak: 87316k
    Pre-IPA-Overhead: 14978k
    Post-IPA-Garbage: 112337k
    Post-IPA-Leak: 87316k
    Post-IPA-Overhead: 14978k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 168078k -> 168099k
    Peak memory use before GGC: 95767k
    Peak memory use after GGC: 94819k
    Maximum of released memory in single GGC run: 16204k
    Garbage: 213132k
    Leak: 77406k
    Overhead: 33925k
    GGC runs: 389
    Pre-IPA-Garbage: 112959k
    Pre-IPA-Leak: 103831k
    Pre-IPA-Overhead: 18481k
    Post-IPA-Garbage: 112959k
    Post-IPA-Leak: 103831k
    Post-IPA-Overhead: 18481k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 110905k -> 110477k
    Peak memory use before GGC: 82844k -> 82846k
    Peak memory use after GGC: 82021k
    Maximum of released memory in single GGC run: 16084k
    Garbage: 286149k -> 286168k
    Leak: 47515k -> 47516k
    Overhead: 32509k -> 32510k
    GGC runs: 509
    Pre-IPA-Garbage: 163112k
    Pre-IPA-Leak: 86609k -> 86612k
    Pre-IPA-Overhead: 20476k -> 20477k
    Post-IPA-Garbage: 163112k
    Post-IPA-Leak: 86609k -> 86612k
    Post-IPA-Overhead: 20476k -> 20477k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 111997k -> 111981k
    Peak memory use before GGC: 84319k -> 84320k
    Peak memory use after GGC: 83477k
    Maximum of released memory in single GGC run: 16069k
    Garbage: 340222k -> 340223k
    Leak: 47543k -> 47560k
    Overhead: 39048k -> 39049k
    GGC runs: 576
    Pre-IPA-Garbage: 167129k
    Pre-IPA-Leak: 86944k -> 86946k
    Pre-IPA-Overhead: 20969k -> 20969k
    Post-IPA-Garbage: 167129k
    Post-IPA-Leak: 86944k -> 86946k
    Post-IPA-Overhead: 20969k -> 20969k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 112441k -> 112417k
    Peak memory use before GGC: 84937k
    Peak memory use after GGC: 84092k
    Maximum of released memory in single GGC run: 16069k
    Garbage: 371452k -> 371661k
    Leak: 47546k -> 47546k
    Overhead: 42264k -> 42280k
    GGC runs: 608 -> 609
    Pre-IPA-Garbage: 167209k
    Pre-IPA-Leak: 87616k -> 87618k
    Pre-IPA-Overhead: 21023k -> 21024k
    Post-IPA-Garbage: 167209k
    Post-IPA-Leak: 87616k -> 87618k
    Post-IPA-Overhead: 21023k -> 21024k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 371599k -> 371600k
    Peak memory use before GGC: 81875k
    Peak memory use after GGC: 52810k
    Maximum of released memory in single GGC run: 38147k
    Garbage: 142545k
    Leak: 10656k
    Overhead: 24891k
    GGC runs: 86
    Pre-IPA-Garbage: 12562k
    Pre-IPA-Leak: 20190k
    Pre-IPA-Overhead: 2242k
    Post-IPA-Garbage: 12562k
    Post-IPA-Leak: 20190k
    Post-IPA-Overhead: 2242k

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 372483k -> 372480k
    Peak memory use before GGC: 82572k
    Peak memory use after GGC: 53506k
    Maximum of released memory in single GGC run: 38132k
    Garbage: 142646k
    Leak: 12698k
    Overhead: 25474k
    GGC runs: 92
    Pre-IPA-Garbage: 12570k
    Pre-IPA-Leak: 20439k
    Pre-IPA-Overhead: 2296k
    Post-IPA-Garbage: 12570k
    Post-IPA-Leak: 20439k
    Post-IPA-Overhead: 2296k

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 230572k -> 230308k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 35352k
    Garbage: 220251k
    Leak: 11159k
    Overhead: 30799k
    GGC runs: 97
    Pre-IPA-Garbage: 48349k
    Pre-IPA-Leak: 63526k -> 63526k
    Pre-IPA-Overhead: 8965k -> 8965k
    Post-IPA-Garbage: 48349k
    Post-IPA-Leak: 63526k -> 63526k
    Post-IPA-Overhead: 8965k -> 8965k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 362876k -> 363092k
    Peak memory use before GGC: 73624k
    Peak memory use after GGC: 66143k
    Maximum of released memory in single GGC run: 36674k
    Garbage: 248506k
    Leak: 10981k
    Overhead: 36877k
    GGC runs: 106
    Pre-IPA-Garbage: 109693k
    Pre-IPA-Leak: 73930k -> 73930k
    Pre-IPA-Overhead: 15408k -> 15408k
    Post-IPA-Garbage: 109693k
    Post-IPA-Leak: 73930k -> 73930k
    Post-IPA-Overhead: 15408k -> 15408k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1023928k -> 1023600k
    Peak memory use before GGC: 139561k
    Peak memory use after GGC: 126838k
    Maximum of released memory in single GGC run: 62395k
    Garbage: 366999k
    Leak: 6760k
    Overhead: 45401k
    GGC runs: 106
    Pre-IPA-Garbage: 109693k
    Pre-IPA-Leak: 73930k -> 73930k
    Pre-IPA-Overhead: 15408k -> 15408k
    Post-IPA-Garbage: 109693k
    Post-IPA-Leak: 73930k -> 73930k
    Post-IPA-Overhead: 15408k -> 15408k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-09-16 22:13:45.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-09-17 15:03:27.000000000 +0000
@@ -1,3 +1,57 @@
+2008-09-17  Jan Hubicka  <jh@suse.cz>
+
+	PR c++/18071
+	* tree.h (DECL_INLINE): remove.
+	(DECL_DECLARED_INLINE_P): Update docs.
+	(DECL_NO_INLINE_WARNING_P): new.
+	(tree_function_decl): Replace inline_flag by no_inline_warning_flag.
+	* tree-inline.c (inlinable_function_p): Set DECL_NO_INLINE_WARNING_P.
+
+2008-09-17  Jakub Jelinek  <jakub@redhat.com>
+	    Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
+
+	PR bootstrap/37441
+	* dwarf2out.c (dwarf2out_do_cfi_asm) [MIPS_DEBUGGING_INFO]: Return
+	false.
+
+2008-09-17  Jan Hubicka  <jh@suse.cz>
+
+	* ipa-reference.c (ipa_obstack): Remove.
+	(local_info_obstack, global_info_obstack): New.
+	(add_static_var): We now handle variables only.
+	(mark_address_taken, mark_load, mark_store): New functions based on ...
+	(check_operand): ... remove.
+	(get_asm_stmt_operands): Rename to ...
+	(check_asm_memory_clobber): ... this. Look only for memory clobber.
+	(scan_stmt_for_static_refs): Rewrite.
+	(scan_op_for_static_refs): Rename to ...
+	(scan_initializer_for_static_refs): do not look for VAR_DECL
+	initializers; stop recursion on types and decls.
+	(ipa_init): Use proper obstacks.
+	(analyze_variable): Use scan_initializer_for_static_refs.
+	(init_function_info): Use local obstack.
+	(analyze_function): Simplify.
+	(add_new_function): We don't need visited_nodes obstack.
+	(generate_summary): Use proper obstacks; cleanup after propagation.
+
+2008-09-17  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/37385
+	PR tree-optimization/37491
+	* alias.c (get_alias_set): Use the canonical type.
+	* tree-vect-transform.c (vectorizable_store): Use the type of
+	the lhs for the vector type.  Adjust checking.
+	(vectorizable_load): Adjust checking.
+
+2008-09-16  Jakub Jelinek  <jakub@redhat.com>
+	    Adam Nemet  <anemet@caviumnetworks.com>
+
+	PR rtl-optimization/37483
+	* ifcvt.c (noce_try_sign_mask): Use if_info->test_bb instead of
+	if_info->insn_b's bb as argument to optimize_bb_for_speed_p.
+	Rearrange code to better match the original comment.  Check
+	t_unconditional first.  Improve comment.
+
 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c/37529
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-09-16 22:13:45.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-09-17 15:03:26.000000000 +0000
@@ -1,3 +1,8 @@
+2008-09-17  Jan Hubicka  <jh@suse.cz>
+
+	PR c++/18071
+	* cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.
+
 2008-09-16  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/37531


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]