From: Anders Carlsson Date: Sat, 26 Sep 2009 01:29:10 +0000 (+0000) Subject: Start at NextOffset when laying out bases as well. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dfde681bddd525fd8dcebc98865ff74682d8b833;p=clang Start at NextOffset when laying out bases as well. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82831 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index d84b0d1300..1b06bceef9 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -377,7 +377,7 @@ uint64_t ASTRecordLayoutBuilder::LayoutBase(const CXXRecordDecl *RD) { unsigned BaseAlign = BaseInfo.getNonVirtualAlign(); // Round up the current record size to the base's alignment boundary. - uint64_t Offset = llvm::RoundUpToAlignment(Size, BaseAlign); + uint64_t Offset = llvm::RoundUpToAlignment(NextOffset, BaseAlign); // Try to place the base. while (true) { diff --git a/test/SemaCXX/empty-class-layout.cpp b/test/SemaCXX/empty-class-layout.cpp index e4e62aa369..8b54ea1c66 100644 --- a/test/SemaCXX/empty-class-layout.cpp +++ b/test/SemaCXX/empty-class-layout.cpp @@ -62,3 +62,7 @@ struct S7 : Empty { void *v; }; SA(11, sizeof(S7) == 8); + +struct S8 : Empty, A { +}; +SA(12, sizeof(S8) == 4);