diff options
Diffstat (limited to 'lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | lib/AST/RecordLayoutBuilder.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index a871c3d176..6b98ecd87d 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -1096,7 +1096,8 @@ CharUnits RecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) { return CharUnits::Zero(); } - unsigned UnpackedBaseAlign = Layout.getNonVirtualAlign(); + unsigned UnpackedBaseAlign = + Layout.getNonVirtualAlign().getQuantity() * Context.getCharWidth(); unsigned BaseAlign = (Packed) ? 8 : UnpackedBaseAlign; // The maximum field alignment overrides base align. @@ -1684,13 +1685,14 @@ ASTContext::getASTRecordLayout(const RecordDecl *D) const { IsPODForThePurposeOfLayout ? Builder->Size : Builder->DataSize; uint64_t NonVirtualSize = IsPODForThePurposeOfLayout ? DataSize : Builder->NonVirtualSize; + uint64_t NonVirtualAlign = Builder->NonVirtualAlignment; NewEntry = new (*this) ASTRecordLayout(*this, Builder->Size, Builder->Alignment, DataSize, Builder->FieldOffsets.data(), Builder->FieldOffsets.size(), toCharUnitsFromBits(NonVirtualSize), - Builder->NonVirtualAlignment, + toCharUnitsFromBits(NonVirtualAlign), EmptySubobjects.SizeOfLargestEmptySubobject, Builder->PrimaryBase, Builder->PrimaryBaseIsVirtual, @@ -1859,7 +1861,7 @@ static void DumpCXXRecordLayout(llvm::raw_ostream &OS, OS << ", dsize=" << Layout.getDataSize() / 8; OS << ", align=" << Layout.getAlignment() / 8 << '\n'; OS << " nvsize=" << Layout.getNonVirtualSize().getQuantity(); - OS << ", nvalign=" << Layout.getNonVirtualAlign() / 8 << '\n'; + OS << ", nvalign=" << Layout.getNonVirtualAlign().getQuantity() << '\n'; OS << '\n'; } |