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!


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.


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