Don't initialize virtual pointers for primary bases, they've already been initialized.

llvm-svn: 99612
This commit is contained in:
Anders Carlsson
2010-03-26 05:53:12 +00:00
parent 0a29a05f02
commit 6fffc64dd2

View File

@@ -1601,6 +1601,13 @@ void CodeGenFunction::InitializeVtablePtrs(BaseSubobject Base,
CXXRecordDecl *BaseDecl
= cast<CXXRecordDecl>(I->getType()->getAs<RecordType>()->getDecl());
// We don't need to initialize vtable pointers for primary bases, unless
// they're virtual.
if (!Layout.getPrimaryBaseWasVirtual() &&
Layout.getPrimaryBase() == BaseDecl)
continue;
uint64_t BaseOffset = Base.getBaseOffset() +
Layout.getBaseClassOffset(BaseDecl);