A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Thu Dec 14 04:17:00 GMT 2006


Hi,

I am a friendly script caring about memory consumption in GCC.  Please
contact jh@suse.cz if something is going wrong.

Comparing memory consumption on compilation of combine.i, insn-attrtab.i,
and generate-3.4.ii I got:


comparing empty function compilation at -O0 level:
  Peak amount of GGC memory still allocated after garbage collectin increased from 1940k to 1942k, overall 0.10%
    Overall memory needed: 18273k -> 18277k
    Peak memory use before GGC: 2233k -> 2235k
    Peak memory use after GGC: 1940k -> 1942k
    Maximum of released memory in single GGC run: 293k
    Garbage: 422k -> 423k
    Leak: 2271k -> 2273k
    Overhead: 446k -> 446k
    GGC runs: 3

comparing empty function compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 2260k to 2263k, overall 0.13%
  Peak amount of GGC memory still allocated after garbage collectin increased from 1967k to 1970k, overall 0.15%
  Amount of memory still referenced at the end of compilation increased from 2303k to 2305k, overall 0.10%
    Overall memory needed: 18289k -> 18293k
    Peak memory use before GGC: 2260k -> 2263k
    Peak memory use after GGC: 1967k -> 1970k
    Maximum of released memory in single GGC run: 293k
    Garbage: 425k -> 425k
    Leak: 2303k -> 2305k
    Overhead: 450k -> 450k
    GGC runs: 3

comparing empty function compilation at -O1 level:
  Peak amount of GGC memory still allocated after garbage collectin increased from 1940k to 1942k, overall 0.10%
    Overall memory needed: 18373k -> 18377k
    Peak memory use before GGC: 2233k -> 2235k
    Peak memory use after GGC: 1940k -> 1942k
    Maximum of released memory in single GGC run: 293k
    Garbage: 426k -> 427k
    Leak: 2273k -> 2275k
    Overhead: 446k -> 446k
    GGC runs: 4

comparing empty function compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 2233k to 2236k, overall 0.13%
  Peak amount of GGC memory still allocated after garbage collectin increased from 1940k to 1942k, overall 0.10%
    Overall memory needed: 18385k -> 18389k
    Peak memory use before GGC: 2233k -> 2236k
    Peak memory use after GGC: 1940k -> 1942k
    Maximum of released memory in single GGC run: 293k -> 294k
    Garbage: 429k -> 430k
    Leak: 2273k -> 2275k
    Overhead: 447k -> 447k
    GGC runs: 4

comparing empty function compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 2233k to 2236k, overall 0.13%
  Peak amount of GGC memory still allocated after garbage collectin increased from 1940k to 1942k, overall 0.10%
    Overall memory needed: 18385k -> 18389k
    Peak memory use before GGC: 2233k -> 2236k
    Peak memory use after GGC: 1940k -> 1942k
    Maximum of released memory in single GGC run: 293k -> 294k
    Garbage: 429k -> 430k
    Leak: 2273k -> 2275k
    Overhead: 447k -> 447k
    GGC runs: 4

comparing combine.c compilation at -O0 level:
  Amount of memory still referenced at the end of compilation increased from 6447k to 6455k, overall 0.12%
    Overall memory needed: 28429k -> 28437k
    Peak memory use before GGC: 9285k -> 9287k
    Peak memory use after GGC: 8800k -> 8804k
    Maximum of released memory in single GGC run: 2643k -> 2641k
    Garbage: 37513k -> 37502k
    Leak: 6447k -> 6455k
    Overhead: 4666k -> 4869k
    GGC runs: 280

comparing combine.c compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 10811k to 10834k, overall 0.21%
  Peak amount of GGC memory still allocated after garbage collectin increased from 10440k to 10464k, overall 0.23%
  Amount of memory still referenced at the end of compilation increased from 9257k to 9331k, overall 0.79%
    Overall memory needed: 30513k -> 30521k
    Peak memory use before GGC: 10811k -> 10834k
    Peak memory use after GGC: 10440k -> 10464k
    Maximum of released memory in single GGC run: 2360k
    Garbage: 38085k -> 38077k
    Leak: 9257k -> 9331k
    Overhead: 5333k -> 5570k
    GGC runs: 272

