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]

GCC memory consumption increased by recent patch!


hermes.suse.de (hermes-ext.suse.de [195.135.221.8])
	(using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits))
	(No client certificate requested)
	by mx2.suse.de (Postfix) with ESMTP id A538F9B43
	for <gcc-regression@gcc.gnu.org>; Sun,  8 May 2005 18:27:08 +0200 (CEST)
Date: Sun, 08 May 2005 16:27:07 +0000
From: gcctest@suse.de
To: jh@suse.cz, gcc-regression@gcc.gnu.org
Subject: GCC memory consumption increased by recent patch!
Message-ID: <427E3DDB.mail485116OIF@suse.de>
User-Agent: nail 10.3 11/29/02
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

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: 24996k -> 24988k
    Peak memory use before GGC: 9438k
    Peak memory use after GGC: 8751k
    Maximum of released memory in single GGC run: 2797k
    Garbage: 42333k -> 42325k
    Leak: 6471k
    Overhead: 5873k -> 5875k
    GGC runs: 327

comparing combine.c compilation at -O1 level:
    Overall memory needed: 27168k -> 27176k
    Peak memory use before GGC: 8818k -> 8786k
    Peak memory use after GGC: 8552k
    Maximum of released memory in single GGC run: 2171k
    Garbage: 60728k -> 60488k
    Leak: 6838k
    Overhead: 7619k -> 7597k
    GGC runs: 500

comparing combine.c compilation at -O2 level:
    Overall memory needed: 19948k
    Peak memory use before GGC: 12763k
    Peak memory use after GGC: 12633k
    Maximum of released memory in single GGC run: 2618k
    Garbage: 86031k -> 85773k
    Leak: 6656k
    Overhead: 11016k -> 10980k
    GGC runs: 524

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 7103k to 7119k, overall 0.22%
    Overall memory needed: 22884k -> 23100k
    Peak memory use before GGC: 14731k -> 14713k
    Peak memory use after GGC: 12960k -> 12944k
    Maximum of released memory in single GGC run: 3069k
    Garbage: 119394k -> 119060k
    Leak: 7103k -> 7119k
    Overhead: 15203k -> 15171k
    GGC runs: 591

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 85868k
    Peak memory use before GGC: 74239k
    Peak memory use after GGC: 45259k
    Maximum of released memory in single GGC run: 38092k
    Garbage: 154683k -> 154674k
    Leak: 11186k
    Overhead: 19888k -> 19889k
    GGC runs: 268

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 99364k -> 99136k
    Peak memory use before GGC: 72837k
    Peak memory use after GGC: 64735k
    Maximum of released memory in single GGC run: 37096k -> 37094k
    Garbage: 309793k -> 308941k
    Leak: 11478k
    Overhead: 38013k -> 38035k
    GGC runs: 375

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 142428k
    Peak memory use before GGC: 116905k
    Peak memory use after GGC: 88272k
    Maximum of released memory in single GGC run: 35225k
    Garbage: 426751k -> 425909k
    Leak: 11300k
    Overhead: 52895k -> 52920k
    GGC runs: 331

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 142452k -> 142448k
    Peak memory use before GGC: 116907k
    Peak memory use after GGC: 88274k
    Maximum of released memory in single GGC run: 35225k
    Garbage: 427504k -> 426661k
    Leak: 11330k
    Overhead: 53019k -> 53042k
    GGC runs: 337 -> 336

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 112436k
    Peak memory use before GGC: 87845k
    Peak memory use after GGC: 86389k
    Maximum of released memory in single GGC run: 20856k
    Garbage: 248773k -> 248198k
    Leak: 53984k
    Overhead: 43167k -> 43233k
    GGC runs: 370

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 95036k
    Peak memory use before GGC: 86942k
    Peak memory use after GGC: 85413k
    Maximum of released memory in single GGC run: 20530k
    Garbage: 560180k -> 555534k
    Leak: 57730k -> 57727k
    Overhead: 72673k -> 72127k
    GGC runs: 597 -> 591

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 95028k -> 95020k
    Peak memory use before GGC: 86943k
    Peak memory use after GGC: 85414k
    Maximum of released memory in single GGC run: 20531k
    Garbage: 652105k -> 647404k
    Leak: 58598k
    Overhead: 90702k -> 90128k
    GGC runs: 688

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 96028k -> 95996k
    Peak memory use before GGC: 87872k
    Peak memory use after GGC: 86704k
    Maximum of released memory in single GGC run: 20795k
    Garbage: 672315k -> 667395k
    Leak: 59652k
    Overhead: 93426k -> 92913k
    GGC runs: 691 -> 686

