This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

C++ PATCH: new ABI vtables



This patch fixes a bunch of layout issues with the vtables under the
new ABI.  I think vbase and vcall offsets are correct now, but more
testing would certainly be useful.  There are a few other cleanups
mixed in with the patch, and, significantly, two new test cases for
major aspects of ABI conformance.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

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.

begin 664 diffs.uu
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
?"9<B8'.`9=8:\92&90%0ON:P4@IK^7\.MS.ZWV\!````
`
end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]