cp-tree.h (skip_rtti_stuff): Adjust prototype.
* cp-tree.h (skip_rtti_stuff): Adjust prototype. * class.c (skip_rtti_stuff): Reorganize parameters and return value. (modify_one_vtable): Adjust. (fixup_vtable_deltas1): Likewise. (override_one_vtable): Likewise. * search.c (get_abstract_virtuals_1): Likewise. (get_pure_virtuals): Likewise. (expand_upcast_fixups): Likewise. * tree.c (debug_binfo): Likewise. From-SVN: r31163
This commit is contained in:
parent
5e1677bcb0
commit
07b7a812fd
|
@ -1,5 +1,15 @@
|
|||
2000-01-01 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cp-tree.h (skip_rtti_stuff): Adjust prototype.
|
||||
* class.c (skip_rtti_stuff): Reorganize parameters and return value.
|
||||
(modify_one_vtable): Adjust.
|
||||
(fixup_vtable_deltas1): Likewise.
|
||||
(override_one_vtable): Likewise.
|
||||
* search.c (get_abstract_virtuals_1): Likewise.
|
||||
(get_pure_virtuals): Likewise.
|
||||
(expand_upcast_fixups): Likewise.
|
||||
* tree.c (debug_binfo): Likewise.
|
||||
|
||||
* class.c (build_vtable): Don't return a value. Don't rebuild
|
||||
vtables for bases that have already been handled.
|
||||
(prepare_fresh_vtable): Don't rebuild vtables for bases that have
|
||||
|
|
|
@ -2384,39 +2384,48 @@ get_class_offset (context, t, binfo, fndecl)
|
|||
return offset;
|
||||
}
|
||||
|
||||
/* Skip RTTI information at the front of the virtual list. */
|
||||
/* Return the BINFO_VIRTUALS list for BINFO, without the RTTI stuff at
|
||||
the front. If non-NULL, N is set to the number of entries
|
||||
skipped. */
|
||||
|
||||
unsigned HOST_WIDE_INT
|
||||
skip_rtti_stuff (virtuals, t)
|
||||
tree *virtuals, t;
|
||||
tree
|
||||
skip_rtti_stuff (binfo, t, n)
|
||||
tree binfo;
|
||||
tree t;
|
||||
unsigned HOST_WIDE_INT *n;
|
||||
{
|
||||
int n;
|
||||
tree virtuals;
|
||||
|
||||
if (CLASSTYPE_COM_INTERFACE (t))
|
||||
return 0;
|
||||
|
||||
n = 0;
|
||||
if (*virtuals)
|
||||
if (n)
|
||||
*n = 0;
|
||||
virtuals = BINFO_VIRTUALS (binfo);
|
||||
if (virtuals)
|
||||
{
|
||||
/* We always reserve a slot for the offset/tdesc entry. */
|
||||
++n;
|
||||
*virtuals = TREE_CHAIN (*virtuals);
|
||||
if (n)
|
||||
++*n;
|
||||
virtuals = TREE_CHAIN (virtuals);
|
||||
}
|
||||
if (flag_vtable_thunks && *virtuals)
|
||||
if (flag_vtable_thunks && virtuals)
|
||||
{
|
||||
/* The second slot is reserved for the tdesc pointer when thunks
|
||||
are used. */
|
||||
++n;
|
||||
*virtuals = TREE_CHAIN (*virtuals);
|
||||
if (n)
|
||||
++*n;
|
||||
virtuals = TREE_CHAIN (virtuals);
|
||||
}
|
||||
return n;
|
||||
|
||||
return virtuals;
|
||||
}
|
||||
|
||||
static void
|
||||
modify_one_vtable (binfo, t, fndecl)
|
||||
tree binfo, t, fndecl;
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (binfo);
|
||||
tree virtuals;
|
||||
unsigned HOST_WIDE_INT n;
|
||||
|
||||
/* update rtti entry */
|
||||
|
@ -2430,7 +2439,7 @@ modify_one_vtable (binfo, t, fndecl)
|
|||
if (fndecl == NULL_TREE)
|
||||
return;
|
||||
|
||||
n = skip_rtti_stuff (&virtuals, BINFO_TYPE (binfo));
|
||||
virtuals = skip_rtti_stuff (binfo, BINFO_TYPE (binfo), &n);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
@ -2519,10 +2528,10 @@ static void
|
|||
fixup_vtable_deltas1 (binfo, t)
|
||||
tree binfo, t;
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (binfo);
|
||||
tree virtuals;
|
||||
unsigned HOST_WIDE_INT n;
|
||||
|
||||
n = skip_rtti_stuff (&virtuals, BINFO_TYPE (binfo));
|
||||
virtuals = skip_rtti_stuff (binfo, BINFO_TYPE (binfo), &n);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
@ -2677,8 +2686,8 @@ static void
|
|||
override_one_vtable (binfo, old, t)
|
||||
tree binfo, old, t;
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (binfo);
|
||||
tree old_virtuals = BINFO_VIRTUALS (old);
|
||||
tree virtuals;
|
||||
tree old_virtuals;
|
||||
enum { REUSE_NEW, REUSE_OLD, UNDECIDED, NEITHER } choose = UNDECIDED;
|
||||
|
||||
/* If we have already committed to modifying it, then don't try and
|
||||
|
@ -2686,8 +2695,8 @@ override_one_vtable (binfo, old, t)
|
|||
if (BINFO_NEW_VTABLE_MARKED (binfo))
|
||||
choose = NEITHER;
|
||||
|
||||
skip_rtti_stuff (&virtuals, BINFO_TYPE (binfo));
|
||||
skip_rtti_stuff (&old_virtuals, BINFO_TYPE (binfo));
|
||||
virtuals = skip_rtti_stuff (binfo, BINFO_TYPE (binfo), NULL);
|
||||
old_virtuals = skip_rtti_stuff (old, BINFO_TYPE (binfo), NULL);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
|
|
@ -3394,7 +3394,7 @@ extern void push_lang_context PROTO((tree));
|
|||
extern void pop_lang_context PROTO((void));
|
||||
extern tree instantiate_type PROTO((tree, tree, int));
|
||||
extern void print_class_statistics PROTO((void));
|
||||
extern unsigned HOST_WIDE_INT skip_rtti_stuff PROTO((tree *, tree));
|
||||
extern tree skip_rtti_stuff PROTO((tree, tree, unsigned HOST_WIDE_INT *));
|
||||
extern void build_self_reference PROTO((void));
|
||||
extern void warn_hidden PROTO((tree));
|
||||
extern tree get_enclosing_class PROTO((tree));
|
||||
|
|
|
@ -2129,9 +2129,9 @@ get_abstract_virtuals_1 (binfo, do_self, abstract_virtuals)
|
|||
/* Should we use something besides CLASSTYPE_VFIELDS? */
|
||||
if (do_self && CLASSTYPE_VFIELDS (BINFO_TYPE (binfo)))
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (binfo);
|
||||
tree virtuals;
|
||||
|
||||
skip_rtti_stuff (&virtuals, BINFO_TYPE (binfo));
|
||||
virtuals = skip_rtti_stuff (binfo, BINFO_TYPE (binfo), NULL);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
@ -2160,9 +2160,9 @@ get_pure_virtuals (type)
|
|||
|
||||
for (vbases = CLASSTYPE_VBASECLASSES (type); vbases; vbases = TREE_CHAIN (vbases))
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (vbases);
|
||||
tree virtuals;
|
||||
|
||||
skip_rtti_stuff (&virtuals, BINFO_TYPE (vbases));
|
||||
virtuals = skip_rtti_stuff (vbases, BINFO_TYPE (vbases), NULL);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
@ -2598,7 +2598,7 @@ expand_upcast_fixups (binfo, addr, orig_addr, vbase, vbase_addr, t,
|
|||
vbase_offsets)
|
||||
tree binfo, addr, orig_addr, vbase, vbase_addr, t, *vbase_offsets;
|
||||
{
|
||||
tree virtuals = BINFO_VIRTUALS (binfo);
|
||||
tree virtuals;
|
||||
tree vc;
|
||||
tree delta;
|
||||
unsigned HOST_WIDE_INT n;
|
||||
|
@ -2613,7 +2613,7 @@ expand_upcast_fixups (binfo, addr, orig_addr, vbase, vbase_addr, t,
|
|||
*vbase_offsets = delta;
|
||||
}
|
||||
|
||||
n = skip_rtti_stuff (&virtuals, BINFO_TYPE (binfo));
|
||||
virtuals = skip_rtti_stuff (binfo, BINFO_TYPE (binfo), &n);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
|
|
@ -1165,9 +1165,7 @@ debug_binfo (elem)
|
|||
else
|
||||
fprintf (stderr, "no vtable decl yet\n");
|
||||
fprintf (stderr, "virtuals:\n");
|
||||
virtuals = BINFO_VIRTUALS (elem);
|
||||
|
||||
n = skip_rtti_stuff (&virtuals, BINFO_TYPE (elem));
|
||||
virtuals = skip_rtti_stuff (elem, BINFO_TYPE (elem), &n);
|
||||
|
||||
while (virtuals)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue