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:
parent
4b30ad7eef
commit
d1f05f931e
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue