class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the immediate binfos for our virtual bases.

* class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
        immediate binfos for our virtual bases.

From-SVN: r47543
This commit is contained in:
Jason Merrill 2001-12-02 21:43:18 -05:00 committed by Jason Merrill
parent 6fa3f289e4
commit ff6685064f
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2001-12-03 Jason Merrill <jason@redhat.com>
* class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
immediate binfos for our virtual bases.
2001-12-02 Neil Booth <neil@daikokuya.demon.co.uk>
* call.c (build_java_interface_fn_ref): Similarly.

View File

@ -6789,6 +6789,7 @@ finish_vtbls (t)
{
tree list;
tree vbase;
int i;
/* We lay out the primary and secondary vtables in one contiguous
vtable. The primary vtable is first, followed by the non-virtual
@ -6813,6 +6814,18 @@ finish_vtbls (t)
TYPE_BINFO (t), t, list);
}
/* Fill in BINFO_VPTR_FIELD in the immediate binfos for our virtual
base classes, for the benefit of the debugging backends. */
for (i = 0; i < BINFO_N_BASETYPES (TYPE_BINFO (t)); ++i)
{
tree base = BINFO_BASETYPE (TYPE_BINFO (t), i);
if (TREE_VIA_VIRTUAL (base))
{
tree vbase = binfo_for_vbase (BINFO_TYPE (base), t);
BINFO_VPTR_FIELD (base) = BINFO_VPTR_FIELD (vbase);
}
}
if (TYPE_BINFO_VTABLE (t))
initialize_vtable (TYPE_BINFO (t), TREE_VALUE (list));
}