]> granicus.if.org Git - clang/commitdiff
Temporary band-aid for handling empty classes somewhat better.
authorAnders Carlsson <andersca@mac.com>
Thu, 17 Sep 2009 04:42:56 +0000 (04:42 +0000)
committerAnders Carlsson <andersca@mac.com>
Thu, 17 Sep 2009 04:42:56 +0000 (04:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82124 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 05b5ee977cc9ac87882638c0a1222267600a60f1..598bd261d74747df3effad2e8818660db8dcc2ff 100644 (file)
@@ -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();
 
index 890d98bba5d6cba62d704678e6313589bf317677..56f41bfbdb936a042186b84597cbe4bc36e05820 100644 (file)
@@ -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);