This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: revised PATCH: CALL_EXPR representation changes, part 0/9 (table of contents)


> Ian Lance Taylor wrote:
> 
> >Sure, go for it.
> 
> OK, I've just committed the megapatch.  :-)  Wahoo!
> 
> I've started one last round of testing to check for any regressions that 
> might have crept in during my last round of merging from HEAD.  If that 
> turns up anything, I'll submit separate patches in the morning.
> 
> Thanks to everyone for reviewing patches and helping us get this cleaned up 
> and committed!  :-)

Hi,
this is report from memory tester, overall it seems to be slight memory
consumption increase. Are there any plans to get the memory back?

Honza

comparing combine.c compilation at -O0 level:
  Amount of produced GGC garbage increased from 37160k to 37274k, overall 0.31%
  Amount of memory still referenced at the end of compilation increased from 6541k to 6586k, overall 0.69%
    Overall memory needed: 17788k -> 17880k
    Peak memory use before GGC: 9294k -> 9276k
    Peak memory use after GGC: 8873k -> 8858k
    Maximum of released memory in single GGC run: 2603k -> 2584k
    Garbage: 37160k -> 37274k
    Leak: 6541k -> 6586k
    Overhead: 5024k -> 5036k
    GGC runs: 280 -> 279

comparing combine.c compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 37749k to 37856k, overall 0.28%
  Amount of memory still referenced at the end of compilation increased from 9418k to 9462k, overall 0.48%
    Overall memory needed: 19824k -> 19900k
    Peak memory use before GGC: 10899k -> 10884k
    Peak memory use after GGC: 10533k -> 10518k
    Maximum of released memory in single GGC run: 2375k -> 2355k
    Garbage: 37749k -> 37856k
    Leak: 9418k -> 9462k
    Overhead: 5727k -> 5739k
    GGC runs: 270 -> 269

comparing combine.c compilation at -O1 level:
  Amount of produced GGC garbage increased from 57474k to 57573k, overall 0.17%
  Amount of memory still referenced at the end of compilation increased from 6567k to 6615k, overall 0.73%
    Overall memory needed: 35176k -> 35312k
    Peak memory use before GGC: 19438k -> 19349k
    Peak memory use after GGC: 19223k -> 19134k
    Maximum of released memory in single GGC run: 2197k -> 2169k
    Garbage: 57474k -> 57573k
    Leak: 6567k -> 6615k
    Overhead: 6356k -> 6370k
    GGC runs: 352

comparing combine.c compilation at -O2 level:
  Amount of produced GGC garbage increased from 68714k to 68840k, overall 0.18%
  Amount of memory still referenced at the end of compilation increased from 6676k to 6724k, overall 0.72%
    Overall memory needed: 37504k -> 37592k
    Peak memory use before GGC: 19472k -> 19386k
    Peak memory use after GGC: 19271k -> 19184k
    Maximum of released memory in single GGC run: 2184k -> 2157k
    Garbage: 68714k -> 68840k
    Leak: 6676k -> 6724k
    Overhead: 7979k -> 7996k
    GGC runs: 403

comparing combine.c compilation at -O3 level:
  Overall memory allocated via mmap and sbrk increased from 45728k to 47016k, overall 2.82%
  Amount of produced GGC garbage increased from 101101k to 101216k, overall 0.11%
  Amount of memory still referenced at the end of compilation increased from 6816k to 6864k, overall 0.71%
    Overall memory needed: 45728k -> 47016k
    Peak memory use before GGC: 20505k -> 20423k
    Peak memory use after GGC: 19623k -> 19541k
    Maximum of released memory in single GGC run: 3160k -> 3135k
    Garbage: 101101k -> 101216k
    Leak: 6816k -> 6864k
    Overhead: 12209k -> 12223k
    GGC runs: 452 -> 453

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 103552k -> 103212k
    Peak memory use before GGC: 69332k -> 68881k
    Peak memory use after GGC: 44978k -> 44736k
    Maximum of released memory in single GGC run: 36886k -> 36678k
    Garbage: 130575k -> 130541k
    Leak: 9591k -> 9589k
    Overhead: 16932k -> 16801k
    GGC runs: 206

comparing insn-attrtab.c compilation at -O0 -g level:
  Amount of memory still referenced at the end of compilation increased from 11026k to 11278k, overall 2.29%
    Overall memory needed: 105072k -> 104484k
    Peak memory use before GGC: 70493k -> 70042k
    Peak memory use after GGC: 46246k -> 46004k
    Maximum of released memory in single GGC run: 36887k -> 36678k
    Garbage: 131985k -> 131699k
    Leak: 11026k -> 11278k
    Overhead: 17326k -> 17195k
    GGC runs: 206

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 148008k -> 147616k
    Peak memory use before GGC: 86339k -> 85870k
    Peak memory use after GGC: 80546k -> 80077k
    Maximum of released memory in single GGC run: 33057k -> 32817k
    Garbage: 264735k -> 264702k
    Leak: 9407k -> 9408k
    Overhead: 27615k -> 27483k
    GGC runs: 225

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 196312k -> 193236k
    Peak memory use before GGC: 87655k -> 87186k
    Peak memory use after GGC: 80616k -> 80147k
    Maximum of released memory in single GGC run: 31415k -> 31177k
    Garbage: 299495k -> 299471k
    Leak: 9404k -> 9405k
    Overhead: 33192k -> 33062k
    GGC runs: 245

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 191556k -> 193204k
    Peak memory use before GGC: 87668k -> 87197k
    Peak memory use after GGC: 80629k -> 80158k
    Maximum of released memory in single GGC run: 31478k -> 31239k
    Garbage: 300161k -> 300121k
    Leak: 9409k -> 9411k
    Overhead: 33393k -> 33259k
    GGC runs: 245 -> 246

comparing Gerald's testcase PR8361 compilation at -O0 level:
  Amount of produced GGC garbage increased from 209348k to 209808k, overall 0.22%
    Overall memory needed: 151204k -> 148323k
    Peak memory use before GGC: 92319k -> 90645k
    Peak memory use after GGC: 91396k -> 89747k
    Maximum of released memory in single GGC run: 18792k -> 18005k
    Garbage: 209348k -> 209808k
    Leak: 49388k -> 49217k
    Overhead: 23612k -> 23459k
    GGC runs: 410 -> 415

comparing Gerald's testcase PR8361 compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 215949k to 216403k, overall 0.21%
    Overall memory needed: 169336k -> 166667k
    Peak memory use before GGC: 104952k -> 103573k
    Peak memory use after GGC: 103913k -> 102547k
    Maximum of released memory in single GGC run: 18978k -> 18487k
    Garbage: 215949k -> 216403k
    Leak: 72813k -> 72642k
    Overhead: 29533k -> 29381k
    GGC runs: 381 -> 385

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 142181k -> 142172k
    Peak memory use before GGC: 102382k -> 101987k
    Peak memory use after GGC: 101354k -> 100964k
    Maximum of released memory in single GGC run: 17982k -> 17236k
    Garbage: 345994k -> 345717k
    Leak: 50047k -> 49930k
    Overhead: 30171k -> 30010k
    GGC runs: 522 -> 528

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 142789k -> 144308k
    Peak memory use before GGC: 103057k -> 102663k
    Peak memory use after GGC: 101996k -> 101610k
    Maximum of released memory in single GGC run: 17979k -> 17234k
    Garbage: 374823k -> 374536k
    Leak: 50652k -> 50533k
    Overhead: 34098k -> 33937k
    GGC runs: 558 -> 563

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 145953k -> 146960k
    Peak memory use before GGC: 104821k -> 104417k
    Peak memory use after GGC: 103752k -> 103383k
    Maximum of released memory in single GGC run: 18300k -> 17650k
    Garbage: 392083k -> 391762k
    Leak: 51305k -> 51194k
    Overhead: 35435k -> 35267k
    GGC runs: 569 -> 573

comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
  Amount of produced GGC garbage increased from 145987k to 146430k, overall 0.30%
  Amount of memory still referenced at the end of compilation increased from 7572k to 7618k, overall 0.60%
    Overall memory needed: 245799k -> 245323k
    Peak memory use before GGC: 81778k -> 80968k
    Peak memory use after GGC: 59517k -> 58707k
    Maximum of released memory in single GGC run: 44985k -> 44133k
    Garbage: 145987k -> 146430k
    Leak: 7572k -> 7618k
    Overhead: 24807k -> 24814k
    GGC runs: 80 -> 79

comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
  Amount of produced GGC garbage increased from 146205k to 146696k, overall 0.34%
  Amount of memory still referenced at the end of compilation increased from 9340k to 9386k, overall 0.49%
    Overall memory needed: 246659k -> 246131k
    Peak memory use before GGC: 82424k -> 81614k
    Peak memory use after GGC: 60163k -> 59353k
    Maximum of released memory in single GGC run: 44975k -> 44123k
    Garbage: 146205k -> 146696k
    Leak: 9340k -> 9386k
    Overhead: 25303k -> 25310k
    GGC runs: 89

comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 240608k to 246404k, overall 2.41%
  Peak amount of GGC memory allocated before garbage collecting increased from 84342k to 85924k, overall 1.88%
  Peak amount of GGC memory still allocated after garbage collecting increased from 73896k to 74852k, overall 1.29%
  Amount of memory still referenced at the end of compilation increased from 19610k to 20861k, overall 6.38%
    Overall memory needed: 240608k -> 246404k
    Peak memory use before GGC: 84342k -> 85924k
    Peak memory use after GGC: 73896k -> 74852k
    Maximum of released memory in single GGC run: 36499k -> 36413k
    Garbage: 224355k -> 224482k
    Leak: 19610k -> 20861k
    Overhead: 30452k -> 30546k
    GGC runs: 81

comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
  Peak amount of GGC memory allocated before garbage collecting increased from 78746k to 79839k, overall 1.39%
  Peak amount of GGC memory still allocated after garbage collecting increased from 73896k to 74853k, overall 1.30%
  Amount of memory still referenced at the end of compilation increased from 19700k to 20951k, overall 6.35%
    Overall memory needed: 486096k -> 488520k
    Peak memory use before GGC: 78746k -> 79839k
    Peak memory use after GGC: 73896k -> 74853k
    Maximum of released memory in single GGC run: 33796k -> 33434k
    Garbage: 231751k -> 231528k
    Leak: 19700k -> 20951k
    Overhead: 32593k -> 32630k
    GGC runs: 92

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 200612k to 201755k, overall 0.57%
  Peak amount of GGC memory still allocated after garbage collecting increased from 188954k to 190217k, overall 0.67%
  Amount of memory still referenced at the end of compilation increased from 45254k to 46317k, overall 2.35%
    Overall memory needed: 1180308k -> 1188936k
    Peak memory use before GGC: 200612k -> 201755k
    Peak memory use after GGC: 188954k -> 190217k
    Maximum of released memory in single GGC run: 80737k -> 80745k
    Garbage: 376511k -> 376796k
    Leak: 45254k -> 46317k
    Overhead: 49197k -> 49361k
    GGC runs: 70

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2007-02-15 08:44:33.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2007-02-16 00:43:40.000000000 +0000
@@ -1,3 +1,715 @@
+2007-02-15  Ian Lance Taylor  <iant@google.com>
+
+	* lower-subreg.c (move_eh_region_note): New static function.
+	(resolve_simple_move): Call it.
+	(decompose_multiword_subregs): Track blocks for which we resolve a
+	simple move which is also a control flow insn.  Pass them to
+	find_many_sub_basic_blocks.
+	(pass_lower_subreg): Add TODO_verify_flow.
+	(pass_lower_subreg2): Likewise.
+
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* tree.h (enum tree_code_class): Add tcc_vl_exp.
+	(VL_EXP_CLASS_P): New.
+	(TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
+	TREE_CODE_LENGTH.
+	(TREE_OPERAND_CHECK_CODE): Likewise.
+	(GIMPLE_STMT_OPERAND_CHECK): Likewise.
+	(TREE_RTL_OPERAND_CHECK): Likewise.
+	(tree_operand_check_failed): Make second parameter the whole tree
+	instead of its code.  Fixed callers.
+	(VL_EXP_CHECK): New.
+	(TREE_OPERAND_LENGTH): New.
+	(VL_EXP_OPERAND_LENGTH): New.
+	(CALL_EXPR_FN): New.
+	(CALL_EXPR_STATIC_CHAIN): New.
+	(CALL_EXPR_ARGS): New.
+	(CALL_EXPR_ARG): New.
+	(call_expr_nargs): New.
+	(CALL_EXPR_ARGP): New.
+	(build_nt_call_list): Declare.
+	(build_vl_exp_stat): Declare.
+	(build_vl_exp): New.
+	(build_call_list): Declare.
+	(build_call_nary): Declare.
+	(build_call_valist): Declare.
+	(build_call_array): Declare.
+	(call_expr_arg): Declare.
+	(call_expr_argp): Declare.
+	(call_expr_arglist): Declare.
+	(fold_build_call_list): Declare.
+	(fold_build_call_list_initializer): Declare.
+	(fold_call_expr): Declare to replace fold_builtin.
+	(fold_builtin_fputs): Update to agree with modified definition.
+	(fold_builtin_strcpy): Likewise.
+	(fold_builtin_strncpy): Likewise.
+	(fold_builtin_memory_chk): Likewise.
+	(fold_builtin_stxcpy_chk): Likewise.
+	(fold_builtin_strncpy_chk): Likewise.
+	(fold_builtin_next_arg): Likewise.
+	(fold_build_call_expr): Declare.
+	(fold_builtin_call_list): Declare.
+	(fold_builtin_call_valist): Declare.
+	(build_call_expr): Declare.
+	(validate_arglist): Update to agree with modified definition.
+	(tree_operand_length): New.
+	(call_expr_arg_iterator): New.
+	(init_call_expr_arg_iterator): New.
+	(next_call_expr_arg): New.
+	(first_call_expr_arg): New.
+	(more_call_expr_args_p): New.
+	(FOR_EACH_CALL_EXPR_ARG): New.
+
+	* tree.c (tree_code_class_string): Add entries for tcc_vl_exp
+	and tcc_gimple_stmt.
+	(tree_code_size): Update documentation.  Use sizeof (tree) rather
+	than sizeof (char *).
+	(tree_size): Likewise.  Add case for tcc_vl_exp.
+	(tree_node_structure): Add case for tcc_vl_exp.
+	(contains_placeholder_p): Likewise.
+	(substitute_in_expr): Likewise.
+	(substitute_placeholder_in_expr): Likewise.
+	(stabilize_reference_1): Likewise.
+	(build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
+	to diagnose breakage of this interface for constructing CALL_EXPRs.
+	(build_nt): Add similar assertion here.
+	(build_nt_call_list): New.
+	(simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
+	(iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
+	TREE_CODE_LENGTH.
+	(get_callee_fndecl): Use new CALL_EXPR accessors.
+	(tree_operand_check_failed): Change parameters to pass entire node
+	instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
+	(process_call_operands): New.
+	(build_vl_exp_stat): New.
+	(build_call_list): New.
+	(build_call_nary): New.
+	(build_call_valist): New.
+	(build_call_array): New.
+	(walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+	(call_expr_arglist): New.
+
+	* tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
+	tcc_vl_exp instead of a fixed-size tcc_expression.
+
+	* doc/c-tree.texi (CALL_EXPR): Document new representation and
+	accessors for CALL_EXPRs.
+	(AGGR_INIT_EXPR): Likewise.
+
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* builtins.c (c_strlen): Return NULL_TREE instead of 0.
+	(expand_builtin_nonlocal_goto): Change parameter to be entire
+	CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
+	(expand_builtin_prefetch): Likewise.
+	(expand_builtin_classify_type): Likewise.
+	(mathfn_built_in): Return NULL_TREE instead of 0.
+	(expand_errno_check): Use new CALL_EXPR accessors.
+	(expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
+	Return NULL_RTX instead of 0.
+	(expand_builtin_mathfn_2): Likewise.
+	(expand_builtin_mathfn_3): Likewise.
+	(expand_builtin_interclass_mathfn): Likewise.
+	(expand_builtin_sincos): Likewise.
+	(expand_builtin_cexpi): Likewise.
+	(expand_builtin_int_roundingfn): Likewise.
+	(expand_builtin_int_roundingfn_2): Likewise.
+	(expand_builtin_pow): Likewise.
+	(expand_builtin_powi): Likewise.
+	(expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
+	of arglist, fixing callers appropriately.  Use new CALL_EXPR
+	accessors and constructors.  Return NULL_RTX instead of 0.
+	(expand_builtin_strstr): Likewise.
+	(expand_builtin_strchr): Likewise.
+	(expand_builtin_strrchr): Likewise.
+	(expand_builtin_strpbrk): Likewise.
+	(expand_builtin_memcpy): Likewise.
+	(expand_builtin_mempcpy): Likewise.
+	(expand_builtin_mempcpy_args): New.
+	(expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
+	(expand_builtin_memmove_args): New.
+	(expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
+	(expand_movstr): Likewise.
+	(expand_builtin_strcpy): Likewise.
+	(expand_builtin_strcpy_args): New.
+	(expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
+	(expand_builtin_strncpy): Likewise.
+	(expand_builtin_memset): Likewise.
+	(expand_builtin_memset_args): New.
+	(expand_builtin_bzero): Similarly to expand_builtin_memset.
+	(expand_builtin_memcmp): Likewise.
+	(expand_builtin_strcmp): Likewise.
+	(expand_builtin_strncmp): Likewise.
+	(expand_builtin_strcat): Likewise.
+	(expand_builtin_strncat): Likewise.
+	(expand_builtin_strspn): Likewise.
+	(expand_builtin_strcspn): Likewise.
+	(expand_builtin_args_info): Likewise.
+	(expand_builtin_va_start): Likewise.
+	(gimplify_va_arg_expr): Likewise.
+	(expand_builtin_va_end): Likewise.
+	(expand_builtin_va_copy): Likewise.
+	(expand_builtin_frame_address): Likewise.
+	(expand_builtin_alloca): Likewise.
+	(expand_builtin_bswap): Likewise.
+	(expand_builtin_unop): Likewise.
+	(expand_builtin_fputs): Likewise.
+	(expand_builtin_expect): Likewise.
+	(expand_builtin_fabs): Likewise.
+	(expand_builtin_copysign): Likewise.
+	(expand_builtin_printf): Likewise.
+	(expand_builtin_fprintf): Likewise.
+	(expand_builtin_sprintf): Likewise.
+	(expand_builtin_init_trampoline): Likewise.
+	(expand_builtin_signbit): Likewise.
+	(expand_builtin_fork_or_exec): Likewise.
+	(expand_builtin_sync_operation): Likewise.
+	(expand_builtin_compare_and_swap): Likewise.
+	(expand_builtin_lock_test_and_set): Likewise.
+	(expand_builtin_lock_release): Likewise.
+	(expand_builtin): Likewise.
+	(builtin_mathfn_code): Likewise.
+
+	(fold_builtin_constant_p): Pass call arguments individually instead
+	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
+	accessors and constructors.  Return NULL_TREE instead of 0.
+	(fold_builtin_expect): Likewise.
+	(fold_builtin_classify_type): Likewise.
+	(fold_builtin_strlen): Likewise.
+	(fold_builtin_nan): Likewise.
+	(integer_valued_real_p): Likewise.
+	(fold_trunc_transparent_mathfn): Likewise.
+	(fold_fixed_mathfn): Likewise.
+	(fold_builtin_cabs): Likewise.
+	(fold_builtin_sqrt): Likewise.
+	(fold_builtin_cbrt): Likewise.
+	(fold_builtin_cos): Likewise.
+	(fold_builtin_cosh): Likewise.
+	(fold_builtin_tan): Likewise.
+	(fold_builtin_sincos): Likewise.
+	(fold_builtin_cexp): Likewise.
+	(fold_builtin_trunc): Likewise.
+	(fold_builtin_floor): Likewise.
+	(fold_builtin_ceil): Likewise.
+	(fold_builtin_round): Likewise.
+	(fold_builtin_int_roundingfn): Likewise.
+	(fold_builtin_bitop): Likewise.
+	(fold_builtin_bswap): Likewise.
+	(fold_builtin_logarithm): Likewise.
+	(fold_builtin_hypot): Likewise.
+	(fold_builtin_pow): Likewise.
+	(fold_builtin_powi): Likewise.
+	(fold_builtin_exponent): Likewise.
+	(fold_builtin_memset): Likewise.
+	(fold_builtin_bzero): Likewise.
+	(fold_builtin_memory_op): Likewise.
+	(fold_builtin_bcopy): Deleted; call site changed to invoke
+	fold_builtin_memory_op directly.
+	(fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
+	(fold_builtin_strncpy): Likewise.
+	(fold_builtin_memcmp): Likewise.
+	(fold_builtin_strcmp): Likewise.
+	(fold_builtin_strncmp): Likewise.
+	(fold_builtin_signbit): Likewise.
+	(fold_builtin_copysign): Likewise.
+	(fold_builtin_isascii): Likewise.
+	(fold_builtin_toascii): Likewise.
+	(fold_builtin_isdigit): Likewise.
+	(fold_builtin_fabs): Likewise.
+	(fold_builtin_abs): Likewise.
+	(fold_builtin_fmin_fmax): Likewise.
+	(fold_builtin_carg): Likewise.
+	(fold_builtin_classify): Likewise.
+	(fold_builtin_unordered_cmp): Likewise.
+
+	(fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
+	New functions split out from fold_builtin_1.
+	(fold_builtin_n): New.
+	(fold_builtin_varargs): New.
+	(fold_builtin): Deleted.  Most callers changed to use fold_call_expr
+	instead.
+	(fold_call_expr): New.
+	(build_function_call_expr): Rewrite to use new helper function.
+	(fold_builtin_call_list): New.
+	(build_call_expr): New.
+	(fold_builtin_call_valist): New.
+	(rewrite_call_expr): New.
+	(validate_arg): New.
+	(validate_arglist): Change parameter to be entire CALL_EXPR instead
+	of an arglist.  Change return type to bool.  Use new CALL_EXPR
+	accessors.
+
+	(fold_builtin_strstr):  Pass call arguments individually instead
+	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
+	accessors and constructors.  Return NULL_TREE instead of 0.
+	(fold_builtin_strchr): Likewise.
+	(fold_builtin_strrchr): Likewise.
+	(fold_builtin_strpbrk): Likewise.
+	(fold_builtin_strcat): Likewise.
+	(fold_builtin_strncat): Likewise.
+	(fold_builtin_strspn): Likewise.
+	(fold_builtin_strcspn): Likewise.
+	(fold_builtin_fputs): Likewise.
+	(fold_builtin_next_arg): Likewise.
+	(fold_builtin_sprintf): Likewise.
+
+	(expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
+	NULL_RTX instead of 0.
+	(expand_builtin_memory_chk): Likewise.
+	(maybe_emit_chk_warning): Likewise.
+	(maybe_emit_sprintf_chk_warning): Likewise.
+
+	(fold_builtin_object_size): Pass call arguments individually instead
+	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
+	accessors and constructors.  Return NULL_TREE instead of 0.
+	(fold_builtin_memory_chk): Likewise.
+	(fold_builtin_stxcpy_chk): Likewise.
+	(fold_builtin_strncpy_chk): Likewise.
+	(fold_builtin_strcat_chk): Likewise.
+	(fold_builtin_strcat_chk): Likewise.
+	(fold_builtin_strncat_chk): Likewise.
+	(fold_builtin_sprintf_chk): Likewise.
+	(fold_builtin_snprintf_chk): Likewise.
+	(fold_builtin_printf): Likewise.
+	(fold_builtin_vprintf): Likewise.
+
+	* fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
+	constructors.
+	(operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
+	(make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+	(extract_muldiv_1): Add VL_EXP_CLASS_P case.
+	(fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
+	(fold_unary): Likewise.
+	(fold_binary): Likewise.
+	(fold_ternary): Remove CALL_EXPR case, since they are no longer
+	ternary expressions.
+	(fold): Add logic for tcc_vl_exp.
+	(fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
+	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+	(fold_build3_stat): Add assertion to flag broken interface for
+	constructing CALL_EXPRs.
+	(fold_build_call_list): New.
+	(fold_build_call_list_initializer): New.
+	(tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
+	constructors.
+	(fold_strip_sign_ops): Likewise.
+
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
+	accessors and dump arguments explicitly.
+
+	* tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
+	TREE_CODE_LENGTH.
+	(dump_generic_node): Use new CALL_EXPR accessors and walk arguments
+	explicitly.
+	(print_call_name): Use new CALL_EXPR accessors.
+
+	* print-tree.c (print_node): Add case tcc_vl_exp.  Print
+	CALL_EXPR arguments explicitly instead of as a list.  Use
+	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+
+	* tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
+	(vrp_visit_stmt): Likewise.
+
+	* tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
+	know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
+	TREE_CODE_LENGTH.
+	(force_move_till_expr): Likewise.
+
+	* targhooks.c (default_external_stack_protect_fail): Use
+	build_call_expr instead of build_function_call_expr.
+	(default_hidden_stack_protect_fail): Likewise.
+
+	* tree-complex.c (expand_complex_libcall): Use build_call_expr to
+	build the call.
+
+	* cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
+	and walk arguments explicitly.
+
+	* tree-ssa-loop-niter.c (simplify_replace_tree): Use
+	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+	(expand_simple_operations): Likewise.
+	(infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
+
+	* gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
+	of TREE_CODE_LENGTH.
+	(walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
+
+	* optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
+	instead of TREE_CODE_LENGTH.
+
+	* value_prof.c (tree_ic): Use new CALL_EXPR accessors.
+	(tree_ic_transform): Likewise.
+	(interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
+	parameter instead of arglist.  Fix callers.
+	(tree_stringop_fixed_value): Use new CALL_EXPR accessors.
+	(tree_stringops_transform): Likewise.
+	(tree_indirect_call_to_profile): Likewise.
+	(tree_stringops_values_to_profile): Likewise.
+
+	* tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
+	(eliminate_tail_call): Likewise.
+
+	* ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
+
+	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
+	Use TREE_OPERAND_LENGTH and generalize to handle any number of
+	operands.
+	(instantiate_parameters_1): Can't handle tcc_vl_exp here.
+
+	* omp-low.c (build_omp_barrier): Use build_call_expr.
+	(lower_rec_input_clauses): Likewise.
+	(lower_reduction_clauses): Likewise.
+	(expand_parallel_call): Likewise.
+	(maybe_catch_exception): Likewise.
+	(expand_omp_for_generic): Likewise.
+	(expand_omp_for_static_nochunk): Likewise.
+	(expand_omp_sections): Likewise.
+	(lower_omp_single_simple): Likewise.
+	(lower_omp_single_copy): Likewise.
+	(lower_omp_master): Likewise.
+	(lower_omp_ordered): Likewise.
+	(lower_omp_critical): Likewise.
+
+	* ipa-reference.c (check-call): Use new CALL_EXPR iterator.
+	(scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
+
+	* tree-gimple.c (is_gimple_call_addr): Fix doc.
+	(recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
+	TREE_CODE_LENGTH.  Add tcc_vl_exp case.
+
+	* tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
+	and generalize to handle any number of operands.
+	(chrec_contains_undetermined): Likewise.
+	(tree_contains_chrecs): Likewise.
+	(evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
+
+	* cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
+
+	* tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
+	fold_call_expr instead of fold_builtin.
+	(ccp_fold_builtin): Likewise.  Update calls into builtins.c to
+	match declarations there.
+	(fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
+	updates.
+
+	* tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
+	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+
+	* ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
+	(scan_function): Add case tcc_vl_exp for CALL_EXPR.
+
+	* tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
+	accessors.
+
+	* tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
+	(execute_cse_sincos): Use new CALL_EXPR accessors.
+
+	* tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
+
+	* gimple-low.c (lower_function_body): Use build_call_expr.
+	(lower_builtin_setjmp): Likewise.
+
+	* expr.c (emit_block_move_via_libcall): Use build_call_expr.
+	(set_storage_via_libcall): Likewise.
+	(safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
+	instead of TREE_CODE_LENGTH.
+	(expand_expr_real_1): Use new CALL_EXPR accessors.
+
+	* tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
+	generalize to handle any number of operands.
+	(TB_parent_eq): Likewise.
+
+	* predict.c (expr_expected_value): Use new CALL_EXPR accessors.
+	(strip_builtin_expect): Likewise.
+
+	* function.c (gimplify_parameters): Use build_call_expr.
+
+	* tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
+	instead of TREE_CODE_LENGTH.
+
+	* ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
+	(scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
+
+	* tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
+	iterators.
+
+	* gimplify.c (build_stack_save_restore): Use build_call_expr.
+	(gimplify_decl_expr): Likewise.
+	(gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
+	Use new CALL_EXPR iterators.
+	(gimplify_modify_expr_to_memcpy): Use build_call_expr.
+	(gimplify_modify_expr_to_memset): Likewise.
+	(gimplify_variable_sized_compare): Likewise.
+	(gimplify_omp_atomic_fetch_op): Likewise.
+	(gimplify_omp_atomic_pipeline): Likewise.
+	(gimplify_omp_atomic_mutex): Likewise.
+	(gimplify_function_tree): Likewise.
+
+	* calls.c (alloca_call_p): Use new CALL_EXPR accessors.
+	(call_expr_flags): Likewise.
+	(expand_call): Likewise.
+
+	* except.c (expand_builtin_eh_return_data_regno): Pass entire
+	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR 
+        accessors.
+
+	* coverage.c (create_coverage): Use build_call_expr.
+
+	* tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
+	(temp_call_expr_obstack): New.
+	(pool_copy_list): Delete.
+	(temp_copy_call_expr): New.
+	(phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
+	CALL_EXPR accessors.  Get rid of special goo for copying argument
+	lists and use temp_copy_call_expr instead.
+	(valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
+	CALL_EXPR accessors.
+	(create_expression_by_pieces): Likewise.  Use build_call_array
+	to construct the result instead of fold_build3.
+	(create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
+	dealing with argument lists.
+	(init_pre): Remove references to expression_node_pool and
+	list_node_pool.  Init temp_call_expr_obstack instead.
+	(fini_pre): Remove references to expression_node_pool and
+	list_node_pool.
+
+	* tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
+	and walk arguments explicitly instead of as a list.
+
+	* tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
+	(mx_register_decls): Likewise.
+	(mudflap_register_call): Likewise.
+	(mudflap_finish_file): Likewise.
+
+	* ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
+	(ipa_callsite_compute_param): Likewise.
+
+	* tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
+	accessors and constructor.
+
+	* tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
+	accessors and constructor.
+	(convert_tramp_reference): Likewise. 
+	(convert_call_expr): Likewise.
+	(finalize_nesting_tree_1): Likewise.
+
+	* tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
+	accessors.
+
+	* tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
+
+	* tree-inline.c (initialize_inlined_parameters): Pass entire
+	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
+	accessors.
+	(estimate_num_insns_1): Use new CALL_EXPR accessors.
+	(expand_call_inline): Tidy up call to initialize_inlined_parameters.
+
+	* tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
+	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+	(vectorizable_reduction): Likewise.
+	(vectorizable_call): Use new CALL_EXPR iterators.
+	(vectorizable_conversion): Use build_call_expr.
+	(vectorizable_operation): Use TREE_OPERAND_LENGTH.
+	(vect_gen_widened_results_half): Use build_call_expr.
+	(vect_setup_realignment): Likewise.
+	(vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
+
+	* tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
+	(pass_through_call): Likewise.
+	(compute_object_sizes): Likewise.  Use fold_call_expr instead of
+	fold_builtin.
+
+	* tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
+	(tree_gen_pow2_profiler): Likewise.
+	(tree_gen_one_value_profiler): Likewise.
+	(tree_gen_ic_func_profiler): Likewise.
+	(tree_gen_average_profiler): Likewise.
+	(tree_gen_ior_profiler): Likewise.
+
+	* tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
+	(find_func_aliases): Use new CALL_EXPR accessors.  Add case
+	tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
+
+	* tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
+	of TREE_CODE_LENGTH.
+
+	* stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
+	of TREE_CODE_LENGTH.
+
+	* convert.c (convert_to_real): Use new CALL_EXPR accessors and
+	constructor.
+	(convert_to_integer): Likewise.
+
+	* tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
+	accessors.
+
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
+	accessors.
+	* config/frv/frv.c (frv_expand_builtin): Likewise.
+	* config/s390/s390.c (s390_expand_builtin): Likewise.
+
+	* config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
+	(sparc_expand_builtin): Use new CALL_EXPR accessors.
+
+	* config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
+	(ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
+	instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
+	(ix86_expand_store_builtin): Likewise.
+	(ix86_expand_unop_builtin): Likewise.
+	(ix86_expand_unop1_builtin): Likewise.
+	(ix86_expand_sse_compare): Likewise.
+	(ix86_expand_sse_comi): Likewise.
+	(ix86_expand_vec_init_builtin): Likewise.
+	(ix86_expand_vec_ext_builtin): Likewise.
+	(ix86_expand_vec_set_builtin): Likewise.
+	(ix86_expand_builtin): Use new CALL_EXPR accessors.
+
+	* config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
+	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
+
+	* config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
+	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(iq2000_expand_builtin): Use new CALL_EXPR accessors.
+
+	* config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
+	build_call_expr.
+	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
+	(rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
+	arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(altivec_expand_abs_builtin): Likewise.
+	(rs6000_expand_binop_builtin): Likewise.
+	(altivec_expand_predicate_builtin): Likewise.
+	(altivec_expand_lv_builtin): Likewise.
+	(spe_expand_stv_builtin): Likewise.
+	(altivec_expand_stv_builtin): Likewise.
+	(rs6000_expand_ternop_builtin): Likewise.
+	(altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
+	(altivec_expand_st_builtin): Likewise.
+	(altivec_expand_dst_builtin): Likewise.
+	(altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
+	arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(altivec_expand_vec_set_builtin): Likewise.
+	(altivec_expand_vec_ext_builtin): Likewise.
+	(altivec_expand_builtin): Use new CALL_EXPR accessors.
+	(spe_expand_builtin): Likewise.
+	(spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
+	arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(spe_expand_evsel_builtin): Likewise.
+	(rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
+	FCFSX cases must construct whole new CALL_EXPR, not just arglist.
+
+	* config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
+	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(arm_expand_unop_builtin): Likewise.
+	(arm_expand_builtin): Use new CALL_EXPR accessors.
+
+	* config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
+	accessors.
+
+	* config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
+	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
+	(bfin_expand_unop_builtin): Likewise.
+	(bfin_expand_builtin): Use new CALL_EXPR accessors.
+
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* c-semantics.c (build_stmt): Add internal diagnostic check.
+
+	* c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
+	accessors.  Print arguments explicitly instead of as a list.
+
+	* c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
+
+	* c-omp.c (c_finish_omp_barrier): Use build_call_expr.
+	(c_finish_omp_flish): Likewise.
+
+	* c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
+	arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
+	instead of TREE_CODE_LENGTH.
+	(check_function_arguments_recurse): Use new CALL_EXPR accessors.
+	(c_warn_unused_result): Likewise.
+
+2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+	PR c/26494
+	* doc/invoke.texi (Warning Options): Remove
+	-Werror-implicit-function-declaration.
+	(Wimplicit-function-declaration): Update description.
+	* opts.c (common_handle_option): Move handling of -Werror=* to...
+	(enable_warning_as_error): ...here.
+	* opts.h (enable_warning_as_error): Declare.
+	* c-decl.c (implicit_decl_warning): Unless
+	-Wno-implicit-function-declaration is given, emit a pedwarn if
+	-std=c99 or emit a warning if -Wimplicit-function-declaration.
+	* c.opt (Wimplicit-function-declaration): Replace
+	mesg_implicit_function_declaration with
+	warn_implicit_function_declaration.
+	* c-opts.c (c_common_handle_option):
+	-Werror-implicit-function-declaration is exactly equal as
+	-Werror=implicit-function-declaration.
+	(set_Wimplicit): Replace mesg_implicit_function_declaration with
+	warn_implicit_function_declaration.
+	(c_common_post_options): -Wimplict-function-declaration is enabled
+	by default by -std=c99, otherwise is disabled by default.
+	* c-objc-common.c (c_objc_common_init): Remove flawed logic.
+
+2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* gimplify.c (gimplify_modify_expr): During gimplification, attach a
+	DECL on the rhs to a DECL on the lhs for debug info purposes if the
+	former is ignored but not the latter.
+
+2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
+	is made and the reference doesn't use the alias set of its type,
+	do not create the temporary using that type.
+
+2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
+
+	* jump.c: Remove prototypes for delete_computation and
+	delete_prior_computation.
+
+2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
+
+	* jump.c (get_label_after): Delete.
+	(get_label_before, delete_computation, delete_jump,
+	delete_prior_computation, follow_jumps): Move...
+	* reorg.c (delete_computation, delete_prior_computation): ... here...
+	(get_label_before, delete_jump): ... making these static ...
+	(follow_jumps): ... and simplifying this since it only runs after
+	reload.
+	* rtl.h (get_label_after, get_label_before, delete_jump,
+	follow_jumps): Delete prototypes.
+
+2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
+
+	* caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
+	
+2007-02-15  Nick Clifton  <nickc@redhat.com>
+
+	* varasm.c (default_asm_output_anchor): Prepend * to . symbol in
+	order to prevent it from being munged by the target.
+
+2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/i386/i386.md: Remove misleading comment.
+
 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
 
 	* config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2007-02-13 04:02:38.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2007-02-16 00:43:22.000000000 +0000
@@ -1,3 +1,95 @@
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+	    Brooks Moses  <brooks.moses@codesourcery.com>
+	    Lee Millward  <lee.millward@codesourcery.com>
+
+	* cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
+	Change class to tcc_vl_exp.
+
+	* call.c (build_call): Use build_call_list instead 
+	of build3. 
+	(build_over_call): Likewise.
+	(build_new_method_call): Use build_min_non_dep_call_list 
+	instead of build_min_non_dep.
+
+	* error.c (dump_call_expr_args): New function.
+	(dump_aggr_init_expr_args): New function.
+	(dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
+	Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
+
+	* cvt.c (convert_to_void): Use build_call_array instead
+	of build3; use new AGGR_INIT_EXPR accessor macros.
+
+	* mangle.c (write_expression): Use TREE_OPERAND_LENGTH
+	instead of TREE_CODE_LENGTH.
+
+	* dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
+	AGGR_INIT_EXPR accessor macros.
+
+	* cp-gimplify.c (cp_gimplify_init_expr): Use 
+	AGGR_INIT_EXPR_SLOT to set the slot operand.
+
+	* cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
+	(AGGR_INIT_EXPR_SLOT): New macro.
+	(AGGR_INIT_EXPR_ARG): New macro.
+	(aggr_init_expr_nargs): New macro.
+	(AGGR_INIT_EXPR_ARGP): New macro.
+	(aggr_init_expr_arg_iterator): New.
+	(init_aggr_init_expr_arg_iterator): New.
+	(next_aggr_init_expr_arg): New.
+	(first_aggr_init_expr_arg): New.
+	(more_aggr_init_expr_args_p): New.
+	(FOR_EACH_AGGR_INIT_EXPR_ARG): New.
+	(stabilize_aggr_init): New declaration.
+	(build_min_non_dep_call_list): Likewise.
+
+	* tree.c (process_aggr_init_operands): New function.
+	(build_aggr_init_array) New function.
+	(build_cplus_new): Update to use new CALL_EXPR and
+	AGGR_INIT_EXPR accessor macros. Replace use of build3 with
+	build_aggr_init_array.
+	(build_min_non_dep_call_list) New function.
+	(build_min_nt): Assert input code parameter is not a variable
+	length expression class.
+	(build_min, build_min_non_dep): Likewise.
+	(cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
+	to check for equality instead of recursing. Handle tcc_vl_exp
+	tree code classes.
+	(stabilize_call): Update to only handle CALL_EXPRs, not 
+	AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
+	(stabilize_aggr_init): New function.
+	(stabilize_init): Use it.
+
+	* cxx-pretty-print.c (pp_cxx_postfix_expression)
+	<AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
+	AGGR_INIT_EXPR accessor macros and argument iterators.
+	
+	* pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
+	build_vl_exp. Iterate through the operands, recursively 
+	processing each one.
+	(tsubst_copy_and_build) <CALL_EXPR>: Update to use new
+	CALL_EXPR accessor macros.
+	(value_dependent_expression_p) <default>: Handle tcc_vl_exp
+	tree code classes. Use TREE_OPERAND_LENGTH instead of 
+	TREE_CODE_LENGTH.
+
+	* semantics.c (finish_call_expr): Use build_nt_call_list
+	instead of build_nt.
+	(simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
+	accessor macros. Use build_call_array to construct the 
+	CALL_EXPR node instead of build3
+	
+	* decl2.c (build_offset_ref_call_from_tree): Use 
+	build_nt_call_list and build_min_non_dep_call_list instead
+	of build_min_nt and build_min_non_dep.
+
+	* parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
+	Use build_nt_call_list instead of build_min_nt.
+
+2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+	PR c++/28943
+	* call.c (build_conditional_expr): Improve error message.
+	
 2007-02-13  Dirk Mueller  <dmueller@suse.de>
 
 	* friend.c (do_friend): Annotate warning about friend


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.


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