diff options
| author | Anders Carlsson <andersca@mac.com> | 2010-04-10 21:35:33 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2010-04-10 21:35:33 +0000 |
| commit | 7a148f714102f7ae93d00015ae13c79541d346e2 (patch) | |
| tree | 29e3bb1d199d452ecec3d4fd3138c2ed4d38937c /clang/lib/AST/RecordLayoutBuilder.cpp | |
| parent | 5b441d73b757b69c44fedd5f04daeb344d6eb088 (diff) | |
| download | bcm5719-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.cpp | 6 |
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. |

