summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2010-05-26 05:31:23 +0000
committerAnders Carlsson <andersca@mac.com>2010-05-26 05:31:23 +0000
commitb48414f4cbe45035cf37f1c6c06ca8a2be67abb6 (patch)
treec3a622c12900290da8f5a2e8030d69f935ae1de4
parent1d1e4cf04d68cb6b8354298070b31163a6a07ad4 (diff)
downloadbcm5719-llvm-b48414f4cbe45035cf37f1c6c06ca8a2be67abb6.tar.gz
bcm5719-llvm-b48414f4cbe45035cf37f1c6c06ca8a2be67abb6.zip
Fix thinko and remove another unused function.
llvm-svn: 104683
-rw-r--r--clang/lib/AST/RecordLayoutBuilder.cpp37
-rw-r--r--clang/lib/AST/RecordLayoutBuilder.h2
2 files changed, 1 insertions, 38 deletions
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp
index 3803dbb245c..34351a6f1ea 100644
--- a/clang/lib/AST/RecordLayoutBuilder.cpp
+++ b/clang/lib/AST/RecordLayoutBuilder.cpp
@@ -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!");
diff --git a/clang/lib/AST/RecordLayoutBuilder.h b/clang/lib/AST/RecordLayoutBuilder.h
index 1e5ddb4479c..fdd4286d459 100644
--- a/clang/lib/AST/RecordLayoutBuilder.h
+++ b/clang/lib/AST/RecordLayoutBuilder.h
@@ -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);
};
OpenPOWER on IntegriCloud