A recent patch increased GCC's memory consumption!

gcctest@suse.de gcctest@suse.de
Mon Mar 31 18:24:00 GMT 2008


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:
    Overall memory needed: 8152k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 130k
    Garbage: 239k
    Leak: 957k
    Overhead: 80k
    GGC runs: 2
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O0 -g level:
    Overall memory needed: 8168k
    Peak memory use before GGC: 1130k
    Peak memory use after GGC: 1035k
    Maximum of released memory in single GGC run: 129k
    Garbage: 241k
    Leak: 989k
    Overhead: 85k
    GGC runs: 4
Testing has produced no results
Testing has produced no results

comparing empty function compilation at -O1 level:
    Overall memory needed: 8204k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 132k
    Garbage: 241k
    Leak: 957k
    Overhead: 81k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 960k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 960k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O2 level:
    Overall memory needed: 8224k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 245k
    Leak: 958k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 960k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 960k
    Post-IPA-Overhead: 79k

comparing empty function compilation at -O3 level:
    Overall memory needed: 8224k
    Peak memory use before GGC: 1103k
    Peak memory use after GGC: 1000k
    Maximum of released memory in single GGC run: 135k
    Garbage: 245k
    Leak: 958k
    Overhead: 82k
    GGC runs: 2
    Pre-IPA-Garbage: 228k
    Pre-IPA-Leak: 960k
    Pre-IPA-Overhead: 79k
    Post-IPA-Garbage: 228k
    Post-IPA-Leak: 960k
    Post-IPA-Overhead: 79k

comparing combine.c compilation at -O0 level:
    Overall memory needed: 22644k
    Peak memory use before GGC: 7810k
    Peak memory use after GGC: 7189k
    Maximum of released memory in single GGC run: 1550k
    Garbage: 37894k
    Leak: 5517k
    Overhead: 4637k
    GGC runs: 372
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O0 -g level:
    Overall memory needed: 24672k
    Peak memory use before GGC: 9648k
    Peak memory use after GGC: 8948k
    Maximum of released memory in single GGC run: 1838k
    Garbage: 38215k
    Leak: 8383k
    Overhead: 5264k
    GGC runs: 343
Testing has produced no results
Testing has produced no results

comparing combine.c compilation at -O1 level:
    Overall memory needed: 32856k -> 32860k
    Peak memory use before GGC: 16268k -> 16269k
    Peak memory use after GGC: 16084k -> 16085k
    Maximum of released memory in single GGC run: 1380k
    Garbage: 51611k -> 51626k
    Leak: 5663k -> 5655k
    Overhead: 5810k -> 5811k
    GGC runs: 438
    Pre-IPA-Garbage: 13937k -> 13937k
    Pre-IPA-Leak: 17097k -> 17098k
    Pre-IPA-Overhead: 2120k -> 2120k
    Post-IPA-Garbage: 13937k -> 13937k
    Post-IPA-Leak: 17097k -> 17098k
    Post-IPA-Overhead: 2120k -> 2120k

comparing combine.c compilation at -O2 level:
    Overall memory needed: 34656k -> 34668k
    Peak memory use before GGC: 16368k -> 16369k
    Peak memory use after GGC: 16201k -> 16202k
    Maximum of released memory in single GGC run: 1315k -> 1308k
    Garbage: 70958k -> 70953k
    Leak: 5994k -> 5985k
    Overhead: 8068k -> 8055k
    GGC runs: 508
    Pre-IPA-Garbage: 14091k -> 14091k
    Pre-IPA-Leak: 17160k -> 17161k
    Pre-IPA-Overhead: 2134k -> 2134k
    Post-IPA-Garbage: 14091k -> 14091k
    Post-IPA-Leak: 17160k -> 17161k
    Post-IPA-Overhead: 2134k -> 2134k

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 6038k to 6045k, overall 0.11%
    Overall memory needed: 38468k -> 38416k
    Peak memory use before GGC: 16506k -> 16507k
    Peak memory use after GGC: 16207k -> 16208k
    Maximum of released memory in single GGC run: 2012k -> 2005k
    Garbage: 87960k -> 87989k
    Leak: 6038k -> 6045k
    Overhead: 10009k -> 9994k
    GGC runs: 545 -> 544
    Pre-IPA-Garbage: 14093k -> 14093k
    Pre-IPA-Leak: 17172k -> 17173k
    Pre-IPA-Overhead: 2136k -> 2136k
    Post-IPA-Garbage: 14093k -> 14093k
    Post-IPA-Leak: 17172k -> 17173k
    Post-IPA-Overhead: 2136k -> 2136k

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 137432k -> 137436k
    Peak memory use before GGC: 57005k
    Peak memory use after GGC: 31462k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128634k
    Leak: 8368k
    Overhead: 14369k
    GGC runs: 292
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O0 -g level:
    Overall memory needed: 138680k
    Peak memory use before GGC: 58147k
    Peak memory use after GGC: 32604k
    Maximum of released memory in single GGC run: 33256k
    Garbage: 128886k
    Leak: 10043k
    Overhead: 14724k
    GGC runs: 288
