OSDN Git Service

PR c++/9354
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 1e50ff9..be97c50 100644 (file)
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9354
+       * init.c (build_new): Set the type of the new-expression, even
+       when processing_templte_decl.
+
+       PR c++/9216
+       * parser.c (cp_parser_primary_expression): Improve error message
+       for templates used in an expression context.
+
+       PR c++/8696
+       * parser.c (cp_parser_decl_specifier_seq): Commit to tentative
+       parse when encountering "typedef".
+
+2003-01-22  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * class.c, parser.c: ANSIfy function definitions and declarations.
+
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9328
+       * error.c (dump_decl): For an OVERLOAD, just print the name of the
+       function; it doesn't make sense to try to print its type.
+       * semantics.c (finish_typeof): Issue errors about invalid uses.
+
+       PR c++/9298
+       * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
+       function.
+       (cp_parser_expression_statement): Use it.
+       (cp_parser_explicit_instantiation): Likewise.
+       * pt.c (do_decl_instantiation): Improve error handling logic.
+       
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9384
+       * parser.c (cp_parser_using_declaration): Issue error messages
+       about name resolution failures here.
+
+       PR c++/9388
+       * class.c (currently_open_derived_class): Use dependent_type_p.
+       * cp-tree.h (dependent_type_p): New function.
+       (dependent_template_arg_p): Likewise.
+       (dependent_template_p): Likewise.
+       (type_dependent_expression_p): Likewise.
+       * parser.c (cp_parser_dependent_type_p): Remove.
+       (cp_parser_value_dependent_type_p): Likewise.
+       (cp_parser_type_dependent_expression_p): Likewise.
+       (cp_parser_dependent_template_arg_p): Likewise.
+       (cp_parser_dependent_template_id_p): Likewise.
+       (cp_parser_dependent_template_p): Likewise.
+       (cp_parser_diagnose_invalid_type_name): Replace
+       cp_parser_dependent_type_p with dependent_type_p, etc.
+       (cp_parser_primary_expresion): Likewise.
+       (cp_parser_nested_name_specifier_opt): Likewise.
+       (cp_parser_postfix_expression): Likewise.
+       (cp_parser_unary_expression): Likewise.
+       (cp_parser_template_name): Likewise.
+       (cp_parser_class_name): Likewise.
+       (cp_parser_lookup_name): Likewise.
+       * pt.c (dependent_type_p): New function.
+       (value_dependent_expression_p): Likewise.
+       (type_dependent_expression_p): Likewise.
+       (dependent_template_arg_p): Likewise.
+       (dependent_template_id_p): Likewise.
+       (dependent_template_p): Likewise.
+       
+       PR c++/9285
+       PR c++/9294
+       * parser.c (cp_parser_simple_declaration): Return quickly when
+        encountering errors.
+
+2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       Make-lang.in (cp/decl.o-warn): Add -Wno-error.
+
+2003-01-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/9167, c++/9358
+       * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
+
+2003-01-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/9342
+       * call.c (build_conditional_expr): Always do lvalue-rvalue
+       conversion.
+
+2003-01-17  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9294
+       * cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
+       * cp-tree.h (BASELINK_BINFO): Adjust.
+       (BASELINK_FUNCTIONS): Likewise.
+       (BASELINK_ACCESS_BINFO): Likewise.
+       (tree_baselink): New structure.
+       (cp_tree_node_structure_enum): Add TS_CP_BASELINK.
+       (lang_tree_node): Add baselink.
+       * decl.c (cp_tree_node_structure): Add BASELINK case.
+       * search.c (build_baselink): Adjust.
+       * tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
+       test from TREE_LIST case.
+
+       PR c++/9272
+       * parser.c (cp_parser_constructor_declarator_p): Do not assume
+       that a constructor cannot be declared outside of its own class.
+       
+       * parser.c (cp_parser_resolve_typename_type): If the scope cannot
+       be resolved, neither can the qualified name.
+
+       * rtti.c (get_pseudo_ti_desc): Fix thinko.
+
+2003-01-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/8564
+       * init.c (build_vec_init): Re-add maxindex parm.
+       (perform_member_init, build_aggr_init): Pass it.
+       (build_new_1): Pass it. Use an incomplete array type for full_type.
+       * typeck.c (build_modify_expr): Pass it.
+       * cp-tree.h: Adjust.
+
+2003-01-16  Jeffrey D. Oldham  <oldham@codesourcery.com>
+
+       * cp-tree.h (tsubst_copy_and_build): New declaration.
+       * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
+       (tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
+       (tsubst_copy_and_build): New function.
+
+2003-01-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (lang_type_class): Remove is_partial_instantiation.
+       (PARTIAL_INSTANTIATION_P): Remove.
+       (IMPLICIT_TYPENAME_P): Likewise.
+       (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
+       (build_typename_type): Remove declaration.
+       (parmlist_is_exprlist): Likewise.
+       * decl.c (build_typename_type): Make it static, remove third
+       parameter.
+       (push_class_binding): Don't do implicit typename stuff.
+       (make_typename_type): Likewise.
+       (lookup_name_real): Likewise.
+       (grokdeclarator): Don't try to convert declarations into
+       initializations.  Don't do implicit typename stuff.
+       (parmlist_is_exprlist): Remove.
+       (xref_basetypes): Simplify.
+       * decl2.c (grokfield): Don't try to convert declarations into
+       initializations.
+       (build_anon_union_vars): Do this while processing templates, too.
+       (finish_anon_union): Likewise.
+       * error.c (dump_type): Remove implicit typename handling.
+       * parser.c (cp_parser_diagnose_invalid_type_name): New method.
+       (cp_parser_primary_expression): Correct handling of names not
+       found by unqualified name lookup in templates.
+       (cp_parser_nested_name_specifier_opt): Avoid checking dependency
+       of types when possible.
+       (cp_parser_simple_declaration): Complain intelligently about some
+       invalid declarations.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_constructor_declarator_p): Don't check when we're in a
+       function scope.
+       * pt.c (instantiate_class_template): Remove
+       PARTIAL_INSTANTIATION_P gunk.
+       * search.c (lookup_field_r): Don't build implicit typenames.
+       (marked_pushdecls_p): Don't enter dependent base types.
+       (unmarked_pushdecls_p): Likewise.
+       * semantics.c (begin_class_definition): Remove implicit typename
+       stuff.
+
+2003-01-16  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/9212
+       * parser.c (cp_parser_direct_declarator): If accepting either
+       abstract or named, the name must be an unqualified-id.
+
+2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * class.c (layout_virtual_bases): Avoid signed/unsigned warning.
+
+2003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * decl2.c (check_classfn): Fix uninitialized warning.
+       (build_anon_union_vars): Likewise.
+       * pt.c (tsubst_copy): Likewise.
+
+2003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>
+
+       Further conform g++'s __vmi_class_type_info to the C++ ABI
+       specification.
+       * rtti.c (dfs_class_hint_mark): Do not set hints not specified by
+       the specification.
+       (class_hint_flags): Likewise.
+
+2003-01-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       * config-lang.in: Add semantics.c to gtfiles.
+       * cp-tree.h (flagged_type_tree_s): Remove lookups field.
+       (saved_scope): Likewise.
+       (type_lookups): Remove.
+       (deferred_access): New structure.
+       (type_access_control): Remove.
+       (save_type_access_control): Likewise.
+       (reset_type_access_control): Likewise.
+       (decl_type_access_control): Likewise.
+       (push_deferring_access_checks): Declare.
+       (resume_deferring_access_checks): Likewise.
+       (stop_deferring_access_checks): Likewise.
+       (pop_deferring_access_checks): Likewise.
+       (get_deferred_access_checks): Likewise.
+       (pop_to_parent_deferring_access_checks): Likewise.
+       (perform_deferred_access_checks): Likewise.
+       (perform_or_defer_access_check): Likewise.
+       * decl.c (make_typename_type): Use perform_or_defer_access_check.
+       (make_unbound_class_template): Likewise.
+       (grokdeclarator): Don't call decl_type_access_control.
+       * parser.c (cp_parser_context): Remove deferred_access_checks
+       and deferring_access_checks_p fields.
+       (cp_parser_context_new): Adjust.
+       (cp_parser): Remove access_checks_lists.
+       (cp_parser_defer_access_check): Remove.
+       (cp_parser_start_deferring_access_checks): Remove.
+       (cp_parser_stop_deferring_access_checks): Remove.
+       (cp_parser_perform_deferred_access_checks): Remove.
+       (cp_parser_nested_name_specifier_opt): Use new deferred access
+       functions.
+       (cp_parser_simple_declaration): Likewise.
+       (cp_parser_template_id): Likewise.
+       (cp_parser_function_definition): Likewise.
+       (cp_parser_class_specifier): Likewise.
+       (cp_parser_lookup_name): Likewise.
+       (cp_parser_single_declaration): Likewise.
+       (cp_parser_pre_parsed_nested_name_specifier): Likewise.
+       (cp_parser_parse_tentatively): Likewise.
+       (cp_parser_parse_definitely): Likewise.
+       (yyparse): Likewise.
+       (cp_parser_init_declarator): Remove access_checks parameter.
+       Use new deferred access functions.
+       (cp_parser_function_definition_from_specifiers_and_declarator):
+       Likewise.
+       (cp_parser_class_head): Remove deferring_access_checks_p and
+       saved_access_checks parameters.  Use new deferred access functions.
+       (cp_parser_member_specification_opt): Don't call
+       reset_type_access_control.
+       * search.c (type_access_control): Remove.
+       * semantics.c: Include "gt-cp-semantics.h".
+       (deferred_type_access_control): Remove.
+       (deferred_access_stack): New variable.
+       (deferred_access_free_list): Likewise.
+       (push_deferring_access_checks): New function.
+       (resume_deferring_access_checks): Likewise.
+       (stop_deferring_access_checks): Likewise.
+       (pop_deferring_access_checks): Likewise.
+       (get_deferred_access_checks): Likewise.
+       (pop_to_parent_deferring_access_checks): Likewise.
+       (perform_deferred_access_checks): New function, adapted from
+       cp_parser_perform_deferred_access_checks.
+       (perform_or_defer_access_check): New function, adapted from
+       cp_parser_defer_access_check.
+       (current_type_lookups): Remove.
+       (deferred_type_access_control): Likewise.
+       (decl_type_access_control): Likewise.
+       (save_type_access_control): Likewise.
+       (reset_type_access_control): Likewise.
+       (begin_function_definition): Adjust.
+       (begin_class_definiton): Likewise.
+
+2003-01-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/8748
+       * class.c (build_base_path): Take the address before calling save_expr.
+
+       * call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
+       all the ambiguous conversions are bad.
+
+       * class.c (maybe_warn_about_overly_private_class): Don't stop
+       searching when we find a nonprivate method.
+
+       * typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.
+
+2003-01-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (get_arglist_len_in_bytes): Remove.
+
+       PR c++/9264
+       * parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
+       typeame types more robustly.
+
+2003-01-11  Phil Edwards  <pme@gcc.gnu.org>
+
+       * parser.c:  Fix comment typos.
+
+2003-01-10  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9099
+       * parser.c (cp_parser_scope_through_which_access_occurs): Handle
+       an object_type which is not a class type.
+
+2003-01-10  Geoffrey Keating  <geoffk@apple.com>
+
+       * parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
+       (cp_parser_late_parsing_default_args): Likewise.
+
+2003-01-10  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * cfns.gperf: ANSIfy function declarations.
+       * cfns.h: Regenerate.
+       * cp-tree.h: ANSIfy function declarations.
+
+2003-01-10  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (reparse_absdcl_as_expr): Remove.
+       (reparse_absdcl_as_casts): Likewise.
+       (reparse_decl_as_expr): Likewise.
+       (finish_decl_parsing): Likewise.
+       * decl2.c (reparse_absdcl_as_expr): Remove.
+       (reparse_absdcl_as_casts): Likewise.
+       (repase_decl_as_expr): Likewise.
+       (finish_decl_parsing): Likewise.
+
+       PR c++/9128
+       PR c++/9153
+       PR c++/9171
+       * parser.c (cp_parser_pre_parsed_nested_name_specifier): New
+       function.
+       (cp_parser_nested_name_specifier_opt): Correct the
+       check_dependency_p false.
+       (cp_parser_postfix_expression): Fix formatting.
+       (cp_parser_decl_specifier_seq): Avoid looking for constructor
+       declarators when possible.
+       (cp_parser_template_id): Avoid performing name-lookup when
+       possible.
+       (cp_parser_class_head): Do not count specializations when counting
+       levels of templates.
+       (cp_parser_constructor_declarator_p): Return immediately if
+       there's no chance that the tokens form a constructor declarator.
+       * rtti.c (throw_bad_typeid): Add comment.  Do not return an
+       expression with reference type.
+       (get_tinfo_decl_dynamic): Do not return an expression with
+       reference type.
+       (build_typeid): Add comment.  Do not return an expression with
+       reference type.
+       * typeck.c (build_class_member_access_expr): Improve handling of
+       conditionals and comma-expressions as objects.
+
+2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+        * cfns.gperf: ANSIfy function declarations.
+        * cfns.h: Regenerate.
+        * cp-tree.h: ANSIfy function declarations.
+        * parser.c: ANSIfy function declarations & definitions.
+
+       * decl.c (bad_specifiers): Fix parameter order error I introduced.
+
+2003-01-09  Geoffrey Keating  <geoffk@apple.com>
+
+       Merge from pch-branch:
+
+       2003-01-09  Geoffrey Keating  <geoffk@apple.com>
+
+       Merge to tag pch-merge-20030102:
+       
+       * semantics.c (finish_translation_unit): Don't call finish_file.
+       * parser.c: Don't include ggc.h.
+       (cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
+       read first token here.  Don't allow PCH files after the first
+       token is read.
+       (cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
+       (cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
+       (cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
+       (cp_parser_late_parsing_for_member): Don't duplicate call to
+       cp_lexer_set_source_position_from_token.
+       (cp_parser_late_parsing_default_args): Likewise.
+       (yyparse): Call finish_file after clearing the_parser.
+
+       2002-12-11  Geoffrey Keating  <geoffk@apple.com>
+
+       * Make-lang.in: Remove $(GGC_H) from all dependencies.
+       (CXX_TREE_H): Add $(GGC_H).
+       * class.c: Don't include ggc.h. 
+       (field_decl_cmp): Make parameters be 'const void *' to match qsort.
+       (method_name_cmp): Likewise.
+       (resort_data): New variable.
+       (resort_field_decl_cmp): New.
+       (resort_method_name_cmp): New.
+       (resort_sorted_fields): New.
+       (resort_type_method_vec): New.
+       (finish_struct_methods): Delete cast.
+       (finish_struct_1): Delete cast.
+       * cp-tree.h: Include ggc.h.
+       (struct lang_type_class): Add reorder attribute to field `methods'.
+       (union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
+       (resort_sorted_fields): New prototype.
+       (resort_type_method_vec): New prototype.
+       * call.c: Don't include ggc.h.
+       * decl.c: Likewise.
+       * decl2.c: Likewise.
+       * init.c: Likewise.
+       * lex.c: Likewise.
+       * method.c: Likewise.
+       * optimize.c: Likewise.
+       * parse.y: Likewise.
+       * pt.c: Likewise.
+       * repo.c: Likewise.
+       * search.c: Likewise.
+       * semantics.c: Likewise.
+       * spew.c: Likewise.
+       * tree.c: Likewise.
+
+       * lang-specs.h: Remove comment.
+
+       2002-12-03  Geoffrey Keating  <geoffk@apple.com>
+
+       * cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
+       (operator_name_info): Mark to be saved for PCH, specify size.
+       (assignment_operator_name_info): Likewise.
+
+       2002-11-19  Geoffrey Keating  <geoffk@apple.com>
+
+       * decl.c (anon_cnt): Mark to be saved for PCH.
+
+       2002-10-25  Geoffrey Keating  <geoffk@apple.com>
+
+       * lex.c  (init_reswords): Delete now-untrue comment.
+       Allocate ridpointers using GGC.
+
+       2002-10-04  Geoffrey Keating  <geoffk@apple.com>
+
+       * cp-tree.h (union lang_decl_u2): Add tags to all fields.
+
+       * g++spec.c (lang_specific_driver): Don't include standard
+       libraries in `added'.
+
+       2002-08-27  Geoffrey Keating  <geoffk@redhat.com>
+
+       * decl2.c (finish_file): Call c_common_write_pch.
+       * Make-lang.in (CXX_C_OBJS): Add c-pch.o.
+
+       2002-08-17  Geoffrey Keating  <geoffk@redhat.com>
+
+       * g++spec.c (lang_specific_driver): Treat .h files as C++ header
+       files when using g++.
+       * lang-specs.h: Handle compiling C++ header files.
+
+2003-01-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.
+
+2003-01-09  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       * pt.c (push_access_scope_real): Call push_to_top_level for
+       function in namespace scope.
+       (pop_access_scope): Call pop_from_top_level for function in
+       namespace scope.
+
+2003-01-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * decl.c (start_decl): Don't set DECL_COMMON for __thread variables.
+
+2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>
+
+       * Make-lang.in (c++.install-common, c++.install-man,
+       c++.uninstall): Prepend $(DESTDIR) to destination paths in
+       all (un)installation commands.
+       (c++.install-common): Rewrite $(LN) commands to support
+       DESTDIR with "ln" as well as with "ln -s".
+
+2003-01-08  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_primary_expression): See through explicitly
+       scoped ALIAS_DECLs, too.
+
+2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * decl.c: Remove some #if 0 code.
+
+       * decl.c: ANSIfy function declarations.
+
+2003-01-07  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_asm_definition): Correct handling of omitted
+       operands.
+
+2003-01-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/9030
+       * decl.c (make_typename_type): Check access only when tf_error.
+       (make_unbound_class_template): Likewise.
+       * pt.c (saved_access_scope): New variable.
+       (push_access_scope_real): New function.
+       (push_access_scope): Likewise.
+       (pop_access_scope): Likewise.
+       (tsubst_default_argument): Use them.
+       (instantiate_template): Likewise.
+       (regenerate_decl_from_template): Likewise.
+       (instantiate_decl): Likewise.
+       (get_mostly_instantiated_function_type): Likewise.
+
+2003-01-07  Nathanael Nerode <neroden@gcc.gnu.org>
+
+       * tree.c: Delete bogus #if 0 code.
+
+2003-01-07  Andreas Schwab  <schwab@suse.de>
+
+       * class.c (layout_class_type): Don't use
+       PCC_BITFIELD_TYPE_MATTERS if not defined.
+
+2003-01-06  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9165
+       * decl2.c (build_cleanup): Mark the object as used.
+
+       * pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
+       (hash_local_specialization): New function.
+       (register_local_specialization): Revert 2003-01-05 change.
+       (instantiate_decl): Use hash_local_specialization when creating
+       the local_specializations table.
+       
+       * decl2.c (mark_used): Do not synthesize thunks.
+
+       * class.c (layout_class_type): Correct handling of unnamed
+       bitfields wider than their types.
+
+       PR c++/9189
+       * parser.c (cp_parser): Remove default_arg_types.  Update
+       documentation for unparsed_functions_queues.
+       (cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
+       parameter.
+       (cp_parser_new): Don't set parser->default_arg_types.
+       (cp_parser_function_definition): Adjust usage of
+       unparsed_funtions_queues.
+       (cp_parser_class_specifier): Don't mess with
+       parser->default_arg_types.  Handle default argument processing in
+       a separate phase from function body processing.
+       (cp_parser_template_declaration_after_export): Adjust usage of
+       unparsed_functions_queues.
+       (cp_parser_late_parsing_for_member): Do not handle default
+       arguments.
+
+2003-01-06  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/9109
+       * parser.c (cp_parser_declarator_kind): New enum.
+       (cp_parser_declarator): Adjust.
+       (cp_parser_direct_declarator): Adjust. Allow for either named or
+       abstract declarator. Prefer abstract, if possible. Allow
+       parenthesized function name.
+       (cp_parser_condition): Adjust cp_parser_declarator call.
+       (cp_parser_explicit_instantiation): Likewise.
+       (cp_parser_init_declarator): Likewise.
+       (cp_parser_type_id): Likewise.
+       (cp_parser_function_definition): Likewise.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_parameter_declaration): Use cp_parser_declarator to do
+       the tentative parsing.
+       (cp_parser_exception_declaration): Likewise.
+
+2003-01-05  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_template_parameter): Adjust call to
+       cp_parser_parameter_declaration.
+       (cp_parser_parameter_declaration_list): Likewise.
+       (cp_parser_parameter_declaration): Replace
+       greater_than_is_operator_p with template_parm_p parameter.  Do not
+       cache tokens for template default arguments.
+
+       * pt.c (retrieve_local_specialization): Use htab_find, not
+       htab_find_with_hash.
+       (register_local_specialization): Use htab_find_slot, not
+       htab_find_slot_with_hash.
+       (instantiate_decl): Pass a hash function to htab_create.
+       
+2003-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * parser.c (cp_parser_binary_expression,
+       cp_parser_multiplicative_expression,
+       cp_parser_additive_expression, cp_parser_shift_expression,
+       cp_parser_relational_expression, cp_parser_equality_expression,
+       cp_parser_and_expression, cp_parser_exclusive_or_expression,
+       cp_parser_inclusive_or_expression,
+       cp_parser_logical_and_expression, cp_parser_logical_or_expression,
+       cp_parser_binary_expression): Const-ify.
+
+2003-01-04  Mark Mitchell  <mark@codesourcery.com>
+
+       * method.c (use_thunk): Disable access control while building the
+       body of the thunk.
+
+2003-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * cvt.c, decl.c, decl2.c: This is the C++ front end, not the C 
+       front end.
+
+2003-01-03  Matt Austern  <austern@apple.com>
+
+       * cp-tree.h (struct lang_type_class): add field for key method
+       (cp_global_trees): rename dynamic_classes to keyed_classes
+       (key_method): add definition
+       * class.c (finish_struct_1): compute class's key method, and add
+       the class to keyed_classes list if there is no key method.
+       * decl.c (finish_function): add class to keyed_classes list if we
+       see a definition of the class's key method.
+       * pt.c (instantiate_class_template): add template specialization
+       of a dynamic class to keyed_classes list.
+       * decl2.c (key_method): remove
+       (finish_file): iterate only through keyed_classes list when
+       deciding whether to emit vtables, remove class from its list after
+       we do the emission.
+       
+2003-01-02  Jason Merrill  <jason@redhat.com>
+
+       * call.c (build_conditional_expr): Stabilize lvalues properly.
+       * cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
+       * tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
+       Don't allow CALL_EXPR or VA_ARG_EXPR, either.
+
+       * call.c (convert_like_real): Call decl_constant_value for an
+       IDENTITY_CONV even if there are no more conversions.
+
+       * cvt.c (build_up_reference): Don't push unnamed temps.
+
+       * decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.
+
+       * dump.c (cp_dump_tree): Don't try to dump class-specific fields
+       for a backend struct.
+
+       * except.c (wrap_cleanups_r, build_throw): Make
+       MUST_NOT_THROW_EXPRs void.
+       * init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.
+
+       * init.c (build_vec_delete_1): Pre-evaluate the base address.
+
+       * init.c (get_temp_regvar): Simplify logic.
+
+       * tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
+       our replacement is a decl.
+
+       * decl.c (cp_make_fname_decl): Push the decls inside the
+       outermost scope.
+
+2003-01-03  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/45, c++/3784
+       * tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
+       the same too.
+
+2003-01-03  Graham Stott  <graham.stott@btinternet.com>
+
+       * parser.c (struct cp_parser): Add access_checks_lists field
+       (cp_parser_simple_declaration): Use.
+       (cp_parser_init_declarator): Likewise. 
+
+2003-01-02  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_declaration): Accept the __extension__
+       keyword before the declaration.
+
+       PR c++/2843
+       * parser.c (cp_parser_parameter_declaration): Allow attributes to
+       appear after the declarator.
+
+       * call.c (build_new_method_call): Fix typo in message format
+       string.
+
+2003-01-02  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_lexer_next_token_is): Declare it inline.
+       (cp_lexer_set_source_position_from_token): Likewise.
+       (cp_lexer_debugging_p): Likewise.
+       (cp_parser_parsing_tentatively): Likewise.
+       (cp_parser_nested_name_specifier_opt): Reduce the number of calls
+       to the cp_lexer_peek_token.
+
+       * parser.c (cp_parser_sizeof_operand): Do not evaluate the
+       expression.
+
+2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>
+
+       * cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
+       cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
+       cp/repo.c: Fix copyright years.
+
+2003-01-01  Neil Booth  <neil@daikokuya.co.uk>
+
+       * lex.c: Remove superfluous include of cpplib.h.
+       (CONSTRAINT): Define without conditions.
+       (init_cp_pragma): Use c_register_pragma.
+
+2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
+
+       * .cvsignore: Remove.
+
+2002-12-31  Steven Bosscher  <s.bosscher@student.tudelft.nl>
+
+       * call.c, class.c, cp-lang.c, cp-tree.h, cvt.c, dump.c, error.c,
+         except.c, expr.c friend.c, g++spec.c, init.c, lang-options.h,
+         lang-specs.h, lex.c, mangle.c, method.c, optimize.c, parser.c,
+         pt.c, ptree.c, repo.c, rtti.c, search.c, semantics.c, tree.c,
+         typeck.c, typeck2.c: Replace "GNU CC" with "GCC" in the
+         copyright header.
+       * lex.h: parse.y is dead, so don't mention it.  Also replace the
+         copyright header with the default GNU copyright header.
+
+2002-12-31  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (LOOKUP_TEMPLATES_EXPECTED): Remove.
+       (lookup_name_namespace_only): Likewise.
+       (begin_only_namespace_names): Likewise.
+       (end_only_namespace_names): Likewise.
+       * decl.c (only_namespace_names): Remove.
+       (qualify_lookup): Do not check LOOKUP_TEMPLATES_EXPECTED.
+       (lookup_name_real): Do not check only_namespace_names.
+       (lookup_name_namespace_only): Remove.
+       (begin_only_namespace_names): Likewise.
+       (end_only_namespace_names): Likewise.
+       * parser.c (cp_parser_nested_name_specifier_opt): Handle erroneous
+       nested-name-specifiers more gracefully.
+       (cp_parser_class_or_namespace_name): Avoid looking up namespace
+       names when they cannot possibly appear.
+       (cp_parser_template_name): Adjust call to cp_parser_lookup_name.
+       (cp_parser_elaborated_type_specifier): Likewise.
+       (cp_parser_namespace_name): Only look for namespace names.
+       (cp_parser_lookup_name): Add is_namespace parameter.
+       (cp_parser_lookup_name_simple): Adjust call to
+       cp_parser_lookup_name.
+
+       * parser.c (cp_parser_dependent_type_p): Fix thinko.
+
+2002-12-31  Neil Booth  <neil@daikokuya.co.uk>
+
+       * .cvsignore: Update.
+
+2002-12-31  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (modify_vtable_entry): Remove unused variable.
+       (get_vcall_index): Always expect a non-thunk.
+       (update_vtable_entry_for_fn): Combine covariant adjustments, when
+       overriding a thunk. Pass get_vcall_index a non-thunk.
+
+       * decl2.c (finish_file): Mark undefined inlines as extern.
+
+2002-12-31  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.def (RETURN_INIT): Remove.
+       * cp-tree.h (DECL_IN_MEMORY_P): Remove.
+       (scope_kind): Add sk_block, sk_try, sk_catch, sk_for.
+       (note_level_for_for): Remove.
+       (note_level_for_try): Likewise.
+       (note_level_for_catch): Likewise.
+       (finish_named_return_value): Likewise.
+       (do_pushlevel): Change prototype.
+       (pending_lang_change): Remove.
+       * decl.c (begin_scope): Handle sk_block, sk_try, sk_catch,
+       sk_for.
+       (note_level_for_for): Remove.
+       (note_level_for_try): Likewise.
+       (note_level_for_catch): Likewise.
+       (maybe_inject_for_scope_var): Remove use of DECL_IN_MEMORY_P.
+       * parser.c (cp_parser_context_free_list): Make it "deletable".
+       (cp_parser_template_argument): Remove misleading comment.
+       * pt.c (tsubst_expr): Remove RETURN_INIT code.
+       * semantics.c (genrtl_named_return_value): Remove.
+       (do_pushlevel): Take a scope kind as an argument.
+       (begin_if_stmt): Adjust.
+       (begin_while_stmt): Likewise.
+       (begin_for_stmt): Likewise.
+       (finish_for_init_stmt): Likewise.
+       (begin_switch_stmt): Likewise.
+       (begin_handler): Likewise.
+       (begin_compound_stmt): Likewise.
+       (finish_named_return_value): Remove.
+       (cp_expand_stmt): Remove RETURN_INIT case.
+       * tree.c (cp_statement_code_p): Remove RETURN_INIT case.
+
+2002-12-31  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9112
+       * parser.c (cp_parser_direct_declarator): Handle erroneous
+       parenthesized declarators correctly.
+
+2002-12-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * cp-tree.h (pending_lang_change): Declare.
+
+2002-12-30  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_context_free_list): New variable.
+       (cp_parser_context_new): Use it.
+       (cp_parser_error): Check return code from
+       cp_parser_simulate_error.
+       (cp_parser_simulate_error): Return a value.
+       (cp_parser_id_expression): Optimize common case.
+       (cp_parser_class_name): Likewise.
+       (cp_parser_class_specifier): Adjust call to
+       cp_parser_late_parsing_default_args.
+       (cp_parser_lookup_name): Optimize common case.
+       (cp_parser_late_parsing_for_member): Adjust call to
+       cp_parser_late_parsing_default_args.
+       (cp_parser_late_parsing_default_args): Add scope parameter.
+       (cp_parser_require): Avoid creating the error message unless it's
+       needed.
+       (cp_parser_parse_definitely): Place free'd contexts on the free
+       list.
+
+       * parser.c (cp_parser_declaration_seq_opt): Handle pending_lang_change.
+
+2002-12-30  David Edelsohn  <edelsohn@gnu.org>
+
+       * parser.c (cp_parser_parameter_declaration_clause): Treat system
+       header as extern "C" if NO_IMPLICIT_EXTERN_C undefined.
+
+2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * config-lang.in, Make-lang.in, operators.def, cp-tree.def:
+       GCC, not GNU CC.
+
+2002-12-30  Mark Mitchell  <mark@codesourcery.com>
+
+       * parse.y: Remove.
+       * spew.c: Likewise.
+       * Make-lang.in (gt-cp-spew.h): Remove.
+       * cp-tree.h (do_pending_lang_change): Remove.
+       (do_identifier): Change prototype.
+       (finish_id_expr): Remove.
+       * decl.c (lookup_name_real): Remove yylex variable.
+       * decl2.c (build_expr_from_tree): Adjust call to do_identifier.
+       * lex.c (init_cpp_parse): Remove.
+       (reduce_cmp): Likewise.
+       (token_cmp): Likewise.
+       (yychar): Likewise.
+       (lastiddecl): Likewise.
+       (token_count): Likewise.
+       (reduce_count): Likewise.
+       (yyhook): Likewise.
+       (print_parse_statistics): Likewise.
+       (do_pending_lang_change): Likewise.
+       (do_identifier): Remove parsing parameter.
+       * lex.h (lastiddecl): Remove.
+       (looking_for_typename): Remove.
+       (looking_for_template): Likewise.
+       (pending_lang_change): Likewise.
+       (yylex): Likewise.
+       * semantics.c (finish_id_expr): Remove.
+
+       * decl.c (grokdeclarator): Diagnost "extern thread" and "static
+       thread" correctly.
+
+2002-12-30  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * decl.c, decl2.c, decl.h:  GCC, not GNU CC.  This is the C++ front
+       end, not the C front end.
+
+2002-12-30  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (THUNK_TARGET): New macro.
+       (THUNK_VIRTUAL_OFFSET): For result thunks it is always a binfo.
+       (finish_thunk): Remove offset parms.
+       * class.c (find_final_overrider): Look through thunks.
+       (get_vcall_index): Use THUNK_TARGET.
+       (update_vtable_entry_for_fn): Look through thunks. Set covariant
+       fixed offset here. Adjust finish_thunk call.
+       (build_vtbl_initializer): Adjust finish_thunk calls.
+       * mangle.c (mangle_call_offset): Remove superfluous if.
+       (mangle_thunk): Adjust.
+       * method.c (make_thunk): Adjust.
+       (finish_thunk): Adjust.
+       (thunk_adjust): Remove assert.
+       (use_thunk): Use THUNK_TARGET
+       * dump1.c (cp_dump_tree): Adjust thunk dumping.
+
+       PR c++/9054
+       * class.c (layout_class_type): Set TYPE_CONTEXT of type for base.
+       * dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.
+
+2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       Remove traditional C constructs 4/n.
+       * decl2.c (grok_method_quals, warn_if_unknown_interface,
+       grok_x_components, cp_build_parm_decl, build_artificial_parm,
+       maybe_retrofit_in_chrg, grokclassfn, grok_array_decl,
+       delete_sanity, check_member_template, check_java_method,
+       check_classfn, finish_static_data_member_decl, grokfield,
+       grokbitfield, grokoptypename, grok_function_init,
+       cplus_decl_attributes, constructor_name, defer_fn,
+       build_anon_union_vars, finish_anon_union, coerce_new_type,
+       coerce_delete_type, comdat_linkage, maybe_make_one_only,
+       key_method, import_export_vtable, import_export_class,
+       output_vtable_inherit, import_export_decl, import_export_tinfo,
+       build_cleanup, get_guard, get_guard_bits, get_guard_cond,
+       set_guard, start_objects, finish_objects,
+       start_static_storage_duration_function,
+       finish_static_storage_duration_function, get_priority_info,
+       start_static_initialization_or_destruction,
+       finish_static_initialization_or_destruction,
+       do_static_initialization, do_static_destruction,
+       prune_vars_needing_no_initialization, write_out_vars,
+       reparse_decl_as_expr, finish_decl_parsing, namespace_ancestor,
+       add_using_namespace, merge_functions, ambiguous_decl,
+       lookup_using_namespace, lookup_using_namespace,
+       qualified_lookup_using_namespace, set_decl_namespace,
+       decl_namespace, current_decl_namespace, push_decl_namespace,
+       pop_decl_namespace, push_scope, pop_scope, add_function,
+       arg_assoc_namespace, arg_assoc_template_arg, arg_assoc,
+       lookup_arg_dependent, do_namespace_alias,
+       validate_nonmember_using_decl, do_nonmember_using_decl,
+       do_toplevel_using_decl, do_local_using_decl,
+       do_class_using_decl, do_using_directive, check_default_args,
+       mark_used, handle_class_head): Use C90 prototypings.  Use booleans.
+       * parser.c (cp_parser_class_head): Use booleanss.
+       * decl.c (walk_globals, walk_vtables): Likewise.
+       * cp-tree.h (walk_globals_pred, walk_globals_fn, walk_vtables,
+       walk_globals): Change return type from 'int' to 'bool'.
+       * rtti.c (init_rtti_processing, build_headof, throw_bad_cast
+       throw_bad_typeid, get_tinfo_decl_dynamic, typeid_ok_p,
+       build_typeid, tinfo_name, get_tinfo_decl, get_tinfo_ptr,
+       get_typeid, ifnonnull, build_dynamic_cast_1, build_dynamic_cast,
+       qualifier_flags, tinfo_base_init, generic_initializer,
+       ptr_initializer, dfs_class_hint_mark, ptm_initializer,
+       dfs_class_hint_unmark, class_hint_flags, class_initializer,
+       typeinfo_in_lib_p, get_pseudo_ti_init, create_pseudo_type_info,
+       get_pseudo_ti_desc, create_tinfo_types, emit_support_tinfos,
+       unemitted_tinfo_decl_p, emit_tinfo_decl): Likewise.
+       * repo.c (repo_compile_flags, repo_template_declared,
+       repo_template_defined, repo_class_defined, repo_get_id,
+       repo_template_used, repo_vtable_used, repo_inline_used,
+       repo_tinfo_used, repo_template_instantiated, extract_string,
+       open_repo_file, afgets, init_repo, reopen_repo_file_for_write,
+       finish_repo): Likewise.
+       * ptree.c (cxx_print_decl, cxx_print_type, cxx_print_identifier,
+       cxx_print_xnode): Likewise..
+       * cp-lang.c (ok_to_generate_alias_set_for_type, cxx_get_alias_set,
+       cxx_warn_unused_global_decl, cp_expr_size): Likewise.
+       * cxxfilt.c (demangle_it, print_demangler_list, usage,
+       standard_symbol_characters, hp_symbol_characters, main, fatal):
+       Likewise.
+       (strip_underscore):  Change type from 'int' to 'bool'.
+       (main): Use boolean constants.
+
+2002-12-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       Remove traditional C constructs 3/n.
+       * cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
+       build_up_reference, warn_ref_binding, convert_to_reference,
+       convert_from_reference, convert_lvalue, cp_convert, ocp_convert,
+       convert_to_void, convert, convert_force, build_type_conversion,
+       build_expr_type_conversion, type_promotes_to,
+       perform_qualification_conversions): Use C90 prototyping style.
+       * decl2.c (grok_array_decl): Use boolean constant.
+       (delete_sanity): Likewise.
+       * typeck.c (build_unary_op): Likewise.
+       * semantics.c (finish_switch_cond): Likewise.
+       * parser.c (cp_parser_direct_new_declarator): Likewise.
+       * init.c (build_new): Likewise.
+
+2002-12-27  Mark Mitchell  <mark@codesourcery.com>
+
+       * Make-lang.in (po-generated): Remove parse.c.
+       (CXX_OBJS): Remove parse.o and spew.o.  Add parser.o.
+       ($(srcdir)/cp/parse.h): Remove target.
+       ($(srcdir)/cp/parse.c): Likewise.
+       (gt-cp-parse.h): Likewise.
+       (gt-cp-parser.h): New target.
+       (c++.distclean): Do not remove parse.output.
+       (c++.maintainer-clean): Do not remove parse.c or parse.h.
+       (cp/spew.o): Remove target.
+       (cp/lex.o): Adjust dependencies.
+       (cp/pt.o): Likewise.
+       (cp/parse.o): Likewise.
+       (cp/TAGS): Do not mention parse.c.
+       (cp/parser.o): New target.
+       * NEWS: Mention the new parser.
+       * call.c (build_scoped_method_call): Simplify.
+       (build_method_call): Likewise.
+       (build_new_function_call): Adjust calls to add_function_candidate
+       and add_template_candidate.
+       (build_new_op): Improve handling of erroroneous operands.
+       (convert_default_arg): Remove circular argument processing.
+       (name_as_c_string): New function.
+       (build_new_method_call): Use it.
+       (perform_implicit_conversion): Use error_operand_p.
+       * class.c (finish_struct_anon): Use constructor_name_p.
+       (check_field_decls): Likewise.
+       (pop_nested_class): Use OVL_NEXT, not OVL_CHAIN.
+       (resolve_address_of_overloaded_function): Likewise.
+       (instantiate_type): Tweak pointer-to-member handling.
+       (get_primary_binfo): Remove incorrect assertion.
+       * config-lang.in (gtfiles): Add parser.c, remove parse.c.
+       * cp-tree.h (DEFARG_TOKENS): New macro.
+       (default_arg): New structure.
+       (cp_tree_node_structure_enum): Add TS_CP_DEFAULT_ARG.
+       (lang_tree_node): Add default_arg.
+       (cp_tree_index): Add CPTI_TYPE_INFO_REF_TYPE.
+       (type_info_ref_type): New macro.
+       (saved_scope): Make processing_explicit_instantiation a boolean.
+       (check_access): New field.
+       (unparsed_text): Remove.
+       (language_function): Remove unparsed_inlines.
+       (error_operand_p): New macro.
+       (lang_decl): Adjust pending_inline_info.
+       (DEFARG_POINTER): Remove.
+       (tag_types): Add typenames.
+       (lookup_ualified_name): Declare.
+       (lookup_name_real): Likewise.
+       (shadow_tag): Adjust prototype.
+       (get_scope_of_declarator): Declare it.
+       (process_next_inline): Remove it.
+       (check_for_missing_semicolon): Likewise.
+       (maybe_get_template_decl_from_type_decl): Declare it.
+       (finish_label_stmt): Adjust prototype.
+       (finish_non_static_data_meber): Declare it.
+       (finish_pseudo_destructor_call_expr): Rename to ...
+       (finish_pseudo_destructor_expr): ... this.
+       (finish_compound_literal): Declare it.
+       (begin_inline_definitions): Remove it.
+       (init_spew): Remove.
+       (peekyylex): Likewise.
+       (arbitrate_lookup): Likewise.
+       (frob_opname): Likewise.
+       (maybe_snarf_defarg): Likewise.
+       (add_defarg_fn): Likewise.
+       (do_pending_defargs): Likewise.
+       (done_pending_defargs): Likewise.
+       (unprocessed_defarg_fn): Likewise.
+       (replace_defarg): Likewise.
+       (end_input): Likewise.
+       (get_overloaded_fn): Likewise.
+       * cvt.c (convert_to_reference): Improve error handling.
+       * decl.c (lookup_name_real): Do not declare it static.
+       (maybe_push_to_top_level): Set check_access.
+       (identifier_type_value): Adjust call to lookup_name_real.
+       (lookup_qualified_name): New method.
+       (lookup_name_real): Remove special-case parsing code.
+       (lookup_name-nonclass): Adjust call to lookup_name_real.
+       (lookup_name_namespace_only): Likewise.
+       (lookup_name): Likewise.
+       (check_tag_decl): Return the type declared.
+       (shadow_tag): Likewise.
+       (register_dtor_fn): Tweak check_access.
+       (grokfndecl): Use constructor_name_p.
+       (get_scope_of_declarator): New function.
+       (grokdeclarator): Obscure tweaks for slightly different declarator
+       representations.
+       (start_method): Return error_mark_node to indicate failure.
+       (cp_tree_node_structure_enum): Use TS_CP_DEFAULT_ARG for DEFAULT_ARGs.
+       * decl2.c (constructor_name_full): Simplify.
+       (constructor_name): Use it.
+       (build_expr_from_tree): Adjust for changes to do new parser.
+       (push_scope): Improve robustness.
+       (validate_nonmember_using_decl): Process declarations, not names.
+       (do_class_using_decl): Likewise.
+       (handle_class_head): Do not mess with CLASSTYPE_DECLARED_CLASS
+       here.
+       * error.c (dump_expr): Handle IDENTIFIER_NODEs and BASELINKs.
+       * expr.c (cxx_expand_expr): Handle BASELINKs.
+       * init.c (member_init_ok_or_else): Issue more errors.
+       (build_offset_ref): Tweak handling of FUNCTION_DECLs.
+       * lex.c: Do not include parse.h.
+       (yypring): Do not declare.
+       (yylval): Likewise.
+       (make_reference_declarator): Remove error-generating code.
+       (rid_to_yy): Remove.
+       (cxx_init): Do not call init_spew.
+       (yypring): Remove.
+       (check_for_missing_semicolon): Remove.
+       * lex.h (got_scope): Remove.
+       (got_object): Remove.
+       * method.c (hack_identifier): Use finish_non_static_data_member.
+       (implicitly_declare_fn): Adjust use of constructor_name.
+       * parser.c: New file.
+       * pt.c (parse.h): Do not include it.
+       (maybe_get_template_decl_from_template): Do not declare it.
+       (finish_member_template_decl): Tweak.
+       (begin_explicit_instantiation): Adjust for
+       processing_explicit_instantiation being boolean.
+       (end_explicit_instantiation): Likewise.
+       (maybe_process_partial_specialization): Tighten specialization
+       test.
+       (retrieve_local_specialization): Adjust ue of hash table.
+       (eq_local_specializations): New function.
+       (register_local_specialization): Likewise.
+       (push_template_decl_real): Remove unnecessary test.
+       (maybe_get_template_decl_from_type_decl): Don't make it static.
+       (for_each_template_parm_r): Handle TYPEOF_TYPE.
+       (tsubst_copy): Use retrieive_local_specialization to handle
+       PARM_DECL.  Adjust handling of CONST_DECLs.  Handle BASELINKs.
+       Handle COMPONENT_REFs with pseudo-destructor-expressions.
+       Simplify handling of CALL_EXPR and METHOD_CALL_EXPR.
+       (tsubst_expr): Pass decls, not names, to do_local_using_decl.
+       (unify): Tweak handling of CONST_DECLs.
+       (regenerate_decl_from_template): Use push_nested_class.
+       (template_for_substitution): New funciton.
+       (instantiate_decl): Use it.  Register parameters as local
+       specializations.
+       * rtti.c (init_rtti_processing): Set type_info_ref_type.
+       (build_typeid): Use it.
+       (get_typeid): Likeise.
+       * search.c (accessible_p): Use check_access, not
+       flag_access_control.
+       (adjust_result_of_qualified_name_lookup): Pay attention to the
+       context_class.
+       * semantics.c (finish_asm_stmt): Adjust error handling.
+       (finish_label_stmt): Return the statement.
+       (finish_non_static_data_member): New function.
+       (finish_class_expr): Handle BASELINKs.
+       (finish_call_expr): Handle PSEUDO_DTOR_EXPR.
+       (finish_object_call_expr): Simplify handling during templates.
+       (finish_pseudo_destructor_call_expr): Rename to ...
+       (finish_pseudo_dtor_expr): ... this.
+       (finish_compound_literal): New function.
+       (begin_inline_definitions): Remove.
+       (finish_sizeof): Remove special template handling.
+       * spew.c: Do not include parse.h.
+       * tree.c (get_overloaded_fn): Remove.
+       * typeck.c (build_class_member_access_expr): Handle
+       PSEUDO_DTOR_EXPR.  Adjust handling of static member functions.
+       (lookup_destructor): New function.
+       (finish_class_member_access_expr): Use it.
+       (convert_arguments): Simplify.
+       (build_unary_op): Handle BASELINKs.
+
+2002-12-26  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/4803
+       * decl2.c (mark_used): Defer inline functions.
+       (finish_file): Merge deferred_fns loops. Check all used
+       inline functions have a definition.
+       * method.c (make_thunk): Thunks are not inline.
+
+       PR c++/5116, c++/764
+       * call.c (build_new_op): Make sure template class operands are
+       instantiated.
+
+2002-12-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR C++/7964
+       * cp-tree.h (resolve_scoped_fn_name): Prototype.
+       * call.c (resolve_scoped_fn_name): New function. Deal with
+       more template expansion. Broken out of ...
+       * parse.y (parse_finish_call_expr): ... here. Call it.
+       * decl2.c (build_expr_from_tree, CALL_EXPR): Use
+       resolve_scoped_fn_name and build_call_from_tree.
+
+       PR c++/9053
+       * decl.c (duplicate_decls): Templates may be disambiguated by
+       return type.
+
+       PR c++/8702
+       * decl2.c (check_classfn): Use lookup_fnfield_1. List all
+       conversion operators on failure.
+
+2002-12-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       Remove traditional C constructs 2/n.
+       * call.c (tourney, build_field_call, equal_functions, joust,
+       compare_ics, build_over_call, build_java_interface_fn_ref,
+       convert_like_real, op_error, build_object_call, resolve_args,
+       build_vfield_ref, check_dtor_name, build_scoped_method_call,
+       build_addr_func, build_call, build_method_call, null_ptr_cst_p,
+       sufficient_parms_p, build_conv, non_reference, strip_top_quals,
+       standard_conversion, reference_related_p,
+       reference_compatible_p, convert_class_to_reference,
+       direct_reference_binding, reference_binding,
+       ,implicit_conversion, is_complete, promoted_arithmetic_type_p,
+       add_template_conv_candidate, any_viable, any_strictly_viable,
+       build_this, splice_viable, print_z_candidates,
+       build_user_type_conversion, build_new_function_call,
+       conditional_conversion, build_conditional_expr, build_new_op,
+       build_op_delete_call, enforce_access, call_builtin_trap,
+       convert_arg_to_ellipsis, build_x_va_arg, cxx_type_promotes_to,
+       convert_default_arg, type_passed_as, convert_for_arg_passing,
+       in_charge_arg_for_name, is_properly_derived_from,
+       maybe_handle_implicit_object, maybe_handle_ref_bind,
+       source_type, add_warning, can_convert, can_convert_arg,
+       perform_implicit_conversion, can_convert_arg_bad,
+       initialize_reference, add_conv_candidate,
+       add_template_candidate_real, add_template_candidate): Ansify.
+
+2002-12-22  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/8572
+       * cp-tree.h (grokoptypename): Add SCOPE parameter.
+       * decl2.c (grokoptypename): Add SCOPE parameter. tsubst the type
+       if in a template scope.
+       * parse.y (unoperator): Return the scope.
+       (operator_name): Adjust grokoptypename call.
+
+2002-12-22  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       * cp-tree.h (make_unbound_class_template): Use tsubst_flags_t.
+       * decl.c (make_unbound_class_template): Adjust.  Check for tf_error.
+       * pt.c (tsubst) [OFFSET_TYPE]: Check for tf_error.
+
+2002-12-20  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * ChangeLog: Fix a typo.
+       * class.c: Fix comment typos.
+       * cp-tree.h: Likewise.
+
+2002-12-18  Jason Merrill  <jason@redhat.com>
+
+       Handle anonymous unions at the tree level.
+       C++ ABI change: Mangle anonymous unions using the name of their
+       first named field (by depth-first search).  Should not cause
+       binary compatibility problems, though, as the compiler previously
+       didn't emit anything for affected unions.
+       * cp-tree.def (ALIAS_DECL): New tree code.
+       * decl2.c (build_anon_union_vars): Build ALIAS_DECLs.  Return the
+       first field, not the largest.
+       (finish_anon_union): Don't mess with RTL.  Do set DECL_ASSEMBLER_NAME,
+       push the decl, and write it out at namespace scope.
+       * decl.c (lookup_name_real): See through an ALIAS_DECL.
+       (pushdecl): Add namespace bindings for ALIAS_DECLs.
+       * rtti.c (unemitted_tinfo_decl_p): Don't try to look at the name
+       of a decl which doesn't have one.
+       * typeck.c (build_class_member_access_expr): Don't recurse if
+       we already have the type we want.
+
+2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/8099
+       * friend.c (make_friend_class): Allow partial specialization
+       when declaration is not a template friend.
+
+2002-12-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/3663
+       * pt.c (lookup_template_class): Copy TREE_PRIVATE and
+       TREE_PROTECTED to created decl nodes.
+
+2002-12-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (build_base_field): Do not set DECL_PACKED on the
+       FIELD_DECL.
+
+2002-12-18  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * cp-tree.h (struct tree_srcloc): Use location_t.
+       (SOURCE_LOCUS): New.
+       (SRCLOC_FILE, SRCLOC_LINE): Adjust.
+
+2002-12-17  Jason Merrill  <jason@redhat.com>
+
+       * decl.c (finish_function): Also complain about no return in
+       templates.
+       * semantics.c (finish_return_stmt): Also call check_return_expr in
+       templates.
+       * typeck.c (check_return_expr): In a template, just remember that we
+       saw a return.
+
 2002-12-16  Jason Merrill  <jason@redhat.com>
 
        * semantics.c (simplify_aggr_init_exprs_r): Don't change the type
 2002-12-13  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
        PR C++/8031
