OSDN Git Service

Fix PR number
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index c8a1a1e..e226c7d 100644 (file)
@@ -1,3 +1,655 @@
+2004-07-02  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16297
+       * decl.c (grokdeclarator): Robustify.
+
+2004-07-01  Richard Henderson  <rth@redhat.com>
+
+       * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
+       * method.c (synthesize_method): Don't clear_last_expr.
+       * name-lookup.c (maybe_push_cleanup_level): Likewise.
+
+2004-07-01  Nick Clifton  <nickc@redhat.com>
+
+       * decl2.c (import_export_class): Invoke the
+       import_export_class field in the gcc_target structure if it is not
+       empty.
+
+2004-06-30  Richard Henderson  (rth@redhat.com>
+
+       * decl.c (start_preparsed_function): Don't set immediate_size_expand.
+       * method.c (use_thunk): Likewise.
+
+2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * call.c (build_over_call), typeck.c (build_function_call): Call
+       check_function_arguments instead of check_function_format.
+
+2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * call.c (build_over_call), typeck.c (build_function_call): Update
+       calls to check_function_format.
+
+2004-06-30  Richard Henderson  <rth@redhat.com>
+
+       * call.c (build_over_call): Use __builtin_memcpy for copying
+       CLASS_AS_BASE rather than funny casting.
+
+2004-06-30  Richard Henderson  <rth@redhat.com>
+
+       * init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
+       TYPE_SIZE_UNIT of full_type.
+
+2004-06-30  Per Bothner  <per@bothner.com>
+
+       Conditionally compile support for --enable-mapped_location.
+       * decl.c (pop_label):  Handle (imperfectly) USE_MAPPED_LOCATION case.
+       * decl2.c:  If USE_MAPPED_LOCATION, don't do some line number
+       adjustments - which I don't understand.
+       * error.c (dump_decl):  Rename "<interrnal>" to "<built-in>".
+       * error.c:  Use LOCATION_FILE and EXPR_LOCATION macros.
+       (print_instantiation_partial_context):  Use expand_location.
+       * decl.c (duplicate_decl):  Use new DECL_IS_BUILTIN macro.
+       * name-lookup.c:  Likewise.
+       * lex.c (cxx_init):  Likewise.  Also use BUILTINS_LOCATION.
+       * name-lookup.c:  Use input_line macro.
+       * parser.c (cp_lexer_get_preprocessor_token):  Use UNKNOWN_LOCATION.
+       (cp_parser_statement):  Rename locaal variable statement_locus to
+       statement_location and use SET_EXPR_LOCATION macro.
+       * pt.c:  Handle USE_MAPPED_LOCATION case.  Use new macros.
+       * tree.c (cp_walk_subtrees):  Likewise.
+
+2004-06-29  Per Bothner  <per@bothner.com>
+
+       * tree.c (build_min_nt, build_min, build_min_non_dep):
+       Don't set TREE_COMPLEXITY from input_line.
+
+2004-06-29  Paul Brook  <paul@codesourcery.com>
+
+       * init.c: Include target.h.
+       (get_cookie_size): Remove and replace with target hook.
+       Update callers.
+       (build_new_1): Store the element size in the cookie.
+
+2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/16260
+       * parser.c (cp_parser_template_declaration_after_export): Disable
+       access checks here ...
+       (cp_parser_class_specifier): ... not here.
+
+2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
+       VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
+       BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
+       TREE_CHECK macro.
+
+2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (struct deferred_access): Move to ...
+       * semantics.c (struct deferred_access): ... here. Adjust.
+       (deferred_access_stack): Make a VEC(deferred_access),
+       (deferred_access_free_list): Remove.
+       (deferred_access_no_check): New.
+       (push_deferring_access_checks, resume_deferring_access_checks,
+       stop_deferring_access_checks, pop_deferring_access_checks,
+       get_deferred_access_checks, pop_to_parent_deferring_access_checks,
+       perform_deferred_access_checks, perform_or_defer_access_check): Adjust.
+
+2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/16174
+       * call.c (build_temp): Declare.
+       (check_constructor_callable): New.
+       (reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
+       CONSTRUCTOR_CALLABLE.
+       (convert_like_real, initialize_reference): Use
+       check_constructor_callable.
+       * cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
+       (LOOKUP_*): Renumber.
+
+2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * friend.c (add_friend): Only perform access checks when context
+       is a class.
+       * lex.c (cxx_make_type): Only create a binfo for aggregate types.
+       * parser.c (cp_parser_class_specifier): Disable access checks here
+       when parsing the body of a templated class.
+       * semantics.c (perform_or_defer_access_checks): Reorder to allow
+       NULL binfos when not checking access.
+
+2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Use vector API for vbase list.
+       * cp-tree.h: Include vec.h
+       (DEF_VEC_P (tree)): New type.
+       (struct lang_type_class): Change vbase's member type.
+       (binfo_for_vbase): Declare.
+       * class.c (determine_primary_base, base_derived_from,
+       update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
+       warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
+       build_vtbl_initializer): Adjust.
+       * decl.c (xref_basetypes): Adjust, accumulate upper bound of
+       vbases.
+       * init.c (sort_mem_initializers, expand_member_init,
+       push_base_cleanups): Adjust.
+       * method.c (do_build_copy_constructor): Adjust.
+       * search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
+       (binfo_for_vbase): New.
+       * tree.c (copy_base_binfos): Adjust.
+
+2004-06-28  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_set_decl_spec_type): Fix thinko.
+
+2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       PR c++/14123    
+       * cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
+       paranthesis in case of pointers to array members.
+       * error.c (dump_type_prefix): Likewise.
+       (dump_type_suffix): Maybe issue a whitespace when printing
+       ARRAY_TYPE. 
+
+2004-06-27  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16193
+       * parser.c (cp_parser_set_decl_spec_type): Refine test for
+       redefinition of built-in types.
+
+2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * error.c (pp_template_argument_list_start): Remove.
+       (pp_template_argument_list_end): Likewise.
+       (pp_separate_with_comma): Use pp_cxx_separate_with.
+       (reinit_global_formatting_buffer): Remove.
+       (pp_non_consecutive_character): Likewise.
+       (dump_scope): Use pp_cxx_colon_colon.
+       (dump_template_parameter): Use pp_cxx_identifier,
+       pp_cxx_tree_identifier and pp_cxx_whitespace. 
+       (dump_templat_bindings): Replace use of pp_string with sequence
+       of pp_cxx_whitespace and pp_equal.
+       (dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
+       pp_cxx_colon_colon, pp_cxx_whitespace throughout.  Don't set
+       padding here. 
+       (dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
+       (dump_type_prefix): Don't set padding.  Use pp_cxx_whitespace,
+       pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
+       (dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
+       pp_cxx_right_bracket, pp_cxx_identifier throughout,
+       (dump_decl): Likewise.
+       (dump_template_decl): Likewise.
+       (dump_function_decl): Likewise.  Set padding as appropriate.
+       (dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
+       pp_cxx_right_paren. 
+       (dump_exception_spec): Likewise.
+       (dump_function_name): Use pp_cxx_tree_identifier and
+       pp_cxx_identifier. 
+       (dump_template_parms): Use pp_cxx_begin_template_argument_list and
+       pp_cxx_end_template_argument_list.
+       (dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
+       pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
+       pp_cxx_whitespace throughout. 
+       (dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
+       pp_cxx_right_paren. 
+       (dump_unary_op): Likewise.
+       (reinit_cxx_pp): New function.
+       (type_as_string); Use it.
+       (expr_as_string): Likewise.
+       (decl_as_string); Likewise.
+       (context_as_string): Likewise.
+       (lang_decl_name): Likewise.
+       (decl_to_string): Likewise.
+       (expr_to_string): Likewise.
+       (parm_to_string): Likewise.
+       (type_to_string): Likewise.
+       (args_to_string): Likewise.
+       (cv_to_string): Likewise.
+
+2004-06-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (cp_cv_quals): New type.
+       (cp_declarator): Use it instead of "tree" as appropriate.
+       (grok_method_quals): Adjust prototype.
+       (grokclassfn): Likewise.
+       (do_friend): Likewise.
+       * decl.c (grokfndecl): Use cp_cv_quals, not tree.
+       (grokdeclarator): Likewise.
+       * decl2.c (grok_method_quals): Likewise.
+       (grokclassfn): Likewise.
+       * friend.c (do_friend): Likewise.
+       * method.c (implicitly_declare_fn): Adjust call to grokclassfn.
+       * parser.c (make_call_declarator): Use cp_cv_quals, not tree.
+       (make_pointer_declarator): Likewise.
+       (make_reference_declarator): Likewise.
+       (make_ptrmem_declarator): Likewise.
+       (cp_parser_ptr_operator): Likewise.
+       (cp_parser_cv_qualifier_seq_opt): Likewise.
+       (cp_parser_cv_qualifier_opt): Remove.
+       (cp_parser_new_declarator_opt): Adjust call to
+       cp_parser_ptr_operator.
+       (cp_parser_conversion_declaration_opt): Likewise.
+       (cp_parser_declarator): Use cp_cv_quals, not tree.
+       (cp_parser_direct_declarator): Likewise.
+
+2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
+       Rename DECL_STMT to DECL_EXPR.
+       * init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
+       * cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
+       * tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.
+
+2004-06-26  Jan Hubicka  <jh@suse.cz>
+
+       PR C++/14865
+       * decl2.c (maybe_emit_vtables):  Always import_export_vtable for the
+       reachability analysis.
+
+2004-06-25  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
+       2004-06-23 change.
+
+2004-06-25  Paul Brook  <paul@codesourcery.com>
+
+       * decl2.c (get_guard): Call targetm.cxx.guard_type.
+       (get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.
+
+2004-06-24  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (grokdeclarator): Restore error messages about __thread.
+       * parser.c (cp_parser_decl_specifier_seq): Likewise.
+
+2004-06-24  Jason Merrill  <jason@redhat.com>
+
+       PR c++/16115
+       * decl.c (grokparms): Give the PARM_DECL reference type if the
+       parameter is passed by invisible reference.
+
+2004-06-24  Andreas Schwab  <schwab@suse.de>
+
+       * cp-tree.h (enum cp_storage_class): Remove trailing comma.
+
+2004-06-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
+       (cp/decl.o): Likewise.
+       (cp/decl2.o): Likewise.
+       (cp/pt.o): Likewise.
+       (cp/semantics.o): Likewise.
+       * config-lang.in (gtfiles): Do not reference cp/lex.h.
+       * class.c: Do not include lex.h.
+       (add_implicitly_declared_members): Do not use
+       adding_implicit_members.
+       (check_bases_and_members): Do not talk about grok_x_components.
+       * cp/cp-tree.h (adding_implicit_members): Remove.
+       (cp_storage_class): New type.
+       (cp_decl_spec): Likewise.
+       (cp_decl_specifier_seq): Likewise.
+       (cp_parameter_declarator): Use it for the decl_specifiers field.
+       (check_tag_decl): Adjust prototype.
+       (shadow_tag): Likewise.
+       (groktypename): Likewise.
+       (start_decl): Likewise.
+       (start_function): Likewise.
+       (start_method): Likewise.
+       (grok_x_components): Remove.
+       (grokfield): Adjust prototype.
+       (grokbitfield): Likewise.
+       (finish_member_class_template): Remove.
+       * decl.c: Do not include lex.h.
+       (adding_implicit_members): Do not define.
+       (check_tag_decl): Do not use trees to represent decl-specifiers.
+       (shadow_tag): Likewise.
+       (groktypename): Likewise.
+       (start_decl): Likewise.
+       (grokvardecl): Likewise.
+       (grokdeclarator): Likewise.
+       (grokparms): Likewise.
+       (start_function): Likewise.
+       (start_method): Likewise.
+       * decl.h (grokdeclarator): Adjust prototype.
+       * decl2.c: Do not include lex.h.
+       (grok_x_components): Remove.
+       (grokfield): Do not use trees to represent decl-specifiers.
+       (grokbitfield): Likewise.
+       * lex.c: Do not include lex.h.
+       * lex.h: Remove.
+       * parser.c: Include target.h.
+       (clear_decl_specs): New function.
+       (cp_parser_translation_unit): Do not use trees to represent
+       decl-specifiers.
+       (cp_parser_postfix_expression): Likewise.
+       (cp_parser_new_type_id): Likewise.
+       (cp_parser_condition): Likewise.
+       (cp_parser_simple_declaration): Likewise.
+       (cp_parser_decl_specifier_seq): Likewise.
+       (cp_parser_function_specifier_opt): Likewise.
+       (cp_parser_conversion_type_id): Likewise.
+       (cp_parser_template_parameter): Likewise.
+       (cp_parser_explicit_instantiation): Likewise.
+       (cp_parser_type_specifier): Likewise.
+       (cp_parser_simple_type_specifier): Likewise.
+       (cp_parser_init_declarator): Likewise.
+       (cp_parser_type_id): Likewise.
+       (cp_parser_type_specifier_seq): Likewise.
+       (cp_parser_parameter_declaration): Likewise.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_exception_declaration): Likewise.
+       (cp_parser_function_definition_from_specifiers_and_declarator):
+       Likewise.
+       (cp_parser_single_declaration): Likewise.
+       (cp_parser_save_member_function_body): Likewise.
+       (cp_parser_friend_p): Likewise.
+       (cp_parser_set_storage_class): New function.
+       (cp_parser_set_decl_spec_type): Likewise.
+       * pt.c: Do not include lex.h.
+       * semantics.c: Likewise.
+       (finish_member_class_template): Remove. 
+       
+2004-06-23  Roger Sayle  <roger@eyesopen.com>
+
+       * call.c (build_cxx_call): Don't call expand_tree_builtin.  No
+       longer take both "args" and "convert_args" as arguments.
+       (build_op_delete_call): Update call to build_cxx_call.
+       (build_over_call): Likewise, update call to build_cxx_call.
+       * cp-tree.h (build_cxx_call): Update funtion prototype.
+       * typeck.c (build_function_call): Don't call expand_tree_builtin.
+       * rtti.c (throw_bad_cast): Update call to build_cxx_call.
+       (throw_bad_typeid): Likewise.
+       (build_dynamic_cast_1): Likewise.
+
+2004-06-22  Richard Henderson  <rth@redhat.com>
+
+       * class.c (build_vfn_ref): Take a pointer not object.  Build
+       an OBJ_TYPE_REF.
+       (cp_fold_obj_type_ref): New.
+       * call.c (build_over_call): Update build_vfn_ref call.
+       * cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
+       * cp-tree.h (cp_fold_obj_type_ref): Declare.
+
+2004-06-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/16112
+       * cp-gimplify.c (cp_gimplify_init_expr): Look through
+       CLEANUP_POINT_EXPR.
+
+2004-06-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.def (NEW_EXPR): Add a fourth slot.
+       * cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
+       (TREE_PARMLIST): Likewise.
+       (CALL_DECLARATOR_PARMS): Likewise.
+       (CALL_DECLARATOR_QUALS): Likewise.
+       (CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
+       (cp_declarator_kind): New type.
+       (cp_parameter_declarator): Likewise.
+       (cp_declarator): Likewise.
+       (cp_error_declarator): Likewise.
+       (no_parameters): Likewise.
+       (groktypename): Change prototype.
+       (start_decl): Likewise.
+       (start_handler_parms): Likewise.
+       (get_scope_of_declarator): Likewise.
+       (start_function): Likewise.
+       (start_preparsed_function): New function.
+       (start_function): Change prototype.
+       (start_method): Likewise.
+       (grokfield): Likewise.
+       (grokbitfield): Likewise.
+       (build_new): Likewise.
+       (make_pointer_declarator): Remove.
+       (make_reference_declarator): Likewise.
+       (make_call_declarator): Likewise.
+       (set_quals_and_spec): Likewise.
+       (process_template_parm): Change prototype.
+       (begin_function_definition): Remove.
+       (finish_parmlist): Remove.
+       * decl.c (groktypename): Do not use trees to represent
+       declarators.
+       (start_decl): Likewise.
+       (start_handler_parms): Remove.
+       (get_scope_of_declarator): Reimplement.
+       (grokdeclarator): Do not use trees to represent declarators.
+       (grokparms): Likewise.
+       (start_function): Likewise.
+       (start_method): Likewise.
+       (build_void_list_mode): Do not use TREE_PARMLIST.
+       * decl.h (grokdeclarator): Change prototype.
+       * decl2.c (grok_method_quals): Robustify.
+       (grok_x_components): Do not use trees to represent declarators.
+       (grokfield): Likewise.
+       (grokbitfield): Likewise.
+       (start_objects): Build FUNCTION_DECLs, not declarators.
+       (start_static_storage_duration_function): Likewise.
+       * init.c (build_new): Simplify.
+       * lex.c (make_pointer_declarator): Remove.
+       (make_reference_declarator): Likewise.
+       (make_call_declarator): Likewise.
+       (set_quals_and_spec): Likewise.
+       * method.c (use_thunk): Use start_preparsed_function.
+       (synthesize_method): Likewise.
+       (implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
+       * optimize.c (maybe_clone_body): Use start_preparsed_function.
+       * parser.c (cp_error_declarator): New variable.
+       (declarator_obstack): Likewise.
+       (alloc_declarator): New function.
+       (make_declarator): Likewise.
+       (make_id_declarator): Likewise.
+       (make_pointer_declarator): Likewise.
+       (make_reference_declarator): Likewise.
+       (make_ptrmem_declarator): Likewise.
+       (make_call_declarator): Likewise.
+       (make_array_declarator): Likewise.
+       (no_parameters): New variable.
+       (make_parameter_declarator): Likewise.
+       (cp_parser_check_for_definition_in_return_type): Do not use trees
+       to represent declarators.
+       (cp_parser_translation_unit): Likewise.
+       (cp_parser_new_expression): Likewise.
+       (cp_parser_new_type_id): Likewise.
+       (cp_parser_new_declarator_opt): Likewise.
+       (cp_parser_direct_new_declarator): Likewise.
+       (cp_parser_condition): Likewise.
+       (cp_parser_declaration_statement): Likewise.
+       (cp_parser_declaration): Likewise.
+       (cp_parser_conversion_type_id): Likewise.
+       (cp_parser_conversion_declarator_opt): Likewise.
+       (cp_parser_template_parameter_list): Likewise.
+       (cp_parser_template_parameter): Likewise.
+       (cp_parser_explicit_instantiation): Likewise.
+       (cp_parser_init_declarator): Likewise.
+       (cp_parser_declarator): Likewise.
+       (cp_parser_direct_declarator): Likewise.
+       (cp_parser_type_id): Likewise.
+       (cp_parser_parameter_declaration_clause): Likewise.
+       (cp_parser_parameter_declaration_list): Likewise.
+       (cp_parser_parameter_declaration): Likewise.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_exception_declaration): Likewise.
+       (cp_parser_check_declarator_template_parameters): Likewise.
+       (cp_parser_function_definition_from_specifiers_and_declarator):
+       Likewise.
+       (cp_parser_save_member_function_body): Likewise.
+       * pt.c (process_template_parm): Add is_non_type parameter.
+       (convert_template_argument): Adjust call to groktypename.
+       (tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
+       (tsubst): Do not expect declarators.
+       (tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
+       argument.
+       (instantiate_decl): Use start_preparsed_function.
+       * semantics.c (begin_function_definition): Remove.
+       (finish_parmlist): Remove.
+       * cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
+       declarators.
+
+2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
+       (build_new_method_call): Likewise.
+       * decl.c (local_variable_p_walkfn): Don't walk into types.
+       * decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
+       (build_anon_union_vars): Add new operand for COMPONENT_REF.
+       * init.c (buld_new): Add new operand for ARRAY_REF.
+       * method.c (do_build_copy_constructor): New op for COMPONENT_REF.
+       (do_build_assign_ref): Likewise.
+       * parser.c (cp_parser_direct_new_declarator): Add new operands
+       for ARRAY_REF.
+       (cp_parser_direct_declarator): Likewise.
+       * pt.c (tsubst): Likewise.
+       (tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
+       for COMPONENT_REF.
+       * semantics.c (finish_non_static_data_member): Add new operand
+       for COMPONENT_REF.
+       * typeck.c (build_class_member_access_expr): Likewise.
+       (build_class_member_access_expr, finish_class_member_access_expr):
+       Likewise.
+       (build_ptrmemfunc_access_expr): Likewise.
+       (build_array_ref): Add new operands for ARRAY_REF.
+       * typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
+       * tree.c (count_trees_r, no_linkage_helper): Don't walk in types.
+
+2004-06-21  Richard Henderson  <rth@redhat.com>
+
+       * dump.c (cp_dump_tree): Don't use dump_next_stmt.
+       * parser.c (cp_parser_jump_statement): Update commentary.
+       * pt.c (tsubst_expr): Use RETURN_EXPR.
+       * semantics.c (finish_return_stmt): Likewise.
+       (finalize_nrv_r): Likewise.
+       * typeck.c, typeck2.c: Update file start commentary.
+
+2004-06-21  Richard Henderson  <rth@redhat.com>
+
+       * semantics.c (finish_expr_stmt): Call verify_sequence_points.
+
+2004-06-20  Richard Henderson  <rth@redhat.com>
+
+       * cp-tree.h (add_decl_stmt): Declare.
+       * pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
+       * semantics.c (maybe_cleanup_point_expr): New.
+       (add_decl_stmt, finish_expr_stmt, finish_return_stmt,
+       finish_for_expr, finish_switch_cond): Use it.
+       (finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.
+
+2004-06-20  Richard Henderson  <rth@redhat.com>
+
+       * cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
+       * cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
+       (cp_gimplify_expr): Call it.
+       (gimplify_cleanup_stmt): Move from c-gimplify.c.
+       (cp_genericize): New.
+       * decl.c (finish_function): Call it.
+       * cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
+       (CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
+       (IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
+       (cp_genericize): Declare.
+       * cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
+       * dump.c (cp_dump_tree): Likewise.
+       * semantics.c (push_cleanup): Move from c-semantics.c.
+
+2004-06-20  Zack Weinberg  <zack@codesourcery.com>
+
+       * cp-lang.c (has_c_linkage): Implement.
+
+       * cp-tree.h (set_mangled_name_for_decl): Don't prototype.
+       * decl.c (duplicate_decls): Use COPY_DECL_RTL.
+       (builtin_function_1): Don't call make_decl_rtl.
+       (build_cp_library_fn): Don't call set_mangled_name_for_decl.
+       (grokvardecl): Don't call mangle_decl.
+       * except.c (nothrow_libfn_p): Look at DECL_NAME, not
+       DECL_ASSEMBLER_NAME.
+       * method.c (set_mangled_name_for_decl): Delete.
+       * name-lookup.c (pushdecl): When a local extern shadows a
+       file-scope declaration of the same object, give both DECLs the
+       same DECL_UID.
+       * typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
+       on DECL_ASSEMBLER_NAME.
+
+2004-06-19  Richard Henderson  <rth@redhat.com>
+
+       * cp-gimplify.c: Remove unnecessary prototypes.
+       (cp_gimplify_stmt): Merge into ...
+       (cp_gimplify_expr): ... here.  Move to end of file.  Handle
+       stmts_are_full_exprs_p frobbing.
+       * cp-tree.h (cp_gimplify_stmt): Remove.
+       * pt.c (tsubst_expr): Merge prep_stmt and unify.
+       * tree.c (init_tree): Don't set lang_gimplify_stmt.
+
+2004-06-18  Richard Henderson  <rth@redhat.com>
+
+       PR c++/16034
+       * semantics.c (begin_cond): New.
+       (finish_cond): Rewrite to handle template DECL_STMTs specially.
+       Assume that non-template decls go land before the conditional.
+       (simplify_loop_decl_cond): Likewise.
+       (begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
+       finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
+       begin_switch_stmt, finish_switch_cond): Update to match.
+
+2004-06-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/16015
+       * semantics.c (simplify_aggr_init_expr): Don't return the slot.
+       (finish_stmt_expr_expr): Update type after conversions.
+       (finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
+       Handle void initializer.
+       * tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.
+
+2004-06-17  Geoffrey Keating  <geoffk@apple.com>
+
+       * class.c (build_clone): Don't call defer_fn, let mark_used do it.
+       * cp-tree.h (defer_fn): Delete.
+       * decl2.c (defer_fn): Delete.
+       (finish_file): Simplify deferred_fns loops; check that
+       only used inline functions get into deferred_fns.
+       (mark_used): Inline previous contents of defer_fn.
+
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
+       (BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
+       * cxx-pretty-print.c (pp_cxx_function_definition): Move handling
+       of CTOR_INITIALIZER ...
+       (pp_cxx_statement): ... here.
+       * decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
+       (finish_function): Use alloc_stmt_list to zap entire function.
+       * parser.c (cp_parser_compound_statement): Update commentary.
+       * pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
+       * semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
+       (finish_stmt_expr): Don't look through COMPOUND_STMT.
+
+2004-06-16  Geoffrey Keating  <geoffk@apple.com>
+
+       * pt.c (mark_decl_instantiated): Don't call defer_fn.
+
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * parser.c (cp_parser_labeled_statement): Update commentary.
+       * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
+       * tree.c (mark_local_for_remap_r): Likewise.
+
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * parser.c (cp_parser_asm_definition): Update commentary.
+       * pt.c (tsubst_expr): Use ASM_EXPR.
+       * semantics.c (finish_asm_stmt): Likewise.
+
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * decl.c (finish_destructor_body): Use LABEL_EXPR.
+       * parser.c (cp_parser_statement): Update commentary.
+       * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
+       * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
+       * tree.c (mark_local_for_remap_r): Likewise.
+
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       PR c++/16012
+       * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
+       statement in FOR_INIT_STMT for templates.
+
 2004-06-15  Richard Henderson  <rth@redhat.com>
 
        * call.c (initialize_reference): Don't build CLEANUP_STMT here.
                * cp-tree.h: Fix typo.
 
                * cp-tree.h: Include cgraph.h
-               (DECL_NEEDED_P): Use cgraph_*node on the decl instead of 
+               (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
                TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
 
 2004-06-12  Jason Merrill  <jason@redhat.com>
 
        PR c++/15554
        * pt.c (tsubst_copy): Do not try to substitute for an enumeration
-       constant in a non-dependent context. 
-       
+       constant in a non-dependent context.
+
        PR c++/15057
        * except.c (build_throw): Ensure that temp_expr has been
        initialized.
        * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
        is nonzero, and if we see a noninline definition of a key method,
        make the vtables nonweak.
-       
+
 2004-06-02  Matt Austern  <austern@apple.com>
 
        * cp-tree.h (instantiate_decl): new boolean parameter,
        change it to an implicit instantiation.
        (instantiate_pending_templates): Add new argument to instantiate_decl.
        * tree.c (cp_cannot_inline_tree_fn): Likewise.
-       
+
 2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>
 
        * cp-tree.h: Fix typo.
        * typeck.c (require_complete_type): Return error_mark_node if
        value's type is an error_mark_node.
 
-2005-05-20  Andrew Pinski  <pinskia@physics.uc.edu>
+2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>
 
        * optimize.c (calls_setjmp_r): Remove.
        (calls_setjmp_p): Remove.
 
        * rtti.c: Update copyright.
 
-2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/14033
        * decl.c (require_complete_types_for_parms): Do not insert
        error_mark_node in the parameter list.
 
-2003-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/14028
        * parser.c (cp_parser_enclosed_template_argument_list): Emit straight
        * tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
        functions.
 
-2003-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+2004-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/14008
        * parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
        * method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
        actual function.
 
-2003-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/13997
        * pt.c (more_specialized_class): Increase processing_template_decl
        PR c++/13474
        * pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.
 
-2003-01-12  Steven Bosscher  <stevenb@suse.de>
+2004-01-12  Steven Bosscher  <stevenb@suse.de>
 
        PR c++/13558
        * parser.c (cp_parser_member_declaration): Any non-type is also