From: Anders Carlsson Date: Thu, 17 Sep 2009 04:42:56 +0000 (+0000) Subject: Temporary band-aid for handling empty classes somewhat better. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b237fd6f36145c023ed12fe83f21727cbe197158;p=clang Temporary band-aid for handling empty classes somewhat better. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82124 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 05b5ee977c..598bd261d7 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -224,9 +224,11 @@ void ASTRecordLayoutBuilder::LayoutVirtualBases(const CXXRecordDecl *RD, void ASTRecordLayoutBuilder::LayoutBaseNonVirtually(const CXXRecordDecl *RD, bool IsVirtualBase) { const ASTRecordLayout &BaseInfo = Ctx.getASTRecordLayout(RD); + if (!Bases.empty()) { assert(BaseInfo.getDataSize() > 0 && "FIXME: Handle empty classes."); - + } + unsigned BaseAlign = BaseInfo.getNonVirtualAlign(); uint64_t BaseSize = BaseInfo.getNonVirtualSize(); diff --git a/test/SemaCXX/class-layout.cpp b/test/SemaCXX/class-layout.cpp index 890d98bba5..56f41bfbdb 100644 --- a/test/SemaCXX/class-layout.cpp +++ b/test/SemaCXX/class-layout.cpp @@ -42,3 +42,8 @@ struct __attribute__((packed)) F : E { }; SA(5, sizeof(F) == 6); + +struct G { G(); }; +struct H : G { }; + +SA(6, sizeof(H) == 1);