OSDN Git Service

* init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 40293b8..0c520b5 100644 (file)
@@ -1,3 +1,952 @@
+1998-10-28  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
+       * decl.c (finish_function): Not here.
+       (start_function): Do set DECL_INITIAL.
+       
+       * pt.c (push_template_decl_real): Complain about default template
+       args for enclosing classes.
+
+       * call.c (add_function_candidate): Treat conversion functions
+       as coming from the argument's class.
+       * cp-tree.h (DECL_CONV_FN_P): New fn.
+       (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
+       * class.c (add_method): Use DECL_CONV_FN_P.
+       * decl2.c (check_classfn): Likewise.
+       * error.c (dump_function_name): Likewise.
+       (dump_function_decl): Likewise.
+       * pt.c (fn_type_unification): Likewise.
+       * search.c (add_conversions): Likewise.
+
+1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
+       * method.c (hack_identifier): Also check for using RESULT_DECL
+       from outer context.
+
+1998-10-27  Mark Mitchell  <mark@markmitchell.com>
+
+       * decl.c (grokdeclarator): Use type_quals, rather than constp,
+       consistently.
+
+1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * call.c (standard_conversion): instantiate_type here.
+       (reference_binding): And here.
+       (implicit_conversion): Not here.
+       (build_op_delete_call): No need to cons up an OVERLOAD.
+       * cvt.c (cp_convert_to_pointer): instantiate_type here.
+       (convert_to_reference): And here.
+       * decl.c (grok_reference_init): Not here.
+       (grokparms): Or here.
+       * typeck2.c (digest_init): Or here.
+       * typeck.c (decay_conversion): Take the address of overloaded
+       functions, too.
+       (require_instantiated_type): Lose.
+       (convert_arguments): Don't handle unknown types here.
+       (build_c_cast): Likewise.
+       (build_binary_op): Gut.
+       (build_conditional_expr): Don't require_instantiated_type.
+       (build_modify_expr): Likewise.
+       (build_static_cast): Don't instantiate_type.
+       (build_reinterpret_cast): Likewise.
+       (build_const_cast): Likewise.
+       (convert_for_initialization): Likewise.
+       (build_ptrmemfunc): Use type_unknown_p.
+       (convert_for_assignment): Also do default_conversion on overloaded
+       functions.  Hand them off to ocp_convert.
+       * pt.c (convert_nontype_argument): Tell instantiate_type to complain.
+       Do complain about overload resolution producing a non-public fn.
+
+1998-10-26  Mark Mitchell  <mark@markmitchell.com>
+
+       * error.c (dump_decl): Deal with TEMPLATE_DECLs that are
+       VAR_DECLs.  Handle vtables whose DECL_CONTEXT is not a type.
+
+       * class.c (finish_struct_1): Use build_cplus_array_type to build
+       array types.
+       * decl.c (init_decl_processing): Likewise.
+       * except.c (expand_end_eh_spec): Likewise.
+       * search.c (expand_upcast_fixups): Simplify very slightly.
+       
+1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokdeclarator): Complain about a variable using
+       constructor syntax coming back null from start_decl.
+
+       * friend.c (make_friend_class): Complain about trying to make
+       a non-class type a friend.
+
+       * decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
+       (start_function): Not here.
+
+1998-10-26  Brendan Kehoe  <brendan@cygnus.com>
+
+       * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
+
+1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * typeck2.c (process_init_constructor): Only skip anonymous fields
+       if they are bitfields.
+
+       * cp-tree.def (TYPEOF_TYPE): New code.
+       * error.c (dump_type_real): Handle it.
+       * pt.c (tsubst): Likewise.
+       * tree.c (search_tree): Likewise.
+       * semantics.c (finish_typeof): New fn.
+       * parse.y (typespec): Use it.
+       * cp-tree.h: Declare it.
+
+1998-10-26  Manfred Hollstein  <manfred@s-direktnet.de>
+
+       * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
+
+1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * typeck.c (convert_arguments): Don't handle pmf references 
+       specially.
+
+       * init.c (build_member_call): Don't try to convert to the base type
+       if it's ambiguous or pedantic.
+
+       * typeck2.c (check_for_new_type): Only depend on pedantic for
+       C-style casts.
+
+1998-10-25  Mark Mitchell  <mark@markmitchell.com>
+
+       * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
+       non-converting constructors.
+       
+1998-10-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * gxxint.texi: Correct documentation for n, N, Q, and B.
+
+1998-10-23  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * parse.y (condition): Convert VAR_DECL from reference to indirect
+       reference.
+
+1998-10-23  Andrew MacLeod  <amacleod@cygnus.com>
+
+       * exception.cc (__cp_pop_exception): Free the original exception
+       value, not the potentially coerced one.
+
+1998-10-23  Mark Mitchell  <mark@markmitchell.com>
+
+       * Makefile.in (hash.h): Run gperf when necessary.
+
+       * cp-tree.h (CP_TYPE_READONLY): Remove.
+       (CP_TYPE_VOLATILE): Likewise.
+       (CP_TYPE_QUALS): New macro.
+       (CP_TYPE_CONST_P): Likewise.
+       (CP_TYPE_VOLATILE_P): Likewise.
+       (CP_TYPE_RESTRICT_P): Likewise.
+       (CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
+       (cp_build_type_variant): Rename to ...
+       (cp_build_qualified_type): New function.
+       (c_apply_type_quals_to_decl): Declare.
+       (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
+       (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
+       (cp_type_qual_from_rid): New function.
+       (compparms): Remove unused parameter.  All callers changed.
+       (cp_type_quals): New function.
+       (at_least_as_qualified_p): Likewise.
+       (more_qualified_p): Likewise.
+       
+       * call.c (standard_conversion): Replace calls to
+       cp_build_type_variant with cp_build_qualified_type.  Use
+       CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
+       compare them.  Use CP_TYPE_* macros to check qualifiers.
+       (reference_binding): Likewise.
+       (implicit_conversion): Likewise.
+       (add_builtin_candidates): Likewise.
+       (build_over_call): Likewise.
+       * class.c (overrides): Compare all qualifiers, not just `const',
+       on method declarations.
+       * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
+       (convert_pointer_to_real): Likewise.
+       (type_promotes_to): Likewise.
+       * decl.c (check_for_uninitialized_const_var): New function.
+       (init_decl_processing): More CP_TYPE_QUALS conversion, etc.
+       (cp_finish_decl): Use check_for_uninitialized_const_var.
+       (grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
+       handle `restrict'.
+       (grok_ctor_properties): Likewise.
+       (grok_op_properties): Likewise.
+       (start_function): Likewise.
+       (rever_static_member_fn): Likewise.
+       * decl2.c (grok_method_quals): Likewise.
+       (grokfield): Likewise.
+       * error.c (dump_readonly_or_volatile): Rename to ...
+       (dump_qualifiers): New function.  Handle `restrict'.
+       (dump_type_real): Use it.
+       (dump_aggr_type): Likewise.
+       (dump_type_prefix): Likewise.
+       (dump_type_suffix): Likewise.
+       (dump_function_decl): Likewise.
+       (cv_as_string): Likewise.
+       * gxx.gperf: Add __restrict and __restrict__.
+       * gxxint.texi: Document `u' as used for `__restrict', and a few
+       other previously undocumented codes.
+       * hash.h: Regenerated.
+       * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
+       (build_member_call): Likewise.
+       (build_new_1): Likewise.
+       * lex.c (init_parse): Add entry for RID_RESTRICT.
+       (cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
+       (cp_type_qual_from_rid): Define.
+       * lex.h (enum rid): Add RID_RESTRICT.
+       * method.c (process_modifiers): Deal with `restrict'.
+       * parse.y (primary): More CP_TYPE_QUALS conversion, etc.
+       * parse.c: Regenerated.
+       * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
+       (tsubst_aggr_type): Likewise.
+       (tsubst): Likewise.
+       (check_cv_quals_for_unify): Likewise.
+       (unify): Likewise.
+       * rtti.c (init_rtti_processing): Likewise.
+       (build_headof): Likewise.
+       (get_tinfo_var): Likewise.
+       (buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
+       (expand_class_desc): Likewise.
+       (expand_attr_desc): Likewise.
+       (synthesize_tinfo_fn): Likewise.
+       * search.c (covariant_return_p): Likewise.  Fix `volatile' handling. 
+       (get_matching_virtual): Likewise.
+       (expand_upcast_fixups): Likewise.
+       * sig.c (build_signature_pointer_or_reference_name): Take
+       type_quals, not constp and volatilep.
+       (build_signature_pointer_or_reference_type): Likewise.
+       (match_method_types): More CP_TYPE_QUALS conversion, etc.
+       (build_signature_pointer_constructor): Likewise.
+       (build_signature_method_call): Likewise.
+       * tree.c (build_cplus_array_type): Likewise.
+       (cp_build_type_variant): Rename to ...
+       (cp_build_qualified_type): New function.  Deal with `__restrict'.
+       (canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
+       (build_exception_variant): Likewise.
+       (mapcar): Likewise.
+       * typeck.c (qualif_type): Likewise.
+       (common_type): Likewise.
+       (comptypes): Likewise.
+       (comp_cv_target_types): Likewise.
+       (at_least_as_qualified_p): Define.
+       (more_qualified_p): Likewise.
+       (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
+       (compparms): Likewise.
+       (inline_conversion): Likewise.
+       (string_conv_p): Likewise.
+       (build_component_ref): Likewise.
+       (build_indirect_ref): Likewise.
+       (build_array_ref): Likewise.
+       (build_unary_op): Likewise.
+       (build_conditional_expr): Likewise.
+       (build_static_cast): Likewise.
+       (build_c_cast): Likewise.
+       (build_modify_expr): Likewise.
+       (convert_For_assignment): Likewise.
+       (comp_ptr_ttypes_real): Likewise.
+       (cp_type_quals): New function.
+       
+1998-10-23  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
+       (CP_TYPE_VOLATILE): Likewise.
+       * decl.c (grokdeclarator): Use them.
+       * tree.c (canonical_type_variant): Likewise.
+
+1998-10-22  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * parse.y (named_class_head): Push into class while parsing the
+       base class list.
+       * decl2.c (push_scope, pop_scope): New functions.
+       * cp-tree.h: Declare them.
+        * init.c (build_new_1): Delay cleanup until end of full expression.
+
+1998-10-21  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * typeck.c (build_component_ref): Use of a type here is an error.
+
+1998-10-19  Jason Merrill  <jason@yorick.cygnus.com>
+
+       Revamp references to member functions.
+       * method.c (hack_identifier): Call build_component_ref for a
+       reference to a member function.
+       * typeck.c (build_component_ref): Only return a single function 
+       if it's static.  Otherwise, return a COMPONENT_REF.
+       (build_x_function_call): Handle a COMPONENT_REF.
+       (build_unary_op): Handle all unknown-type things.
+       * decl2.c (arg_assoc): Handle COMPONENT_REF.
+       * class.c (instantiate_type): Complain if the function we get is a
+       nonstatic member function.  Remove code for finding "compatible"
+       functions.
+       * pt.c (tsubst_copy): Handle NOP_EXPR.
+       * tree.c (build_dummy_object): New fn.
+       (maybe_dummy_object): New fn.
+       (is_dummy_object): New fn.
+       * cp-tree.h: Declare them.
+       * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
+       * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
+       * init.c (build_member_call): Use maybe_dummy_object and
+       is_dummy_object.
+       (build_offset_ref): Use maybe_dummy_object.
+       (resolve_offset_ref): Use is_dummy_object.
+       * typeck.c (build_x_function_call): Call build_dummy_object.
+       (unary_complex_lvalue): Call is_dummy_object.
+
+       * typeck.c (build_component_addr): Make sure field is a field.
+
+       * call.c (build_new_op): Delete obsolete code.
+
+       * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
+
+1998-10-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * decl2.c (validate_nonmember_using_decl): Fix using-directives of
+       std if std is ignored.
+
+1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokvardecl): Fix thinko.
+
+       * decl.c (grokdeclarator): Embedded attrs bind to the right,
+       not the left.
+
+       * parse.y (fn.def2): Fix 'attrs' format.
+
+1998-10-18  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
+
+       * Makefile.in (CONFLICTS): Update.
+       * parse.y (expr_or_declarator_intern): New rule.
+       (expr_or_declarator, direct_notype_declarator, primary,
+       functional_cast): Use it.
+       (notype_declarator_intern): New rule.
+       (notype_declarator, complex_notype_declarator): Use it.
+
+1998-10-17  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
+       (grokvardecl): Likewise.
+
+Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
+       (add_method): Likewise for arguments 1 & 2 of `bcopy'.
+       
+       * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
+
+       * pt.c (process_partial_specialization): Cast 1st argument of
+       `bzero' to (PTR).
+
+       * tree.c (build_base_fields): Cast `base_align' to (int) when
+       comparing against one.
+
+1998-10-16  Mark Mitchell  <mark@markmitchell.com>
+
+       * decl.c (lookup_name_real): Handle template parameters for member
+       temlates where said parameters have the same name as the
+       surrounding class.
+       
+       * decl.c (expand_static_init): Build cleanups before entering the
+       anonymous function used to do them to avoid access-checking
+       confusion.
+
+       * decl.c (grokfndecl): Add back call to cplus_decl_attributes
+       accidentally removed by previous change, and make DECL_RTL here.
+       * class.c (add_method): Don't make DECL_RTL here.
+       
+       * pt.c (for_each_template_parm): Don't examine uninstantiated
+       default arguments.
+
+1998-10-16  Dave Brolley  <brolley@cygnus.com>
+
+        * lex.c (real_yylex): Fix unaligned access of wchar_t.
+
+1998-10-16  Mark Mitchell  <mark@markmitchell.com>
+
+       * class.c (add_method): Fix documentation to reflect previous
+       changes.  Check for duplicate method declarations here.
+       * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
+       correctly; such things never match.
+       (grokfndecl): Don't look for duplicate methods here.
+       * decl2.c (check_classfn): Don't assume names are mangled.
+       Don't add bogus member function declarations to a class before the
+       class type is complete.
+       (grokfield): Reformat error message.
+       * method.c (set_mangled_name_for_decl): Don't mangle names while
+       procesing_template_decl.
+       
+1998-10-16  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * typeck.c (build_indirect_ref): Complain about a pointer to data
+       member, too.
+       * typeck2.c (build_m_component_ref): Don't indirect a pointer to
+       data member.
+       * init.c (resolve_offset_ref): Don't undo the above.
+
+       * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
+       (struct lang_decl_flags): Add `bitfield'.
+       * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
+       DECL_BIT_FIELD.
+       * decl2.c (grokbitfield, grok_alignof): Likewise.
+       * init.c (build_offset_ref): Likewise.
+       * typeck.c (build_component_addr, expr_sizeof): Likewise.
+       * cvt.c (build_up_reference): Don't crash if taking the address
+       returns error_mark_node.
+
+       * decl.c (grokfndecl): Also check ctype when checking for ::main().
+
+1998-10-15  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokfndecl): ::main and __builtin_* get C linkage.
+       Do mangling here.
+       (grokdeclarator): Instead of here.
+       * friend.c (do_friend): Lose special handling of ::main and
+       __builtin_*.
+       * cp-tree.h (DECL_MAIN_P): Check for C linkage.
+
+       * spew.c (yylex): Clear looking_for_typename if we got
+       'enum { ... };'.
+
+1998-10-15  Mark Mitchell  <mark@markmitchell.com>
+
+       * class.c (maybe_warn_about_overly_private_class): Improve error
+       messages for class with only private constructors.
+
+       * cp-tree.def (TYPENAME_TYPE): Add to documentation.
+       * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
+       (build_typename_type): New function.
+       * decl.c (build_typename_type): Broken out from ...
+       (make_typename_type): Use it.
+       * search.c (lookup_field): Likewise.
+
+1998-10-14 Benjamin Kosnik  <bkoz@rhino.cygnus.com>
+
+       * pt.c (convert_nontype_argument): Check against type_referred_to.
+        * decl.c (grokvardecl): Check for declarator name before building
+       DECL_ASSEMBLER_NAME.
+        
+1998-10-14  Mark Mitchell  <mark@markmitchell.com>
+
+       * pt.c (lookup_template_class): Add comment.
+       (instantiate_class_template): Don't mark the _TYPE node for
+       member class templates as an instantiation.
+
+1998-10-14  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (grokfndecl): Fix my thinko.
+
+1998-10-13  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tinfo2.cc (fast_compare): Remove.
+       (before): Just use strcmp.
+       * tinfo.cc (operator==): Just use strcmp.
+
+1998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
+
+       * decl.c (grokfndecl): Don't check for linkage in `extern "C"'
+       declarations.
+
+1998-10-13  Mark Mitchell  <mark@markmitchell.com>
+
+       * cp-tree.h (specializations_of_same_template_p): Remove.
+       * search.c (get_template_base): Don't use it.
+       (get_template_base_recursive): Likewise.
+       * pt.c (specializations_of_same_template_p): Remove.
+       (unify): Don't use it.
+       (lookup_template_class): Find the correct parent when setting
+       CLASSTYPE_TI_TEMPLATE.
+       
+1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tinfo.cc (operator==): Always compare names.
+
+1998-10-12  Herman ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
+
+       * decl.c (start_function): Fix cut-and-paste error.
+
+1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * inc/typeinfo: Add #pragma interface.
+       (operator!=): Just call operator==.
+       * tinfo.cc: Add #pragma implementation.
+       (operator==): Move from inc/typeinfo and tinfo2.cc.
+       Check __COMMON_UNRELIABLE instead of _WIN32.
+
+       * typeck2.c (my_friendly_abort): Add URL.
+
+1998-10-12  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
+
+       * decl.c (start_method): Added extra parameter for attributes.
+       * cp-tree.h (start_method): Update prototype.
+       * parse.y (fn.def2): Update start_method parameter list.
+
+1998-10-11  Mark Mitchell  <mark@markmitchell.com>
+
+       * cp-tree.h (specializations_of_same_template_p): Declare.
+       * pt.c (specializations_of_same_template_p): New function.
+       (unify): Use it.
+       * search.c (get_template_base): Use it.
+       (get_template_base_recursive): Likewise.
+       
+1998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>
+
+       * decl2.c (start_objects): Add new variable `joiner' and
+       initialize it properly.
+
+1998-10-09  Mark Mitchell  <mark@markmitchell.com>
+
+       * search.c (expand_upcast_fixups): Tweak to match 1998-10-07
+       change to vtable types.
+
+       * cvt.c (ocp_convert): Avoid infinite recursion caused by
+       1998-10-03 change.
+
+1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * pt.c (resolve_overloaded_unification): New fn.
+       (try_one_overload): Likewise.
+       (unify): Don't fail on unknown type.
+       (type_unification_real): Likewise.  Use resolve_overloaded_unification
+       to handle an overloaded argument.
+       (template_args_equal): Split out...
+       (comp_template_args): From here.
+       (determine_specialization): Also allow a template with more
+       parms than were explicitly specified.
+       * cp-tree.h: Add template_args_equal.
+       * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
+
+Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>
+
+       * semantics.c (finish_asm_stmt): Revert my 1998-09-28
+       change.
+
+Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
+
+       * typeck.c (unsigned_type): Only return TItype nodes when
+       HOST_BITS_PER_WIDE_INT is >= 64 bits.
+       (signed_type): Similarly.
+       * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
+       when HOST_BITS_PER_WIDE_INT is >= 64 bits.
+       (init_decl_processing): Only create TItype nodes when
+       HOST_BITS_PER_WIDE_INT is >= 64 bits.
+       * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
+       when HOST_BITS_PER_WIDE_INT is >= 64 bits.
+
+Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
+       (gxx.gperf): Update comments describing invocation flags.
+       (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
+
+1998-10-07  Mark Mitchell  <mark@markmitchell.com>
+
+       * class.c (finish_struct_1): Add commentary on prevous change.
+
+       * cp-tree.h (vtbl_ptr_type_node): New variable.
+       * class.c (build_vtbl_ref): Don't indirect through the vptr; it's
+       already of the right type.
+       (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
+       Simplify code to grow vtable.
+       * decl.c (vtbl_ptr_type_node): Define.
+       (init_decl_processing): Initialize it.
+       
+1998-10-06  Mark Mitchell  <mark@markmitchell.com>
+
+       * cp-tree.def (PTRMEM_CST): New tree node.
+       * cp-tree.h (ptrmem_cst): New type.
+       (lang_type): Remove local_typedecls.
+       (dummy): Increase to 12 bits from 11.
+       (CLASSTYPE_LOCAL_TYPEDECLS): Remove.
+       (PTRMEM_CST_CLASS): New macro.
+       (PTRMEM_CST_MEMBER): Likewise.
+       (current_access_specifier): New variable.
+       (current_class_type): Remove duplicate declaration.
+       (finish_struct): Change prototype.
+       (unreverse_member_declarations): New function.
+       (pushdecl_class_level): Change prototype.
+       (grok_enum_decls): Remove.
+       (fixup_anonymous_union): New function.
+       (grok_x_components): Change prototype.
+       (tsubst_chain): Remove.
+       (finish_member_template_decl): Likewise.
+       (check_explicit_specialization): Fix indentation.
+       (finish_class_definition): Change prototype.
+       (finish_member_class_template): Likewise.
+       (finish_member_declaration): New function.
+       (check_multiple_declarators): Likewise.
+       * class.c (class_stack_node_t): New type.
+       (current_class_base): Remove.
+       (current_class_stack): Change type.
+       (current_access_specifier): New variable.
+       (grow_method): Remove.
+       (check_member_decl_is_same_in_complete_scope): Break out from
+       finish_struct.
+       (make_method_vec): New function.
+       (free_method_vec): Likewise.
+       (add_implicitly_declared_members): Break out from finish_struct_1.
+       (free_method_vecs): New variable.
+       (add_method): Rework for direct use from parser.
+       (handle_using_decl): Watch for NULL_TREE while iterating through
+       CLASSTYPE_METHOD_VEC.
+       (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
+       just do some error-checking.
+       (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
+       (finish_struct_1): Simplify.  Use add_implicitly_declared_members.
+       (finish_struct): Change prototype.  Simplify; fields and methods
+       are already set up at this point.
+       (init_class_processing): Set up current_class_stack.
+       (pushclass): Save current_access_specifier.
+       (popclass): Restore it.
+       (currently_open_class): Simplify.
+       (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
+       * decl.c (saved_scope): Add access_specifier.
+       (maybe_push_to_top_level): Save it.
+       (pop_from_top_level): Restore it.
+       (maybe_process_template_type_declaration): Use
+       finish_member_declaration. 
+       (pushtag): Likewise.
+       (pushdecl_class_level): Don't return a value.
+       (fixup_anonymous_union): Break out from grok_x_components.
+       (shadow_tag): Use it.
+       (xref_tag): Complain about using an elaborated type specifier to
+       reference a template type parameter or typedef name.
+       (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
+       (current_local_enum): Remove.
+       (build_enumerator): Call finish_member_declaration.
+       (grok_enum_decls): Remove.
+       * decl2.c (grok_x_components): Simplify.
+       (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
+       (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
+       (merge_functions): Add to comment.
+       (arg_assoc_type): Prototype.
+       (arg_assoc): Pass as many arguments as there are parameters.
+       * error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
+       OFFSET_REF.
+       * expr.c (cpls_expand_expr): Remove dead code.  Handle
+       PTRMEM_CST.
+       * friend.c (do_friend): Lookup friends when in nested classes.
+       Change comments.
+       * init.c (build_offset_ref): Do lookup even for classes that are
+       only partially defined.
+       (decl_constant_value): Remove dead code.
+       * method.c (build_overload_value): Remove hack where by TYPE was
+       not a TYPE.  Handle PTRMEM_CST.
+       (build_template_parm_names): Don't pass a PARM_DECL where a TYPE
+       should go.
+       * parse.y (components, notype_components, component_decl,
+       component_decl_1, component_declarator, component_declarator0):
+       Now all are itype rather than ttype.  Rework to add members to
+       classes on the fly.
+       (typesqpecqual_reserved): Use check_multiple_declarators.
+       (structsp): Update class to finish_class_definition.
+       (do_xref_defn): Unsplit into named_class_head.
+       (access_specifier): Set current_access_specifier.
+       * pt.c (set_current_access_from_decl): New function.
+       (finish_member_template_decl): Don't take the parameters.
+       (comp_template_args): Make more robust.
+       (lookup_template_class): Don't use current_local_enum.
+       (for_each_template_parm): Handle PTRMEM_CST.
+       (instantiate_class_template): Use set_current_access_from_decl,
+       finish_member_declaration and unreverse_member_declarations.  Set
+       lineno/input_filename before generating implicit member functions.  
+       (type_unification_real): Don't assume back-unification happens
+       only for the last argument.
+       (regenerate_decl_from_template): Call pushclass a bit earlier.
+       (tsubst_chain): Remove.
+       (tsubst_enum): Use set_current_access_from_decl.
+       (set_mangled_name_for_template_decl): Fix indentation.
+       * search.c (lookup_fnfields_1): Change iteration through
+       CLASSTYPE_METHOD_VEC.
+       (dfs_pushdecls): Likewise.
+       (dfs_compress_decls): Likewise.
+       (add_conversions): Likewise.
+       * semantics.c (finish_class_definition): Don't take components.
+       Change call to finish_struct.
+       (finish_member_declaration): New function.
+       (finish_member_class_template): Don't take template parameters.
+       Change call to grok_x_components.  Call finish_member_template_decl.
+       (check_multiple_declarators): New function.
+       * sig.c (append_signature_fields): Work from the TYPE_METHODS, not
+       a passed in fieldlist.
+       * tree.c (search_tree): Handle PTRMEM_CST.
+       (mapcar): Likewise.
+       * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
+       INTEGER_CSTs, for pointer-to-data members.
+       
+       * call.c (resolve_args): Resolve template specializations, if
+       possible.
+
+Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * Makefile.in (spew.o): Depend on toplev.h.
+
+       * call.c (compare_ics): Initialize variables `deref_from_type2',
+       `deref_to_type1' and `deref_to_type2'.
+
+       * except.c (get_eh_type): Hide prototype and definition.
+       (process_start_catch_block_old): Remove unused static prototype.
+
+       * pt.c (tsubst_decl): Initialize variable `argvec'.
+
+       * spew.c: Include toplev.h.
+
+1998-10-05  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * pt.c (instantiate_decl): Do save and restore file position.
+
+1998-10-05  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * method.c (build_decl_overload_real): Clear
+       numeric_output_need_bar after __.
+
+1998-10-05  Nathan Sidwell  <nathan@acm.org>
+
+       * call.c (build_new_method_call): Issue 'incomplete type' error,
+       if class is not defined.
+
+1998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * call.c (build_object_call): Move declaration of variable
+       `fn' into the scope where it is used.  Don't access variable
+       `fn' when it is uninitialized, instead use `fns'.
+
+1998-10-04  Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+       * errfn.c (cp_thing): Print buf as a string not as a printf format
+       to avoid problems with the operator%. Consequently, `%%' sequences
+       in format are copied as `%' in buf.
+
+1998-10-04  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * pt.c (pop_tinst_level): Call extract_interface_info.
+       (instantiate_decl): Don't save and restore file position.
+
+       * decl.c (cp_finish_decl): Make statics in extern inlines and
+       templates common, if possible and the target doesn't support weak
+       symbols.
+
+       * decl.c (grokdeclarator): Remove redundant calls to
+       build_type_variant and some duplicated code.
+       * sig.c (build_signature_reference_type): Only take the type parm.
+       (build_signature_pointer_type): Likewise.
+       * tree.c (build_cplus_method_type): Adjust.
+       * cp-tree.h: Update.
+
+1998-10-04  Mark Mitchell  <mark@markmitchell.com>
+
+       * call.c (build_over_call): Make pedwarns about dropped qualifiers
+       into full-fledged errors.
+       * cvt.c (convert_to_reference): Likewise.
+       * typeck.c (convert_for_assignment): Likewise.
+
+       * search.c (expand_upcast_vtables): In addition to unsetting 
+       TREE_READONLY, remove top-level const type qualifier.
+
+1998-10-03  Mark Mitchell  <mark@markmitchell.com>
+
+       * class.c (current_class_ptr, current_class_ref): Clarify
+       documentation.
+       * cvt.c (ocp_convert): Don't expect fold to remove all trivial
+       NOP type conversions.
+       * decl.c (decls_match): Use comptypes directly; ignore
+       qualifiers on the DECL.
+       (duplicate_decls): Remove qualifier checks on DECL.
+       (grokdeclarator): Make the type built up include top-level
+       qualifiers.
+       * decl2.c (do_dtors): Fix spelling error.
+       * error.c (dump_simple_decl): Don't look at qualifiers on the decl
+       when printing type information.
+       * init.c (build_new_1): Add documentation.  Deal with the fact
+       that type of allocated memory now contains qualifiers.
+       * lex.c (is_global): Improve error-recovery.
+       * sig.c (build_member_function_pointer): Don't cast away const
+       on fields of sigtable_entry_type.
+       * tree.c (lvalue_type): Don't look at top-level qualifiers on
+       expressions.
+       * typeck.c (decay_conversion): Likewise.
+       (build_component_ref): Make sure the type of the COMPONENT_REF
+       contains top-level qualifiers, as appropriate.  Improve
+       error-handling. 
+       (build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
+       (build_array_ref): Likewise.
+       (build_unary_op): Improve error-recovery.
+       (unary_complex_lvalue): Make taking the address a bound member
+       function an error, not a sorry.
+       (build_conditional_expr): Look at the type qualifiers, not the
+       qualifiers on the expression itself.
+       
+1998-10-03  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl2.c (merge_functions): Remove duplicates.
+
+       * decl2.c: Add -f{no-,}implicit-inline-templates.
+       (lang_decode_option): Unset it if -frepo.
+       (import_export_decl): Check it.
+
+       * decl.c (lookup_name_real): Template parms also take precedence
+       over implicit typename.  Only warn if yylex.
+
+       * typeck.c (build_conditional_expr): Only fold if ifexp is an
+       INTEGER_CST.
+
+       * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
+       instead of linkage.
+
+1998-10-01  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * cp-tree.h (FORMAT_VBASE_NAME): New macro.
+       * class.c (build_vbase_pointer): Use it.
+       * rtti.c (expand_class_desc): Likewise.
+       * tree.c (build_vbase_pointer_fields): Likewise.
+
+Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>
+
+       * decl.c (start_decl): Add invocation of
+       SET_DEFAULT_DECL_ATTRIBUTES, if defined.
+       (start_function): Add invocation of
+       SET_DEFAULT_DECL_ATTRIBUTES, if defined.
+
+       * lex.c: Replace occurances of HANDLE_SYSV_PRAGMA with
+       HANDLE_GENERIC_PRAGMAS.
+       
+1998-09-28  Anthony Green  <green@cygnus.com>
+
+       * semantics.c (finish_asm_stmt): Always permit volatile asms.
+
+1998-09-28  Mark Mitchell  <mark@markmitchell.com>
+
+       * decl.c (grokdeclarator): Tighten checks for invalid
+       destructors.  Improve error-messages and error-recovery.
+       * decl2.c (check_classfn): Don't assume that mangled destructor 
+       names contain type information.
+       
+1998-09-25  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * search.c (get_base_distance): Remove assert.
+
+       * decl2.c (build_anon_union_vars): Don't process a field with no
+       name.
+       (finish_anon_union): Also complain about local anon unions with no
+       members.
+
+1998-09-25  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * decl.c (lookup_namespace_name): If the name is a namespace,
+       return it immediately.
+
+Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * cp-tree.h (define_case_label): Remove unused parameter.
+       (check_java_method): Likewise.
+       (grokclassfn): Likewise.
+       (expand_aggr_init): Likewise.
+       (build_x_delete): Likewise.
+       (maybe_end_member_template_processing): Likewise.
+       (unshare_base_binfos): Add prototype.
+       (string_conv_p): Likewise.
+       (my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
+
+       * cvt.c (build_up_reference): Remove unused parameter
+       `checkconst', all callers changed.
+       (build_type_conversion): Mark parameter `code' with
+       ATTRIBUTE_UNUSED.
+       (build_expr_type_conversion): Initialize variable `conv'.
+
+       * decl.c (push_namespace): Initialize variable `d'.
+       (define_case_label): Remove unused parameter `decl', all callers
+       changed.
+
+       * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
+       `argc' with ATTRIBUTE_UNUSED.
+       (grokclassfn): Remove unused parameter `cname', all callers
+       changed.
+       (check_java_method): Likewise for parameter `ctype'.
+       (copy_assignment_arg_p): Mark parameter `virtualp' with
+       ATTRIBUTE_UNUSED.
+       (finish_prevtable_vardecl): Likewise for parameter `prev'.
+
+       * expr.c (extract_init): Likewise for parameters `decl' and `init'.
+
+       * init.c (expand_aggr_init_1): Remove unused parameter
+       `alias_this', all callers changed.
+       (expand_aggr_init): Likewise.
+       (expand_default_init): Likewise.
+       (build_new_1): Initialize variable `susp'.
+       (build_x_delete): Remove unused parameter `type', all callers
+       changed.
+
+       * lex.c (set_typedecl_interface_info): Mark parameter `prev' with
+       ATTRIBUTE_UNUSED.
+       (readescape): Use (unsigned) value in shift.
+       (real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
+       comparing to a signed quantity.
+
+       * pt.c (maybe_end_member_template_processing): Remove unused
+       parameter `decl', all callers changed.
+       (check_explicit_specialization): Add braces around empty body in
+       an else-statement.
+       (current_template_args): Initialize variable `args'.
+       (lookup_template_class): Likewise for variable `prev_local_enum'.
+       (tsubst_decl): Likewise for variable `r'.
+       (set_mangled_name_for_template_decl): Initialize variable
+       `context'.
+
+       * spew.c (scan_tokens): Change type of parameter `n' to unsigned.
+       Likewise for variable `i'.
+       (yylex): Initialize variable `trrr'.
+
+       * typeck.c (compparms): Mark variable `strict' with
+       ATTRIBUTE_UNUSED.
+
+       * xref.c (simplify_type): Cast argument of ctype function to
+       `unsigned char'.
+
+1998-09-24  Mark Mitchell  <mark@markmitchell.com>
+
+       * cp-tree.h (language_lvalue_valid): Remove.
+       * decl.c (grokdeclarator): Don't disallow references to functions.
+       * tree.c (lvalue_p_1): New function, combining duplicated
+       code from ...
+       (lvalue_p): Use it.
+       (real_lvalue_p): Likewise.
+       * typeck.c (language_lvalue_valid): Remove.
+       (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
+       they don't have TREE_READONLY set.
+       * typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
+       
+1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
+
+       * spew.c (yylex): Give diagnostic.
+       * hash.h (is_reserved_word): Add export.
+       * gxx.gperf: Ditto.
+       * lex.h (rid): Add RID_EXPORT.
+       * lex.c (init_parse): Ditto. 
+
+Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
+
+       * friend.c (do_friend): Make warning a full sentence.
+
+1998-09-22  Mark Mitchell  <mark@markmitchell.com>
+
+       * parse.y (component_decl_list): Improve error-recovery.
+
+1998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>
+
+        * decl.c (make_typename_type): Move error to point where name
+        variable can be used by dump_type.
+
+1998-09-22  Mark Mitchell  <mark@markmitchell.com>
+
+       * decl.c (grokfndecl): Improve error-recovery.
+       * decl2.c (grokfield): Likewise.
+       * pt.c (finish_member_template_decl): Likewise.
+
+1998-09-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>
+
+       * method.c (hack_identifier): Finding multiple members is always
+       an error.
+
 1998-09-21  Per Bothner  <bothner@cygnus.com>
 
        * Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.