OSDN Git Service

* tree.c (mapcar): Handle LVALUE_EXPR.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 5d1c6a3..f0b989c 100644 (file)
@@ -1,3 +1,230 @@
+1999-05-22  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.c (mapcar): Handle LVALUE_EXPR.
+
+       * cp-tree.h (cplus_expand_constant): Declare.
+       * cvt.c (convert_to_pointer): Expand PTRMEM_CSTs when they're
+       converted from one pointer-to-object type to another.
+       * expr.c (cplus_expand_constant): Don't make it static.
+       * typeck.c (build_component_ref): Don't crash when presented with
+       a component which is a TEMPLATE_DECL.
+       (build_ptrmemfunc): Tidy.  Clarify comment.  Make sure that even a
+       cast from a pointer-to-member constant to its own type does not
+       result in a valid non-type template argument.
+
+1999-05-21  Mark Mitchell  <mark@codesourcery.com>
+            Nathan Sidwell  <nathan@acm.org>
+       
+       * Make-lang.in (cc1plus): Make it depend on gxx.gperf.
+       * cp-tree.h: Fix typo in documentation on pointers-to-members.
+       (cp_build_qualified_type): Make it a macro.
+       (cp_build_qualified_type_real): Declare.
+       * decl.c (grokdeclarator): Remove misleading comment.  Avoid
+       problem with template parameters and restrict-qualification.
+       * gxx.gperf: Replace NORID with RID_UNUSED throughout.
+       * hash.h: Regenerated.
+       * lex.h (rid): Move RID_FIRST_MODIFIER and RID_LAST_MODIFIER into
+       the enumeration.
+       (NORID): Remove definition.
+       * pt.c (tsubst_aggr_type): Use cp_build_qualified_type_real.
+       (tsubst): Likewise.  Remove special handling for FUNCTION_TYPEs.
+       (fn_type_unification): Check that the function type resulting from
+       the deduction is legal.
+       (check_cv_quals_for_unify): Don't handle FUNCTION_TYPEs specially.
+       (unify): Use cp_build_qualified_type_real.
+       * tree.c (build_cplus_array_type_1): Handle error_marks as inputs.
+       (cp_build_qualified_type): Rename to ...
+       (cp_build_qualified_type_real): Add additional COMPLAIN parameter
+       and modify appropriately.
+       
+       * typeck.c (build_ptrmemfunc): Handle PTRMEM_CSTs carefully to
+       reveal optimization opportunities.
+
+       * pt.c (tsubst): Don't issue error messages when we're not
+       complaining, even if we see a qualified function type.
+       (check_cv_quals_for_unify): Don't allow a qualified function
+       type.
+
+1999-05-20  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * class.c (instantiate_type): Downgrade errors for object-dependent
+       memfn refs to pedwarn.
+
+1999-05-20  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (grokdeclarator): Don't treat [] as indicating a
+       zero-sized array in a typedef.
+
+       * call.c (build_object_call): Don't look at DECL_NAME for a type.
+       (pt.c): Or CP_TYPE_QUALS for an ERROR_MARK.
+       (typeck.c): Or TYPE_MAIN_VARIANT for a type.
+
+       * pt.c (for_each_template_parm): Rework to match documentation.
+       Don't be fooled by a COMPONENT_REF with no TREE_TYPE.
+
+1999-05-20  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * class.c (finish_struct_1): Still check for ANON_AGGR_TYPE_P.
+
+       * class.c (finish_base_struct): Allow non-COM bases for COM classes
+       except at the leftmost position.
+       (modify_one_vtable, fixup_vtable_deltas1, override_one_vtable):
+       Pass the binfo's class, not the most derived, to skip_rtti_stuff.
+       * search.c (get_abstract_virtuals, expand_upcast_fixups): Likewise.
+
+       * tree.c (lvalue_p_1): A NOP_EXPR can be an lvalue.
+       (build_cplus_new): Make sure that what we return is of the right type.
+
+1999-05-20  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (make_ptrmem_cst): New function.
+       * expr.c (cplus_expand_constant): Split out from ...
+       (cplus_expand_expr): Here.  Use cplus_expand_constant.
+       (init_cplus_expand): Set lang_expand_constant.
+       * pt.c (convert_nontype_argument): Use make_ptrmem_cst.
+
+       * tree.c (make_ptrmem_cst): Define.
+       * typeck.c (unary_complex_lvalue): Use make_ptrmem_cst.
+       * typeck2.c (initializer_constant_valid_p): Use make_ptrmem_cst.
+
+1999-05-19  Mark Mitchell  <mark@codesourcery.com>
+
+       * pt.c (build_template_decl): Copy DECL_NONCONVERTING_P.
+
+       * decl2.c (start_static_storage_duration_function): Fix comment.
+       (finish_file): Create static storage duration functions lazily.
+
+1999-05-19  Jason Merrill  <jason@yorick.cygnus.com>
+
+       Implement anonymous structs.
+       * cp-tree.h (ANON_AGGR_TYPE_P): Rename from ANON_UNION_TYPE_P.
+       * class.c, decl.c, decl2.c, init.c, pt.c, search.c, typeck.c: Adjust.
+       * class.c (finish_struct_1): Remove redundant check for anon struct.
+       * decl.c (fixup_anonymous_aggr): Renamed from fixup_anonymous_union.
+       (check_tag_decl): Check for anonymous struct here.
+       * decl2.c (build_anon_union_vars): Catch anon struct at file scope.
+       * init.c (sort_member_init, emit_base_init): Handle getting fields
+       as well as names in current_member_init_list.
+       (perform_member_init): Handle getting an anon aggr.
+       * method.c (do_build_assign_ref): Don't descend into anon aggrs.
+       (do_build_copy_constructor): Likewise.
+
+1999-05-19  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.c (cp_build_qualified_type): Don't allow qualified function
+       types.
+
+Wed May 19 02:50:53 1999  Arvind Sankar <arvinds@mit.edu>
+
+       * gxxint.texi: Fix typo.
+
+1999-05-19  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * call.c (find_scoped_type, resolve_scope_to_name): Lose.
+       * class.c (finish_struct_1): Use CLASS_TYPE_P.
+       * ptree.c (print_lang_type): Likewise.
+       * typeck.c (build_modify_expr, c_expand_asm_operands): Use
+       IS_AGGR_TYPE_CODE.
+       * typeck2.c (digest_init): Likewise.
+
+1999-05-18  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * call.c (joust): Compare the types of the conv ops, not the
+       target types of the conversions.
+
+Tue May 18 00:21:34 1999  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+       * lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc
+       was not given.
+
+1999-05-17  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.def (TEMPLATE_ID_EXPR): Update documentation.
+       * decl.c (grokfndecl): Don't allow inline declarations of friend
+       template specializations, or friend template specializations with
+       default arguments.
+       * pt.c (tsubst): Handle substitution into array types that does
+       not yield a fixed upper bound, even when not processing a
+       template.
+       (tsubst_copy): Deal with the fact that the second operand to a
+       TEMPLATE_ID_EXPR may be NULL_TREE, a TREE_LIST, or a TREE_VEC.
+       * search.c (marked_pushdecls_p): Don't descend into
+       TEMPLATE_TYPE_PARMs and the like.
+       (unmarked_pushdecls_p): Likewise.
+       
+       * call.c (build_over_call): Don't throw away
+       initializations/copies of empty classes; use MODIFY_EXPR and
+       INIT_EXPR as for non-empty classes.
+       * class.c (finish_struct_1): Put the padding byte for an empty
+       class on the TYPE_NONCOPIED_PARTS list for the class.
+
+1999-05-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl2.c (build_expr_from_tree): Handle COMPONENT_REFs that
+       indicate a reference to a field that is a qualified name.
+
+1999-05-16  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl2.c (finish_objects): Don't use .?tors.* if we don't have
+       ASM_OUTPUT_CONSTRUCTOR.
+
+       * friend.c (do_friend): Add attrlist arg.  Remove support for
+       getting a non-decl as 'decl'.
+       * decl.c (grokfndecl): Remove attrlist arg.  Don't set attrs or
+       rtl.
+       (grokdeclarator): Adjust.
+       * cp-tree.h: Adjust.
+
+1999-05-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (permanent_p): New function.
+       * init.c (build_new_1): Use mapcar, not copy_node, to copy a
+       possibly complex tree node.
+       * tree.c (mapcar): Adjust comments, and follow coding standards in
+       conditional.
+       (permanent_p): New function.
+
+1999-05-13  Per Bothner  <bothner@cygnus.com>
+
+       * class.c (push_lang_context):  Turn off DECL_IGNORED_P for
+       primitive Java types, if we actually see `extern "Java"'.
+
+1999-05-10 18:21 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+       * lang-specs.h: Pass -$ to the preprocessor.
+
+1999-05-10  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * init.c (build_offset_ref): Wrap baselinks in OFFSET_REF, too.
+       Don't bother wrapping an OFFSET_TYPE around unknown_type_node.
+       (resolve_offset_ref): Don't handle a raw baselink.
+       * cvt.c (build_expr_type_conversion): Likewise.
+       * typeck.c (decay_conversion, build_c_cast, convert_for_assignment,
+       convert_for_initialization): Likewise.
+       * class.c (instantiate_type): Handle seeing a baselink under an
+       OFFSET_REF.
+       * error.c (dump_expr): Likewise.        
+       * pt.c (for_each_template_parm): Likewise.
+       (resolve_overloaded_unification): Likewise.
+       * tree.c (is_overloaded_fn, really_overloaded_fn): Likewise.
+       * typeck.c (expr_sizeof): Also complain about other permutations
+       of overloaded functions.
+
+1999-05-07  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * init.c (resolve_offset_ref): Don't return a raw method.
+       Use BASELINK_P.
+       * typeck.c (decay_conversion): Don't handle a raw method.
+       Resolve all OFFSET_REFs.
+       (get_member_function_from_ptrfunc): 0 is a valid vtable index.
+       (build_binary_op_nodefault): Handle resolving overloaded fns.  Use
+       same_type_p for pmf bits.  Don't use build_binary_op to compare
+       raw pointers to methods.
+       (convert_for_assignment): Check for OFFSET_REF, not OFFSET_TYPE,
+       to decide when to call resolve_offset_ref.
+       (build_c_cast, convert_for_initialization): Likewise.
+       * cvt.c (build_expr_type_conversion): Likewise.
+
 1999-05-06  Nathan Sidwell  <nathan@acm.org>
 
        * call.c (build_new_method_call): Use TYPE_MAIN_VARIANT of class.
@@ -159,7 +386,7 @@ Wed Apr 28 11:42:22 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
        * cp-tree.h (lang_decl_flags): Remove returns_first_arg and
        preserves_first_arg.  Enlarge dummy accordingly.
        (DECL_TINFO_FN_P): New macro.
-       (SET_DECL_TINO_FN_P): Likeiwse.
+       (SET_DECL_TINFO_FN_P): Likeiwse.
        (DECL_RETURNS_FIRST_ARG): Remove.
        (DECL_PRESERVES_THIS): Likewise.
        (DECL_INIT_PRIORITY): New macro.