From: Anders Carlsson Date: Mon, 29 Mar 2010 01:16:41 +0000 (+0000) Subject: Fix another thinko, so that flags don't depend on previous bases. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=14da9de3ad9a451ed58f0196eea945c8393d5762;p=clang Fix another thinko, so that flags don't depend on previous bases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99791 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGClass.cpp b/lib/CodeGen/CGClass.cpp index ba66c91145..f6d19b4979 100644 --- a/lib/CodeGen/CGClass.cpp +++ b/lib/CodeGen/CGClass.cpp @@ -1645,6 +1645,8 @@ CodeGenFunction::InitializeVTablePointers(BaseSubobject Base, continue; uint64_t BaseOffset; + bool BaseDeclIsMorallyVirtual = BaseIsMorallyVirtual; + bool BaseDeclIsNonVirtualPrimaryBase; if (I->isVirtual()) { // Check if we've visited this virtual base before. @@ -1654,19 +1656,19 @@ CodeGenFunction::InitializeVTablePointers(BaseSubobject Base, const ASTRecordLayout &Layout = getContext().getASTRecordLayout(VTableClass); - BaseIsMorallyVirtual = true; - BaseIsNonVirtualPrimaryBase = false; - BaseOffset = Layout.getVBaseClassOffset(BaseDecl); + BaseDeclIsMorallyVirtual = true; + BaseDeclIsNonVirtualPrimaryBase = false; } else { const ASTRecordLayout &Layout = getContext().getASTRecordLayout(RD); BaseOffset = Base.getBaseOffset() + Layout.getBaseClassOffset(BaseDecl); - BaseIsNonVirtualPrimaryBase = Layout.getPrimaryBase() == BaseDecl; + BaseDeclIsNonVirtualPrimaryBase = Layout.getPrimaryBase() == BaseDecl; } InitializeVTablePointers(BaseSubobject(BaseDecl, BaseOffset), - BaseIsMorallyVirtual, BaseIsNonVirtualPrimaryBase, + BaseDeclIsMorallyVirtual, + BaseDeclIsNonVirtualPrimaryBase, VTable, VTableClass, VBases); } }