-       * cvt.c (convert_to_pointer_force): Don't try comparing against 
+       * cvt.c (convert_to_pointer_force): Don't try comparing against
        erronous type.
 
 2002-12-13  Geoffrey Keating  <geoffk@apple.com>
 2002-12-10  Matt Austern   <austern@apple.com>
 
        * cp-tree.h: get rid of needs_virtual_reinit bit.
-       
+
 2002-12-09  Mark Mitchell  <mark@codesourcery.com>
 
-       * NEWS: Document removal of in-class initialization extension for 
+       * NEWS: Document removal of in-class initialization extension for
        static data members of non-arithmetic, non-enumeration type.
        * decl.c (check_static_variable_definition): Do not allow that
        extension.
 
        PR C++/8799
        * error.c (dump_expr): Don't ever try to dump a non-existent
-       expression. 
+       expression.
 
 2002-12-03  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/8461, c++/8625
        * call.c (convert_for_arg_passing): Don't mess with error_mark_node.
        (cp_convert_parm_for_inlining): Remove.
-       * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING): 
+       * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
        Remove.
        * cp-tree.h (ADDR_IS_INVISIREF): Remove.
        * except.c (stabilize_throw_expr): Remove ADDR_IS_INVISIREF code.
        PR c++/8615
        * error.c (dump_expr): Handle character constants with
        TREE_OVERFLOW set.
-       
+
 2002-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
 
        DR 180
        PR c++/5919
        * pt.c (unify): Use variably_modified_type_p to test validity of
        template argument types.
-       
+
        PR c++/8727
        * cp-tree.h (lang_type_class): Add typeinfo_var.
        (CLASSTYPE_TYPEINFO_VAR): New macro.
        (check_initializer): Validate the type of the initialized
        variable, even if the initializer is absent.
        * typeck.c (cp_type_quals): Deal gracefully with erroneous types.
-       
+
        PR c++/8214
        * typeck.c (convert_for_assignment): Do not use
        decl_constant_value on the operand.
 
        * parse.y (class_head_defn): Set CLASSTYPE_DECLARED_CLASS for
        anonymous structs.
-       
+
 2002-11-29  Mark Mitchell  <mark@codesourcery.com>
 
        * class.c (walk_subobject_offsets): Recur on binfos as well as on
        base class.
        (layout_empty_base): Likewise.
        (build_base_field): Likewise.
-       
+
 2002-11-27  Mark Mitchell  <mark@codesourcery.com>
 
        * class.c (build_base_field): Make sure we get the canonical base
        (build_base_field): Record offsets of empty bases in primary
        virtual bases.
        (layout_class_type): Record offsets of empty bases in fields.
-       
+
        * search.c (is_subobject_of_p_1): Fix thinko.
        (lookup_field_queue_p): Likewise.
 
 
 2002-10-03  Mark Mitchell  <mark@codesourcery.com>
 
-       PR c++/7931
+       PR c++/7931
        * pt.c (for_each_template_parm_r): Handle BASELINKs.
 
        PR c++/7754
@@ -4758,7 +6003,7 @@ Tue Oct 23 14:00:20 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * parse.y (asm_operand): Allow named operands.
        * semantics.c (finish_asm_stmt): Tweek for changed location
-       of the operand constrant.
+       of the operand constraint.
 
 2001-10-09  Jason Merrill  <jason_merrill@redhat.com>