This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PR 30089: Fix ICE in operand allocation
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Diego Novillo <dnovillo at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 14 Dec 2006 11:33:32 +0100
- Subject: Re: PR 30089: Fix ICE in operand allocation
- References: <45803660.7080704@redhat.com>
>
> In the second testcase of this PR, we are creating very many
> subvariables for one of the structures in the code. Since these
> sub-variables happen to be unaliased, we are adding a VUSE operand for
> each of them.
>
> Andrew suggested to re-state this limit in terms of operands, instead
> of bytes. He is re-working the code to support multiple-operands and
> he will likely make this limit more flexible.
>
> We should however, notice that we are trying to add an unreasonable
> number of virtual operands. Though, ICEing is perhaps not the kindest
> way.
>
> Setting this limit to 511 operands for now (an extra pointer is taken
> up by the buffer).
>
> The test still takes a lot more memory than it probably should. I
> will be working on that. I have cc1plus topping at 1Gb on x86_64. But
> the alias analysis times are more reasonable:
Hi,
I would say that this patch is the most likely suspect for memory
increase reported for this night. (memory tester jammed, so there are
quite few patches cumulated together).
It is 12% for insn-attrtrab, but we are still bellow memory usage before
your merge and above memory usage before original Daniel's aliasing
fixes (that was about 100MB, now we are almost 130)
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.