Testing has produced no results
Testing has produced no results

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 142840k
    Peak memory use before GGC: 56207k
    Peak memory use after GGC: 49970k
    Maximum of released memory in single GGC run: 23976k
    Garbage: 205213k
    Leak: 9261k
    Overhead: 24762k
    GGC runs: 315
    Pre-IPA-Garbage: 50376k
    Pre-IPA-Leak: 49662k
    Pre-IPA-Overhead: 7543k
    Post-IPA-Garbage: 50376k
    Post-IPA-Leak: 49662k
    Post-IPA-Overhead: 7543k

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 184568k -> 184368k
    Peak memory use before GGC: 56838k -> 56811k
    Peak memory use after GGC: 51558k -> 51537k
    Maximum of released memory in single GGC run: 22891k -> 22875k
    Garbage: 245878k -> 245760k
    Leak: 10345k -> 10340k
    Overhead: 30414k -> 30399k
    GGC runs: 346
    Pre-IPA-Garbage: 50448k
    Pre-IPA-Leak: 49666k
    Pre-IPA-Overhead: 7551k
    Post-IPA-Garbage: 50448k
    Post-IPA-Leak: 49666k
    Post-IPA-Overhead: 7551k

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 190416k -> 189888k
    Peak memory use before GGC: 66384k -> 66354k
    Peak memory use after GGC: 62267k -> 62275k
    Maximum of released memory in single GGC run: 23391k -> 23372k
    Garbage: 269582k -> 269474k
    Leak: 10383k -> 10378k
    Overhead: 32203k -> 32188k
    GGC runs: 346
    Pre-IPA-Garbage: 50448k
    Pre-IPA-Leak: 49666k
    Pre-IPA-Overhead: 7551k
    Post-IPA-Garbage: 50448k
    Post-IPA-Leak: 49666k
    Post-IPA-Overhead: 7551k

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 148745k -> 148728k
    Peak memory use before GGC: 84475k
    Peak memory use after GGC: 83639k
    Maximum of released memory in single GGC run: 17028k
    Garbage: 200756k -> 200760k
    Leak: 48035k
    Overhead: 23977k
    GGC runs: 417
    Pre-IPA-Garbage: 109718k -> 109722k
    Pre-IPA-Leak: 71086k
    Pre-IPA-Overhead: 12093k
    Post-IPA-Garbage: 109718k -> 109722k
    Post-IPA-Leak: 71086k
    Post-IPA-Overhead: 12093k

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
    Overall memory needed: 169569k -> 169568k
    Peak memory use before GGC: 96073k
    Peak memory use after GGC: 95120k
    Maximum of released memory in single GGC run: 17470k
    Garbage: 206402k -> 206408k
    Leak: 69717k
    Overhead: 28955k -> 28955k
    GGC runs: 390
    Pre-IPA-Garbage: 110362k -> 110366k
    Pre-IPA-Leak: 84367k
    Pre-IPA-Overhead: 14669k
    Post-IPA-Garbage: 110362k -> 110366k
    Post-IPA-Leak: 84367k
    Post-IPA-Overhead: 14669k

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 122168k -> 122216k
    Peak memory use before GGC: 83935k -> 83934k
    Peak memory use after GGC: 83098k -> 83097k
    Maximum of released memory in single GGC run: 16195k
    Garbage: 288392k -> 288380k
    Leak: 47316k -> 47316k
    Overhead: 29216k -> 29215k
    GGC runs: 513
    Pre-IPA-Garbage: 154776k -> 154771k
    Pre-IPA-Leak: 87719k -> 87717k
    Pre-IPA-Overhead: 17477k -> 17477k
    Post-IPA-Garbage: 154776k -> 154771k
    Post-IPA-Leak: 87719k -> 87717k
    Post-IPA-Overhead: 17477k -> 17477k

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 124676k -> 124688k
    Peak memory use before GGC: 84226k -> 84225k
    Peak memory use after GGC: 83296k -> 83294k
    Maximum of released memory in single GGC run: 16197k
    Garbage: 354451k -> 354432k
    Leak: 48418k -> 48419k
    Overhead: 36264k -> 36251k
    GGC runs: 586 -> 584
    Pre-IPA-Garbage: 157324k -> 157324k
    Pre-IPA-Leak: 87866k -> 87865k
    Pre-IPA-Overhead: 17759k -> 17758k
    Post-IPA-Garbage: 157324k -> 157324k
    Post-IPA-Leak: 87866k -> 87865k
    Post-IPA-Overhead: 17759k -> 17758k

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 127504k -> 127576k
    Peak memory use before GGC: 85407k
    Peak memory use after GGC: 84532k -> 84531k
    Maximum of released memory in single GGC run: 16568k
    Garbage: 377801k -> 377761k
    Leak: 49000k -> 49001k
    Overhead: 38372k -> 38376k
    GGC runs: 611 -> 609
    Pre-IPA-Garbage: 160036k -> 160050k
    Pre-IPA-Leak: 88149k -> 88148k
    Pre-IPA-Overhead: 18007k -> 18007k
    Post-IPA-Garbage: 160036k -> 160050k
    Post-IPA-Leak: 88149k -> 88148k
    Post-IPA-Overhead: 18007k -> 18007k

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
    Overall memory needed: 380451k
    Peak memory use before GGC: 101215k
    Peak memory use after GGC: 56868k
    Maximum of released memory in single GGC run: 50583k
    Garbage: 178905k
    Leak: 6103k
    Overhead: 30783k
    GGC runs: 107
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
    Overall memory needed: 381243k
    Peak memory use before GGC: 101845k
    Peak memory use after GGC: 57499k
    Maximum of released memory in single GGC run: 50582k
    Garbage: 179020k
    Leak: 7833k
    Overhead: 31215k
    GGC runs: 111
Testing has produced no results
Testing has produced no results

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
    Overall memory needed: 428080k -> 428300k
    Peak memory use before GGC: 78692k
    Peak memory use after GGC: 70441k
    Maximum of released memory in single GGC run: 37596k
    Garbage: 233151k
    Leak: 15009k
    Overhead: 33234k
    GGC runs: 106
    Pre-IPA-Garbage: 52926k
    Pre-IPA-Leak: 49238k
    Pre-IPA-Overhead: 7120k
    Post-IPA-Garbage: 52926k
    Post-IPA-Leak: 49238k
    Post-IPA-Overhead: 7120k

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
    Overall memory needed: 353524k -> 353836k
    Peak memory use before GGC: 75428k
    Peak memory use after GGC: 70442k
    Maximum of released memory in single GGC run: 31731k
    Garbage: 243948k
    Leak: 15182k
    Overhead: 35646k
    GGC runs: 117
    Pre-IPA-Garbage: 91838k
    Pre-IPA-Leak: 77295k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91838k
    Post-IPA-Leak: 77295k
    Post-IPA-Overhead: 11793k

comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
    Overall memory needed: 1198588k -> 1198664k
    Peak memory use before GGC: 136589k
    Peak memory use after GGC: 127947k
    Maximum of released memory in single GGC run: 59901k
    Garbage: 369963k
    Leak: 24893k
    Overhead: 49887k
    GGC runs: 104
    Pre-IPA-Garbage: 91838k
    Pre-IPA-Leak: 77295k
    Pre-IPA-Overhead: 11793k
    Post-IPA-Garbage: 91838k
    Post-IPA-Leak: 77295k
    Post-IPA-Overhead: 11793k

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2008-03-22 20:03:40.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2008-03-31 14:22:44.000000000 +0000
@@ -1,3 +1,631 @@
+2008-03-31  Zdenek Dvorak  <ook@ucw.cz>
+
+	PR rtl-optimization/35729
+	* loop-invariant.c (check_maybe_invariant): Disallow volatile memory
+	references.
+
+2008-03-31  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/32000
+	* config/i386/i386.md (*movti_internal): Emit unaligned SSE
+	load/store if memory is unaligned.
+	(*movti_rex64): Likewise.
+
+	* config/i386/predicates.md (misaligned_operand): New.
+
+2008-03-31  Andrew Pinski  <pinskia@gmail.com>
+
+	PR tree-opt/35431
+	* tree-ssa-phiopt.c (conditional_replacement): Return early for
+	complex types.
+
+2008-03-31  Jan Beulich  <jbeulich@novell.com>
+
+	* config/ia64/constraints.md: Add 'j' constraint.
+	* config/ia64/ia64.md (movsi_internal): Add addp4 case.
+	(movdi_internal): Likewise.
+
+2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
+
+	PR c/35748
+	* c-typeck.c (build_c_cast): Skip invalid fields in unions.
+
+2008-03-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/35757
+	* config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Issue
+	proper error message for the third argument on blendpd and
+	blendps.
+
+	* config/i386/sse.md (blendbits): New.
+	(sse4_1_blendp<ssemodesuffixf2c>): Use it.
+
+2008-03-30  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Add missing conversions.
+
+2008-03-30  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/31023
+	* fold-const.c (fold_sign_changed_comparison): Do leave
+	conversions to base-types alone.
+
+2008-03-29  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	* config/rs6000/rs6000.c (rs6000_stack_info): Don't force saving of
+	the link register if one altivec register is be saved.
+
+2008-03-30  Ben Elliston  <bje@au.ibm.com>
+
+	* final.c (final_scan_insn): Remove if (0) code.
+
+2008-03-28  Volker Reichelt  <v.reichelt@netcologne.de>
+
+	* c-parser.c (c_parser_next_token_is_keyword): Simplify.
+
+2008-03-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/sse.md (*and<mode>3): Pass <MODE>mode instead
+	of V4SFmode to ix86_binary_operator_ok.
+
+2008-03-28  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.c (override_options): Initialize
+	ix86_veclib_handler to ix86_veclibabi_svml when
+	-mveclibabi=svml is used.
+	(ix86_veclibabi_svml): New function for SVML ABI style
+	vectorization support.
+	* doc/invoke.texi (-mveclibabi) [svml]: Document new target option.
+
+2008-03-28  Rafael Espindola  <espindola@google.com>
+
+	* fold-const.c (tree_unary_nonnegative_warnv_p): Make it public.
+	(tree_binary_nonnegative_warnv_p): Make it public.
+	(tree_single_nonnegative_warnv_p): Make it public.
+	(tree_invalid_nonnegative_warnv_p): Make it public.
+	(tree_unary_nonzero_warnv_p): Make it public.
+	(tree_binary_nonzero_warnv_p): Make it public
+	(tree_single_nonzero_warnv_p): Make it public.
+	* tree-vrp.c (vrp_evaluate_conditional_warnv_with_ops): New function.
+	(extract_range_from_binary_expr): Split the expr argument.
+	(extract_range_from_unary_expr): Split the expr argument.
+	(extract_range_from_comparison): Split the expr argument.
+	(extract_range_from_expr): Use the new aux functions.
+	(vrp_evaluate_conditional_warnv): Use
+	vrp_evaluate_conditional_warnv_with_ops.
+	* tree.h (tree_unary_nonzero_warnv_p): Declare.
+	(tree_binary_nonzero_warnv_p): Declare.
+	(tree_single_nonzero_warnv_p): Declare.
+	(tree_expr_nonzero_warnv_p): Declare.
+	(tree_unary_nonnegative_warnv_p): Declare.
+	(tree_binary_nonnegative_warnv_p): Declare.
+	(tree_single_nonnegative_warnv_p): Declare.
+	(tree_invalid_nonnegative_warnv_p): Declare.
+
+2008-03-28  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/30317
+	PR tree-optimization/30911
+	PR tree-optimization/34793
+	* tree-vrp.c (set_and_canonicalize_value_range): New function.
+	(struct assert_locus_d): New member EXPR.
+	(register_new_assert_for): Add EXPR parameter to support
+	ASSERT_EXPR <name, expr OP limit>.
+	(register_edge_assert_for_1): Adjust callers.
+	(find_assert_locations): Likewise.
+	(process_assert_insertions_for): Build condition from expression.
+	(extract_range_from_assert): Handle ASSERT_EXPRs
+	of the form ASSERT_EXPR <name, expr OP limit>.
+	(register_edge_assert_for_2): New helper registering
+	asserts for comparisons.  Recognize range tests of the form
+	(unsigned)i - CST1 OP CST2.
+	(register_edge_assert_for_1): Use it.
+	(register_edge_assert_for): Likewise.
+	(needs_overflow_infinity): Integer sub-types
+	do not need overflow infinities.
+	(vrp_val_is_max): The extreme values of integer sub-types
+	are those of the base type.
+	(vrp_val_is_min): Likewise.
+	* tree.def (ASSERT_EXPR): Document extra allowed conditional
+	expressions.
+
+2008-03-28  Nick Clifton  <nickc@redhat.com>
+
+	* config/mn10300/mn10300.c (mn10300_secondary_reload_class):
+	Return GENERAL_REGS for stack adjustment reloads.
+
+2008-03-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	PR target/31334
+	* config/rs6000/rs6000.c (rs6000_expand_vector_init): Create a
+	const_vector when all the vectors are constant.
+
+2008-03-27  Bob Wilson  <bob.wilson@acm.org>
+
+	* config/xtensa/xtensa.c (gen_float_relational): Handle unordered
+	comparisons.
+	* config/xtensa/xtensa.md (any_cond): Add unordered comparisons.
+	(any_scc_sf): Add uneq, unlt, unle and unordered operators.
+	(scc_sf): New.
+	(s<code>_sf): Use new scc_sf attribute for opcode names.
+
+2008-03-27  Tom Tromey  <tromey@redhat.com>
+
+	* doc/sourcebuild.texi, doc/install.texi, configure, aclocal.m4,
+	configure.ac, Makefile.in, config/t-darwin, config/m32c/t-m32c,
+	config/spu/t-spu-elf, config/i386/t-interix,
+	config/i386/t-cygming, config/i386/x-i386, config/i386/t-cygwin,
+	config/i386/x-darwin, config/i386/x-mingw32,
+	config/i386/t-netware, config/i386/x-cygwin, config/i386/t-nwld,
+	config/sh/t-sh, config/sh/t-symbian, config/x-linux,
+	config/t-sol2, config/x-hpux, config/x-darwin, config/ia64/t-ia64,
+	config/x-solaris, config/t-vxworks, config/m68k/t-uclinux,
+	config/rs6000/x-rs6000, config/rs6000/x-darwin64,
+	config/rs6000/x-darwin, config/rs6000/t-rs6000,
+	config/score/t-score-elf, config/arm/t-strongarm-pe,
+	config/arm/t-pe, config/arm/t-arm, config/arm/t-wince-pe,
+	config/v850/t-v850, config/v850/t-v850e, config/bfin/t-bfin-linux:
+	Revert automatic dependency patch.
+
+2008-03-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/35657
+	* config/i386/i386.c (ix86_function_arg_boundary): Align
+	decimal floating point to its natural boundary.
+
+2008-03-27  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/35716
+	* fold-const.c (fold_comparison): Restrict distinct decl
+	comparison folding to VAR_DECLs and PARM_DECLs.  Do not
+	solely rely on operand_equal_p.
+
+2008-03-27  Richard Guenther  <rguenther@suse.de>
+
+	PR c/32511
+	* c-common.c (handle_weak_attribute): Reject combination of
+	weak and inline.
+
+2008-03-27  Richard Guenther  <rguenther@suse.de>
+
+	PR tree-optimization/32810
+	* tree-ssa-ccp.c (get_symbol_constant_value): Strip useless
+	conversions from DECL_INITIAL.
+	(fold_const_aggregate_ref): Likewise from constructor elements.
+
+2008-03-27  Zdenek Dvorak  <ook@ucw.cz>
+
+	* tree-affine.h (aff_combination_expand): Declare.
+	(get_inner_reference_aff): Likewise.
+	* tree-affine.c	(aff_combination_expand): Split out from
+	tree_to_aff_combination_expand.
+	(get_inner_reference_aff): New function.
+	* tree-parloops.c (loop_parallel_p): Free vectorizer info.
+	* tree-ssa-loop-im.c: Include tree-affine.h and pointer-set.h.
+	(struct lim_aux_data): sm_done field removed.
+	(mem_ref_loc_p, mem_ref_locs_p): New types.
+	(struct mem_ref): Added id, stored, accesses_in_loop,
+	indep_loop, dep_loop, indep_ref, dep_ref fields.
+	Removed is_stored, locs and next fields.
+	(memory_accesses): New variable.
+	(movement_possibility): Do not allow moving statements
+	that store to memory.
+	(outermost_indep_loop, simple_mem_ref_in_stmt, mem_ref_in_stmt):
+	New functions.
+	(determine_max_movement): For statements with memory references,
+	find the outermost loop in that the reference is independent.
+	(move_computations_stmt): Mark the virtual operands for renaming.
+	(memref_free, mem_ref_alloc, mem_ref_locs_alloc, mark_ref_stored,
+	gather_mem_refs_stmt, gather_mem_refs_in_loops, vtoe_hash, vtoe_eq,
+	vtoe_free, record_vop_access, get_vop_accesses, get_vop_stores,
+	add_vop_ref_mapping, create_vop_ref_mapping_loop,
+	create_vop_ref_mapping, analyze_memory_references,
+	cannot_overlap_p, mem_refs_may_alias_p, rewrite_mem_ref_loc,
+	get_all_locs_in_loop, ref_always_accessed_p,
+	refs_independent_p, record_indep_loop, ref_indep_loop_p_1,
+	ref_indep_loop_p, can_sm_ref_p, find_refs_for_sm,
+	store_motion_loop, store_motion): New functions.
+	(struct vop_to_refs_elt): New type.
+	(record_mem_ref_loc, free_mem_ref_locs, rewrite_mem_refs,
+	memref_hash, memref_eq, hoist_memory_references): Rewritten.
+	(schedule_sm): Replaced by...
+	(execute_sm): ... this.
+	(determine_lsm_ref, hoist_memory_references,
+	loop_suitable_for_sm, gather_mem_refs_stmt, gather_mem_refs,
+	find_more_ref_vops, free_mem_ref, free_mem_refs,
+	determine_lsm_loop, determine_lsm): Removed.
+	(tree_ssa_lim_finalize): Free data structures used by store motion.
+	(tree_ssa_lim): Call analyze_memory_references.  Use
+	store_motion instead of determine_lsm.
+
+2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
+
+	* config.cc (m68hc11, m6811, m68hc12, m6812): Add usegas.h,
+	rename tmake_file to m68hc11/t-m68hc11.
+	(mcore): Set inhibit_libc to true.
+	* config.host (alpha*-dec-*vms*): Set extra_programs.
+	(interix3*): Don't use host_xmake_file.
+	* configure.ac: Let config.gcc override inhibit_libc.
+	* configure: Regenerate.
+
+	* config/alpha/x-vms (EXTRA_PROGRAMS): Remove.
+	* config/t-openbsd-thread: Remove commented out lines.
+	
+	* config/x-interix: Remove.
+
+	* config/m68hc11/t-m68hc11-gas: Rename to...
+	* config/m68hc11/t-m68hc11: ... this.  Remove T_CPPFLAGS.
+
+	* config/mcore/t-mcore: Remove T_CFLAGS.
+	* config/mcore/t-mcore-pe: Likewise.
+
+2008-03-27  Paolo Bonzini  <bonzini@gnu.org>
+
+	* configure.ac: Replace custom __GNU_SOURCE test with
+	AC_USE_SYSTEM_EXTENSIONS.  Move it earlier.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+	* config.in: Regenerate.
+
+2008-03-27  Richard Guenther  <rguenther@suse.de>
+
+	* fold-const.c (target.h): Include.
+	(fold_comparison): Fold comparison of addresses of decls
+	that bind locally or of constants.  Consolidate address folding code.
+	* tree-vrp.c (operand_less_p): Deal with non-INTEGER_CST
+	results from fold_binary_to_constant.
+	(compare_values_warnv): Likewise.
+
+2008-03-27  Andrew Pinski  <pinskia@gmail.com>
+
+	PR middle-end/35429
+	* fold-const.c (fold_truthop): Check for integeral types when folding
+	a == 0 && b == 0 and a != 0 || b != 0 .
+
+2008-03-26  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* tree.c (get_unwidened): Remove code fiddling with COMPONENT_REF.
+
+2008-03-26  Andreas Schwab  <schwab@suse.de>
+
+	* doc/invoke.texi: Fix use of @item vs. @itemx.
+
+2008-03-26  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (build/gensupport.o, build/print-rtl.o,
+	build/read-rtl.o, build/rtl.o, build/gencondmd.o, build/genattr.o,
+	build/genattrtab.o, build/genautomata.o, build/gencheck.o,
+	build/gencodes.o, build/genconditions.o, build/genconfig.o,
+	build/genconstants.o, build/genemit.o, build/genextract.o,
+	build/genflags.o, build/genmddeps.o, build/genopinit.o,
+	build/genoutput.o, build/genpeep.o, build/genrecog.o): Depend on
+	options.h.
+
+2008-03-26  Richard Guenther  <rguenther@suse.de>
+
+	Revert
+	2008-03-26  Richard Guenther  <rguenther@suse.de>
+
+	* fold-const.c (target.h): Include.
+	(fold_comparison): Fold comparison of addresses of two decls
+	that bind locally.  Consolidate address folding code.
+
+2008-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+	* builtins.c (expand_builtin_pow, fold_builtin_cabs,
+	fold_builtin_sqrt, fold_builtin_cbrt, fold_builtin_logarithm,
+	fold_builtin_hypot, fold_builtin_pow): Remove uses of dconst3,
+	dconstsqrt2, dconstthird, dconste and/or dconst10.
+	* config/i386/i386.c (ix86_emit_swsqrtsf): Likewise.
+	* emit-rtl.c (dconst3, dconst10, dconstm2, dconstthird,
+	dconstsqrt2, dconste): Delete.
+	(init_emit_once): Likewise.  Simplify initializing dconstm1.
+	Constify variable.
+	* real.c (get_real_const): New.
+	* real.h (dconst3, dconst10, dconstm2, dconstthird,
+	dconstsqrt2, dconste): Delete.
+	(real_value_const, get_real_const): New.
+
+2008-03-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/cygming.h (BIGGEST_ALIGNMENT): Removed.
+
+	* config/i386/i386.c (ix86_function_arg_boundary): Check
+	BIGGEST_ALIGNMENT instead of 128.
+	(setup_incoming_varargs_64): Likewise.
+
+2008-03-26  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (DEPFILES): Add missing '/'.
+
+2008-03-26  Richard Guenther  <rguenther@suse.de>
+
+	* fold-const.c (target.h): Include.
+	(fold_comparison): Fold comparison of addresses of two decls
+	that bind locally.  Consolidate address folding code.
+
+2008-03-26  Nick Clifton  <nickc@redhat.com>
+
+	PR target/31232
+	* config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do
+	not allow INT+INT as a legitimate addressing mode.
+
+2008-03-26  Richard Guenther  <rguenther@suse.de>
+
+	* tree-flow.h (widen_bitfield): Remove declaration.
+	* tree-ssa-ccp.c (visit_assignment): Remove unneeded code.
+	(widen_bitfield): Remove function.
+	* tree-ssa-dom.c (record_equivalences_from_stmt): Remove unneeded
+	code.
+
+2008-03-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+	PR target/31558
+	* config/rs6000/rs6000-c.c (rs6000_builtin_type_compatible): Handle
+	error_mark_node's.
+
+2008-03-25  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+	PR rtl-optimization/35232
+	* reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
+	(forget_old_reloads_1, forget_marked_reloads): Don't clear
+	reg_reloaded_call_part_clobbered here.
+	(reload_regs_reach_end_p): New function.
+	(reload_reg_rtx_for_input): New variable.
+	(reload_reg_rtx_for_output): Likewise.
+	(emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
+	when reassigning a pseudo register.  Load reloadreg from 
+	reload_reg_rtx_for_input, moving the mode and register
+	calculation to...
+	(do_input_reload): ...here.  Use the mode-adjusted reg_rtx
+	instead of the original when deciding whether an input reload
+	would be a no-op or whether an output reload can be deleted.
+	(emit_output_reload_insns): Use the mode-adjusted reg_rtx
+	when setting up new_spill_reg_store.  Load it from
+	reload_reg_rtx_for_output, moving the mode and register
+	calculation to...
+	(do_output_reload): ...here.  Use the mode-adjusted reg_rtx
+	instead of the original when deciding whether an output reload
+	would be a no-op.  Do the same when modifying insn notes.
+	Use rtx_equal_p instead of == to compare the registers.
+	(inherit_piecemeal_p): Take a mode and two register numbers
+	as argument.
+	(emit_reload_insns): Clear new_spill_reg_store for every hard
+	register in the reload register.  Remove spill registers
+	from reg_reloaded_valid before considering whether to record
+	inheritance information for them.  Use reload_reg_rtx_for_output
+	instead of reg_rtx when recording output reloads.  Use
+	reload_reg_rtx_for_input instead of reg_rtx when recording
+	input reloads.  Set or clear reg_reloaded_call_part_clobbered
+	at the same time as setting reg_reloaded_valid.
+	(delete_output_reload): Add a new_reload_reg parameter and use it
+	instead of rld[j].reg_rtx.
+	(emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
+	calls accordingly.
+
+2008-03-25  Tom Tromey  <tromey@redhat.com>
+
+	* Makefile.in (build/gensupport.o): Depend on insn-modes.h.
+	(build/genattr.o): Likewise.
+	(build/genattrtab.o): Likewise.
+	(build/gencodes.o): Likewise.
+	(build/genconfig.o): Likewise.
+	(build/genconstants.o): Likewise.
+	(build/genemit.o): Likewise.
+	(build/genextract.o): Likewise.
+	(build/genflags.o): Likewise.
+
+2008-03-25  Bob Wilson  <bob.wilson@acm.org>
+	
+	* config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
+	instead of size_int for integer types.
+	(xtensa_gimplify_va_arg_expr): Likewise.  Convert index to sizetype
+	to match type of MINUS_EXPR.
+	
+2008-03-25  Tom Tromey  <tromey@redhat.com>
+
+	* configure: Rebuilt.
+	* configure.ac (BUILD_DEPMODE): Extract CCDEPMODE from temporary
+	Makefile.
+
+2008-03-25  Tom Tromey  <tromey@redhat.com>
+
+	* config/x-solaris (host-solaris.o): Update.
+	* config/x-linux (host-linux.o): Update.
+	* config/x-hpux (host-hpux.o): Update.
+	* config/x-darwin (host-darwin.o): Update.
+	* config/v850/t-v850e (v850-c.o): Update.
+	* config/v850/t-v850 (v850-c.o): Update.
+	* config/t-vxworks (vxworks.o): Update.
+	* config/t-sol2 (sol2-c.o, sol2.o): Update.
+	* config/t-darwin (darwin.o, darwin-c.o, darwin-driver.o): Update.
+	* config/spu/t-spu-elf (spu-c.o): Update.
+	(spu.o): Remove.
+	* config/sh/t-symbian (sh-c.o): Update.
+	(symbian.o): Update.
+	* config/sh/t-sh (sh-c.o): Update.
+	* config/score/t-score-elf (score7.o, score3.o): Update.
+	* config/rs6000/x-rs6000 (driver-rs6000.o): Update.
+	* config/rs6000/x-darwin64 (host-ppc64-darwin.o): Update.
+	* config/rs6000/x-darwin (host-ppc-darwin.o): Update.
+	* config/rs6000/t-rs6000 (rs6000-c.o): Update.
+	(rs6000.o): Remove.
+	* config/m68k/t-uclinux (generated_files): Add sysroot-suffix.h.
+	* config/m32c/t-m32c (m32c-pragma.o): Update.
+	* config/ia64/t-ia64 (ia64-c.o): Update.
+	* config/i386/x-mingw32 (host-mingw32.o): Update.
+	* config/i386/x-i386 (driver-i386.o): Update.
+	* config/i386/x-darwin (host-i386-darwin.o): Update.
+	* config/i386/x-cygwin (host-cygwin.o): Update.
+	* config/i386/t-nwld (nwld.o): Update.
+	* config/i386/t-netware (netware.o): Update.
+	* config/i386/t-interix (winnt.o): Update.
+	* config/i386/t-cygwin (cygwin1.o, cygwin2.o): Update.
+	* config/i386/t-cygming (winnt.o, winnt-cxx.o, winnt-stubs.o,
+	msformat-c.o): Update.
+	* config/bfin/t-bfin-linux (generated_files): Add
+	linux-sysroot-suffix.h.
+	* config/arm/t-wince-pe (pe.o): Update.
+	* config/arm/t-strongarm-pe (pe.o): Update.
+	* config/arm/t-pe (pe.o): Update.
+	* config/arm/t-arm (arm-c.o): Update.
+	* doc/install.texi (Prerequisites): Require make 3.80.
+	* Makefile.in: Remove .o targets.
+	(CCDEPMODE, DEPDIR, depcomp, BUILD_DEPMODE): New variables.
+	(OBSTACK_H, FIBHEAP_H, PARTITION_H, MD5_H, BCONFIG_H): Remove.
+	(simple_generated_h, simple_generated_c): Move earlier.
+	(generated_files): New variable.
+	(TARGET_H, MACHMODE_H, HOOKS_H, HOSTHOOKS_DEF_H, LANGHOOKS_DEF_H,
+	TARGET_DEF_H, RTL_BASE_H, RTL_H, PARAMS_H, BUILTINS_DEF, TREE_H,
+	BASIC_BLOCK_H, GCOV_IO_H, COVERAGE_H, DEMANGLE_H, RECOG_H,
+	ALIAS_H, EMIT_RTL_H, FLAGS_H, FUNCTION_H, EXPR_H, OPTABS_H,
+	REGS_H, RA_H, RESOURCE_H, SCHED_INT_H, INTEGRATE_H, CFGLAYOUT_H,
+	CFGLOOP_H, IPA_UTILS_H, IPA_REFERENCE_H, IPA_TYPE_ESCAPE_H,
+	CGRAPH_H, DF_H, RESOURCE_H, DDG_H, GCC_H, GGC_H, TIMEVAR_H,
+	INSN_ATTR_H, C_COMMON_H, C_PRAGMA_H, C_TREE_H, SYSTEM_H,
+	PREDICT_H, DECNUM_H, MKDEPS_H, SYMTAB_H, TREE_DUMP_H,
+	TREE_GIMPLE_H, TREE_FLOW_H, TREE_SSA_LIVE_H, PRETTY_PRINT_H,
+	DIAGNOSTIC_H, C_PRETTY_PRINT_H, SCEV_H, LAMBDA_H, TREE_DATA_REF_H,
+	VARRAY_H, TREE_INLINE_H, REAL_H, DBGCNT_H, EBIMAP_H): Remove.
+	(.c.o): Remove.
+	(COMPILE.base, COMPILE): New variables.
+	(%.o): New pattern rule.
+	(ALL_HOST_OBJS): New variable.
+	(xgcc$(exeext), cpp$(exeext)): Remove extra version.o.
+	(dummy-checksum.o, cc1-checksum.o): Remove.
+	(DRIVER_SHLIB): New variable.
+	(DRIVER_DEFINES): Use it.
+	(gencondmd.c): Move out of build/.
+	(s-conditions): Update.
+	(BUILDCOMPILE.base, BUILDCOMPILE): New variables.
+	(ALL_BUILD_OBJS): Likewise.
+	(build/%.o): Use BUILDCOMPILE.
+	(build/ggc-none.o, build/ggc-none.o, build/min-insn-modes.o,
+	build/print-rtl.o, build/read-rtl.o, build/rtl.o, build/vec.o,
+	build/gencondmd.o, build/genattrtab.o, build/genautomata.o,
+	build/gencheck.o, build/gencodes.o, build/genconditions.o,
+	build/genconfig.o, build/genconstants.o, build/genemit.o,
+	build/genextract.o, build/genflags.o, build/genmddeps.o,
+	build/genopinit.o, build/genoutput.o, build/genpeep.o,
+	build/genpreds.o, build/genrecog.o, build/gcov-iov.o,
+	build/gen-protos.o, build/scan.o, build/fix-header.o,
+	build/scan-decls.o): Simplify.
+	(collect2.o, c-opts.o, gcc.o, gccspec.o, gcc-options.o,
+	cppdefault.o, protoize.o, unprotoize.o, intl.o, version.o,
+	prefix.o, toplev.o): Reduce to variable setting.
+	(libbackend.o): Use COMPILE.  Remove most dependencies.  Move later.
+	($(out_object_file), gcc-options.o): New targets.
+	($(ALL_HOST_OBJS)): New target.  Include dependency files.
+	* configure: Rebuilt.
+	* configure.ac: Call ZW_CREATE_DEPDIR, ZW_PROG_COMPILER_DEPENDENCIES.
+	* doc/sourcebuild.texi (Front End Directory): Document new variable.
+
+2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
+
+	* c-common.c (c_sizeof_or_alignof_type): If we're not allowed to
+	complain when we hit an error, return ERROR_MARK_NODE.
+
+2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
+
+	* config/sh/constraints.md (Pso, Psz): New constraints.
+	* config/sh/sh.c (print_operand): Add %V and %W operand codes.
+	* config/sh/sh.md (*andsi3_bclr, *iorsi3_bset): New insns.
+
+2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
+
+	* config/sh/sh.c (sh_expand_t_scc): Emit movrt for SH2A if possible.
+	* config/sh/sh.md (xorsi3_movrt, movrt): New insns.
+
+2008-03-25  Naveen.H.S  <naveen.hs@kpitcummins.com>
+
+	* config/sh/sh.md (prefetch): Add condition for SH2A target.
+	(prefetch_sh2a): New.	
+
+2008-03-25  Jayant Sonar  <Jayant.sonar@kpitcummins.com>
+	    Naveen.H.S  <naveen.hs@kpitcummins.com>
+
+	* config/sh/constraints.md (I28): New constraint.
+	* config/sh/sh.c (broken_move): Add support for movi20s.
+	* config/sh/sh.md (movsi_ie): Add the alternative for movi20s.
+
+2008-03-25  Anil Paranjape  <anil.paranjape@kpitcummins.com>
+	    Jayant Sonar  <Jayant.sonar@kpitcummins.com>
+	    Naveen.H.S  <naveen.hs@kpitcummins.com>
+
+	* config/sh/sh.c (SH_ATTRIBUTES): Define.
+	(SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
+	(print_operand): Handle resbank in %@ operand code.
+	(sh_encode_section_info): New.
+	(push_regs): Add conditions for resbank.
+	(sh_expand_epilogue): Likewise.
+	(sh_insert_attributes): Likewise.
+	(sh_attribute_table): Likewise.
+	(sh_handle_resbank_handler_attribute): New.
+	(sh2a_handle_function_vector_handler_attribute): New.
+	(sh2a_is_function_vector_call): New.
+	(sh2a_get_function_vector_number): New.
+	(sh2a_function_vector_p): New.
+	(sh_cfun_resbank_handler_p): New.
+	* config/sh/sh.md (calli): Emit jsr/n if possible.
+	(calli_tbr_rel): New.
+	(calli_pcrel): Emit jsr/n if possible.
+	(return_i): Emit rts/n if possible.
+	(call_valuei_tbr_rel): New.
+	(call_valuei_pcrel): Add condition for SH2A target.
+	(call_value): Likewise.
+	* config/sh/sh-protos.h (sh_cfun_resbank_handler_p): Declare.
+	(sh2a_get_function_vector_number): Likewise.
+	(sh2a_is_function_vector_call): Likewise.
+	* doc/extend.texi: Document TBR relative addressing of SH2A.
+	(resbank): Add description for SH2A.
+
+2008-03-24  Richard Guenther  <rguenther@suse.de>
+
+	PR c/22371
+	* gimplify.c (gimplify_modify_expr): For frontend type-correct
+	pointer assignments change conversions according to middle-end rules.
+	(gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
+	* configure.ac: Include type checking in yes.
+	* configure: Regenerate.
+
+2008-03-24  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+	* diagnostic.c (diagnostic_count_diagnostic): Delete.
+	(diagnostic_report_diagnostic): Update. Handle ICEs here.
+	
+2008-03-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* gthr-vxworks.h (UNUSED): Define.
+
+2008-03-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.h (STATIC_CHAIN_REGNUM): Use R10_REG and CX_REG.
+
+2008-03-23  Zuxy Meng <zuxy.meng@gmail.com>
+
+	* doc/extend.texi (Function Attributes): Add missing comma in the
+	example of the "alloc_size" attribute.
+	
+2008-03-23  Uros Bizjak  <ubizjak@gmail.com>
+
+	Revert:
+	2008-03-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386-modes.def: Use 4 byte alignment on DI for
+	32bit host.
+
+	2008-03-19  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/35496
+	* stor-layout.c (update_alignment_for_field): Set minimum alignment
+	of the underlying type of a MS bitfield layout to the natural
+	alignment of the type.
+
+	2008-03-22  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.c (assign_386_stack_local): Align DImode slots
+	to their natural alignment to avoid store forwarding stalls.
+
 2008-03-22  Richard Guenther  <rguenther@suse.de>
 
 	* tree-cfg.c (verify_expr): Recurse again for invariant addresses.
@@ -287,8 +915,8 @@
 2008-03-19  Richard Guenther  <rguenther@suse.de>
 
 	PR middle-end/35609
-	* tree-ssa.c (always_executed): New global flag.
-	(warn_uninitialized_var): If !always_executed warn with "maybe"
+	* tree-ssa.c (walk_data): New structure.
+	(warn_uninitialized_var): If not always_executed warn with "maybe"
 	instead of "is".
 	(execute_early_warn_uninitialized): Compute post-dominators.
 	Initialize always_executed before processing each basic block.
@@ -2680,7 +3308,6 @@
 2008-02-17  Uros Bizjak  <ubizjak@gmail.com>
 
 	Revert:
-
 	2008-02-15  Uros Bizjak  <ubizjak@gmail.com>	
 	* config/i386/sfp-machine.h (CMPtype): Define as typedef using
 	libgcc_cmp_return mode.
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2008-03-21 21:41:38.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2008-03-30 22:34:54.000000000 +0000
@@ -1,3 +1,285 @@
+2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
+
+	PR c++/35578
+	* parser.c (cp_parser_decl_specifier_seq): Add location to error
+	message.
+
+2008-03-27  Tom Tromey  <tromey@redhat.com>
+
+	* Make-lang.in: Revert automatic dependency patch.
+
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
+	PR obj-c++/35704
+	* typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
+	(build_compound_expr): New, for compatibility with C
+	build_compound_expr.
+	(cp_build_compound_expr): Renamed from build_compound_expr.
+	(build_c_cast): New, for compatibility with C build_c_cast.
+	(cp_build_c_cast): Renamed from build_c_cast.
+	* init.c (build_vec_delete_1): Fix calls to build_compound_expr.
+	* decl.c (cxx_maybe_build_cleanup): Ditto.
+	* cp-tree.h (build_compound_expr): Add C-compatibile prototype.
+	(cp_build_compound_expr): Renamed from build_compound_expr.
+	(build_c_cast): Add C-compatible prototype.
+	(cp_build_c_cast): Renamed from build_c_cast.
+	* typeck2.c (build_functional_cast): Use cp_build_c_cast.
+	* parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
+
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
+	* pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
+	tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
+	ending in a pack expansion, both of which can occur when
+	substituting into a nested template.
+	(tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
+	instantiating the sizeof...(X) form, make tsubst_copy do the work.
+	* parser.c (cp_parser_template_parameter): Deal with unnamed
+	non-type template parameter packs identified by pack expansions in
+	the parameter type.
+
+2008-03-26  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c++/35546
+	* pt.c (apply_late_template_attributes): Don't call tsubst on
+	first attribute argument if it is IDENTIFIER_NODE.
+
+	PR c++/35332
+	* error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
+	and LTGT_EXPR to pp_expression.
+
+2008-03-26  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * pt.c (coerce_template_template_parm): Moved the body of the loop
+       of coerce_template_template_parms here, to make iteration over a
+       template argument pack simpler.
+       Also, allow matching of a template parameter pack in the template
+       template parameter to a template parameter in the template
+       template argument.
+       (coerce_template_template_parms): Deal with variadic template
+       template parameters. Use coerce_template_template_parm.
+       (unify): Make sure we coerce the template template argument's
+       template arguments to the template template parameter's template
+       parameters, not the other way around.
+
+2008-03-25  Tom Tromey  <tromey@redhat.com>
+
+	* Make-lang.in: Remove .o targets.
+	(cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
+	(GXX_OBJS): Update.
+	(c++_OBJS): New variable.
+	(CXX_TREE_H, CXX_PRETTY_PRINT_H): Remove.
+
+2008-03-25  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * typeck.c (composite_pointer_type_r): Add SFINAE support.
+       (composite_pointer_type): Ditto.
+       (common_type): Fix call to composite_pointer_type.
+       (cxx_sizeof_nowarn): New; used to be a macro.
+       (cxx_sizeof_expr): Add SFINAE support.
+       (cxx_alignof_expr): Ditto.
+       (decay_conversion): Fix calls for SFINAE support.
+       (rationalize_conditional_expr): Add SFINAE support.
+       (build_class_member_access_expr): Ditto.
+       (finish_class_member_access_expr): Ditto.
+       (build_x_indirect_ref): Ditto.
+       (build_indirect_ref): Original version renamed to
+       cp_build_indirect_ref; new version provides a bridge from
+       c-common.
+       (cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
+       support.
+       (get_member_function_from_ptrfunc): Fix calls for SFINAE support.
+       (build_function_call): Original version renamed to
+       cp_build_function_call; new version provides a bridge from
+       c-common.
+       (cp_build_function_call): Was build_function_call; added SFINAE
+       support.
+       (convert_arguments): Add SFINAE support.
+       (build_x_binary_op): Ditto.
+       (build_binary_op): Original version renamed to cp_build_binary_op;
+       new version provides a bridge from c-common.
+       (cp_build_binary_op): Was build_binary_op; added SFINAE support.
+       (pointer_diff): Fix calls for SFINAE.
+       (build_x_unary_op): Add SFINAE support.
+       (condition_conversion): Fix calls for SFINAE.
+       (build_unary_op): Original version renamed to cp_build_unary_op;
+       new version provides a bridge from c-common.
+       (cp_build_unary_op): Was build_unary_op; added SFINAE support.
+       (unary_complex_lvalue): Fix calls for SFINAE.
+       (build_x_conditional_expr): Add SFINAE support.
+       (build_x_compound_expr_from_list): Fix calls for SFINAE.
+       (build_x_compound_expr): Add SFINAE support.
+       (convert_ptrmem): Fix calls for SFINAE.
+       (build_static_cast_1): Add SFINAE support.
+       (build_static_cast): Ditto.
+       (build_reinterpret_cast_1): Ditto.
+       (build_reinterpret_cast): Ditto.
+       (build_const_cast_1): Ditto.
+       (build_const_cast): Ditto.
+       (build_c_cast): Ditto.
+       (build_modify_expr): Original version renamed to
+       cp_build_modify_expr; new version provides a bridge from c-common.
+       (cp_build_modify_expr): Was build_modify_expr; added SFINAE
+       support.
+       (build_x_modify_expr): Add SFINAE support.
+       (build_ptrmemfunc): Fix calls for SFINAE.
+       (convert_for_assignment): Add SFINAE support.
+       (convert_for_initialization): Ditto.
+       (check_return_expr): Fix calls for SFINAE.
+       (lvalue_or_else): Add SFINAE support.
+       * init.c (perform_member_init): Fix calls for SFINAE.
+       (emit_mem_initializers): Ditto.
+       (expand_virtual_init): Ditto.
+       (expand_cleanup_for_base): Ditto.
+       (build_aggr_init): Add SFINAE support.
+       (expand_default_init): Ditto.
+       (expand_aggr_init_1): Fix calls for SFINAE.
+       (build_offset_ref): Ditto.
+       (build_new_1): Add SFINAE support.
+       (build_new): Ditto.
+       (build_vec_delete_1): Fix calls for SFINAE.
+       (get_temp_regvar): Ditto.
+       (build_vec_init): Add SFINAE support.
+       (build_dtor_call): Fix calls for SFINAE.
+       (build_delete): Ditto.
+       (push_base_cleanups): Ditto.
+       (build_vec_delete_1): Ditto.
+       * class.c (build_base_path): Fix calls for SFINAE.
+       (build_simple_base_path): Ditto.
+       (convert_to_base_statically): Ditto.
+       (build_vfn_ref): Ditto.
+       (resolve_address_of_overloaded_function): Ditto.
+       * decl.c (check_initializer): Fix calls for SFINAE.
+       (register_dtor_fn): Ditto.
+       (compute_array_index_type): Ditto.
+       (finish_enum): Ditto.
+       (start_preparsed_function): Ditto.
+       (cxx_maybe_build_cleanup): Ditto.
+       * call.c (convert_like): Add COMPLAIN argument.
+       (convert_like_with_context): Ditto.
+       (build_this): Fix calls for SFINAE.
+       (build_user_type_conversion): Ditto.
+       (resolve_args): Ditto.
+       (build_new_function_call): Add SFINAE support.
+       (build_operator_new_call): Fix calls for SFINAE.
+       (build_object_call): Add SFINAE support.
+       (build_conditional_expr): Ditto.
+       (build_new_op): Ditto.
+       (build_op_delete_call): Fix calls for SFINAE.
+       (build_temp): Ditto.
+       (convert_like_real): Add SFINAE support.
+       (build_x_va_arg): Fix calls for SFINAE.
+       (convert_default_arg): Ditto.
+       (build_over_call): Add SFINAE support.
+       (build_java_interface_fn_ref): Fix calls for SFINAE.
+       (build_special_member_call): Add SFINAE support.
+       (build_new_method_call): Ditto.
+       (perform_implicit_conversion): Ditto.
+       (perform_direct_initialization_if_possible): Ditto.
+       (initialize_reference): Fix calls for SFINAE.
+       * method.c (do_build_assign_ref): Fix calls for SFINAE.
+       * rtti.c (build_headof): Fix calls for SFINAE.
+       (get_tinfo_decl_dynamic): Ditto.
+       (get_typeid): Ditto.
+       (build_dynamic_cast_1): Add SFINAE support.
+       (build_dynamic_cast): Ditto.
+       (tinfo_base_init): Fix calls for SFINAE.
+       * except.c (do_get_exception_ptr): Fix calls for SFINAE.
+       (do_end_catch): Ditto.
+       (initialize_handler_parm): Ditto.
+       (expand_start_catch_block): Ditto.
+       (do_allocate_exception): Ditto.
+       (do_free_exception): Ditto.
+       (build_throw): Ditto.
+       * cvt.c (build_up_reference): Fix calls for SFINAE.
+       (convert_to_reference): Ditto.
+       (ocp_convert): Ditto.
+       (convert_to_void): Add SFINAE support.
+       * tree.c (build_dummy_object): Fix calls for SFINAE.
+       (stabilize_expr): Ditto.
+       * cp-tree.h (build_conditional_expr): Add tsubst_flags_t
+       parameter.
+       (build_new_method_call): Ditto.
+       (build_special_member_call): Ditto.
+       (build_new_op): Ditto.
+       (perform_implicit_conversion): Ditto.
+       (perform_direct_initialization_if_possible): Ditto.
+       (convert_to_void): Ditto.
+       (build_aggr_init): Ditto.
+       (build_new): Ditto.
+       (build_vec_init): Ditto.
+       (build_dynamic_cast): Ditto.
+       (finish_call_expr): Ditto
+       (cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
+       (cxx_sizeof_nowarn): Remove macro; add function declaration.
+       (build_class_member_access_expr): Add tsubst_flags_t parameter.
+       (finish_class_member_access_expr): Ditto.
+       (build_x_indirect_ref): Ditto.
+       (cp_build_indirect_ref): New.
+       (cp_build_function_call): Add tsubst_flags_t parameter.
+       (build_x_unary_op): Ditto.
+       (cp_build_unary_op): New.
+       (build_x_conditional_expr): Add tsubst_flags_t parameter.
+       (build_x_compound_expr): Ditto.
+       (build_compound_expr): Ditto.
+       (build_static_cast): Ditto.
+       (build_reinterpret_cast): Ditto.
+       (build_const_cast): Ditto.
+       (build_c_cast): Ditto.
+       (build_x_modify_expr): Ditto.
+       (cp_build_modify_expr): New.
+       (convert_for_initialization): Add tsubst_flags_t parameter.
+       (cp_build_binary_op): Remove macro; add function declaration.
+       (invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
+       (lvalue_or_else): Ditto.
+       (build_functional_cast): Ditto.
+       * typeck2.c (digest_init): Fix calls for SFINAE.
+       (process_init_constructor_array): Ditto.
+       (process_init_constructor_record): Ditto.
+       (build_x_arrow): Ditto.
+       (build_m_component_ref): Ditto.
+       (build_functional_cast): Add SFINAE support.
+       * pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
+       * semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
+       (finish_expr_stmt): Ditto.
+       (finish_for_expr): Ditto.
+       (finish_asm_stmt): Ditto.
+       (finish_non_static_data_member): Ditto.
+       (finish_qualified_id_expr): Ditto.
+       (finish_call_expr): Add SFINAE support.
+       (finish_increment_expr): Fix calls for SFINAE.
+       (finish_unary_op_expr): Ditto.
+       (simplify_aggr_init_expr): Ditto.
+       (finish_omp_clauses): Ditto.
+       (finish_omp_for): Ditto.
+       (finish_omp_barrier): Ditto.
+       (finish_omo_flush): Ditto.
+       * decl2.c (grok_array_decl): Fix calls or SFINAE.
+       (build_anon_union_vars): Ditto.
+       (get_guard_cond): Ditto.
+       (set_guard): Ditto.
+       (one_static_initialization_or_destruction): Ditto.
+       (do_static_initialization_or_destruction): Ditto.
+       (generate_ctor_or_dtor_function): Ditto.
+       (build_offset_ref_call_from_tree): Ditto.
+       * parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
+       (cp_parser_postfix_dot_deref_expression): Ditto.
+       (cp_parser_unary_expression): Ditto.
+       (cp_parser_new_expression): Ditto.
+       (cp_parser_cast_expression): Ditto.
+       (cp_parser_binary_expression): Ditto.
+       (cp_parser_question_colon_clause): Ditto.
+       (cp_parser_assignment_expression): Ditto.
+       (cp_parser_expression): Ditto.
+       (cp_parser_builtin_offsetof): Ditto.
+       (cp_parser_template_argument): Ditto.
+       (cp_parser_functional_cast): Ditto.
+
+2008-03-24  Tom Tromey  <tromey@redhat.com>
+
+	* lex.c (handle_pragma_interface): Don't copy the filename.
+	(handle_pragma_implementation): Copy filename using xstrdup.
+
 2008-03-21  Paolo Carlini  <pcarlini@suse.de>
 
 	* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.


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