This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
GCC memory consumption increased by recent patch!
- From: gcctest at suse dot de
- To: jh at suse dot cz, gcc-regression at gcc dot gnu dot org
- Date: Wed, 08 Dec 2004 12:36:28 +0000
- Subject: GCC memory consumption increased by recent patch!
Hi,
Comparing memory consumption on compilation of combine.i and generate-3.4.ii I got:
comparing combine.c compilation at -O0 level:
Overall memory needed: 25261k
Peak memory use before GGC: 9310k
Peak memory use after GGC: 8624k
Maximum of released memory in single GGC run: 2912k
Garbage: 42434k
Leak: 6088k
Overhead: 5717k
GGC runs: 354
comparing combine.c compilation at -O1 level:
Overall memory needed: 26157k -> 26165k
Peak memory use before GGC: 9199k
Peak memory use after GGC: 8723k
Maximum of released memory in single GGC run: 2062k
Garbage: 67984k
Leak: 6484k
Overhead: 10665k
GGC runs: 546
comparing combine.c compilation at -O2 level:
Overall memory needed: 29965k
Peak memory use before GGC: 12705k
Peak memory use after GGC: 12578k
Maximum of released memory in single GGC run: 2574k
Garbage: 82177k
Leak: 6299k
Overhead: 14822k
GGC runs: 548
comparing combine.c compilation at -O3 level:
Overall memory needed: 20804k
Peak memory use before GGC: 12987k
Peak memory use after GGC: 12578k
Maximum of released memory in single GGC run: 3411k
Garbage: 111098k
Leak: 6832k
Overhead: 19898k
GGC runs: 616
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 118468k
Peak memory use before GGC: 79386k
Peak memory use after GGC: 46137k
Maximum of released memory in single GGC run: 43335k
Garbage: 161983k
Leak: 10609k
Overhead: 21242k
GGC runs: 295
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 132256k
Peak memory use before GGC: 85238k
Peak memory use after GGC: 70037k
Maximum of released memory in single GGC run: 41132k
Garbage: 449302k
Leak: 10955k
Overhead: 79597k
GGC runs: 429
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 154180k
Peak memory use before GGC: 101254k
Peak memory use after GGC: 85454k
Maximum of released memory in single GGC run: 42175k
Garbage: 496306k
Leak: 10883k
Overhead: 87871k
GGC runs: 363
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 154196k
Peak memory use before GGC: 101255k
Peak memory use after GGC: 85456k
Maximum of released memory in single GGC run: 42175k
Garbage: 497584k
Leak: 10928k
Overhead: 88052k
GGC runs: 371
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory allocated via mmap and sbrk increased from 113252k to 113408k, overall 0.14%
Peak amount of GGC memory allocated before garbage collecting increased from 89795k to 89927k, overall 0.15%
Peak amount of GGC memory still allocated after garbage collectin increased from 88905k to 89033k, overall 0.14%
Amount of memory still referenced at the end of compilation increased from 57666k to 57794k, overall 0.22%
Overall memory needed: 113252k -> 113408k
Peak memory use before GGC: 89795k -> 89927k
Peak memory use after GGC: 88905k -> 89033k
Maximum of released memory in single GGC run: 19901k
Garbage: 248756k -> 248762k
Leak: 57666k -> 57794k
Overhead: 45379k -> 45380k
GGC runs: 362
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 95796k to 95924k, overall 0.13%
Peak amount of GGC memory allocated before garbage collecting increased from 88796k to 88924k, overall 0.14%
Peak amount of GGC memory still allocated after garbage collectin increased from 87822k to 87950k, overall 0.15%
Amount of memory still referenced at the end of compilation increased from 59700k to 59829k, overall 0.22%
Overall memory needed: 95796k -> 95924k
Peak memory use before GGC: 88796k -> 88924k
Peak memory use after GGC: 87822k -> 87950k
Maximum of released memory in single GGC run: 19406k
Garbage: 553002k -> 553036k
Leak: 59700k -> 59829k
Overhead: 115302k -> 115303k
GGC runs: 611
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 95796k to 95924k, overall 0.13%
Peak amount of GGC memory allocated before garbage collecting increased from 88796k to 88924k, overall 0.14%
Peak amount of GGC memory still allocated after garbage collectin increased from 87822k to 87951k, overall 0.15%
Amount of memory still referenced at the end of compilation increased from 60282k to 60410k, overall 0.21%
Overall memory needed: 95796k -> 95924k
Peak memory use before GGC: 88796k -> 88924k
Peak memory use after GGC: 87822k -> 87951k
Maximum of released memory in single GGC run: 19405k
Garbage: 601926k -> 601967k
Leak: 60282k -> 60410k
Overhead: 137344k -> 137344k
GGC runs: 653
comparing Gerald's testcase PR8361 compilation at -O3 level:
Peak amount of GGC memory allocated before garbage collecting increased from 90197k to 90321k, overall 0.14%
Peak amount of GGC memory still allocated after garbage collectin increased from 88649k to 88783k, overall 0.15%
Amount of memory still referenced at the end of compilation increased from 60622k to 60750k, overall 0.21%
Overall memory needed: 98368k -> 98432k
Peak memory use before GGC: 90197k -> 90321k
Peak memory use after GGC: 88649k -> 88783k
Maximum of released memory in single GGC run: 20099k -> 20095k
Garbage: 642088k -> 642048k
Leak: 60622k -> 60750k
Overhead: 148781k -> 148777k
GGC runs: 648 -> 647
Head of changelog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2004-12-08 07:21:28.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2004-12-08 11:30:47.000000000 +0000
@@ -1,3 +1,22 @@
+2004-12-08 Richard Sandiford <rsandifo@redhat.com>
+
+ * config/frv/frv.c (frv_sort_insn_group): Always initialize
+ packet_group->nop.
+
+2004-12-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/18672
+ * gimplify.c (canonicalize_addr_expr): Cope with array of
+ incomplete type.
+ (gimplify_conversion): Remove redundant checks.
+
+ * doc/trouble.texi (Non-bugs): Clarify empty loop removal.
+
+2004-12-08 Uros Bizjak <uros@kss-loka.si>
+
+ * config/i386/i386.c (output_387_binary_op,
+ ix86_prepare_fp_compare_args): Fix is_sse condition.
+
2004-12-07 Uros Bizjak <uros@kss-loka.si>
* config/i386/i386-protos.h (ix86_split_fp_branch): New rtx
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp 2004-12-08 01:29:20.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog 2004-12-08 11:30:59.000000000 +0000
@@ -1,3 +1,58 @@
+2004-12-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/18100
+ * decl.c (lookup_and_check_tag): Diagnose nested class with
+ the same name as enclosing class.
+
+2004-12-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/18803
+ * cp-tree.h (REFERENCE_REF_P): New.
+ (CPTI_TYPE_INFO_TYPE): Rename to ...
+ (CPTI_CONST_TYPE_INFO_TYPE): ... here.
+ (CPTI_TYPE_INFO_REF_TYPE): Remove.
+ (type_info_type_node): Rename to ...
+ (const_type_info_type_node): ... here.
+ (type_info_ref_type): Remove.
+ * call.c (build_user_type_conversion): Reformat.
+ (resolve_args): Do not convert_from_reference.
+ (build_object_call): Call convert_from_reference.
+ (prep_operand): Do not convert_from_reference.
+ (build_new_method_call): Likewise.
+ * class.c (build_vfield_ref): Likewise.
+ * cvt.c (convert_to_reference): Likewise.
+ (convert_from_reference): Build INDIRECT_REF here, not with
+ build_indirect_ref.
+ (convert_force): Do not convert_from_reference.
+ (build_expr_type_conversion): Likewise.
+ * decl.c (grok_reference_init): Likewise.
+ * decl2.c (delete_sanity): Likewise.
+ * except.c (initialize_handler_parm): Use POINTER_TYPE_P.
+ * init.c (build_dtor_call): Do not convert_from_reference.
+ * parser.c (cp_parser_template_argument): Unwrap indirected
+ reference. Allow TEMPLATE_PARM_INDEX as an object parm.
+ * pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use
+ convert_from_reference, if indicated.
+ <case CALL_EXPR>: Do not convert_from_reference.
+ <case PARM_DECL, VAR_DECL>: Convert_from_reference if needed.
+ (tsubst_initializer_list): Do not convert_from_reference.
+ * rtti.c (init_rtti_processing): Adjust node creation.
+ (throw_bad_typeid): Use const_type_info_type_node.
+ Do not convert_from_reference.
+ (typeid_ok_p): Use const_type_info_type_node.
+ (build_typeid, get_typeid): Always return type_info typed node.
+ (build_dynamic_cast_1): Dont convert_from_reference. Refactor.
+ * semantics.c (finish_stmt_expr_expr): Do not
+ convert_from_reference.
+ (finish_id_expression): Convert_from_reference as appropriate.
+ * typeck.c (decay_conversion): Do not convert_from_reference.
+ (finish_class_member_access_expr): Likewise.
+ (build_indirect_ref): Use POINTER_TYPE_P.
+ (convert_arguments): Do not convert_from_reference.
+ (build_modify_expr): Likewise.
+ (convert_for_initialization): Likewise.
+ * typeck2.c (build_x_arrow): Likewise.
+
2004-12-07 Ziemowit Laski <zlaski@apple.com>
* cp-tree.h (struct lang_type_class): Rename 'objc_protocols'
I am friendly script caring about memory consumption in GCC. Please contact
jh@suse.cz if something is going wrong.
The results can be reproduced by building 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.
Yours testing script.