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: Thu, 03 Feb 2005 18:29:32 +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: 24649k
Peak memory use before GGC: 9351k
Peak memory use after GGC: 8665k
Maximum of released memory in single GGC run: 2864k
Garbage: 41665k
Leak: 6387k
Overhead: 5772k
GGC runs: 328
comparing combine.c compilation at -O1 level:
Overall memory needed: 25501k -> 25505k
Peak memory use before GGC: 9229k
Peak memory use after GGC: 8733k
Maximum of released memory in single GGC run: 2029k
Garbage: 61222k
Leak: 6749k
Overhead: 9981k
GGC runs: 503
comparing combine.c compilation at -O2 level:
Overall memory needed: 29549k
Peak memory use before GGC: 12663k
Peak memory use after GGC: 12537k
Maximum of released memory in single GGC run: 2597k
Garbage: 79460k
Leak: 6585k
Overhead: 14133k
GGC runs: 516
comparing combine.c compilation at -O3 level:
Overall memory needed: 20156k
Peak memory use before GGC: 12796k
Peak memory use after GGC: 12537k
Maximum of released memory in single GGC run: 3409k
Garbage: 107428k
Leak: 7107k
Overhead: 18953k
GGC runs: 582
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 114136k
Peak memory use before GGC: 74739k
Peak memory use after GGC: 45485k
Maximum of released memory in single GGC run: 39340k
Garbage: 152660k
Leak: 10976k
Overhead: 19969k
GGC runs: 273
comparing insn-attrtab.c compilation at -O1 level:
Overall memory allocated via mmap and sbrk increased from 123952k to 124276k, overall 0.26%
Overall memory needed: 123952k -> 124276k
Peak memory use before GGC: 78748k
Peak memory use after GGC: 70095k
Maximum of released memory in single GGC run: 40779k
Garbage: 366127k
Leak: 11353k
Overhead: 69302k
GGC runs: 396
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 147408k
Peak memory use before GGC: 98349k
Peak memory use after GGC: 83466k
Maximum of released memory in single GGC run: 39384k
Garbage: 480610k
Leak: 11234k
Overhead: 84552k
GGC runs: 341
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 137904k
Peak memory use before GGC: 98351k
Peak memory use after GGC: 83467k
Maximum of released memory in single GGC run: 39385k
Garbage: 481658k
Leak: 11273k
Overhead: 84702k
GGC runs: 347
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 111096k
Peak memory use before GGC: 86885k
Peak memory use after GGC: 85935k
Maximum of released memory in single GGC run: 19282k
Garbage: 245826k
Leak: 55495k
Overhead: 43290k
GGC runs: 367
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 103705k
Peak memory use before GGC: 85967k
Peak memory use after GGC: 84933k
Maximum of released memory in single GGC run: 18946k
Garbage: 445585k
Leak: 56775k
Overhead: 65539k
GGC runs: 526
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 104741k
Peak memory use before GGC: 85967k
Peak memory use after GGC: 84933k
Maximum of released memory in single GGC run: 18945k
Garbage: 488690k
Leak: 57372k
Overhead: 75296k
GGC runs: 584
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 112437k
Peak memory use before GGC: 92707k
Peak memory use after GGC: 86227k
Maximum of released memory in single GGC run: 19713k
Garbage: 504549k
Leak: 57531k
Overhead: 76986k
GGC runs: 569
Head of changelog is:
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog 2005-02-03 13:03:37.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog 2005-02-03 17:30:56.000000000 +0000
@@ -1,3 +1,146 @@
+2005-02-03 Leehod Baruch <leehod@il.ibm.com>
+ Dorit Naishlos <dorit@il.ibm.com>
+
+ * tree-vectorizer.h (LOC): New type.
+ (UNKNOWN_LOC, EXPR_LOC, LOC_FILE, LOC_LINE): New macros.
+ (loop_line_number): New field in struct _loop_vec_info.
+ (LOOP_VINFO_LOC, LOOP_LOC): New macros.
+
+ * tree-vectorizer.c (input.h): Included.
+ (find_loop_location): New function.
+ (vect_debug_stats): Argument changed from loop to LOC. Computation of
+ loop line number removed.
+ (vect_debug_details): Likewise.
+ (new_loop_vec_info): Initialize new field LOOP_VINFO_LOC.
+
+ (slpeel_make_loop_iterate_ntimes): Call find_loop_location. Argument in
+ call to vect_debug_details/stats changed from loop to loop_loc.
+ (slpeel_tree_duplicate_loop_to_edge_cfg): Likewise.
+ (slpeel_tree_peel_loop_to_edge): Likewise.
+
+ (vect_analyze_offset_expr): Argument in call to vect_debug_details/stats
+ changed from NULL to UNKNOWN_LOC.
+ (vect_get_base_and_offset):
+ (vect_create_addr_base_for_vector_ref):
+ (get_vectype_for_scalar_type):
+ (vect_create_data_ref_ptr):
+ (vect_init_vector):
+ (vect_get_vec_def_for_operand):
+ (vect_finish_stmt_generation):
+ (vectorizable_assignment):
+ (vectorizable_operation):
+ (vectorizable_store):
+ (vectorizable_load):
+ (vect_transform_stmt):
+ (vect_update_ivs_after_vectorizer):
+ (vect_do_peeling_for_loop_bound):
+ (vect_do_peeling_for_alignment):
+ (vect_transform_loop):
+ (vect_is_simple_use):
+ (vect_analyze_operations):
+ (vect_is_simple_iv_evolution):
+ (vect_analyze_scalar_cycles):
+ (vect_analyze_data_ref_dependences):
+ (vect_compute_data_ref_alignment):
+ (vect_enhance_data_refs_alignment):
+ (vect_analyze_data_ref_access):
+ (vect_analyze_data_ref_accesses):
+ (vect_analyze_pointer_ref_access):
+ (vect_get_memtag_and_dr):
+ (vect_analyze_data_refs):
+ (vect_mark_relevant):
+ (vect_stmt_relevant_p):
+ (vect_mark_stmts_to_be_vectorized):
+ (vect_can_advance_ivs_p):
+ (vect_get_loop_niters):
+ (vect_analyze_loop):
+ (vectorize_loops): Likewise.
+
+ (vectorizable_load): Argument in call to vect_debug_details/stats
+ changed from loop to LOOP_LOC (loop_vinfo).
+ (vect_transform_loop):
+ (vect_analyze_operations):
+ (vect_analyze_scalar_cycles):
+ (vect_analyze_data_ref_dependence):
+ (vect_enhance_data_refs_alignment):
+ (vect_analyze_data_ref_accesses):
+ (vect_analyze_pointer_ref_access):
+ (vect_analyze_data_refs):
+ (vect_analyze_loop): Likewise.
+
+ (vect_analyze_loop_form): Argument in call to vect_debug_details/stats
+ changed from loop to loop_loc.
+
+ (vect_enhance_data_refs_alignment): Removed unused variable loop.
+
+2005-02-03 Leehod Baruch <leehod@il.ibm.com>
+ Dorit Naishlos <dorit@il.ibm.com>
+
+ * tree-vectorizer.c (vect_analyze_data_ref_dependence): Function
+ declaration added.
+ (vect_analyze_data_ref_dependences): Likewise.
+
+ (vect_is_simple_use): Argument changed from loop structure to
+ loop_vect_info structure.
+ (vect_can_advance_ivs_p): Likewise.
+ (vect_create_index_for_vector_ref): Likewise.
+ (vect_update_ivs_after_vectorizer): Likewise.
+ (new_stmt_vec_info): Likewise.
+
+ (new_loop_vec_info): Second argument in call to new_stmt_vec_info was
+ changed from loop to loop_vinfo.
+ (vect_create_data_ref_ptr): First argument in call to
+ vect_create_index_for_vector_ref was changed from loop to loop_vinfo.
+ (vectorizable_assignment): Second argument in call to vect_is_simple_use
+ was changed from loop to loop_vinfo.
+ (vectorizable_operation): Likewise.
+ (vectorizable_store): Likewise.
+ (vect_mark_stmts_to_be_vectorized): Likewise.
+ (vect_do_peeling_for_loop_bound): First argument in call to
+ vect_update_ivs_after_vectorizer was changed from loop to loop_vinfo.
+ (vect_analyze_operations): Argument in call to vect_can_advance_ivs_p
+ was changed from loop to loop_vinfo.
+ (vect_analyze_data_ref_dependences): Third argument in call to
+ vect_analyze_data_ref_dependence was changed from loop to loop_vinfo.
+
+ (vect_create_index_for_vector_ref): Get the loop from loop_vinfo.
+ (vect_create_data_ref_ptr): Likewise.
+ (vect_init_vector): Likewise.
+ (vect_get_vec_def_for_operand): Likewise.
+ (vectorizable_assignment): Likewise.
+ (vectorizable_operation): Likewise.
+ (vectorizable_store): Likewise.
+ (vectorizable_load): Likewise.
+ (vect_update_ivs_after_vectorizer): Likewise.
+ (vect_is_simple_use): Likewise.
+ (vect_analyze_data_ref_dependence): Likewise.
+ (vect_analyze_pointer_ref_access): Likewise.
+ (vect_can_advance_ivs_p): Likewise.
+
+ * tree-vectorizer.h: (_loop_vec_info): Definition and macros moved
+ before _stmt_vec_info.
+ (_stmt_vec_info): Loop field replaced by loop_vec_info.
+ (STMT_VINFO_LOOP): Replaced with STMT_VINFO_LOOP_VINFO.
+ (new_stmt_vec_info): Argument changed from loop structure to
+ loop_vect_info structure
+
+ (vect_analyze_data_ref_dependences): Unnecessary line was removed.
+ (vect_analyze_offset_expr): Avoid 80 columns overflow.
+ (vect_create_addr_base_for_vector_ref): Likewise.
+ (vect_analyze_pointer_ref_access): Likewise.
+
+2005-02-03 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/19768
+ * tree-ssa-dse.c (fix_phi_uses): Update the occurs in abnormal
+ phi flag if the phi is abnormal.
+
+2005-02-03 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/19736
+ * tree-ssa.c (replace_immediate_uses): Update the immediate_uses
+ information for the new statement.
+
2005-02-03 Joseph S. Myers <joseph@codesourcery.com>
PR driver/19117
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.