clang 20.0.0git
|
ASTRecordLayout - This class contains layout information for one RecordDecl, which is a struct/union/class. More...
#include "clang/AST/RecordLayout.h"
Classes | |
struct | VBaseInfo |
Public Types | |
using | VBaseOffsetsMapTy = llvm::DenseMap< const CXXRecordDecl *, VBaseInfo > |
Public Member Functions | |
ASTRecordLayout (const ASTRecordLayout &)=delete | |
ASTRecordLayout & | operator= (const ASTRecordLayout &)=delete |
CharUnits | getAlignment () const |
getAlignment - Get the record alignment in characters. | |
CharUnits | getPreferredAlignment () const |
getPreferredFieldAlignment - Get the record preferred alignment in characters. | |
CharUnits | getUnadjustedAlignment () const |
getUnadjustedAlignment - Get the record alignment in characters, before alignment adjustement. | |
CharUnits | getSize () const |
getSize - Get the record size in characters. | |
unsigned | getFieldCount () const |
getFieldCount - Get the number of fields in the layout. | |
uint64_t | getFieldOffset (unsigned FieldNo) const |
getFieldOffset - Get the offset of the given field index, in bits. | |
CharUnits | getDataSize () const |
getDataSize() - Get the record data size, which is the record size without tail padding, in characters. | |
CharUnits | getNonVirtualSize () const |
getNonVirtualSize - Get the non-virtual size (in chars) of an object, which is the size of the object without virtual bases. | |
CharUnits | getNonVirtualAlignment () const |
getNonVirtualAlignment - Get the non-virtual alignment (in chars) of an object, which is the alignment of the object without virtual bases. | |
CharUnits | getPreferredNVAlignment () const |
getPreferredNVAlignment - Get the preferred non-virtual alignment (in chars) of an object, which is the preferred alignment of the object without virtual bases. | |
const CXXRecordDecl * | getPrimaryBase () const |
getPrimaryBase - Get the primary base for this record. | |
bool | isPrimaryBaseVirtual () const |
isPrimaryBaseVirtual - Get whether the primary base for this record is virtual or not. | |
CharUnits | getBaseClassOffset (const CXXRecordDecl *Base) const |
getBaseClassOffset - Get the offset, in chars, for the given base class. | |
CharUnits | getVBaseClassOffset (const CXXRecordDecl *VBase) const |
getVBaseClassOffset - Get the offset, in chars, for the given base class. | |
CharUnits | getSizeOfLargestEmptySubobject () const |
bool | hasOwnVFPtr () const |
hasOwnVFPtr - Does this class provide its own virtual-function table pointer, rather than inheriting one from a primary base class? If so, it is at offset zero. | |
bool | hasExtendableVFPtr () const |
hasVFPtr - Does this class have a virtual function table pointer that can be extended by a derived class? This is synonymous with this class having a VFPtr at offset zero. | |
bool | hasOwnVBPtr () const |
hasOwnVBPtr - Does this class provide its own virtual-base table pointer, rather than inheriting one from a primary base class? | |
bool | hasVBPtr () const |
hasVBPtr - Does this class have a virtual function table pointer. | |
CharUnits | getRequiredAlignment () const |
bool | endsWithZeroSizedObject () const |
bool | leadsWithZeroSizedBase () const |
CharUnits | getVBPtrOffset () const |
getVBPtrOffset - Get the offset for virtual base table pointer. | |
const CXXRecordDecl * | getBaseSharingVBPtr () const |
const VBaseOffsetsMapTy & | getVBaseOffsetsMap () const |
Friends | |
class | ASTContext |
ASTRecordLayout - This class contains layout information for one RecordDecl, which is a struct/union/class.
The decl represented must be a definition, not a forward declaration. This class is also used to contain layout information for one ObjCInterfaceDecl. FIXME - Find appropriate name. These objects are managed by ASTContext.
Definition at line 38 of file RecordLayout.h.
using clang::ASTRecordLayout::VBaseOffsetsMapTy = llvm::DenseMap<const CXXRecordDecl *, VBaseInfo> |
Definition at line 59 of file RecordLayout.h.
|
delete |
|
inline |
Definition at line 313 of file RecordLayout.h.
|
inline |
getAlignment - Get the record alignment in characters.
Definition at line 182 of file RecordLayout.h.
Referenced by clang::ASTContext::DumpRecordLayout(), DumpRecordLayout(), clang::CodeGen::CodeGenModule::getClassPointerAlignment(), and clang::ASTContext::getDeclAlign().
|
inline |
getBaseClassOffset - Get the offset, in chars, for the given base class.
Definition at line 249 of file RecordLayout.h.
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), BitsContainNoUserData(), calculateOffset(), CastToDerivedClass(), clang::CodeGen::CodeGenModule::computeNonVirtualBaseClassOffset(), computeOffsetHint(), DiagnoseReinterpretUpDownCast(), DumpRecordLayout(), findPathsToSubobject(), getDerivedToBaseAlignmentAndOffset(), clang::ASTContext::getMemberPointerPathAdjustment(), clang::ASTContext::getOffsetOfBaseWithVBPtr(), getOffsetOfFullPath(), getSubobjectOffset(), clang::interp::InterpretOffsetOf(), clang::interp::Pointer::toAPValue(), and clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias().
|
inline |
Definition at line 329 of file RecordLayout.h.
Referenced by clang::ASTContext::getOffsetOfBaseWithVBPtr().
|
inline |
getDataSize() - Get the record data size, which is the record size without tail padding, in characters.
Definition at line 206 of file RecordLayout.h.
Referenced by clang::ASTContext::DumpRecordLayout(), DumpRecordLayout(), and clang::ASTContext::getTypeInfoDataSizeInChars().
|
inline |
getFieldCount - Get the number of fields in the layout.
Definition at line 196 of file RecordLayout.h.
References clang::ASTVector< T >::size().
Referenced by clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), clang::ASTContext::DumpRecordLayout(), clang::VarDecl::getFlexibleArrayInitChars(), clang::interp::InterpretOffsetOf(), and isDesignatorAtObjectEnd().
|
inline |
getFieldOffset - Get the offset of the given field index, in bits.
Definition at line 200 of file RecordLayout.h.
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), clang::interp::IntPointer::atOffset(), BitsContainNoUserData(), calculateOffset(), clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), clang::ASTContext::DumpRecordLayout(), DumpRecordLayout(), EncodeBitField(), getBaseAlignmentAndOffsetFromLValue(), clang::ASTContext::getDeclAlign(), getFieldOffset(), getFieldOffsetInBits(), clang::VarDecl::getFlexibleArrayInitChars(), clang::interp::InterpretOffsetOf(), isIntegerLikeType(), clang::ASTContext::lookupFieldBitOffset(), clang::Sema::LookupInlineAsmField(), setUsedBits(), and clang::interp::Pointer::toAPValue().
|
inline |
getNonVirtualAlignment - Get the non-virtual alignment (in chars) of an object, which is the alignment of the object without virtual bases.
Definition at line 218 of file RecordLayout.h.
Referenced by DumpRecordLayout(), EmitNullBaseClassInitialization(), getBaseAlignmentAndOffsetFromPtr(), and getDerivedToBaseAlignmentAndOffset().
|
inline |
getNonVirtualSize - Get the non-virtual size (in chars) of an object, which is the size of the object without virtual bases.
Definition at line 210 of file RecordLayout.h.
Referenced by clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), DumpRecordLayout(), EmitNullBaseClassInitialization(), and EmitNullConstant().
|
inline |
getPreferredFieldAlignment - Get the record preferred alignment in characters.
Definition at line 186 of file RecordLayout.h.
Referenced by clang::ASTContext::DumpRecordLayout(), and DumpRecordLayout().
|
inline |
getPreferredNVAlignment - Get the preferred non-virtual alignment (in chars) of an object, which is the preferred alignment of the object without virtual bases.
Definition at line 227 of file RecordLayout.h.
Referenced by DumpRecordLayout().
|
inline |
getPrimaryBase - Get the primary base for this record.
Definition at line 234 of file RecordLayout.h.
Referenced by AddIndirectPrimaryBases(), and DumpRecordLayout().
|
inline |
Definition at line 311 of file RecordLayout.h.
|
inline |
getSize - Get the record size in characters.
Definition at line 193 of file RecordLayout.h.
Referenced by clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), clang::ASTContext::DumpRecordLayout(), DumpRecordLayout(), clang::VarDecl::getFlexibleArrayInitChars(), and clang::CodeGen::CodeGenModule::getMinimumClassObjectSize().
|
inline |
Definition at line 268 of file RecordLayout.h.
|
inline |
getUnadjustedAlignment - Get the record alignment in characters, before alignment adjustement.
Definition at line 190 of file RecordLayout.h.
Referenced by clang::ASTContext::getTypeUnadjustedAlign().
|
inline |
getVBaseClassOffset - Get the offset, in chars, for the given base class.
Definition at line 259 of file RecordLayout.h.
References clang::CXXRecordDecl::getDefinition().
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), calculateOffset(), CastToDerivedClass(), DumpRecordLayout(), findPathsToSubobject(), getOffsetOfFullPath(), HandleLValueBase(), clang::interp::Pointer::toAPValue(), and vfptrIsEarlierInMDC().
|
inline |
Definition at line 334 of file RecordLayout.h.
Referenced by DumpRecordLayout().
|
inline |
getVBPtrOffset - Get the offset for virtual base table pointer.
This is only meaningful with the Microsoft ABI.
Definition at line 324 of file RecordLayout.h.
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), and DumpRecordLayout().
|
inline |
hasVFPtr - Does this class have a virtual function table pointer that can be extended by a derived class? This is synonymous with this class having a VFPtr at offset zero.
Definition at line 288 of file RecordLayout.h.
|
inline |
hasOwnVBPtr - Does this class provide its own virtual-base table pointer, rather than inheriting one from a primary base class?
This implies that the ABI has no primary base class, meaning that it has no base classes that are suitable under the conditions of the ABI.
Definition at line 300 of file RecordLayout.h.
References hasVBPtr().
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), and DumpRecordLayout().
|
inline |
hasOwnVFPtr - Does this class provide its own virtual-function table pointer, rather than inheriting one from a primary base class? If so, it is at offset zero.
This implies that the ABI has no primary base class, meaning that it has no base classes that are suitable under the conditions of the ABI.
Definition at line 280 of file RecordLayout.h.
Referenced by clang::CodeGen::swiftcall::SwiftAggLowering::addTypedData(), and DumpRecordLayout().
|
inline |
hasVBPtr - Does this class have a virtual function table pointer.
Definition at line 306 of file RecordLayout.h.
Referenced by hasOwnVBPtr().
|
inline |
isPrimaryBaseVirtual - Get whether the primary base for this record is virtual or not.
Definition at line 242 of file RecordLayout.h.
Referenced by AddIndirectPrimaryBases().
|
inline |
Definition at line 317 of file RecordLayout.h.
|
delete |
|
friend |
Definition at line 62 of file RecordLayout.h.