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 | 948d3f4ec6fa9cfc0e6d828ec1ff7b89d0f54c07 (patch) | |
tree | b82b0d64fea401d4d75cd0834d9d3db4d7978768 /clang/lib/CodeGen/CGClass.cpp | |
parent | 74d7dfcf8ea377a1efa095561db0f024dfe77ca8 (diff) | |
download | bcm5719-llvm-948d3f4ec6fa9cfc0e6d828ec1ff7b89d0f54c07.tar.gz bcm5719-llvm-948d3f4ec6fa9cfc0e6d828ec1ff7b89d0f54c07.zip |
Fix another thinko, so that flags don't depend on previous bases.
llvm-svn: 99791
Diffstat (limited to 'clang/lib/CodeGen/CGClass.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGClass.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp index ba66c911452..f6d19b4979d 100644 --- a/clang/lib/CodeGen/CGClass.cpp +++ b/clang/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); } } |