Head of changelog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-05-08 02:45:02.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-05-08 15:26:47.000000000 +0000
@@ -1,3 +1,123 @@
+2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* tree-dfa.c (referenced_vars, add_referenced_var): Use VEC
+	instead of VARRAY.
+	* tree-flow.h (num_referenced_var, referenced_var): Likewise.
+	* tree-into-ssa.c (mark_def_site_blocks): Likewise.
+	* tree-ssa.c (init_tree_ssa, delete_tree_ssa): Likewise.
+	* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
+
+2005-05-08  Stephane Carrez  <stcarrez@nerim.fr>
+
+	PR target/16925
+	* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Handle split of
+	64-bit constants on 64-bit hosts.
+	(m68hc11_split_logical): Simplify.
+	(m68hc11_split_move): Likewise.
+
+2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
+	    Paolo Bonzini  <bonzini@gnu.org>
+
+	* Makefile.in (cs-tconfig.h): Pass USED_FOR_TARGET to mkconfig.sh
+	* aclocal.m4 (GCC_TARGET_TEMPLATE, AH_TEMPLATE): New.
+	* configure.ac (enable_checking): Fix typos in runtime_checking.
+	(ENABLE_RUNTIME_CHECKING): Mark as target template.
+	(xm_file): Prepend auto-host.h
+	(HAVE_GAS_HIDDEN, HAVE_LD_EH_FRAME_HDR): Mark as target template.
+	* mkconfig.sh: Do not automatically define USED_FOR_TARGET in
+	tconfig.h.
+	* crtstuff.c: Do not include auto-host.h.
+	(IN_LIBGCC2): Do not define.
+	* gcov-io.h: Include tconfig.h, not auto-host.h.
+	* libgcc2.c: Do not include auto-host.h.
+	(abort): Do not undefine.
+	* libgcov.c: Remove unneeded comment about config.h.
+	* unwind-dw2-fde-glibc.c: Do not inlude auto-host.h.
+	* config.in, configure: Regenerated.
+	
+2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
+	    Falk Hueffner  <falk@debian.org>
+
+	* config/alpha/alpha.c (tls_symbolic_operand_1): Use gcc_assert
+	and gcc_unreachable as appropriate.
+	(get_aligned_mem, get_unaligned_address,
+	alpha_emit_set_long_const, alpha_emit_conditional_branch,
+	alpha_emit_setcc, alpha_emit_conditional_move,
+	alpha_lookup_xfloating_lib_func, alpha_compute_xfloating_mode_arg,
+	alpha_emit_xfloating_libcall, alpha_split_tfmode_pair,
+	alpha_expand_unaligned_load, alpha_expand_block_move,
+	alpha_expand_zap_mask, get_trap_mode_suffix,
+	get_round_mode_suffix, get_some_local_dynamic_name,
+	print_operand_address, function_arg, alpha_return_in_memory,
+	function_value, alpha_expand_builtin,
+	alpha_initial_elimination_offset, alpha_expand_epilogue,
+	summarize_insn, alpha_handle_trap_shadows, alphaev5_insn_pipe,
+	alphaev5_next_group, alpha_align_insns,
+	unicosmk_initial_elimination_offset, unicosmk_unique_section,
+	unicosmk_ssib_name): Likewise.
+	* config/alpha/alpha.h (ASM_OUTPUT_ADDR_VEC_ELT): Likewise.
+	* config/alpha/unicosmk.h (TRAMPOLINE_TEMPLATE,
+	ASM_OUTPUT_ADDR_DIFF_ELT, ASM_OUTPUT_ADDR_DIFF_VEC): Likewise.
+	* config/alpha/vms.h (INITIAL_ELIMINATION_OFFSET,
+	ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
+	* config/alpha/alpha.md (*divmodsi_internal_er,
+	*divmoddi_internal_er, ashldi3, *insxl, sibcall, call_osf,
+	call_nt, call_umk, call_vms, call_value, sibcall_value,
+	call_value_osf, call_value_nt, call_value_vms, call_value_umk,
+	*call_vms_1, *movmemdi_1, *clrmemdi_1, *call_value_vms_1): Likewise.
+	* config/alpha/predicates.md (input_operand): Likewise.
+
+2005-05-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* config/frv/frv.c (frv_default_flags_for_cpu): Use gcc_assert and
+	gcc_unreachable, as appropriate.
+	(frv_function_prologue, frv_alloc_temp_reg,
+	frv_initial_elimination_offset, frv_expand_block_move,
+	frv_expand_block_clear, frv_print_operand_jump_hint,
+	frv_legitimize_tls_address, unspec_got_name, frv_emit_move,
+	frv_emit_movsi, frv_split_cond_move, frv_split_minmax,
+	frv_ifcvt_modify_insn, frv_ifcvt_modify_final,
+	frv_adjust_field_align, frv_insn_unit, frv_cond_flags,
+	frv_sort_insn_group, frv_reorder_packet, frv_matching_accg_mode,
+	frv_in_small_data_p, frv_asm_out_constructor,
+	frv_asm_out_destructor, frv_output_dwarf_dtprel): Likewise.
+	* config/frv/frv.md (reload_incc_fp, *cond_exec_si_binary1,
+	*cond_exec_si_binary2, *cond_exec_si_divide, *cond_exec_si_unary1,
+	*cond_exec_sf_conv, *cond_exec_sf_add, call, sibcall, call_value,
+	sibcall_value, casesi): Likewise.
+
+	* config/mn10300/mn10300.c (print_operand): Use gcc_assert and
+	gcc_unreachable as appropriate.
+	(print_operand_address, mn10300_print_reg_list, expand_prologue,
+	expand_epilogue, notice_update_cc, initial_offset,
+	mn10300_address_cost_1): Likewise.
+	* config/mn10300/mn10300.md: Likewise.
+	(absdf2, abssf2, negdf2, negsf2): Likewise.
+
+2005-05-08  Richard Sandiford  <rsandifo@redhat.com>
+
+	PR target/21416
+	* config/mips/mips.c (mips_emit_compare): Don't reverse UNGE and UNGT
+	comparisons.
+	* config/mips/mips.md (swapped_fcond): New code macro and attribute.
+	(sgt_<mode>, sge_<mode>): Generalize to all members of swapped_fcond,
+	including sunge_<mode> and sungt_<mode>.
+
+2005-05-08  Richard Sandiford  <rsandifo@redhat.com>
+
+	* integrate.h (get_hard_reg_initial_val): Change type of register
+	parameter from int to unsigned int.
+	(has_hard_reg_initial_val): Likewise.
+	* integrate.c (get_hard_reg_initial_val): Likewise.
+	(has_hard_reg_initial_val): Likewise.  Remove cast to unsigned int.
+
+2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* except.c (eh_status): Change the type of ttype_data to
+	VEC(tree,gc)*.
+	(add_ttypes_entry, assign_filter_values,
+	output_function_exception_table): Use VEC instead of VARRAY.
+
 2005-05-07  David Edelsohn  <edelsohn@gnu.org>
 
 	* config/rs6000/rs6000.md (popcount<mode>2): Fix non-C90 constant.

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.


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