comparing combine.c compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 16958k to 16979k, overall 0.12%
  Amount of produced GGC garbage increased from 55524k to 55685k, overall 0.29%
  Amount of memory still referenced at the end of compilation increased from 6479k to 6489k, overall 0.16%
    Overall memory needed: 29470k -> 29474k
    Peak memory use before GGC: 16958k -> 16979k
    Peak memory use after GGC: 16787k -> 16792k
    Maximum of released memory in single GGC run: 2255k -> 2254k
    Garbage: 55524k -> 55685k
    Leak: 6479k -> 6489k
    Overhead: 9642k -> 10562k
    GGC runs: 363 -> 360

comparing combine.c compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 16956k to 16988k, overall 0.19%
  Amount of produced GGC garbage increased from 71476k to 71699k, overall 0.31%
    Overall memory needed: 29470k -> 29474k
    Peak memory use before GGC: 16956k -> 16988k
    Peak memory use after GGC: 16787k -> 16792k
    Maximum of released memory in single GGC run: 2647k -> 2611k
    Garbage: 71476k -> 71699k
    Leak: 6610k -> 6611k
    Overhead: 11468k -> 12536k
    GGC runs: 417 -> 413

comparing combine.c compilation at -O3 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 18182k to 18226k, overall 0.24%
  Peak amount of GGC memory still allocated after garbage collectin increased from 17676k to 17749k, overall 0.41%
  Amount of produced GGC garbage increased from 105939k to 106169k, overall 0.22%
    Overall memory needed: 29598k -> 29602k
    Peak memory use before GGC: 18182k -> 18226k
    Peak memory use after GGC: 17676k -> 17749k
    Maximum of released memory in single GGC run: 4116k -> 4564k
    Garbage: 105939k -> 106169k
    Leak: 6682k -> 6688k
    Overhead: 16395k -> 17998k
    GGC runs: 471 -> 463

comparing insn-attrtab.c compilation at -O0 level:
  Amount of produced GGC garbage increased from 131968k to 132105k, overall 0.10%
    Overall memory needed: 89646k -> 89650k
    Peak memory use before GGC: 71190k -> 71193k
    Peak memory use after GGC: 44696k -> 44699k
    Maximum of released memory in single GGC run: 37868k
    Garbage: 131968k -> 132105k
    Leak: 9513k -> 9518k
    Overhead: 15975k -> 16952k
    GGC runs: 211

comparing insn-attrtab.c compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 133122k to 133512k, overall 0.29%
    Overall memory needed: 90830k -> 90826k
    Peak memory use before GGC: 72339k -> 72354k
    Peak memory use after GGC: 45952k -> 45967k
    Maximum of released memory in single GGC run: 37868k
    Garbage: 133122k -> 133512k
    Leak: 11184k -> 10982k
    Overhead: 16354k -> 17347k
    GGC runs: 209

comparing insn-attrtab.c compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 72446k to 73119k, overall 0.93%
  Peak amount of GGC memory still allocated after garbage collectin increased from 70077k to 70764k, overall 0.98%
  Amount of produced GGC garbage increased from 229261k to 229861k, overall 0.26%
    Overall memory needed: 94330k -> 96050k
    Peak memory use before GGC: 72446k -> 73119k
    Peak memory use after GGC: 70077k -> 70764k
    Maximum of released memory in single GGC run: 31671k
    Garbage: 229261k -> 229861k
    Leak: 9340k -> 9343k
    Overhead: 28172k -> 31154k
    GGC runs: 224 -> 226

comparing insn-attrtab.c compilation at -O2 level:
  Overall memory allocated via mmap and sbrk increased from 123310k to 128386k, overall 4.12%
  Peak amount of GGC memory allocated before garbage collecting increased from 78010k to 78731k, overall 0.92%
  Peak amount of GGC memory still allocated after garbage collectin increased from 75480k to 76200k, overall 0.95%
  Amount of produced GGC garbage increased from 282035k to 282674k, overall 0.23%
    Overall memory needed: 123310k -> 128386k
    Peak memory use before GGC: 78010k -> 78731k
    Peak memory use after GGC: 75480k -> 76200k
    Maximum of released memory in single GGC run: 30215k -> 30216k
    Garbage: 282035k -> 282674k
    Leak: 9343k -> 9345k
    Overhead: 34348k -> 37707k
    GGC runs: 248 -> 247

