diff options
author | Anders Carlsson <andersca@mac.com> | 2010-03-29 01:16:41 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-03-29 01:16:41 +0000 |
commit | 14da9de3ad9a451ed58f0196eea945c8393d5762 (patch) | |
tree | 02667dba70a3cd5094ca6aa6343696518d6e5dcb /lib/CodeGen/CGClass.cpp | |
parent | b358814a25a75657f7f80ee9e198834da873c76e (diff) |
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
Diffstat (limited to 'lib/CodeGen/CGClass.cpp')
-rw-r--r-- | lib/CodeGen/CGClass.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
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); } } |