diff options
-rw-r--r-- | include/clang/AST/RecordLayout.h | 15 | ||||
-rw-r--r-- | lib/AST/RecordLayoutBuilder.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/CGObjCMac.cpp | 2 |
3 files changed, 9 insertions, 10 deletions
diff --git a/include/clang/AST/RecordLayout.h b/include/clang/AST/RecordLayout.h index 88955be80e..b7ae9c1cdc 100644 --- a/include/clang/AST/RecordLayout.h +++ b/include/clang/AST/RecordLayout.h @@ -30,17 +30,16 @@ namespace clang { /// These objects are managed by ASTContext. class ASTRecordLayout { uint64_t Size; // Size of record in bits. - uint64_t NextOffset; // Next available offset + uint64_t DataSize; // Size of record in bits without tail padding. uint64_t *FieldOffsets; unsigned Alignment; // Alignment of record in bits. unsigned FieldCount; // Number of fields friend class ASTContext; friend class ASTRecordLayoutBuilder; - ASTRecordLayout(uint64_t Size, unsigned Alignment, - unsigned nextoffset, + ASTRecordLayout(uint64_t size, unsigned alignment, unsigned datasize, const uint64_t *fieldoffsets, unsigned fieldcount) - : Size(Size), NextOffset(nextoffset), FieldOffsets(0), Alignment(Alignment), + : Size(size), DataSize(datasize), FieldOffsets(0), Alignment(alignment), FieldCount(fieldcount) { if (FieldCount > 0) { FieldOffsets = new uint64_t[FieldCount]; @@ -72,10 +71,10 @@ public: return FieldOffsets[FieldNo]; } - /// getNextOffset - Get the next available (unused) offset in the - /// structure, in bits. - uint64_t getNextOffset() const { - return NextOffset; + /// getDataSize() - Get the record data size, which is the record size + /// without tail padding, in bits. + uint64_t getDataSize() const { + return DataSize; } }; diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 5230ba95d1..f4257b7d0e 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -52,7 +52,7 @@ void ASTRecordLayoutBuilder::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.NextOffset, 8); + Size = llvm::RoundUpToAlignment(SL.getDataSize(), 8); NextOffset = Size; } diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index 9b9cec661e..7252de6ec6 100644 --- a/lib/CodeGen/CGObjCMac.cpp +++ b/lib/CodeGen/CGObjCMac.cpp @@ -4319,7 +4319,7 @@ void CGObjCNonFragileABIMac::GetClassSizeInfo(const ObjCImplementationDecl *OID, CGM.getContext().getASTObjCImplementationLayout(OID); // InstanceSize is really instance end. - InstanceSize = llvm::RoundUpToAlignment(RL.getNextOffset(), 8) / 8; + InstanceSize = llvm::RoundUpToAlignment(RL.getDataSize(), 8) / 8; // If there are no fields, the start is the same as the end. if (!RL.getFieldCount()) |