summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/RecordLayoutBuilder.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2010-04-10 21:35:33 +0000
committerAnders Carlsson <andersca@mac.com>2010-04-10 21:35:33 +0000
commit7a148f714102f7ae93d00015ae13c79541d346e2 (patch)
tree29e3bb1d199d452ecec3d4fd3138c2ed4d38937c /clang/lib/AST/RecordLayoutBuilder.cpp
parent5b441d73b757b69c44fedd5f04daeb344d6eb088 (diff)
downloadbcm5719-llvm-7a148f714102f7ae93d00015ae13c79541d346e2.tar.gz
bcm5719-llvm-7a148f714102f7ae93d00015ae13c79541d346e2.zip
Fix another vbase layout bug.
llvm-svn: 100952
Diffstat (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r--clang/lib/AST/RecordLayoutBuilder.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp
index b2426833a2e..2bc2a128f4f 100644
--- a/clang/lib/AST/RecordLayoutBuilder.cpp
+++ b/clang/lib/AST/RecordLayoutBuilder.cpp
@@ -263,8 +263,12 @@ ASTRecordLayoutBuilder::LayoutVirtualBases(const CXXRecordDecl *RD,
uint64_t BaseOffset;
if (I->isVirtual()) {
+ // If we don't know this vbase yet, don't visit it. It will be visited
+ // later.
+ if (!VBases.count(Base))
+ continue;
+
// We want the vbase offset from the class we're currently laying out.
- assert(VBases.count(Base) && "Did not find virtual base!");
BaseOffset = VBases[Base];
} else if (RD == MostDerivedClass) {
// We want the base offset from the class we're currently laying out.
OpenPOWER on IntegriCloud