diff options
Diffstat (limited to 'clang/lib/CodeGen/CGRecordLayoutBuilder.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGRecordLayoutBuilder.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp index 0d9c6d49642..9e45df886e6 100644 --- a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp +++ b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp @@ -487,18 +487,17 @@ void CGRecordLayoutBuilder::LayoutUnion(const RecordDecl *D) { void CGRecordLayoutBuilder::LayoutNonVirtualBase(const CXXRecordDecl *BaseDecl, uint64_t BaseOffset) { + // Ignore empty bases. + if (BaseDecl->isEmpty()) + return; + + CheckZeroInitializable(BaseDecl); + const ASTRecordLayout &Layout = Types.getContext().getASTRecordLayout(BaseDecl); uint64_t NonVirtualSize = Layout.getNonVirtualSize(); - if (BaseDecl->isEmpty()) { - // FIXME: Lay out empty bases. - return; - } - - CheckZeroInitializable(BaseDecl); - // FIXME: Actually use a better type than [sizeof(BaseDecl) x i8] when we can. AppendPadding(BaseOffset / 8, 1); |