OSDN Git Service

* cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index fc05b53..8ebc5ae 100644 (file)
-2000-03-01  Cor Veenman  <C.J.Veenman@its.tudelft.nl>
+2000-04-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (IDENTIFIER_CTOR_OR_DTOR_P): New macro.
+       (cp_tree_index): Add CPTI_PUSH_EXCEPTION_IDENTIFIER.
+       (cp_push_exception_identifier): New macro.
+       (DECL_COMPLETE_DESTRUCTOR_P): New macro.
+       (DECL_BASE_DESTRUCTOR_P): Likewise.
+       (DECL_DELETING_DESTRUCTOR_P): Likewise.
+       (get_vtbl_decl_for_binfo): Fix formatting.
+       (in_charge_arg_for_name): New macro.
+       (maybe_build_cleanup_and_delete): Remove declaration.
+       * call.c (build_field_call): Use IDENTIFIER_CTOR_OR_DTOR_P.
+       (in_charge_arg_for_name): New function.
+       (build_new_method_call): Use it.  Handle cloned destructors.
+       (build_clone): Don't make the base constructor virtual.
+       Automatically defer generated functions.
+       (clone_function_decl): Handle destructors, too.
+       (clone_constructors_and_destructors): Likewise.
+       (create_vtable_ptr): Don't create a vtable entry for a cloned
+       function.
+       * decl.c (predefined_identifier): Add ctor_or_dtor_p.
+       (initialize_predefined_identifiers): Update appropriately.
+       (finish_destructor_body): Simplify.
+       (maybe_build_cleanup_and_delete): Remove.
+       * except.c (expand_throw): Handle new-ABI destructors.
+       * init.c (expand_cleanup_for_base): Use base_dtor_identifier.
+       (build_dtor_call): New function.
+       (build_delete): Use it.  Simplify.
+       * optimize.c (maybe_clone_body): Handle destructors.
+       * search.c (lookup_field_queue_p): Use IDENTIFIER_CTOR_OR_DTOR_P.
+       
+       * exception.cc (cleanup_fn): New typedef.
+       (CALL_CLEANUP): New macro.
+       (cp_eh_info): Use them.
+       (__cp_push_exception): Likewise.
+       (__cp_pop_exception): Likewise.
+       
+2000-04-11  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (cp_tree_index): Add CPTI_DTOR_IDENTIFIER.
+       (complete_dtor_identifier): New macro.
+       (CLASSTYPE_FIRST_CONVERSION): Remove.
+       (CLASSTYPE_CONSTRUCTOR_SLOT): New macro.
+       (CLASSTYPE_DESTRUCTOR_SLOT): Likewise.
+       (CLASSTYPE_FIRST_CONVERSION_SLOT): Likewise.
+       (CLASSTYPE_CONSTRUCTORS): Likewise.
+       (CLASSTYPE_DESTRUCTORS): Likewise.
+       (lang_decl): Add cloned_function.
+       (DECL_COMPLETE_CONSTRUCTOR_P): New macro.
+       (DECL_BASE_CONSTRUCTOR_P): Likewise.
+       (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
+       (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
+       (DECL_CLONED_FUNCTION_P): Likewise.
+       (DECL_CLONED_FUNCTION): Likewise.
+       (clone_function_decl): Declare.
+       (maybe_clone_body): Likewise.
+       * call.c (build_user_type_conversion_1): Call complete object
+       constructors in the new ABI.
+       (build_new_method_call): Don't add in-charge parameters under the
+       new ABI.
+       * class.c (add_method): Use DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P,
+       DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P, CLASSTYPE_CONSTRUCTOR_SLOT, and
+       CLASSTYPE_DESTRUCTOR_SLOT.
+       (build_clone): New function.
+       (clone_function_decl): Likewise.
+       (clone_constructors_and_destructors): Likewise.
+       (check_bases_and_members): Use it.
+       * decl.c (iniitialize_predefined_identifiers): Initialize
+       complete_dtor_identifier.
+       (finish_function): Don't add extra code to a clone.
+       (lang_mark_tree): Mark cloned_function.
+       * decl2.c (mark_used): Don't bother trying to instantiate things
+       we synthesized.
+       * dump.c (dequeue_and_dump): Don't dump CP_DECL_CONTEXT twice.
+       * method.c (set_mangled_name_for_decl): Don't treat clones as
+       constructors.
+       (synthesize_method): Sythesize cloned functions, not the clones.
+       * optimize.c (inline_data): Update comment on ret_label.
+       (remap_block): Don't assume DECL_INITIAL exists.
+       (copy_body_r): Allow ret_label to be NULL.
+       (maybe_clone_body): Define.
+       * pt.c (tsubst_decl): Handle clones.
+       (instantiate_clone): New function.
+       (instantiate_template): Use it.
+       (set_mangled_name_for_template_decl): Don't treat clones as
+       constructors.
+       * search.c (lookup_fnfields_1): Use CLASSTYPE_CONSTRUCTOR_SLOT,
+       CLASSTYPE_DESTRUCTOR_SLOT, and CLASSTYPE_FIRST_CONVERSION_SLOT.
+       * semantics.c (expand_body): Clone function bodies as necessary.
+       
+       * optimize.c (remap_decl): Avoid sharing structure for arrays
+       whose size is only known at run-time.
+       * tree.c (copy_tree_r): Don't copy PARM_DECLs.
+
+       * cp-tree.h (lang_decl_flags): Rename constructor_for_vbase_attr
+       to has_in_charge_parm_p.
+       (DECL_CONSTRUCTOR_FOR_VBASE_P): Rename to ...
+       (DECL_HAS_IN_CHARGE_PARM_P): ... this.
+       (DECL_COPY_CONSTRUCTOR_P): New macro.
+       * call.c (add_function_candidate): Use DECL_HAS_IN_CHARGE_PARM_P.
+       (build_user_type_conversion_1): Likewise.
+       (convert_like_real): Likewise.
+       (build_over_call): Likeiwse.  Use DECL_COPY_CONSTRUCTOR_P.
+       * decl.c (grokdeclarator): Use DECL_HAS_IN_CHARGE_PARM_P.
+       (copy_args_p): Likewise.
+       (grok_ctor_properties): Likewise.
+       (start_function): Likewise.
+       * decl2.c (maybe_retrofit_in_charge): Likewise.  Set it.
+       * error.c (dump_function_decl): Use DECL_HAS_IN_CHARGE_PARM_P.
+       * init.c (emit_base_init): Use DECL_COPY_CONSTRUCTOR_P.
+       * method.c (do_build_copy_constructor): Use
+       DECL_HAS_IN_CHARGE_PARM_P.
+       (synthesize_method): Likewise.
+       * pt.c (instantiate_template): Remove goto.
+       * tree.c (build_cplus_method_type): Remove mention of obstacks in
+       comment.
+       
+       * cp-tre.h (finish_function): Change prototype.
+       * decl.c (end_cleanup_fn): Adjust caller.
+       (finish_function): Take only one parameter.
+       * decl2.c (finish_objects): Adjust caller.
+       (finish_static_storage_duration_function): Likewise.
+       * method.c (emit_thunk): Likewise.
+       * parse.y: Likewise.
+       * parse.c: Regenerated.
+       * pt.c (instantiate_decl): Likewise.
+       * rtti.c (synthesize_tinfo_fn): Likewise.
+       * semantics.c (expand_body): Likewise.
+
+       * cp-tree.h (copy_decl): New function.
+       * class.c (finish_struct_1): Use it.
+       * lex.c (copy_decl): Define it.
+       * pt.c (tsubst_decl): Likewise.
+       * tree.c (copy_template_template_parm): Likewise.
+       
+       * cp-tree.h (lang_type): Remove has_nonpublic_ctor and
+       has_nonpublic_assign_ref.
+       (TYPE_HAS_NONPUBLIC_CTOR): Don't declare.
+       (TYPE_HAS_NONPUBLIC_ASSIGN_REF): Likewise.
+       * class.c (finish_struct_methods): Don't set
+       TYPE_HAS_NONPUBLIC_CTOR or TYPE_HAS_NONPUBLIC_ASSIGN_REF.
+       (interface_only): Don't declare.
+       (interface_unknown): Likewise.
+
+2000-04-11  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * tree.h (HAVE_TEMPLATES): Remove definition.
+       * lang-options.h (-fthis-is-variable): Remove documentation.
+
+2000-04-10  Jason Merrill  <jason@casey.cygnus.com>
+
+       * class.c (instantiate_type): Handle object-relative template-id.
+
+       * semantics.c (finish_expr_stmt): Call convert_to_void here.
+       * decl.c (cplus_expand_expr_stmt): Not here.
+
+       * rtti.c (build_dynamic_cast_1): Call non_lvalue.
+       Initialize exprtype earlier.
+
+       * parse.y (fn.def1): Check for defining types in return types.
+
+       * decl.c (check_tag_decl): Notice extra fundamental types.
+       Diagnose empty decls in classes, too.
+
+       * decl.c (grokdeclarator): Don't override an anonymous name if no 
+       declarator was given.
+
+       * cvt.c (convert_to_void): Call resolve_offset_ref.
+
+       * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF.
+
+       * decl2.c (decl_namespace): Handle getting a type.
+
+       * typeck.c (build_c_cast): Re-enable warning for cast between
+       pointer and integer of different size.
+
+2000-04-10  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * inc/cxxabi.h (__pointer_type_info): Add restrict and
+       incomplete flags.
+       (__pointer_type_info::__pointer_catch): New virtual function.
+       (__pointer_to_member_type_info): Derive from
+       __pointer_type_info. Adjust.
+       (__pointer_to_member_type_info::__do_catch): Remove.
+       (__pointer_to_member_type_info::__is_pointer_p): Declare.
+       (__pointer_to_member_type_info::__pointer_catch): Declare.
+       * rtti.c (qualifier_flags): Add restrict flag.
+       (ptmd_initializer): Reorder members.
+       (create_tinfo_types): Expand comments. Reorder
+       ptmd_desc_type_node members.
+       * tinfo2.cc (__pointer_to_member_type_info::__is_pointer_p):
+       Implement.
+       (__pointer_type_info::__do_catch): Move specific code into
+       __pointer_catch. Call it.
+       (__pointer_type_info::__pointer_catch): Non-pointer-to-member
+       specific catch checking. Fix void conversion check.
+       (__pointer_to_member_type_info::__do_catch): Remove.
+       (__pointer_to_member_type_info::__pointer_catch): Implement.
+       
+2000-04-10  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * lex.c (init_parse): Remove traces of classof and headof.
+       * decl2.c (flag_operator_names): Default to 1.
+       (lang_decode_option): Do not set it for -ansi.
+
+2000-04-09  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (struct lang_decl): Remove main_decl_variant.
+       (DECL_MAIN_VARIANT): Remove.
+       * decl.c (duplicate_decls): Don't set it.
+       (start_function): Likewise.
+       (lang_mark_tree): Don't mark it.
+       * decl2.c (defer_fn): Don't use it.
+       * lex.c (retrofit_lang_decl): Don't set it.
+       * pt.c (tsubst_decl): Likewise.
+       * ptree.c (print_lang_decl): Don't print it.
+       * typeck.c (mark_addressable): Don't use it.
+       
+2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * vec.cc: Include <new> and <exception>.
+       (__cxa_vec_ctor): Use __cxa_vec_dtor for cleanup.
+       (__cxa_vec_dtor): Catch dtor exceptions, and rethrow or
+       terminate.
+       (__cxa_vec_delete): Catch dtor exceptions.
+
+2000-04-09  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Prepend __ to implementation defined names.
+       * inc/typeinfo (type_info): Rename _name to __name.
+       (type_info::type_info): Rename parameter.
+       (type_info::operator==, type_info::operator!=,
+       type_info::before): Likewise.
+       (type_info::is_pointer_p, type_info::is_function_p,
+       type_info::do_catch, type_info::do_upcast): Prepend __. Rename
+       parameters.
+       * inc/cxxabi.h
+       (__fundamental_type_info::__fundamental_type_info) Rename parameters.
+       (__pointer_type_info::__pointer_type_info): Likewise.
+       (__pointer_type_info::is_pointer_p,
+       __pointer_type_info::do_catch): Prepend __. Rename parameters.
+       (__array_type_info::__array_type_info): Rename parameters.
+       (__function_type_info::__function_type_info): Likewise.
+       (__function_type_info::is_function_p): Prepend __.
+       (__enum_type_info::__enum_type_info): Rename parameters.
+       (__pointer_to_member_type_info::__pointer_to_member_type_info):
+       Likewise.
+       (__pointer_to_member_type_info::do_catch): Prepend __. Rename
+       parameters.
+       (__base_class_info::is_virtual_p, is_public_p, offset): Prepend __.
+       (__class_type_info::__class_type_info): Rename parameters.
+       (__class_type_info::sub_kind): Prepend __. Adjust member names.
+       (__class_type_info::upcast_result,
+       __class_type_info::dyncast_result): Prepend __. Move definition
+       into tinfo.cc.
+       (__class_type_info::do_upcast, __class_type_info::do_catch,
+       __class_type_info::find_public_src,
+       __class_type_info::do_dyncast,
+       __class_type_info::do_find_public_src): Prepend __. Rename
+       parameters.
+       (__si_class_type_info::__si_class_type_info): Rename parameters.
+       (__si_class_type_info::do_upcast, __si_class_type_info::do_dyncast,
+       __si_class_type_info::do_find_public_src): Prepent __. Rename
+       parameters.
+       (__vmi_class_type_info::__vmi_class_type_info): Rename parameters.
+       (__vmi_class_type_info::do_upcast, __vmi_class_type_info::do_dyncast,
+       __vmi_class_type_info::do_find_public_src): Prepent __. Rename
+       parameters.
+       (__dynamic_cast): Rename parameters.
+       * tinfo.cc (type_info::is_pointer_p, type_info::is_function_p,
+       type_info::do_catch, type_info::do_upcast): Prepend __.
+       (contained_p, public_p, virtual_p, contained_public_p,
+       contained_nonpublic_p, contained_nonvirtual_p): Adjust.
+       (__class_type_info::do_catch,
+       __class_type_info::do_upcast): Prepend __. Adjust.
+       (__class_type_info::__upcast_result,
+       __class_type_info::__dyncast_result): Move from inc/cxxabi.h.
+       Adjust.
+       (__class_type_info::find_public_src): Prepend __. Adjust.
+       (__class_type_info::do_find_public_src, 
+       __si_class_type_info::do_find_public_src, 
+       __vmi_class_type_info::do_find_public_src): Likewise.
+       (__class_type_info::do_dyncast,
+       __si_class_type_info::do_dyncast,
+       __vmi_class_type_info::do_dyncast): Likewise.
+       (__class_type_info::do_upcast,
+       __si_class_type_info::do_upcast,
+       __vmi_class_type_info::do_upcast): Likewise.
+       (__dynamic_cast): Adjust.
+       * tinfo2.cc (__pointer_type_info::is_pointer_p): Prepend __.
+       (__function_type_info::is_function_p): Likewise.
+       (__pointer_type_info::do_catch): Likewise. Adjust.
+       (__pointer_to_member_type_info::do_catch): Likewise. Adjust.
+       (__throw_type_match_rtti_2): Adjust.
+       (__is_pointer): Adjust.
+
+2000-04-08  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (cp_tree_index): Add CPTI_COMPLETE_CTOR_IDENTIFIER.
+       (complete_ctor_identifier): New macro.
+       (special_function_kind): Add sfk_copy_constructor and
+       sfk_assignment_operator.
+       (LOOKUP_HAS_IN_CHARGE): Remove.
+       (cons_up_default_function): Rename to ...
+       (implicitly_declare_fn): ... this.
+       * call.c (build_new_method_call): Add in-charge parameters for
+       constructors here.
+       * class.c (add_implicitly_declared_members): Change parameter name
+       from cant_have_assignment to cant_have_const_assignment.
+       Replace calls to cons_up_default_function to implicitly_declare_fn.
+       * cvt.c (ocp_convert): Use complete_ctor_identifier.
+       * decl.c (initialize_predefined_identifiers): Initialize it.
+       (start_function): Use DECL_CONSTRUCTOR_FOR_VBASE_P instead of
+       complex expression.
+       * init.c (expand_default_init): Don't calculate the in-charge
+       parameter here.
+       (build_new_1): Likewise.
+       * lex.c (cons_up_default_function): Move to method.c.
+       * method.c (synthesize_method): Use DECL_DESTRUCTOR_P.
+       (implicitly_declare_fn): New function.
+       * typeck.c (build_static_cast): Use complete_ctor_identifier.
+       (build_modify_expr): Likewise.
+       * typeck2.c (build_functional_cast): Likewise.
+       
+       Under the new ABI, constructors don't return `this'.
+       * cp-tree.h (warn_reorder): Declare.
+       (special_function_kind): New enum.
+       (global_base_init_list): Remove declaration.
+       (emit_base_init): Don't return a value.
+       (check_base_init): Don't declare.
+       (is_aggr_typedef): Likewise.
+       * decl.c (check_special_function_return_type): New function.
+       (return_types): Remove.
+       (grokdeclarator): Use check_special_function_return_type.
+       (start_function): Don't initialize ctor_label under the new ABI.
+       (finish_construtor_body): Don't create a corresponding LABEL_STMT.
+       * init.c (begin_init_stmts): Move to top of file.
+       (finish_init_stmts): Likewise.
+       (warn_reorder): Don't declare.
+       (emit_base_init): Don't create a STMT_EXPR here.  Don't return a
+       value.
+       (check_base_init): Remove.
+       (is_aggr_typedef): Likewise.
+       (build_new_1): Don't use the return value of a constructor.
+       * semantics.c (setup_vtbl_ptr): Don't use the return value
+       of emit_base_init.
+       * typeck.c (check_return_expr): Don't magically convert return
+       statements into `return this' in constructors under the new ABI.
+       
+       * cp-tree.h (cp_tree_index): Add CPTI_BASE_CTOR_IDENTIFIER,
+       CPTI_BASE_DTOR_IDENTIFIER, and CPTI_DELETING_DTOR_IDENTIFIER.
+       (base_ctor_identifier): New macro.
+       (base_dtor_identifier): Likewise.
+       (deleting_dtor_identifier): Likewise.
+       * decl.c: Don't include obstack.h.
+       (obstack_chunk_alloc): Don't define.
+       (obstack_chunk_free): Likewise.
+       (struct predefined_identifier): New type.
+       (initialize_predefined_identifiers): New function.
+       (init_decl_processing): Use it.
+       (debug_temp_inits): Remove.
+       (start_method): Don't call preserve_data.
+       (hack_incomplete_structures): Update comment.
+       * init.c (init_init_processing): Don't initialize
+       nelts_identifier.
+       (build_offset_rf): Remove dead code.
+       (build_delete): Use CLASSTYPE_N_BASECLASSES.
+       * search.c (init_search_processing): Don't initialize
+       vptr_identifier.
+       
+2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to elide
+       some sign_compare warnings.
+
+2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
+
+       Rename abi::__vmi_class_type_info members.
+       * inc/cxxabi.h (__vmi_class_type_info): Rename details, n_bases,
+       base_list, detail_masks members to vmi_flags, vmi_base_count,
+       vmi_bases and vmi_flags_masks respectively.
+       (__vmi_class_type_info::vmi_flags_masks): Rename
+       details_unknown_mask to flags_unknown_mask.
+       * tinfo.cc (__class_type_info::do_upcast): Adjust.
+       (__vmi_class_type_info::do_find_public_src): Adjust.
+       (__vmi_class_type_info::do_dyncast): Adjust.
+       (__vmi_class_type_info::do_upcast): Adjust.
+       
+2000-04-07  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * tinfo.cc (convert_to_base): New function.
+       (get_vbase_offset): Remove. Move into convert_to_base.
+       (__vmi_class_type_info::do_find_public_src): Adjust.
+       (__vmi_class_type_info::do_dyncast): Adjust.
+       (__vmi_class_type_info::do_upcast): Adjust.
+
+2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tinfo.cc (operator=): Use __builtin_strcmp.
+       * tinfo2.cc (before): Likewise.
+
+2000-04-06  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (lang_decl_flags): Rename saved_inline to deferred.
+       (DECL_SAVED_INLINE): Rename to ...
+       (DECL_DEFERRED_FN): ... this.
+       (in_function_p): Remove declaration.
+       (mark_inline_for_output): Rename to ... 
+       (defer_fn): ... this.
+       * decl.c (finish_function): Adjust call to mark_inline_for_output.
+       (in_function_p): Remove definition.
+       * decl2.c (saved_inlines): Rename to ...
+       (deferred_fns): ... this.
+       (saved_inlines_used): Rename to ...
+       (deferred_fns_used): ... this.
+       (mark_inline_for_output): Rename to ...
+       (defer_fn): ... this.
+       (finish_file): Adjust accordingly.
+       (init_decl2): Likewise.
+       * lex.c (cons_up_default_function): Likewise.
+       * pt.c (mark_decl_instantiated): Likewise.
+       (instantiate_decl): Don't set DECL_DEFER_OUTPUT under any
+       circumstances.
+       * rtti.c (get_tinfo_decl): Adjust call to mark_inline_for_output.
+       * semantics.c (expand_body): Defer more functions.
+
+2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * vec.cc: New file.
+       * Make-lang.in (CXX_LIB2FUNCS): Add it.
+       (vec.o): Build it.
+       * inc/cxxabi.h (__cxa_vec_new, __cxa_vec_ctor, __cxa_vec_dtor,
+       __cxa_vec_delete): Declare.
+
+2000-04-06  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * rtti.c (dfs_class_hint_mark): New static function.
+       (dfs_class_hint_unmark): New static function.
+       (class_hint_flags): Use them.
+
+2000-04-05  Benjamin Kosnik  <bkoz@cygnus.com>
+
+        * decl2.c: Make flag_honor_std dependant on ENABLE_STD_NAMESPACE.
+
+2000-04-05  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (instantiate_decl): Change prototype.
+       * decl2.c (mark_used): Adjust call.
+       * optimize.c (inlinable_function_p): Adjust handling of templates.
+       * pt.c (do_decl_instantiation): Adjust call to instantiate_decl.
+       (do_type_instantiation): Likewise.
+       (instantiate_decl): Defer more templates.
+       (instantiate_pending_templates): Adjust logic to handle inline
+       friend functions.
+
+       * Makefile.in (GGC_H): New variable.  Use it throughout in place
+       of ggc.h.
+       
+       * call.c: Don't include obstack.h.  Include ggc.h.
+       (obstack_chunk_alloc): Don't define.
+       (obstack_chunk_free): Likewise.
+       (add_candidate): Allocate the z_candidate with ggc_alloc_obj.
+       * decl.c (push_switch): Use xmalloc to allocate the cp_switch.
+       (pop_switch): Free it.
+
+       * decl2.c (grokclassfn): Set TREE_READONLY for PARM_DECLs.
+
+       * dump.c (dequeue_and_dump): Don't try to print the bit_position
+       if we don't have a DECL_FIELD_OFFSET.
+
+Wed Apr  5 15:12:18 MET DST 2000  Jan Hubicka  <jh@suse.cz>
+
+       * optimize.c (calls_setjmp_r): Use setjmp_call_p instead of
+       special_function_p.
+
+2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * cfns.gperf (hash, libc_name_p): Prototype.
+
+       * rtti.c (build_dynamic_cast_1): Constification.
+
+       * search.c (dfs_debug_unmarkedp, dfs_debug_mark): Unhide prototypes.
+
+       * semantics.c (deferred_type_access_control): Prototype.
+
+2000-04-04  Mark Mitchell  <mark@codesourcery.com>
+
+       Correct many new ABI issues regarding vbase and vcall offset
+       layout.
+       * cp-tree.h (BINFO_VTABLE): Document.
+       (struct lang_type): Tweak formatting.
+       (BINFO_PRIMARY_BINFO): Add to documentation.
+       (CLASSTYPE_VSIZE): Fix typo in comment.
+       (CLASSTYPE_VBASECLASSES): Update documentation.
+       (BINFO_VBASE_MARKED): Remove.
+       (SET_BINFO_VBASE_MARKED): Likewise.
+       (CLEAR_BINFO_VBASE_MARKED): Likewise.
+       (BINFO_FIELDS_MARKED): Remove.
+       (SET_BINFO_FIELDS_MARKED): Likewise.
+       (CLEAR_BINFO_FIELDS_MARKED): Likewise.
+       (enum access_kind): New enumeration.
+       (num_extra_vtbl_entries): Remove declaration.
+       (size_extra_vtbl_entries): Likewise.
+       (get_vtbl_decl_for_binfo): New function.
+       (dfs_vbase_unmark): Remove declaration.
+       (mark_primary_bases): Likewise.
+       * class.c (SAME_FN): Remove.
+       (struct vcall_offset_data_s): Move definition.
+       (build_vbase_pointer): Use `build', not `build_binary_op', to
+       access the vbase pointer under the new ABI.
+       (build_vtable_entry_ref): Use get_vtbl_decl_for_binfo.
+       (build_primary_vtable): Likewise.
+       (dfs_mark_primary_bases): Move here from search.c.
+       (mark_primary_bases): Likewise.
+       (determine_primary_bases): Under the new ABI, don't make a base
+       class a primary base just because we don't yet have any virtual
+       functions.
+       (layout_vtable_decl): Use get_vtbl_decl_for_binfo.
+       (num_vfun_entries): Remove.
+       (dfs_count_virtuals): Likewise.
+       (num_extra_vtbl_entries): Likewise.
+       (size_extra_vtbl_entries): Likewise.
+       (layout_virtual_bases): Iterate in inheritance graph order under
+       the new ABI.
+       (finish_struct_1): Use TYPE_VFIELD, not CLASSTYPE_VSIZE, to
+       indicate that a vfield is present.
+       (init_class_processing): Initialize access_public_node, etc., from
+       ak_public, etc.
+       (get_vtbl_decl_for_binfo): New function.
+       (dump_class_hierarchy_r): Likewise.
+       (dump_class_hierarchy): Use it.
+       (finish_vtbls): Build the vtbls in inheritance graph order.
+       (dfs_finish_vtbls): Adjust call to build_vtbl_initializer.
+       (initialize_vtable): Use get_vtbl_decl_for_binfo.
+       (accumulate_vtbl_inits): Add comments explaining why a pre-order
+       walk is required.
+       (dfs_accumulate_vtbl_inits): Set BINFO_VTABLE to the location
+       where the vptr points, even for primary vtables.
+       (build_vtbl_initializer): Adjust handling of vbase and vcall
+       offsets.
+       (build_vcall_and_vbase_vtable_entries): New function.
+       (dfs_build_vbase_offset_vtbl_entries): Remove.
+       (build_vbase_offset_vtbl_entries): Reimplement.
+       (dfs_build_vcall_offset_vtbl_entries): Don't include virtuals that
+       were already handled in a primary base class vtable.
+       (build_vcall_offset_vtbl_entries): Adjust.
+       (build_rtti_vtbl_entries): Adjust.
+       * decl2.c (output_vtable_inherit): Use get_vtbl_decl_for_binfo.
+       * init.c (expand_virtual_init): Simplify.
+       * repo.c (repo_get_id): Use get_vtbl_decl_for_binfo.
+       * rtti.c (create_pseudo_type_info): Adjust calculation of vptr.
+       * search.c (BINFO_ACCESS): New macro.
+       (SET_BINFO_ACCESS): Likewise.
+       (dfs_access_in_type): Manipulate access_kinds, not access nodes.
+       (access_in_type): Likewise.
+       (dfs_accessible_p): Likewise.
+       (protected_accessible_p): Likewise.
+       (lookup_fnfields_1): Adjust documentation.
+       (dfs_mark_primary_bases): Move to class.c
+       (mark_primary_bases): Likewise.
+       (dfs_vbase_unmark): Remove.
+       (virtual_context): Use BINFO_FOR_VBASE.
+       (dfs_get_vbase_types): Simplify.
+       (dfs_build_inheritance_graph_order): New function.
+       (get_vbase_types): Use it.
+       * tree.c (debug_binfo): Use get_vtbl_decl_for_binfo.
+
+       * tinfo.cc (get_vbase_offset): New function.
+       (__vmi_class_type_info::do_find_public_src): Use it.
+       (__vmi_class_type_info::do_dyncast): Likewise.
+       (__vmi_class_type_info::do_upcast): Likewise.
+       
+2000-04-03  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * lang-specs.h: Pass -fno-show-column to the preprocessor.
+
+2000-03-30  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * rtti.c (class_hint_flags): Rename flags.
+       (class_initializer): Remove flags.
+       (synthesize_tinfo_var): Combine offset and flags. Add flags
+       for __vmi_class_type_info.
+       (create_tinfo_types): Remove flags from __class_type_info and
+       __si_class_type_info. Merge flags and offset from
+       base_class_type_info.
+       * inc/cxxabi.h (__base_class_info): Merge offset and vmi_flags.
+       (__base_class_info::is_virtual_p): Adjust.
+       (__base_class_info::is_public_p): Adjust.
+       (__base_class_info::offset): New accessor.
+       (__class_type_info::details): Remove member.
+       (__class_type_info::__class_type_info): Lose details.
+       (__class_type_info::detail_masks): Remove.
+       (__si_class_type_info::__si_class_type_info): Lose details.
+       (__vmi_class_type_info::details): New member.
+       (__vmi_class_type_info::__vmi_class_type_info): Adjust.
+       (__vmi_class_type_info::detail_masks): New member.
+       * tinfo.cc (__class_type_info::do_upcast): Initialize result
+       with unknown_details_mask.
+       (__vmi_class_type_info::do_find_public_src): Adjust
+       (__vmi_class_type_info::do_dyncast): Adjust.
+       (__vmi_class_type_info::do_upcast): Set result details, if
+       needed. Adjust.
+       (__dynamic_cast): Temporarily #if out optimization.
+
+2000-03-29  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * rtti.c (get_tinfo_decl): Mark used.
+       (emit_tinfo_decl): Don't optimize polymorphic type_info. Only
+       mark as dealt with, if we output it.
+
+2000-03-28  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c: Reorganize to put virtual function table initialization
+       machinery at the end of the file.
+
+2000-03-28  Jason Merrill  <jason@casey.cygnus.com>
+
+       * class.c (finish_struct): Use bitsize_zero_node.
+       * pt.c (instantiate_class_template): Likewise.
+
+2000-03-28  Mark Mitchell  <mark@codesourcery.com>
+
+       Put RTTI entries at negative offsets in new ABI.
+       * class.c (dfs_build_vbase_offset_vtbl_entries): Put the first
+       vbase offset at index -3, not -1.
+       (build_vtabe_offset_vtbl_entries): Use unmarked_vtable_pathp, not
+       dfs_vtable_path_unmarked_real_bases_queue_p to walk bases.
+       (dfs_build_vcall_offset_vtbl_entries): Don't use skip_rtti_stuff.
+       (build_rtti_vtbl_entries): New function.
+       (set_rtti_entry): Remove.
+       (build_primary_vtable): Don't use it.
+       (build_secondary_vtable): Likewise.
+       (start_vtable): Remove.
+       (first_vfun_index): New function.
+       (set_vindex): Likewise.
+       (add_virtual_function): Don't call start_vtable.  Do call
+       set_vindex.
+       (set_primary_base): Rename parameter.
+       (determine_primary_base): Likewise.
+       (num_vfun_entries): Don't use skip_rtti_stuff.
+       (num_extra_vtbl_entries): Include RTTI information.
+       (build_vtbl_initializer): Use build_rtti_vtbl_entries.
+       (skip_rtti_stuff): Remove.
+       (dfs_modify_vtables): Don't use it.
+       (modify_all_vtables): Don't use start_vtable.  Do use set_vindex.
+       (layout_nonempty_base_or_field): Update size handling.
+       (create_vtable_ptr): Tweak.
+       (layout_class_type): Adjust parameter names.
+       (finish_struct_1): Simplify.
+       * cp-tree.h (CLASSTYPE_VSIZE): Tweak documentation.
+       (skip_rtti_stuff): Remove.
+       (first_vfun_index): New function.
+       (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
+       (dfs_vtable_path_marked_real_bases_queue_p): Remove.
+       (marked_vtable_pathp): Declare.
+       (unmarked_vtable_pathp): Likewise.
+       * error.c (dump_expr): Use first_vfun_index to calculate vtable
+       offsets.
+       * rtti.c (build_headof): Look for RTTI at negative offsets.
+       (get_tinfo_decl_dynamic): Likewise.
+       (tinfo_base_init): Don't take the address of the TINFO_VTABLE_DECL
+       here.
+       (create_pseudo_type_info): Do it here instead.  Adjust so that
+       vptr points at first virtual function.
+       * search.c (marked_vtable_pathp): Make it global.
+       (unmarked_vtable_pathp): Likewise.
+       (dfs_vtable_path_unmarked_real_bases_queue_p): Remove.
+       (dfs_vtable_path_marked_real_bases_queue_p): Likewise.
+       (dfs_get_pure_virtuals): Don't use skip_rtti_stuff.
+       (get_pure_virtuals): Likewise.
+       (expand_upcast_fixups): Likewise.
+       * tree.c (debug_binfo): Likewise.
+       * tinfo.cc (__dynamic_cast): Look for vtable_prefix at appropriate
+       negative offset.
+       
+Sun Mar 26 20:15:26 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * class.c (check_field_decl): Fix typo.
+       (build_vtbl_or_vbase_field): Don't clear DECL_SAVED_INSNS.
+       (check_methods): Likewise.
+       (check_field_decls): Likewise.
+       Use DECL_CONTEXT, not DECL_FIELD_CONTEXT.
+       * cp-tree.h (DECL_SHADOWED_FOR_VAR, DECL_TEMPLATE_RESULT):
+       Use DECL_RESULT_FLD, not DECL_RESULT.
+       * decl.c (xref_tag): Use DECL_TEMPLATE_RESULT.
+       * lex.c (identifier_type): Likewise.
+       * pt.c (determine_specialization, lookup_template_class): Likewise.
+       (tsubst_friend_function, tsubst_decl, instantiate_template): Likewise.
+       (resolve_overloaded_unification, more_specialized): Likewise.
+       * semantics.c (finish_member_declaration): Likewise.
+       * typeck.c (build_x_function_call): Likewise.
+       
+2000-03-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (layout_empty_base): Handle empty bases with non-byte
+       alignment.
+       (build_base_field): Likewise.
+       (layout_virtual_bases): Likewise.
+
+       * class.c (finish_struct_1): Fix typo in this change:
+       
+       Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+2000-03-25  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (grokdeclarator): Count partial specializations when
+       keeping track of how many template classes have been seen.
+
+       * dump.c (dequeue_and_dump): Dump DECL_TEMPLATE_RESULT.
+       
+Sat Mar 25 09:12:10 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * class.c (build_vbase_pointer_fields): layout_field now place_field.
+       (get_vfield_offset): Use byte_position.
+       (set_rtti_entry): Set OFFSET to ssizetype zero.
+       (get_binfo_offset_as_int): Deleted.
+       (dfs_record_base_offsets): Use tree_low_cst.
+       (dfs_search_base_offsets): Likewise.
+       (layout_nonempty_base_or_field): Reflect changes in RLI format
+       and call byte_position.
+       (layout_empty_base): Convert offset to ssizetype.
+       (build_base_field): use rli_size_unit_so_far.
+       (dfs_propagate_binfo_offsets): Do computation in proper type.
+       (layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
+       (layout_class_type): Reflect changes in RLI names and fields.
+       (finish_struct_1): Set DECL_FIELD_OFFSET.
+       * dump.c (dequeue_and_dump): Call bit_position.
+       * expr.c (cplus_expand_constant): Use byte_position.
+       * rtti.c (expand_class_desc): Use bitsize_one_node.
+       * typeck.c (build_component_addr): Use byte_position and don't
+       special case for zero offset.
+       
+2000-03-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (vtype_decl_p): Use TYPE_POLYMORPHIC_P.
+       
+       * rtti.c (get_tinfo_decl): Set comdat linkage on new-abi
+       tinfo object.
+       (emit_tinfo_decl): Only emit polymorphic tinfo's when emitting
+       vtable.
+
+2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+       * call.c (check_dtor_name, build_new_method_call): Use TYPE_P and
+       DECL_P macros.
+       * decl.c (push_class_binding, poplevel, pushtag, lookup_namespace_name,
+       make_typename_type, check_initializer, cp_finish_decl,
+       xref_tag): Likewise.
+       * decl2.c (grokfield, build_expr_from_tree, build_expr_from_tree,
+       decl_namespace, arg_assoc_template_arg, arg_assoc,
+       validate_nonmember_using_decl, do_class_using_decl): Likewise.
+       * error.c (dump_template_argument, dump_expr, cp_file_of, cp_line_of,
+       args_to_string): Likewise.
+       * friend.c (is_friend): Likewise.
+       * lex.c (note_got_semicolon, note_list_got_semicolon,
+       is_global): Likewise.
+       * method.c (build_overload_nested_name, build_overload_value,
+       build_qualified_name, build_qualified_name, hack_identifier): Likewise.
+       * parse.y (typename_sub, typename_sub1): Likewise.
+       * pt.c (push_inline_template_parms_recursive, check_template_shadow,
+       process_partial_specialization, convert_template_argument,
+       template_args_equal, add_pending_template, lookup_template_class,
+       for_each_template_parm_r, maybe_fold_nontype_arg,
+       tsubst, instantiate_template, type_unification_real, unify,
+       instantiate_pending_templates, set_mangled_name_for_template_decl):
+       Likewise.
+       * repo.c (repo_get_id, repo_template_used): Likewise.
+       * search.c (lookup_field_1): Likewise.
+       * tree.c (walk_tree, get_type_decl, cp_tree_equal, member_p): Likewise.
+       * xref.c (classname): Likewise.
+       
+2000-03-22  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (BINFO_FOR_VBASE): Adjust documentation.
+       (CANONICAL_BINFO): New macro.
+       (BINFO_NEW_VTABLE_MARKED): Use it.
+       (SET_BINFO_NEW_VTABLE_MARKED): Likewise.
+       (CLEAR_BINFO_NEW_VTABLE_MARKED): Likewise.
+       * class.c (dfs_build_vbase_offset_vtbl_entries): Use BINFO_TYPE,
+       not TREE_TYPE.
+       (build_primary_vtable): Adjust usage of BINFO_NEW_VTABLE_MARKED.
+       (build_secondary_vtable): Likewise.
+       (dfs_finish_vtbls): Likewise.
+       (dfs_accumulate_vtbl_inits): Likewise.
+       (accumulate_vtbl_inits): New function.
+       (finish_vtbls): Make sure that virtual bases come after
+       non-virtual bases in the vtable group.
+       (record_base_offsets): Don't save and restore TREE_VIA_VIRTUAL.
+       (finish_struct_1): Adjust usage of BINFO_NEW_VTABLE_MARKED.
+       * search.c (struct vbase_info): Move definition.
+       (marked_new_vtable_p): Adjust usage of BINFO_NEW_VTABLE_MARKED.
+       (unmarked_new_vtable_p): Likewise.
+       (dfs_mark_vtable_path): Remove.
+       (dfs_mark_new_vtable): Remove.
+       (dfs_unmark_new_vtable): Likewise.
+       (dfs_clear_search_slot): Likewise.
+       (dfs_find_vbases):  Adjust usage of BINFO_NEW_VTABLE_MARKED.
+       (dfs_clear_vbase_slots): Likewise.
+       (init_vbase_pointers): LIkewise.
+       
+2000-03-22  Jason Merrill  <jason@casey.cygnus.com>
+
+       * typeck.c (type_after_usual_arithmetic_conversions): Prefer a
+       SIZETYPE to a non-SIZETYPE.
+
+2000-03-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (layout_virtual_bases): Adjust names in conditionally
+       compiled code.
+       
+       * class.c (record_base_offsets): New function.
+       (layout_conflict_p): Likewise.
+       (layout_nonempty_base_or_field): Use it.
+       (layout_empty_base): New function.
+       (build_base_field): Use it.
+       (build_base_fields): Update comment.
+       (layout_virtual_bases): Fold in a little code form
+       layout_basetypes.  Use layout_empty_base.
+       (layout_basetypes): Remove.
+       (end_of_class): New function.
+       (layout_class_type): Use it.  Adjust.
+
+       * cp-tree.h (CLASSTYPE_VBASECLASSES): Fix typo in comment.
+       (fntype_p): Remove.
+       * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Fix typo in
+       comment. 
+       (dfs_skip_nonprimary_vbases_markedp): Likewise.
+       * typeck.c (fntype_p): Remove.
+
+       * cp-tree.h (TI_SPEC_INFO): Remove.
+       (CLASSTYPE_TI_SPEC_INFO): Likewise.
+       * pt.c (process_partial_specialization): Likewise.
+
+       * class.c (build_base_field): Fix thinko in computation of binfo
+       offsets.
+
+       * tree.c (mark_local_for_remap_p): Mark variables declared in
+       TARGET_EXPRs as well.
+
+2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * typeck.c (require_complete_type, complete_type,
+       complete_type_or_else, c_sizeof, c_sizeof_nowarn,
+       build_array_ref, convert_arguments, pointer_diff,
+       build_x_unary_op, build_unary_op, build_c_cast,
+       build_modify_expr): Use COMPLETE_TYPE_P etc.
+       * call.c (is_complete, convert_like_real,
+       build_new_method_call): Likewise.
+       * class.c (build_vbase_pointer_fields, check_bases,
+       build_base_field, finish_struct_1, pushclass): Likewise.
+       * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise.
+       * decl.c (maybe_process_template_type_declaration, pushtag,
+       pushdecl, redeclaration_error_message, start_decl, start_decl_1,
+       layout_var_decl, check_initializer, cp_finish_decl,
+       grokdeclarator, require_complete_types_for_parms,
+       grok_op_properties, xref_tag, xref_basetypes,
+       check_function_type): Likewise.
+       * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise.
+       * friend.c (do_friend): Likewise.
+       * init.c (build_offset_ref): Likewise.
+       * parse.y (structsp): Likewise.
+       * pt.c (maybe_process_partial_specialization,
+       tsubst_friend_function, instantiate_class_template, tsubst,
+       do_type_instantiation, instantiate_pending_templates): Likewise.
+       * repo.c (repo_get_id): Likewise.
+       * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1,
+       synthesize_tinfo_var, emit_support_tinfos): Likewise.
+       * search.c (lookup_fnfields_1, lookup_conversions): Likewise.
+       * semantics.c (begin_class_definition): Likewise.
+       * tree.c (build_cplus_method_type): Likewise.
+       * typeck2.c (digest_init, build_functional_cast,
+       add_exception_specifier): Likewise.
+       * parse.h, parse.c: Regenerated.
+
+2000-03-21  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * inc/cxxabi.h: New header file. Define new-abi entry points.
+       (__pointer_type_info::target): Rename member to ...
+       (__pointer_type_info::type): ... here.
+       (__base_class_info::type): Rename member to ...
+       (__base_class_info::base): ... here.
+       * Make-lang.in (CXX_EXTRA_HEADERS): Add cxxabi.h
+       * cp-tree.h (CPTI_ABI): New global tree enumeration.
+       (abi_node): New global tree node.
+       * decl.c (abi_node): Document.
+       (init_decl_processing): Initialize abi_node.
+       * rtti.c (build_dynamic_cast_1): Use abi_node for new-abi.
+       (get_vmi_pseudo_type_info): Likewise.
+       (create_tinfo_types): Likewise.
+       (emit_support_tinfos): Likewise.
+       * tinfo.h (cxxabi.h): Include for new-abi.
+       Move rtti class definitions to new header file.
+       * tinfo.cc (abi): Use the namespace.
+       (std): Move new abi rtti classes from here ...
+       (__cxxabiv1): ... to here.
+       * tinfo2.cc (cxxabi.h): Include for new-abi.
+       Move rtti class definitions to new header file.
+       (std): Move new abi rtti classes from here ...
+       (__cxxabiv1): ... to here.
+       * inc/typeinfo (__class_type_info): Move into __cxxabiv1
+       namespace.
+
+2000-03-20  Jed Wing <jedwin@zloty.ugcs.caltech.edu>
+           Jason Merrill  <jason@casey.cygnus.com>
+
+       * method.c (build_overload_int): Use host_integerp.
+
+2000-03-20 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+       * init.c (build_offset_ref): Handle the case of a templated member
+       function.
+    
+2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * except.c (expand_exception_blocks): Clear catch_clauses_last.
+
+2000-03-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (CLEAR_DECL_C_BIT_FIELD): New macro.
+       * class.c (check_bitfield_decl): Turn illegal bitfields into
+       non-bitfields.
+       (dfs_propagate_binfo_offsets): Adjust for new size_binop
+       semantics.
+       (dfs_offset_for_unshared_vbases): Likewise.
+       * cvt.c (cp_convert_to_pointer): Convert NULL to a
+       pointer-to-member correctly under the new ABI.
+       * expr.c (cplus_expand_constant): Don't use cp_convert when
+       turning an offset into a pointer-to-member.
+       * init.c (resolve_offset_ref): Don't adjust pointers-to-members
+       when dereferencing them under the new ABI.
+       * typeck.c (get_member_function_from_ptrfunc): Tweak calculation
+       of pointers-to-members under the new ABI.
+       
+       * class.c (check_bitfield_decl): Remove restriction on really long
+       bitfields.
+       (layout_class_type): Implement new ABI handling of bitfields
+       longer than their types.
+
+2000-03-18  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * parse.y (extdefs): Call ggc_collect.
+       * parse.c: Regenerated.
+
+2000-03-18  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (build_base_field): Use TYPE_ALIGN to examine a type.
+       (note_name_declared_in_class): Use OVL_CURRENT to get at a
+       potential overload.
+
+Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * class.c (build_vbase_path): Use integer_zerop.
+       (build_vtable_entry): Use tree_low_cst.
+       (get_vfield_offset): Use bit_position.
+       (dfs_modify_vtables): New variable vindex_val; `i' is HOST_WIDE_INT.
+       Use tree_low_cst.
+       (check_bitfield_decl): Set DECL_SIZE using convert.
+       (build_base_field): Set DECL_SIZE and DECL_SIZE_UNIT using size_binop.
+       (layout_virtual_bases): DSIZE is unsigned HOST_WIDE_INT.
+       Use tree_low_cst.
+       (finish_struct_1): Use bit_position.
+       (dump_class_hierarchy): Use tree_low_cst.
+       * cp-tree.h (min_precision): Add declaration.
+       * decl.c (xref_tag, xref_basetypes): Use tree_low_cst.
+       * error.c (dump_type_suffix): Use host_integerp and tree_low_cst.
+       (dump_expr): Use integer_zerop, host_integerp, and tree_low_cst.
+       * expr.c (cplus_expand_constant): Use bit_position.
+       * init.c (build_vec_init): Use host_integerp and tree_low_cst.
+       * rtti.c (get_base_offset): Use bit_position.
+       * typeck.c (build_binary_op): Use integer_zerop, compare_tree_int,
+       host_integerp, and tree_low_cst.
+       (pointer_int_sum): Use integer_zerop.
+       (build_component_addr): Use bit_position.
+       
+2000-03-17  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * typeck.c (require_complete_type): Don't assume size_zero_node.
+       (complete_type_or_else): Likewise.
+
+2000-03-16  Steven Grady <grady@digitaldeck.com>
+           Jason Merrill  <jason@casey.cygnus.com>
+
+       * rtti.c (build_dynamic_cast_1): Improve diagnostics.
+
+2000-03-16  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl2.c (grokfield): Bail out if type is error_mark_node.
+
+2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * tinfo2.cc (__ptr_to_member_data): Rename to ...
+       (__pointer_to_member_data): ... here. Adjust.
+       * rtti.c (create_tinfo_types): Adjust.
+
+2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (CPTI_REF_DESC_TYPE, ref_desc_type_node): Remove.
+       * decl.c (ref_desc_type_node): Undocument.
+       * rtti.c (ptr_ref_initializer): Rename to ...
+       (ptr_initializer): ... here. Adjust comments.
+       (ptmd_initializer): Fix comment thinko.
+       (synthesize_tinfo_var): Remove REFERENCE_TYPE case.
+       (create_tinfo_types): Remove ref_desc_type_node init.
+       * tinfo2.cc (__reference_type_info): Remove.
+
+2000-03-15  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (cp_finish_decl): Remove obsolete comment.
+       
+       * typeck.c (build_ptrmemfunc1): Kill uninitialized warning.
+
+2000-03-14  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h: Tweak documentation.
+       * class.c (build_vbase_pointer_fields): Layout the fields, too.
+       (avoid_overlap): Remove.
+       (get_binfo_offset_as_int): New function.
+       (dfs_serach_base_offsets): Likewise.
+       (layout_nonempty_base_or_field): Likewise.
+       (build_base_field): Layout fields here.  Avoid placing two objects
+       of the same type at the same address, under the new ABI.
+       (build_base_fields): Adjust accordingly.
+       (create_vtable_ptr): Return the new field, but don't attach it to
+       TYPE_FIELDS.
+       (remove_base_field): Remove.
+       (remove_base_fields): Remove.
+       (layout_basetypes): Adjust accordingly.
+       (layout_class_type): Call layout_field for each field, rather than
+       just making a wholesale call to layout_type.
+
+2000-03-14  Jeff Sturm  <jsturm@sigma6.com>
+
+       * except.c (expand_throw): Fix typo in _Jv_Sjlj_Throw.
+
+2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
+
+       * decl.c (grokfndecl): Set TREE_NOTHROW if TYPE_NOTHROW_P.
+
+       * except.c (dtor_nothrow): New fn.
+       (do_pop_exception): Use it.  Take type parm.
+       (push_eh_cleanup): Take type parm.
+       (expand_start_catch_block): Pass it.
+       (build_eh_type_type_ref): Accept null type.
+
+2000-03-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (revert_static_member_fn): Change prototype.
+       * decl.c (grokfndecl): Adjust call to revert_static_member_fn.
+       (grok_op_properties): Likewise.
+       (start_function): Likewise.
+       (revert_static_member_fn): Simplify.
+       * pt.c (check_explicit_specialization): Adjust call to
+       revert_static_member_fn.
+
+2000-03-11  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (scope_kind): New type.
+       (tmpl_spec_kind): Likewise.
+       (declare_pseudo_global_level): Remove.
+       (pseudo_global_level_p): Rename to template_parm_scope_p.
+       (pushlevel): Remove declaration.
+       (begin_scope): New function.
+       (finish_scope): Likewise.
+       (current_tmpl_spec_kind): Likewise.
+       * decl.c (struct binding_level): Shorten parm_flag to 2 bits.
+       Shorten keep to 2 bits.  Rename pseudo_global to template_parms_p.
+       Add template_spec_p.
+       (toplevel_bindings_p): Adjust.
+       (declare_pseudo_global_level): Remove.
+       (pseudo_global_level_p): Rename to template_parm_scope_p.
+       (current_tmpl_spec_kind): New function.
+       (begin_scope): Likewise.
+       (finish_scope): Likewise.
+       (maybe_push_to_top_level): Adjust.
+       (maybe_process_template_type_declaration): Likewise.
+       (pushtag): Likewise.
+       (pushdecl_nonclass_level): Likewise.
+       (lookup_tag): Likewise.
+       (grokfndecl): Handle member template specializations.  Share
+       constructor and non-constructor code.
+       * decl2.c (check_classfn): Handle member template specializations.
+       * pt.c (begin_template_parm_list): Use begin_scope.
+       (begin_specialization): Likewise.
+       (end_specialization): Likewise.
+       (check_explicit_specialization): Use current_tmpl_spec_kind.
+       Handle member template specializations.
+       (end_template_decl): Use finish_scope.  Remove call to
+       get_pending_sizes.
+       (push_template_decl_real): Remove bogus error message.
+       (tsubst_decl): Fix typo in code contained in comment.
+       (instantiate_template): Handle member template specializations.
+       (most_general_template): Likewise.
+       
+2000-03-11  Gabriel Dos Reis  <gdr@codesourcery.com>
+
+       * lex.c (whitespace_cr): Compress consecutive calls to warning().
+       (do_identifier): Ditto for error().
+
+       * pt.c (convert_nontype_argument): Ditto for cp_error().
+       (convert_template_argument): Ditto for cp_pedwarn().
+
+2000-03-11  Jason Merrill  <jason@casey.cygnus.com>
+
+       * exception.cc (__check_null_eh_spec): New fn.
+       * except.c (expand_end_eh_spec): Call it if the spec is throw().
+
+2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
+
+       * decl.c (push_throw_library_fn): Take the FUNCTION_TYPE.
+       * except.c (expand_end_eh_spec): Add the return type.
+       * rtti.c (throw_bad_cast): Add the parmtypes.
+       (throw_bad_typeid): Likewise.
+
+       * semantics.c (expand_stmt): Only leave out rtl for unused
+       artificials, and set DECL_IGNORED_P on them as well.
+       * decl.c (wrapup_globals_for_namespace): Likewise.
+
+2000-03-09  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (maybe_commonize_var): Skip all artificial decls.
+       * pt.c (tsubst_decl): Don't copy TREE_ASM_WRITTEN.
+
+2000-03-10  Jason Merrill  <jason@casey.cygnus.com>
+
+       * lang-options.h, decl2.c: Add -fno-enforce-eh-specs.
+       * cp-tree.h: Declare flag_enforce_eh_specs.
+       * decl.c (store_parm_decls, finish_function): Check it.
+
+       C library functions don't throw.
+       * Makefile.in (cfns.h): New target.
+       (except.o): Depend on it.
+       * Make-lang.in (cc1plus): Depend on cfns.gperf.
+       * cfns.gperf: New file.
+       * cfns.h: Generated.
+       * except.c: Include it.
+       (nothrow_libfn_p): New fn.
+       * decl.c (grokfndecl): Use it.
+       * cp-tree.h: Declare it.
+       
+       * decl.c (push_overloaded_decl_1, auto_function, 
+       define_function): Lose.
+       (build_library_fn_1): New static fn.
+       (builtin_function): Use it.
+       (get_atexit_node): Use build_library_fn_ptr.
+       (build_library_fn, build_cp_library_fn, build_library_fn_ptr,
+       build_cp_library_fn_ptr, push_library_fn, push_cp_library_fn,
+       push_void_library_fn, push_throw_library_fn): New fns.
+       * cp-tree.h: Declare them.
+       (cp_tree_index): Remove CPTI_BAD_CAST, CPTI_BAD_TYPEID.
+       (throw_bad_cast_node, throw_bad_typeid_node): Lose.
+       * except.c (init_exception_processing, call_eh_info, do_pop_exception,
+       (expand_end_eh_spec, alloc_eh_object, expand_throw): Use above fns.
+       * rtti.c (build_runtime_decl): Lose.
+       (throw_bad_cast, throw_bad_typeid, get_tinfo_decl, 
+       build_dynamic_cast_1, expand_si_desc, expand_class_desc,
+       expand_ptr_desc, expand_attr_desc, expand_generic_desc): Use above fns.
+
+       * call.c (build_call): Remove result_type parm.
+       Call mark_used on unused artificial fns.
+       * init.c, method.c, typeck.c, except.c, rtti.c: Adjust.
+
+2000-03-09  Jason Merrill  <jason@casey.cygnus.com>
+
+       * call.c (build_call): Set TREE_NOTHROW on the CALL_EXPR as
+       appropriate.
+       * decl.c (define_function): Set TREE_NOTHROW on the FUNCTION_DECL.
+       * except.c (call_eh_info, alloc_eh_object, expand_throw): Set
+       TREE_NOTHROW or TREE_THIS_VOLATILE on the function as appropriate.
+       * rtti.c (build_runtime_decl, get_tinfo_decl, build_dynamic_cast_1,
+       expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
+       expand_generic_desc): Likewise.
+
+2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * exception.cc (__cp_pop_exception): Cleanup the original object.
+
+2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (grok_op_properties): Merge conversion to void warning
+       with other silly op warnings.
+
+2000-03-08  Jason Merrill  <jason@casey.cygnus.com>
+
+       * typeck2.c (process_init_constructor): Set TREE_PURPOSE of
+       array CONSTRUCTOR elements.  Don't use expr_tree_cons.
+
+2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (cp_make_fname_decl): New function.
+       (wrapup_globals_for_namespace): Don't emit unused static vars.
+       (init_decl_processing): Remove comment about use of
+       array_domain_type. Set make_fname_decl.
+       (cp_finish_decl): Remove __FUNCTION__ nadgering.
+       * semantics.c (begin_compound_stmt): Remove
+       current_function_name_declared flagging.
+       (expand_stmt): Don't emit unused local statics.
+       * typeck.c (decay_conversion): Don't treat __FUNCTION__ decls
+       specially.
+
+2000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * typeck.c (convert_for_assignment): Don't look at array
+       initializer.
+       * call.c (convert_like_real): Likewise. 
+
+2000-03-07  Jason Merrill  <jason@casey.cygnus.com>
+
+       Add initial support for '\uNNNN' specifier.
+       * lex.c (read_ucs): New fn.
+       (readescape, skip_white_space): Call it.
+       (is_extended_char, is_extended_char_1): New fns.
+       (utf8_extend_token): New fn, #if 0'd out.
+       (real_yylex): Treat extended chars like letters.
+
+       * search.c (note_debug_info_needed): Walk the bases even if we 
+       weren't deferring the type itself.
+
+2000-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * decl2.c (finish_objects): Constify a char*.
+
+       * method.c (emit_thunk): Likewise.
+
+2000-03-06  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * typeck.c (dubious_conversion_warnings): Look through
+       REFERENCE_TYPE.
+
+Mon Mar  6 08:46:47 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * class.c (dfs_modify_vtables): I is now unsigned.
+       (check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
+       (build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
+       * error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
+       * init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
+       * method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
+       * typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
+       Call integer_all_onesp.
+       * typeck2.c (process_init_constructor): Use compare_tree_int.
+
+       * lang-specs.h (as): Don't call if -syntax-only.
+
+2000-03-06  Mark Mitchell  <mark@codesourcery.com>
+
+       * expr.c (cplus_expand_expr, case STMT_EXPR): Don't set
+       RTL_EXPR_HAS_NO_SCOPE after all.
+
+2000-03-05  Mark Mitchell  <mark@codesourcery.com>
+
+       * expr.c (cplus_expand_expr, case STMT_EXPR): Use
+       expand_start_stmt_expr and expand_end_stmt_expr directly.  Set
+       RTL_EXPR_HAS_NO_SCOPE.
+
+       * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG a little
+       later.
+       
+       * dump.c (dequeue_and_dump): Dump SCOPE_NO_CLEANUPS_P.
+
+2000-03-05  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * call.c (convert_like): Macrofy.
+       (convert_like_with_context): New macro.
+       (convert_like_real): Renamed from convert_like.  Add calling
+       context parameters, for diagnostics. Add recursive flag.  Call 
+       dubious_conversion_warnings for outer conversion.
+       (build_user_type_conversion): Use convert_like_with_context.
+       (build_over_call): Likewise. Don't warn about dubious
+       conversions here. Adjust convert_default_arg calls.
+       (convert_default_arg): Add context parameters for diagnostics.
+       Pass throught to convert_like_with_context.
+       * cp-tree.h (convert_default_arg): Add context parameters.
+       (dubious_conversion_warnings): Prototype new function.
+       * typeck.c (convert_arguments): Adjust convert_default_arg call.
+       (dubious_conversion_warnings): New function, broken
+       out of convert_for_assignment. 
+       (convert_for_assignment): Adjust.
+
+2000-03-03  Jason Merrill  <jason@casey.cygnus.com>
+
+       * decl2.c (key_method): Break out from...
+       (import_export_vtable, import_export_class): ...here.
+
+       * decl.c (finish_function): Don't mess with flag_keep_inline_functions.
+       * decl2.c (finish_vtable_vardecl): Don't check decl_function_context.
+
+       * search.c (note_debug_info_needed, dfs_debug_mark, 
+       dfs_debug_unmarkedp): Uncomment.  Adjust for new scheme.
+       * decl2.c (finish_vtable_vardecl): Call note_debug_info_needed.
+
+2000-03-03  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (cp_finish_decl): Remove obsolete obstack comments, fix
+       typos.
+
+2000-03-02  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (TYPE_NEEDS_DESTRUCTOR): Rename to ...
+       (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): ... this.
+       (TYPE_HAS_TRIVIAL_DESTRUCTOR): New macro.
+       (lang_type): Split gets_new into has_new and has_array_new.
+       (TYPE_VEC_NEW_USES_COOKIE): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       (TYPE_GETS_NEW): Split into ...
+       (TYPE_HAS_NEW_OPERATOR): ... this, and ...
+       (TYPE_HAS_ARRAY_NEW_OPERATOR): ... this.
+       (DECL_ARRAY_DELETE_OPERATOR_P): New macro
+       (build_op_new_call): Don't declare.
+       (build_new_1): Likewise.
+       * call.c (build_op_new_call): Remove.
+       * class.c (check_bases): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
+       instead of TYPE_NEEDS_DESTRUCTOR.
+       (finish_struct_bits): Likewise.
+       (add_implicitly_declared_members): Likewise.
+       (check_field_decl): Likewise.
+       (check_methods): Set TYPE_VEC_DELETE_TAKES_SIZE here, and set it
+       correctly under the new ABI.
+       * decl.c (start_decl_1): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR
+       instead of TYPE_NEEDS_DESTRUCTOR.
+       (initialize_local_var): Likewise.
+       (destroy_local_var): Likewise.
+       (cp_finish_decl): Likewise.
+       (register_dtor_fn): Likewise.
+       (grok_op_properties): Set TYPE_HAS_NEW_OPERATOR and
+       TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.  Don't set
+       TYPE_VEC_DELETE_TAKES_SIZE here.
+       (xref_basetypes): Set TYPE_HAS_NEW_OPERATOR and
+       TYPE_HAS_ARRAY_NEW_OPERATOR, not TYPE_HAS_NEW.
+       (store_parm_decls):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       (finish_destructor_body): Likewise.
+       (maybe_build_cleanup_1): Likewise.
+       * decl2.c (do_static_destruction): Likewise.
+       * init.c (build_new_1): Make it static.
+       (perform_member_init): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       (expand_cleanup_for_base): Likewise.
+       (get_cookie_size): New function.
+       (build_new_1): Handle array-new cookies correctly under the new
+       ABI.
+       (build_vec_delete_1): Likewise.
+       (build_vec_init):  Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       (build_delete): Likewise.
+       (build_vec_delete): Handle array-new cookies correctly under the new
+       ABI.
+       * lex.c (do_identifier): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       * pt.c (instantiate_class_template): Set TYPE_HAS_NEW_OPERATOR and
+       TYPE_HAS_ARRAY_NEW_OPERATOR.
+       * ptree.c (print_lang_type): Check them.
+       * search.c (context_for_name_lookup): Fix typo in comment.
+       (tree_has_any_destructor_p): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
+       * tree.c (break_out_cleanups): Likewise.
+       (build_cplus_array_test_1): Likewise.
+       (cp_build_qualified_type_real): Likewise.
+       * typeck.c (complete_type): Likewise.
+       
+       * g++spec.c (lang_specific_driver): Add -fnew-abi at the start of
+       the command-line, not the end.
+       
+2000-03-01  Jason Merrill  <jason@casey.cygnus.com>
+
+       * pt.c (instantiate_decl): Clear TI_PENDING_TEMPLATE_FLAG.
+
+2000-03-02  Tom Tromey  <tromey@cygnus.com>
+
+       * cp-tree.h (build_java_class_ref): Declare.
+       * init.c (build_java_class_ref): No longer static.
+       * except.c (expand_throw): Generate a Java-style `throw' if the
+       thrown object is a "Java" object.
+       (initialize_handler_parm): Generate a Java-style lookup of
+       exception info if the caught object is a "Java" object.
+       (catch_language, catch_language_init): New globals.
+       (decl_is_java_type): New function.
+       (expand_start_catch_block): Don't call push_eh_info() or
+       push_eh_cleanup() when handling a Java-style "catch".  Pass Java
+       class reference to build_catch_block.
+
+Thu Mar  2 13:32:01 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
-       * typeck.c (convert_for_assignment): Warn about conversion to bool.
+       * typeck.c (comptypes): Treat sizetype like its language equivalent.
 
 2000-03-01  Bernd Schmidt  <bernds@cygnus.co.uk>
 
@@ -756,7 +2129,7 @@ Mon Jan 31 15:35:29 2000  Jim Wilson  <wilson@cygnus.com>
 
 Thu Jan 27 20:53:36 2000  Jim Wilson  <wilson@cygnus.com>
 
-       * cp/optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
+       * optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
        and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).
 
 Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
@@ -770,7 +2143,7 @@ Thu Jan 27 13:54:12 2000  Mike Stump  <mrs@wrs.com>
 
 Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
 
-       * cp/optimize.c (calls_setjmp_r): Supply new argument
+       * optimize.c (calls_setjmp_r): Supply new argument
        to special_function_p.
 
 2000-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
@@ -968,7 +2341,7 @@ Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
        (__class_type_info::do_find_public_subobj): Likewise.
        * tinfo2.cc (__dynamic_cast): Remap BOFF parameter.     
 
-2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.coom>
+2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
 
        * typeck.c (build_unary_op): Use cp_pedwarn, not pedwarn.
 
@@ -980,7 +2353,7 @@ Wed Jan 26 22:19:14 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
        * class.c (dump_class_hierarchy): Make format agree with argument;
        cast pointer to unsigned long and print with %lx.
        
-2000-01-19  Gabriel Dos Reis  <gdr@codesourcery>
+2000-01-19  Gabriel Dos Reis  <gdr@codesourcery.com>
 
        * decl2.c (lang_decode_option): Set default line-wrap length to 72.