comparing insn-attrtab.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 113698k to 128162k, overall 12.72%
  Peak amount of GGC memory allocated before garbage collecting increased from 78036k to 78756k, overall 0.92%
  Peak amount of GGC memory still allocated after garbage collectin increased from 75505k to 76226k, overall 0.95%
  Amount of produced GGC garbage increased from 282863k to 283518k, overall 0.23%
    Overall memory needed: 113698k -> 128162k
    Peak memory use before GGC: 78036k -> 78756k
    Peak memory use after GGC: 75505k -> 76226k
    Maximum of released memory in single GGC run: 30409k -> 30410k
    Garbage: 282863k -> 283518k
    Leak: 9348k -> 9350k
    Overhead: 34576k -> 37940k
    GGC runs: 252 -> 253

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 92191k to 92331k, overall 0.15%
  Peak amount of GGC memory still allocated after garbage collectin increased from 91269k to 91417k, overall 0.16%
  Amount of produced GGC garbage increased from 209930k to 210224k, overall 0.14%
  Amount of memory still referenced at the end of compilation increased from 48078k to 48133k, overall 0.11%
    Overall memory needed: 119062k -> 119066k
    Peak memory use before GGC: 92191k -> 92331k
    Peak memory use after GGC: 91269k -> 91417k
    Maximum of released memory in single GGC run: 19185k -> 19252k
    Garbage: 209930k -> 210224k
    Leak: 48078k -> 48133k
    Overhead: 20539k -> 20979k
    GGC runs: 412 -> 413

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
  Peak amount of GGC memory allocated before garbage collecting increased from 104385k to 104696k, overall 0.30%
  Peak amount of GGC memory still allocated after garbage collectin increased from 103349k to 103652k, overall 0.29%
  Amount of produced GGC garbage increased from 216527k to 216791k, overall 0.12%
  Amount of memory still referenced at the end of compilation increased from 70950k to 71564k, overall 0.87%
    Overall memory needed: 131642k
    Peak memory use before GGC: 104385k -> 104696k
    Peak memory use after GGC: 103349k -> 103652k
    Maximum of released memory in single GGC run: 18862k -> 18947k
    Garbage: 216527k -> 216791k
    Leak: 70950k -> 71564k
    Overhead: 26156k -> 26883k
    GGC runs: 384

