+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.
* 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.