]> granicus.if.org Git - clang/commitdiff
Start at NextOffset when laying out bases as well.
authorAnders Carlsson <andersca@mac.com>
Sat, 26 Sep 2009 01:29:10 +0000 (01:29 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 26 Sep 2009 01:29:10 +0000 (01:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82831 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/RecordLayoutBuilder.cpp
test/SemaCXX/empty-class-layout.cpp

index d84b0d13003401cca35f82e71324d6c3c2fd5f0e..1b06bceef9bb5db8edf9cc99625b35ea4ed5debd 100644 (file)
@@ -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) {
index e4e62aa36915c835e78159da8ec7ec830eb55417..8b54ea1c66f2813c3e529f5a821407827a6c83a7 100644 (file)
@@ -62,3 +62,7 @@ struct S7 : Empty {
   void *v;
 };
 SA(11, sizeof(S7) == 8);
+
+struct S8 : Empty, A {
+};
+SA(12, sizeof(S8) == 4);