From: Ken Dyck Date: Fri, 11 Feb 2011 02:20:09 +0000 (+0000) Subject: Convert RecordLayout::DataSize to CharUnits from bits, eliminating two X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ec2990351335f163601b98e39b52425e2e9f931e;p=clang Convert RecordLayout::DataSize to CharUnits from bits, eliminating two unnecessary calls to RoundUpToAlignment. No changes to functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125356 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/RecordLayout.h b/include/clang/AST/RecordLayout.h index a5600217b9..f4c2733a41 100644 --- a/include/clang/AST/RecordLayout.h +++ b/include/clang/AST/RecordLayout.h @@ -36,8 +36,8 @@ class ASTRecordLayout { /// Size - Size of record in characters. CharUnits Size; - /// DataSize - Size of record in bits without tail padding. - uint64_t DataSize; + /// DataSize - Size of record in characters without tail padding. + CharUnits DataSize; /// FieldOffsets - Array of field offsets in bits. uint64_t *FieldOffsets; @@ -83,13 +83,13 @@ class ASTRecordLayout { friend class ASTContext; ASTRecordLayout(const ASTContext &Ctx, CharUnits size, unsigned alignment, - unsigned datasize, const uint64_t *fieldoffsets, + CharUnits datasize, const uint64_t *fieldoffsets, unsigned fieldcount); // Constructor for C++ records. typedef CXXRecordLayoutInfo::BaseOffsetsMapTy BaseOffsetsMapTy; ASTRecordLayout(const ASTContext &Ctx, - CharUnits size, unsigned alignment, uint64_t datasize, + CharUnits size, unsigned alignment, CharUnits datasize, const uint64_t *fieldoffsets, unsigned fieldcount, CharUnits nonvirtualsize, CharUnits nonvirtualalign, CharUnits SizeOfLargestEmptySubobject, @@ -123,8 +123,8 @@ public: } /// getDataSize() - Get the record data size, which is the record size - /// without tail padding, in bits. - uint64_t getDataSize() const { + /// without tail padding, in characters. + CharUnits getDataSize() const { return DataSize; } diff --git a/lib/AST/RecordLayout.cpp b/lib/AST/RecordLayout.cpp index 2acf97523c..a6e31a7e08 100644 --- a/lib/AST/RecordLayout.cpp +++ b/lib/AST/RecordLayout.cpp @@ -28,7 +28,7 @@ void ASTRecordLayout::Destroy(ASTContext &Ctx) { } ASTRecordLayout::ASTRecordLayout(const ASTContext &Ctx, CharUnits size, - unsigned alignment, unsigned datasize, + unsigned alignment, CharUnits datasize, const uint64_t *fieldoffsets, unsigned fieldcount) : Size(size), DataSize(datasize), FieldOffsets(0), Alignment(alignment), @@ -42,7 +42,7 @@ ASTRecordLayout::ASTRecordLayout(const ASTContext &Ctx, CharUnits size, // Constructor for C++ records. ASTRecordLayout::ASTRecordLayout(const ASTContext &Ctx, CharUnits size, unsigned alignment, - uint64_t datasize, + CharUnits datasize, const uint64_t *fieldoffsets, unsigned fieldcount, CharUnits nonvirtualsize, diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 9e7c9e5feb..7117a02d65 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -1207,7 +1207,7 @@ void RecordLayoutBuilder::Layout(const ObjCInterfaceDecl *D) { // We start laying out ivars not at the end of the superclass // structure, but at the next byte following the last field. - Size = llvm::RoundUpToAlignment(SL.getDataSize(), 8); + Size = Context.toBits(SL.getDataSize()); DataSize = Size; } @@ -1684,7 +1684,8 @@ ASTContext::getASTRecordLayout(const RecordDecl *D) const { CharUnits RecordSize = toCharUnitsFromBits(Builder->Size); NewEntry = new (*this) ASTRecordLayout(*this, RecordSize, Builder->Alignment, - DataSize, Builder->FieldOffsets.data(), + toCharUnitsFromBits(DataSize), + Builder->FieldOffsets.data(), Builder->FieldOffsets.size(), toCharUnitsFromBits(NonVirtualSize), toCharUnitsFromBits(NonVirtualAlign), @@ -1700,7 +1701,7 @@ ASTContext::getASTRecordLayout(const RecordDecl *D) const { NewEntry = new (*this) ASTRecordLayout(*this, RecordSize, Builder.Alignment, - Builder.Size, + toCharUnitsFromBits(Builder.Size), Builder.FieldOffsets.data(), Builder.FieldOffsets.size()); } @@ -1760,7 +1761,7 @@ ASTContext::getObjCLayout(const ObjCInterfaceDecl *D, const ASTRecordLayout *NewEntry = new (*this) ASTRecordLayout(*this, RecordSize, Builder.Alignment, - Builder.DataSize, + toCharUnitsFromBits(Builder.DataSize), Builder.FieldOffsets.data(), Builder.FieldOffsets.size()); @@ -1857,7 +1858,7 @@ static void DumpCXXRecordLayout(llvm::raw_ostream &OS, } OS << " sizeof=" << Layout.getSize().getQuantity(); - OS << ", dsize=" << Layout.getDataSize() / 8; + OS << ", dsize=" << Layout.getDataSize().getQuantity(); OS << ", align=" << Layout.getAlignment() / 8 << '\n'; OS << " nvsize=" << Layout.getNonVirtualSize().getQuantity(); OS << ", nvalign=" << Layout.getNonVirtualAlign().getQuantity() << '\n'; @@ -1878,7 +1879,7 @@ void ASTContext::DumpRecordLayout(const RecordDecl *RD, OS << "\nLayout: "; OS << "