OSDN Git Service

* cp-tree.h (struct lang_decl): Remove main_decl_variant.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 3313d18..5676065 100644 (file)
@@ -1,3 +1,842 @@
+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.