]> granicus.if.org Git - clang/commitdiff
Fix thinko and remove another unused function.
authorAnders Carlsson <andersca@mac.com>
Wed, 26 May 2010 05:31:23 +0000 (05:31 +0000)
committerAnders Carlsson <andersca@mac.com>
Wed, 26 May 2010 05:31:23 +0000 (05:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104683 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/RecordLayoutBuilder.cpp
lib/AST/RecordLayoutBuilder.h

index 3803dbb245cc0d74fbe2200551aed6c3ed361c7b..34351a6f1eace728dddb470c77b95bd3ecf9980f 100644 (file)
@@ -244,7 +244,7 @@ ASTRecordLayoutBuilder::LayoutNonVirtualBases(const CXXRecordDecl *RD) {
       cast<CXXRecordDecl>(I->getType()->getAs<RecordType>()->getDecl());
 
     // Skip the primary base.
-    if (Base == PrimaryBase && PrimaryBaseIsVirtual)
+    if (Base == PrimaryBase && !PrimaryBaseIsVirtual)
       continue;
 
     // Lay out the base.
@@ -880,41 +880,6 @@ void ASTRecordLayoutBuilder::UpdateAlignment(unsigned NewAlignment) {
   Alignment = NewAlignment;
 }
 
-const ASTRecordLayout *
-ASTRecordLayoutBuilder::ComputeLayout(ASTContext &Ctx,
-                                      const RecordDecl *D) {
-  ASTRecordLayoutBuilder Builder(Ctx);
-
-  Builder.Layout(D);
-
-  if (!isa<CXXRecordDecl>(D))
-    return new (Ctx) ASTRecordLayout(Ctx, Builder.Size, Builder.Alignment,
-                                     Builder.Size,
-                                     Builder.FieldOffsets.data(),
-                                     Builder.FieldOffsets.size());
-
-  // FIXME: This is not always correct. See the part about bitfields at
-  // http://www.codesourcery.com/public/cxx-abi/abi.html#POD for more info.
-  // FIXME: IsPODForThePurposeOfLayout should be stored in the record layout.
-  bool IsPODForThePurposeOfLayout = cast<CXXRecordDecl>(D)->isPOD();
-
-  // FIXME: This should be done in FinalizeLayout.
-  uint64_t DataSize =
-    IsPODForThePurposeOfLayout ? Builder.Size : Builder.DataSize;
-  uint64_t NonVirtualSize =
-    IsPODForThePurposeOfLayout ? DataSize : Builder.NonVirtualSize;
-
-  return new (Ctx) ASTRecordLayout(Ctx, Builder.Size, Builder.Alignment,
-                                   DataSize, Builder.FieldOffsets.data(),
-                                   Builder.FieldOffsets.size(),
-                                   NonVirtualSize,
-                                   Builder.NonVirtualAlignment,
-                                   Builder.SizeOfLargestEmptySubobject,
-                                   Builder.PrimaryBase,
-                                   Builder.PrimaryBaseIsVirtual,
-                                   Builder.Bases, Builder.VBases);
-}
-
 const CXXMethodDecl *
 ASTRecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) {
   assert(RD->isDynamicClass() && "Class does not have any virtual methods!");
index 1e5ddb4479c372b5b7a706cdba02f85f82bd31ed..fdd4286d4593f249042ab5cce1aa2231a22e9824 100644 (file)
@@ -174,8 +174,6 @@ class ASTRecordLayoutBuilder {
   ASTRecordLayoutBuilder(const ASTRecordLayoutBuilder&);   // DO NOT IMPLEMENT
   void operator=(const ASTRecordLayoutBuilder&); // DO NOT IMPLEMENT
 public:
-  static const ASTRecordLayout *ComputeLayout(ASTContext &Ctx,
-                                              const RecordDecl *RD);
   static const CXXMethodDecl *ComputeKeyFunction(const CXXRecordDecl *RD);
 };