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: Mon, 20 Sep 2004 20:03:30 +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: 17824k
Peak memory use before GGC: 9295k
Peak memory use after GGC: 8606k
Maximum of released memory in single GGC run: 2870k
Garbage: 42610k
Leak: 6105k
Overhead: 5587k
GGC runs: 364
comparing combine.c compilation at -O1 level:
Overall memory needed: 18444k -> 18448k
Peak memory use before GGC: 9631k
Peak memory use after GGC: 8800k
Maximum of released memory in single GGC run: 2033k -> 2032k
Garbage: 72328k -> 72023k
Leak: 6671k
Overhead: 12180k -> 12134k
GGC runs: 588 -> 587
comparing combine.c compilation at -O2 level:
Overall memory allocated via mmap and sbrk increased from 21800k to 22152k, overall 1.61%
Overall memory needed: 21800k -> 22152k
Peak memory use before GGC: 12771k
Peak memory use after GGC: 12612k
Maximum of released memory in single GGC run: 2521k
Garbage: 87537k -> 87215k
Leak: 6425k
Overhead: 16671k -> 16623k
GGC runs: 578 -> 577
comparing combine.c compilation at -O3 level:
Overall memory allocated via mmap and sbrk increased from 22724k to 22780k, overall 0.25%
Amount of memory still referenced at the end of compilation increased from 6927k to 6943k, overall 0.23%
Overall memory needed: 22724k -> 22780k
Peak memory use before GGC: 13049k
Peak memory use after GGC: 12693k
Maximum of released memory in single GGC run: 3360k
Garbage: 115838k -> 115342k
Leak: 6927k -> 6943k
Overhead: 21801k -> 21730k
GGC runs: 646 -> 645
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 132860k
Peak memory use before GGC: 77100k
Peak memory use after GGC: 45185k
Maximum of released memory in single GGC run: 42129k
Garbage: 159513k
Leak: 10643k
Overhead: 19805k
GGC runs: 310
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 149640k -> 149536k
Peak memory use before GGC: 97256k
Peak memory use after GGC: 71527k
Maximum of released memory in single GGC run: 41234k
Garbage: 489798k -> 489861k
Leak: 11076k
Overhead: 85510k -> 85521k
GGC runs: 466
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 224488k -> 224476k
Peak memory use before GGC: 112816k
Peak memory use after GGC: 87087k
Maximum of released memory in single GGC run: 35978k -> 35979k
Garbage: 542374k -> 542435k
Leak: 11209k
Overhead: 95623k -> 95634k
GGC runs: 388
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 224484k -> 224464k
Peak memory use before GGC: 112821k
Peak memory use after GGC: 87092k
Maximum of released memory in single GGC run: 35979k
Garbage: 543485k -> 543545k
Leak: 11255k
Overhead: 96025k -> 96036k
GGC runs: 395
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 115372k
Peak memory use before GGC: 92254k
Peak memory use after GGC: 90048k
Maximum of released memory in single GGC run: 20148k
Garbage: 273435k
Leak: 60277k
Overhead: 35270k
GGC runs: 556
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 125580k -> 125592k
Peak memory use before GGC: 95711k
Peak memory use after GGC: 88914k
Maximum of released memory in single GGC run: 19544k
Garbage: 630886k -> 630112k
Leak: 62405k -> 62423k
Overhead: 130424k -> 130315k
GGC runs: 802
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 126632k -> 126644k
Peak memory use before GGC: 95711k
Peak memory use after GGC: 88915k
Maximum of released memory in single GGC run: 19544k
Garbage: 691870k -> 691340k
Leak: 62974k -> 62986k
Overhead: 156533k -> 156462k
GGC runs: 836 -> 834
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 124928k -> 125048k
Peak memory use before GGC: 92217k -> 92211k
Peak memory use after GGC: 90398k
Maximum of released memory in single GGC run: 20259k
Garbage: 731277k -> 730435k
Leak: 63366k -> 63377k
Overhead: 167615k -> 167521k
GGC runs: 827 -> 825
Head of changelog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2004-09-19 09:26:28.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2004-09-20 18:48:46.000000000 +0000
@@ -1,3 +1,98 @@
+2004-09-20 Jan Hubicka <jh@suse.cz>
+
+ * predict.c (return_prediction): New function.
+ (apply_return_prediction): Likewise.
+ (tree_bb_level_predictions): Likewise.
+ (tree_estimate_probability): Add noreturn exit edges; call
+ bb_level_predictions; fix logic of return heuristics.
+ (predict_paths_leading_to): Rescuesce from old CVS version of
+ process_note_prediction function.
+ * predict.def (PRED_TREE_EARLY_RETURN): New predictor.
+
+2004-09-20 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.c (s390_frame_info): Added alignment statement for
+ floating point register area on stack.
+
+2004-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * predict.c (expr_expected_value): Use *_CLASS_P macros.
+
+2004-09-20 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (compute_antic_aux): Use malloc'd worklist, to avoid
+ generating useless garbage.
+
+2004-09-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * builtins.c (fold_builtin): Call the new omonymous
+ target hook for machine-dependent built-ins.
+ * target-def.h (TARGET_FOLD_BUILTIN): New.
+ * target.h (struct gcc_target): Add the fold_builtin hook.
+ * targhooks.c (default_fold_builtin): New.
+ * targhooks.h (default_fold_builtin): Declare it.
+
+2004-09-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * cfg.c, tree-ssa-threadupdate.c, tree-vectorizer.c: Fix
+ comment typos.
+
+2004-09-20 Richard Sandiford <rsandifo@redhat.com>
+
+ PR target/17565
+ * config/mips/mips.md (define_asm_attributes): Set can_delay to no.
+
+2004-09-20 Jan Hubicka <jh@suse.cz>
+
+ * predict.c (estimate_probability): Remove unnecesary code.
+
+2004-09-19 Ira Rosen <irar@il.ibm.com>
+
+ * tree-vectorizer.h (stmt_vec_info): Add vect_dr_base field.
+ (STMT_VINFO_VECT_DR_BASE): Declare.
+ (VECT_SMODULO): Declare.
+ * tree-vectorizer.c (vect_compute_array_ref_alignment): New function.
+ (vect_compute_array_base_alignment): New function.
+ (vect_analyze_data_ref_access): Check array indices. Remove one
+ dimensional arrays restriction.
+ (vect_get_ptr_offset): New function.
+ (vect_get_symbl_and_dr): New function.
+ (vect_get_base_and_bit_offset): Support additional data refs. Renamed
+ (former name vect_get_base_decl_and_bit_offset).
+ (vect_create_index_for_array_ref): Removed.
+ (vect_create_index_for_vector_ref): New function.
+ (vect_create_addr_base_for_vector_ref): New function.
+ (vect_create_data_ref): Handle additional data refs. Call
+ vect_create_index_for_vector_ref and vect_create_addr_base_for_vector_ref.
+ (vect_compute_data_ref_alignment): Support the changes. Call
+ vect_get_base_and_bit_offset.
+ (vect_analyze_data_refs): Call vect_get_symbl_and_dr. Support additional
+ data refs. Store vect_dr_base.
+ (vect_analyze_data_ref_accesses): Support nonconstant init.
+ (new_stmt_vec_info): Initialize vect_dr_base field.
+ (vect_is_simple_iv_evolution): Call initial_condition_in_loop_num.
+ (get_vectype_for_scalar_type): Check for BLKmode.
+ * tree-chrec.h (initial_condition_in_loop_num): Declare.
+ * tree-chrec.c (initial_condition_in_loop_num): New function.
+ (chrec_component_in_loop_num): New function.
+ (evolution_part_in_loop_num): Call chrec_component_in_loop_num.
+ * tree-data-ref.c (analyze_array_indexes): Change parameter (access_fns)
+ to be pointer to varray_type.
+
+2004-09-19 Jan Hubicka <jh@suse.cz>
+
+ * basic-block.h (update_bb_profile_after_threading): Declare.
+ * cfg.c (update_bb_profile_after_threading): Break out from ...
+ * cfgcleanup.c (try_forward_edges): ... here; use it.
+ * tree-ssa-dom.c (thread_across_edge): Use it.
+ * tree-ssa-threadupdate.c (create_block_for_threading): Zero out
+ profile of the new BB.
+
+2004-09-19 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-pre.c (insert_into_set): Don't put
+ is_gimple_min_invariant values into the set.
+
2004-09-19 Andreas Jaeger <aj@suse.de>
* tree-ssa-dom.c (restore_nonzero_vars_to_original_value): Fix
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp 2004-09-18 20:25:11.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog 2004-09-20 05:07:22.000000000 +0000
@@ -1,3 +1,8 @@
+2004-09-19 Mark Mitchell <mark@codesourcery.com>
+
+ * decl2.c (determine_visibility): Allow class visibility
+ directives to override targetm.cxx.export_class_data.
+
2004-09-18 Kazu Hirata <kazu@cs.umass.edu>
* call.c, semantics.c: Follow spelling conventions.
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.