From: Mark Mitchell Date: Tue, 28 Nov 2006 02:19:02 +0000 (+0000) Subject: class.c (build_vcall_offset_vtbl_entries): Do not add vcall entries for a primary... X-Git-Tag: releases/gcc-4.3.0~8250 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b93029150149dce2e8d2d3948b5e8d7fbd14c26e;p=thirdparty%2Fgcc.git class.c (build_vcall_offset_vtbl_entries): Do not add vcall entries for a primary construction virtual table. * class.c (build_vcall_offset_vtbl_entries): Do not add vcall entries for a primary construction virtual table. From-SVN: r119271 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 095c2fe55270..076abeaf3049 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-11-27 Mark Mitchell + + * class.c (build_vcall_offset_vtbl_entries): Do not add vcall + entries for a primary construction virtual table. + 2006-11-26 Mark Mitchell PR c++/29886 diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 3e569f5777db..6b195fb1f251 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -7449,7 +7449,14 @@ build_vcall_offset_vtbl_entries (tree binfo, vtbl_init_data* vid) /* We only need these entries if this base is a virtual base. We compute the indices -- but do not add to the vtable -- when building the main vtable for a class. */ - if (BINFO_VIRTUAL_P (binfo) || binfo == TYPE_BINFO (vid->derived)) + if (binfo == TYPE_BINFO (vid->derived) + || (BINFO_VIRTUAL_P (binfo) + /* If BINFO is RTTI_BINFO, then (since BINFO does not + correspond to VID->DERIVED), we are building a primary + construction virtual table. Since this is a primary + virtual table, we do not need the vcall offsets for + BINFO. */ + && binfo != vid->rtti_binfo)) { /* We need a vcall offset for each of the virtual functions in this vtable. For example: