OSDN Git Service

* init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index cfeb8e5..0c520b5 100644 (file)
@@ -1,5 +1,478 @@
+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>
        * 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