Commit d1f05f93 by Nathan Sidwell Committed by Nathan Sidwell

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
parent 4b30ad7e
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> 2004-09-16 Kazu Hirata <kazu@cs.umass.edu>
* search.c: Follow spelling conventions. * search.c: Follow spelling conventions.
......
...@@ -183,7 +183,6 @@ static void build_vcall_and_vbase_vtbl_entries (tree, ...@@ -183,7 +183,6 @@ static void build_vcall_and_vbase_vtbl_entries (tree,
static void clone_constructors_and_destructors (tree); static void clone_constructors_and_destructors (tree);
static tree build_clone (tree, tree); static tree build_clone (tree, tree);
static void update_vtable_entry_for_fn (tree, tree, tree, tree *, unsigned); 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_ctor_vtbl_group (tree, tree);
static void build_vtt (tree); static void build_vtt (tree);
static tree binfo_ctor_vtable (tree); static tree binfo_ctor_vtable (tree);
...@@ -709,22 +708,6 @@ get_vtable_decl (tree type, int complete) ...@@ -709,22 +708,6 @@ get_vtable_decl (tree type, int complete)
return decl; 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 /* Build the primary virtual function table for TYPE. If BINFO is
non-NULL, build the vtable starting with the initial approximation 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 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) ...@@ -746,7 +729,7 @@ build_primary_vtable (tree binfo, tree type)
no need to do it again. */ no need to do it again. */
return 0; return 0;
virtuals = copy_virtuals (binfo); virtuals = copy_list (BINFO_VIRTUALS (binfo));
TREE_TYPE (decl) = TREE_TYPE (get_vtbl_decl_for_binfo (binfo)); TREE_TYPE (decl) = TREE_TYPE (get_vtbl_decl_for_binfo (binfo));
DECL_SIZE (decl) = TYPE_SIZE (TREE_TYPE (decl)); DECL_SIZE (decl) = TYPE_SIZE (TREE_TYPE (decl));
DECL_SIZE_UNIT (decl) = TYPE_SIZE_UNIT (TREE_TYPE (decl)); DECL_SIZE_UNIT (decl) = TYPE_SIZE_UNIT (TREE_TYPE (decl));
...@@ -797,7 +780,7 @@ build_secondary_vtable (tree binfo) ...@@ -797,7 +780,7 @@ build_secondary_vtable (tree binfo)
SET_BINFO_NEW_VTABLE_MARKED (binfo); SET_BINFO_NEW_VTABLE_MARKED (binfo);
/* Make fresh virtual list, so we can smash it later. */ /* 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 /* Secondary vtables are laid out as part of the same structure as
the primary vtable. */ the primary vtable. */
...@@ -2237,6 +2220,8 @@ update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals, ...@@ -2237,6 +2220,8 @@ update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals,
if (virtual_base) if (virtual_base)
BV_VCALL_INDEX (*virtuals) BV_VCALL_INDEX (*virtuals)
= get_vcall_index (overrider_target, BINFO_TYPE (virtual_base)); = get_vcall_index (overrider_target, BINFO_TYPE (virtual_base));
else
BV_VCALL_INDEX (*virtuals) = NULL_TREE;
} }
/* Called from modify_all_vtables via dfs_walk. */ /* Called from modify_all_vtables via dfs_walk. */
...@@ -4199,6 +4184,7 @@ create_vtable_ptr (tree t, tree* virtuals_p) ...@@ -4199,6 +4184,7 @@ create_vtable_ptr (tree t, tree* virtuals_p)
BV_FN (new_virtual) = fn; BV_FN (new_virtual) = fn;
BV_DELTA (new_virtual) = integer_zero_node; BV_DELTA (new_virtual) = integer_zero_node;
BV_VCALL_INDEX (new_virtual) = NULL_TREE;
TREE_CHAIN (new_virtual) = *virtuals_p; TREE_CHAIN (new_virtual) = *virtuals_p;
*virtuals_p = new_virtual; *virtuals_p = new_virtual;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment