class.c (copy_virtuals): Remove.

* class.c (copy_virtuals): Remove.
	(build_primary_vtable): Use copy_list directly.
	(build_secondary_vtable): Likewise.
	(update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
	(create_vtable_ptr): Likewise.

From-SVN: r87604
This commit is contained in:
Nathan Sidwell 2004-09-16 15:21:41 +00:00 committed by Nathan Sidwell
parent 4b30ad7eef
commit d1f05f931e
2 changed files with 13 additions and 19 deletions

View File

@ -1,3 +1,11 @@
2004-09-16 Nathan Sidwell <nathan@codesourcery.com>
* class.c (copy_virtuals): Remove.
(build_primary_vtable): Use copy_list directly.
(build_secondary_vtable): Likewise.
(update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
(create_vtable_ptr): Likewise.
2004-09-16 Kazu Hirata <kazu@cs.umass.edu>
* search.c: Follow spelling conventions.

View File

@ -183,7 +183,6 @@ static void build_vcall_and_vbase_vtbl_entries (tree,
static void clone_constructors_and_destructors (tree);
static tree build_clone (tree, tree);
static void update_vtable_entry_for_fn (tree, tree, tree, tree *, unsigned);
static tree copy_virtuals (tree);
static void build_ctor_vtbl_group (tree, tree);
static void build_vtt (tree);
static tree binfo_ctor_vtable (tree);
@ -709,22 +708,6 @@ get_vtable_decl (tree type, int complete)
return decl;
}
/* Returns a copy of the BINFO_VIRTUALS list in BINFO. The
BV_VCALL_INDEX for each entry is cleared. */
static tree
copy_virtuals (tree binfo)
{
tree copies;
tree t;
copies = copy_list (BINFO_VIRTUALS (binfo));
for (t = copies; t; t = TREE_CHAIN (t))
BV_VCALL_INDEX (t) = NULL_TREE;
return copies;
}
/* Build the primary virtual function table for TYPE. If BINFO is
non-NULL, build the vtable starting with the initial approximation
that it is the same as the one which is the head of the association
@ -746,7 +729,7 @@ build_primary_vtable (tree binfo, tree type)
no need to do it again. */
return 0;
virtuals = copy_virtuals (binfo);
virtuals = copy_list (BINFO_VIRTUALS (binfo));
TREE_TYPE (decl) = TREE_TYPE (get_vtbl_decl_for_binfo (binfo));
DECL_SIZE (decl) = TYPE_SIZE (TREE_TYPE (decl));
DECL_SIZE_UNIT (decl) = TYPE_SIZE_UNIT (TREE_TYPE (decl));
@ -797,7 +780,7 @@ build_secondary_vtable (tree binfo)
SET_BINFO_NEW_VTABLE_MARKED (binfo);
/* Make fresh virtual list, so we can smash it later. */
BINFO_VIRTUALS (binfo) = copy_virtuals (binfo);
BINFO_VIRTUALS (binfo) = copy_list (BINFO_VIRTUALS (binfo));
/* Secondary vtables are laid out as part of the same structure as
the primary vtable. */
@ -2237,6 +2220,8 @@ update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals,
if (virtual_base)
BV_VCALL_INDEX (*virtuals)
= get_vcall_index (overrider_target, BINFO_TYPE (virtual_base));
else
BV_VCALL_INDEX (*virtuals) = NULL_TREE;
}
/* Called from modify_all_vtables via dfs_walk. */
@ -4199,6 +4184,7 @@ create_vtable_ptr (tree t, tree* virtuals_p)
BV_FN (new_virtual) = fn;
BV_DELTA (new_virtual) = integer_zero_node;
BV_VCALL_INDEX (new_virtual) = NULL_TREE;
TREE_CHAIN (new_virtual) = *virtuals_p;
*virtuals_p = new_virtual;