comparing Gerald's testcase PR8361 compilation at -O1 level:
  Amount of produced GGC garbage increased from 439924k to 442053k, overall 0.48%
  Amount of memory still referenced at the end of compilation increased from 50143k to 50198k, overall 0.11%
    Overall memory needed: 120098k -> 120074k
    Peak memory use before GGC: 96659k -> 96747k
    Peak memory use after GGC: 94406k -> 94461k
    Maximum of released memory in single GGC run: 18009k -> 17941k
    Garbage: 439924k -> 442053k
    Leak: 50143k -> 50198k
    Overhead: 101046k -> 107726k
    GGC runs: 565

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 494683k to 497118k, overall 0.49%
  Amount of memory still referenced at the end of compilation increased from 51112k to 51167k, overall 0.11%
    Overall memory needed: 120142k -> 120134k
    Peak memory use before GGC: 96686k -> 96775k
    Peak memory use after GGC: 94433k -> 94489k
    Maximum of released memory in single GGC run: 18009k -> 18082k
    Garbage: 494683k -> 497118k
    Leak: 51112k -> 51167k
    Overhead: 55999k -> 63569k
    GGC runs: 619 -> 621

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 514724k to 517485k, overall 0.54%
  Amount of memory still referenced at the end of compilation increased from 51087k to 51140k, overall 0.10%
    Overall memory needed: 121938k -> 121934k
    Peak memory use before GGC: 97680k -> 97763k
    Peak memory use after GGC: 96087k -> 96142k
    Maximum of released memory in single GGC run: 18403k -> 18476k
    Garbage: 514724k -> 517485k
    Leak: 51087k -> 51140k
    Overhead: 55482k -> 63491k
    GGC runs: 626 -> 625

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 137638k -> 137646k
    Peak memory use before GGC: 81585k -> 81587k
    Peak memory use after GGC: 58465k -> 58467k
    Maximum of released memory in single GGC run: 45166k -> 45167k
    Garbage: 148443k -> 148513k
    Leak: 7539k -> 7542k
    Overhead: 25101k -> 25327k
    GGC runs: 82

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
  Amount of memory still referenced at the end of compilation increased from 9247k to 9309k, overall 0.67%
    Overall memory needed: 138182k -> 138014k
    Peak memory use before GGC: 82218k -> 82233k
    Peak memory use after GGC: 59098k -> 59113k
    Maximum of released memory in single GGC run: 45232k
    Garbage: 148662k -> 148724k
    Leak: 9247k -> 9309k
    Overhead: 25566k -> 25823k
    GGC runs: 88

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 202462k to 205546k, overall 1.52%
  Peak amount of GGC memory still allocated after garbage collectin increased from 196531k to 199777k, overall 1.65%
  Amount of produced GGC garbage increased from 281969k to 283522k, overall 0.55%
    Overall memory needed: 423542k -> 426618k
    Peak memory use before GGC: 202462k -> 205546k
    Peak memory use after GGC: 196531k -> 199777k
    Maximum of released memory in single GGC run: 94103k -> 99746k
    Garbage: 281969k -> 283522k
    Leak: 29776k -> 29778k
    Overhead: 29673k -> 36217k
    GGC runs: 99 -> 97

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 202459k to 205539k, overall 1.52%
  Peak amount of GGC memory still allocated after garbage collectin increased from 196528k to 199770k, overall 1.65%
  Amount of produced GGC garbage increased from 362205k to 364129k, overall 0.53%
    Overall memory needed: 353098k -> 355578k
    Peak memory use before GGC: 202459k -> 205539k
    Peak memory use after GGC: 196528k -> 199770k
    Maximum of released memory in single GGC run: 96113k -> 96117k
    Garbage: 362205k -> 364129k
    Leak: 30359k -> 30361k
    Overhead: 45422k -> 51967k
    GGC runs: 106 -> 105

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
  Peak amount of GGC memory allocated before garbage collecting increased from 321489k to 326891k, overall 1.68%
  Peak amount of GGC memory still allocated after garbage collectin increased from 299831k to 304533k, overall 1.57%
  Amount of produced GGC garbage increased from 498586k to 504162k, overall 1.12%
    Overall memory needed: 769610k -> 769722k
    Peak memory use before GGC: 321489k -> 326891k
    Peak memory use after GGC: 299831k -> 304533k
    Maximum of released memory in single GGC run: 166488k -> 168269k
    Garbage: 498586k -> 504162k
    Leak: 45411k -> 45414k
    Overhead: 55694k -> 66989k
    GGC runs: 98 -> 97

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2006-12-12 11:12:21.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2006-12-14 02:18:19.000000000 +0000
@@ -1,3 +1,338 @@
+2006-12-13  Zdenek Dvorak <dvorakz@suse.cz>
+
+	* tree-ssa-loop-ivopts.c: Include tree-affine.h.
+	(divide): Removed.
+	(constant_multiple_of): Fix order of operators for division.
+	(aff_combination_const, aff_combination_elt, aff_combination_scale,
+	aff_combination_add_elt, aff_combination_add, aff_combination_convert,
+	tree_to_aff_combination, add_elt_to_tree, unshare_aff_combination,
+	aff_combination_to_tree): Moved to tree-affine.c and made to work with
+	double_int coefficients.
+	(get_computation_aff, get_computation_at): Work with double_int
+	coefficients.
+	(get_computation_cost_at): Do not use divide.
+	(rewrite_use_nonlinear_expr, rewrite_use_address, rewrite_use_compare):
+	Assert that expressing the computation did not fail.
+	* tree-ssa-address.c: Include tree-affine.h.
+	(add_to_parts, most_expensive_mult_to_index, addr_to_parts,
+	create_mem_ref): Work with double_int coefficients.
+	* tree-affine.c: New file.
+	* tree-affine.h: New file.
+	* tree-flow.h (struct affine_tree_combination): Removed.
+	* Makefile.in (tree-affine.o): Add.
+	(tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
+	dependency.
+
+2006-12-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+	PR middle-end/30191
+	Revert:
+	* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
+	the offset == 0 "then" clauses.
+	* config/rs6000/predicates.md (gpc_reg_operand): Check for
+	reload_in_progress.
+
+2006-12-13  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 53.
+	(FIXED_REGISTERS, CALL_USED_REGISTERS): Remove dir register.
+	(REG_ALLOC_ORDER): Remove one element due to removal of dir register.
+	(FRAME_POINTER_REGNUM): Update register number to 20.
+	(REG_CLASS_CONTENTS): Update contents due to removed dir register.
+	(HI_REGISTER_NAMES): Remove "dirflag".
+
+	* config/i386/i386.c (regclass_map): Remove dirflag entry.
+	(dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
+	Remove "dir" entry.
+	(ix86_md_asm_clobbers): Remove "dirflag" default asm clobber.
+
+	* config/i386/i386.md (R10_REG, R11_REG): Renumber.
+	(sse_prologue_save, *sse_prologue_save_insn): Renumber
+	hardcoded SSE register numbers.
+
+	* config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
+	hardcoded MMX register numbers.
+
+
+2006-12-13  Mark Shinwell  <shinwell@codesourcery.com>
+
+	* config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
+	FLDMX.  Rename function to...
+	(vfp_output_fldmd): ...this.
+	(vfp_output_fstmx): Output FSTMD instead of FSTMX.  Rename
+	function to...
+	(vfp_output_fstmd): ...this.
+	(vfp_emit_fstmx): Don't leave space in the frame layout for the
+	FSTMX format word.  Rename function to...
+	(vfp_emit_fstmd): ...this.
+	(arm_get_vfp_saved_size): Don't add in space for the FSTMX format
+	word.
+	(arm_output_epilogue): Adjust comment to reflect use of FSTMD.
+	(arm_unwind_emit_sequence): Don't compensate for the FSTMX format
+	word.  Also emit "vsave" assembler directives in such cases rather
+	than "save".
+	* config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
+	gnu_Unwind_Save_VFP): Adjust comments.
+	(gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
+	for saving and restoring using FSTMD and FLDMD rather than
+	FSTMX and FLDMX.
+	(gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
+	New functions for saving and restoring the VFPv3 registers 16 .. 31.
+	* config/arm/pr-support.c (gnu_unwind_execute): Add conditional
+	compilation case to correctly handle unwind opcode 0xc8 when using
+	VFP.
+	* config/arm/unwind-arm.c (struct vfpv3_regs): New.
+	(DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
+	(__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
+	__gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
+	Declare.
+	(restore_non_core_regs): Restore registers using FLDMD rather than
+	FLDMX if required.  Also handle restoration of VFPv3 registers.
+	(_Unwind_VRS_Pop): Handle saving and restoring of registers using
+	FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
+	including cases where the caller specifies a range of registers
+	that overlaps the d15/d16 boundary.
+
+2006-12-13  Diego Novillo  <dnovillo@redhat.com>
+
+	PR 30089
+	* tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
+	accomodate 511 operands.
+
+2006-12-13  Richard Guenther  <rguenther@suse.de>
+
+	* builtins.c (expand_builtin_cexpi): Fix typo.
+
+2006-12-13  Jan Hubicka  <jh@suse.cz>
+
+	* Makefile.in: Add dependencies.
+	* tree-pretty-print.c: Include value-prof.h
+	(dump_generic_bb_buff): Dump histograms
+	* value-prof.c: Include pointer-set.h
+	(gimple_alloc_histogram_value, histogram_hash, histogram_eq,
+	set_histogram_value, gimple_histogram_value,
+	gimple_add_histogram_value, gimple_remove_histogram_value,
+	gimple_histogram_value_of_type, dump_histogram_value,
+	dump_histograms_for_stmt, gimple_remove_stmt_histograms,
+	gimple_duplicate_stmt_histograms, visit_hist,
+	verify_histograms): New functions.
+	(tree_value_profile_transformations): Update for new histogram API.
+	(tree_divmod_fixed_value): Update for new histogram API.
+	(tree_divmod_fixed_value_transform): Update for new histogram API.
+	(tree_mod_pow2): Update for new histogram API.
+	(tree_mod_pow2_value_transform): Update for new histogram API.
+	(tree_mod_subtract): Update for new histogram API.
+	(tree_mod_subtract_transform): Update for new histogram API.
+	(tree_stringops_transform): Update for new histogram API.
+	(tree_divmod_values_to_profile): Update for new histogram API.
+	(tree_stringops_values_to_profile): Update for new histogram API.
+	(tree_find_values_to_profile): Update for new histogram API.
+	* value-prof.h (gimple_histogram_value): Declare.
+	(gimple_histogram_value_of_type): Declare.
+	(gimple_add_histogram_value): Declare.
+	(gimple_remove_histogram_value): Declare.
+	(dump_histograms_for_stmt): Declare.
+	(gimple_remove_histogram_value): Declare.
+	(gimple_remove_stmt_histograms): Declare.
+	(gimple_duplicate_stmt_histograms): Declare.
+	(verify_histograms): Declare.
+	* function.h
+	(struct funrction): Add value_histograms hash.
+	(VALUE_HISTOGRAMS): New macro.
+	* profile.c (compute_value_histograms): update for new API.
+	* tree-inline.c: Include value-prof.h
+	(copy_bb): Update histograms.
+	* tree-flow.h (struct stmt_ann_d): Do not contain pointer to histograms;
+	reorder to get smaller memory layout.
+	* tree-cfg.c: Include value-prof.h
+	(bsi_remove): Update histograms.
+	(bsi_replace): Update histograms.
+	(verify_stmts): Call histogram verifier.
+	(tree_duplicate_bb): Update histograms.
+	(move_block_to_fn): Update histograms.
+
+2006-12-13  Richard Guenther  <rguenther@suse.de>
+
+	* ipa-inline.c (cgraph_flatten_node): Replace leafify with
+	flatten.
+	(cgraph_decide_inlining): Likewise.
+
+2006-12-13  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/17687
+	* builtins.def (BUILT_IN_CEXPI, BUILT_IN_CEXPIF, BUILT_IN_CEXPIL):
+	New builtins for imaginary argument cexp.
+	* builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
+	BT_FN_COMPLEX_DOUBLE_DOUBLE, BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE):
+	New required builtin types.
+	* builtins.c (expand_builtin_cexpi): Declare.
+	(mathfn_built_in): Handle BUILT_IN_CEXPI.
+	(expand_builtin_cexpi): New static helper.
+	(expand_builtin): Call it.
+	(do_mpfr_sincos): Adjust for CEXPI evaluation.
+	(fold_builtin_sincos): New function to fold sincos to cepxi.
+
+2006-12-13  Richard Guenther  <rguenther@suse.de>
+
+	* ipa-reference.c (scan_for_static_refs): Also scan
+	tcc_comparison class trees.
+
+2006-12-12 David Daney  <ddaney@avtrex.com>
+
+	* config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
+	define.
+
+2006-12-12  Andrew Pinski  <pinskia@gmail.com>
+
+	* tree-vect-transform.c (vect_permute_load_chain):
+	Set DECL_GIMPLE_REG_P to true for the vect_perm_*
+	temp variables.
+
+2006-12-13  Sa Liu  <saliu@de.ibm.com>
+	    Ben Elliston  <bje@au.ibm.com>
+
+	* config/spu/spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
+	(REGISTER_TARGET_PRAGMAS): Don't zero warn_main flag.
+	* config/spu/spu-protos.h (spu_c_common_override_options):
+	Declare.
+	* config/spu/spu-c.c (spu_c_common_override_options): New.
+	* config/spu/spu.c (spu_override_options): Whitespace fix.
+
+2006-12-12  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+
+	* config/spu/spu.c (cpat_info): Fix an incorrectly identified case.
+
+2006-12-12  Geoffrey Keating  <geoffk@apple.com>
+
+	* mips-tdump.c: Replace CROSS_COMPILE with
+	CROSS_DIRECTORY_STRUCTURE.
+	* mips-tfile.c: Likewise.
+	* gcc.c: Likewise.
+	* configure.ac: Likewise.
+	* cppdefault.c: Likewise.
+	* Makefile.in: Likewise.
+	* config/alpha/osf.h: Likewise.
+	* config/i386/cygwin.h: Likewise.
+	* config/i386/beos-elf.h: Likewise.
+	* config/i386/nto.h: Likewise.
+	* config/fr30/fr30.h: Likewise.
+	* config/svr4.h: Likewise.
+	* config/rs6000/aix.h: Likewise.
+	* config/rs6000/sysv4.h: Likewise.
+	* config/pa/pa64-hpux.h: Likewise.
+	* config/pa/pa-hpux10.h: Likewise.
+	* config/pa/pa-hpux11.h: Likewise.
+	* collect2.c: Likewise.
+	* configure: Regenerate.
+
+	* doc/tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP
+	actually takes an unsigned HOST_WIDE_INT for its second parameter.
+
+2006-12-13  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
+	(spu_encode_section_info): New.
+	* config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
+	(SYMBOL_FLAG_ALIGN1): New.
+
+2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	PR tree-opt/28624
+	* tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary 
+	bitmap for EXECUTE_IF_SET_IN_BITMAP.
+
+2006-12-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	PR tree-opt/28436
+	* tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
+	(DECL_GIMPLE_REG_P): This.
+	* fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
+	using BIT_FIELD_REF.
+	* omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
+	* tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
+	and check for VECTOR_TYPE.
+	* expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
+	vector types.
+	* tree-flow-inline.h (var_can_have_subvars): Use the renamed
+	DECL_GIMPLE_REG_P.
+	* gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
+	and check for VECTOR_TYPE.
+	(gimplify_bind_expr): Likewise.
+	(gimplify_function_tree): Likewise.
+	* expmed.c: Include target.h.
+	(extract_bit_field): For vector mode, try find a better mode first.
+	If that fails use gen_lowpart (for vectors only).
+	* tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
+	and check for VECTOR_TYPE.
+	* tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
+	(insert_into_preds_of_block): Likewise.
+	(insert_fake_stores): Create gimple register store_tmps for
+	vector types.
+	* tree-sra.c (sra_elt): New field, is_vector_lhs.
+	(sra_walk_expr <case BIT_FIELD_REF>): For vector types that
+	are the left hand side, set the element's is_vector_lhs to true.
+	(instantiate_element): For vector types which were on the left
+	hand size, set DECL_GIMPLE_REG_P to false.
+	* tree-nested.c (create_tmp_var_for): Use the renamed DECL_GIMPLE_REG_P.	* tree-inline.c (declare_return_variable):  Use the renamed
+	DECL_GIMPLE_REG_P
+	and check for VECTOR_TYPE.
+	(copy_decl_to_var):  Use the renamed DECL_GIMPLE_REG_P.
+	(copy_result_decl_to_var): Likewise.
+	* tree-vect-transform.c (vect_get_new_vect_var): For vector types,
+	create a gimple register variable.
+	(vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
+	vect_inter_* temp variables.
+	* Makefile.in (expmed.o): Update dependencies.
+
+2006-12-12  Peter Bergner  <bergner@vnet.ibm.com>
+
+	* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
+	the offset == 0 "then" clauses.
+	* config/rs6000/predicates.md (gpc_reg_operand): Check for
+	reload_in_progress.
+
+2006-12-12  Marcin Dalecki  <martin@dalecki.de>
+
+	* doc/passes.texi: remove docs about "redundant PHI removal".
+	* tree-pass.h: remove orphaned declaration of pass_redundant_phi,
+	remove redundant pass_partition_blocks declaration.
+
+2006-12-12  Andrew Macleod  <amacleod@redhat.com>
+	
+	PR tree-optimization/30159
+	* tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name 
+	functions in case a default_def coalesce is required.
+
+2006-12-12  Jakub Jelinek  <jakub@redhat.com>
+
+	PR libstdc++/11953
+	* gthr-posix.h (_REENTRANT): Only define if __osf__ is defined.
+
+	* config/ia64/linux.h (CPP_SPEC): Define.
+	* config/s390/linux.h (CPP_SPEC): Define.
+
+2006-12-12  Jim Wilson  <wilson@specifix.com>
+	    Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/27761
+	* combine.c (try_combine): Don't create a useless garbage SET
+	if PATTERN (i2) is a PARALLEL.  If added_sets_1, save
+	PATTERN (i1) resp. SET from i1src to i1dest in i1pat
+	and use it to prevent accidental modification of i1src.
+
+2006-12-12  Ira Rosen  <irar@il.ibm.com>
+
+	* tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check
+	for stores with gaps.
+	* tree-vect-transform.c (vect_permute_store_chain): Create
+	interleave_high or interleave_low according to the endianess.
+
+2006-12-12  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/30147
+	* fold-const.c (fold_read_from_constant_string): Only fold read
+	from constant string if the result type is integer.
+
 2006-12-12  Olivier Hainque  <hainque@adacore.com>
 
 	* config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.


The results can be reproduced by building a 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.

Your testing script.



More information about the Gcc-regression mailing list