clang 19.0.0git
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
clang::interp::Descriptor Struct Referencefinal

Describes a memory block created by an allocation site. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/Descriptor.h"

Classes

struct  UnknownSize
 Token to denote structures of unknown size. More...
 

Public Types

using MetadataSize = std::optional< unsigned >
 

Public Member Functions

 Descriptor (const DeclTy &D, PrimType Type, MetadataSize MD, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for a primitive.
 
 Descriptor (const DeclTy &D, PrimType Type, MetadataSize MD, size_t NumElems, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for an array of primitives.
 
 Descriptor (const DeclTy &D, PrimType Type, MetadataSize MDSize, bool IsTemporary, UnknownSize)
 Allocates a descriptor for an array of primitives of unknown size.
 
 Descriptor (const DeclTy &D, const Descriptor *Elem, MetadataSize MD, unsigned NumElems, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for an array of composites.
 
 Descriptor (const DeclTy &D, const Descriptor *Elem, MetadataSize MD, bool IsTemporary, UnknownSize)
 Allocates a descriptor for an array of composites of unknown size.
 
 Descriptor (const DeclTy &D, const Record *R, MetadataSize MD, bool IsConst, bool IsTemporary, bool IsMutable)
 Allocates a descriptor for a record.
 
 Descriptor (const DeclTy &D)
 Allocates a dummy descriptor.
 
 Descriptor (const DeclTy &D, UnknownSize)
 Allocates a dummy array descriptor.
 
QualType getType () const
 
QualType getElemQualType () const
 
SourceLocation getLocation () const
 
const DeclasDecl () const
 
const ExprasExpr () const
 
const DeclTygetSource () const
 
const ValueDeclasValueDecl () const
 
const VarDeclasVarDecl () const
 
const FieldDeclasFieldDecl () const
 
const RecordDeclasRecordDecl () const
 
unsigned getSize () const
 Returns the size of the object without metadata.
 
PrimType getPrimType () const
 
unsigned getAllocSize () const
 Returns the allocated size, including metadata.
 
unsigned getElemSize () const
 returns the size of an element when the structure is viewed as an array.
 
unsigned getMetadataSize () const
 Returns the size of the metadata.
 
unsigned getNumElems () const
 Returns the number of elements stored in the block.
 
bool isPrimitiveArray () const
 Checks if the descriptor is of an array of primitives.
 
bool isCompositeArray () const
 Checks if the descriptor is of an array of composites.
 
bool isZeroSizeArray () const
 Checks if the descriptor is of an array of zero size.
 
bool isUnknownSizeArray () const
 Checks if the descriptor is of an array of unknown size.
 
bool isPrimitive () const
 Checks if the descriptor is of a primitive.
 
bool isArray () const
 Checks if the descriptor is of an array.
 
bool isRecord () const
 Checks if the descriptor is of a record.
 
bool isDummy () const
 Checks if this is a dummy descriptor.
 
void dump () const
 
void dump (llvm::raw_ostream &OS) const
 

Public Attributes

const Record *const ElemRecord = nullptr
 Pointer to the record, if block contains records.
 
const Descriptor *const ElemDesc = nullptr
 Descriptor of the array element.
 
const std::optional< PrimTypePrimT = std::nullopt
 The primitive type this descriptor was created for, or the primitive element type in case this is a primitive array.
 
const bool IsConst = false
 Flag indicating if the block is mutable.
 
const bool IsMutable = false
 Flag indicating if a field is mutable.
 
const bool IsTemporary = false
 Flag indicating if the block is a temporary.
 
const bool IsArray = false
 Flag indicating if the block is an array.
 
const bool IsDummy = false
 Flag indicating if this is a dummy descriptor.
 
const BlockCtorFn CtorFn = nullptr
 Storage management methods.
 
const BlockDtorFn DtorFn = nullptr
 
const BlockMoveFn MoveFn = nullptr
 

Static Public Attributes

static constexpr MetadataSize InlineDescMD = sizeof(InlineDescriptor)
 

Detailed Description

Describes a memory block created by an allocation site.

Definition at line 88 of file Descriptor.h.

Member Typedef Documentation

◆ MetadataSize

Definition at line 108 of file Descriptor.h.

Constructor & Destructor Documentation

◆ Descriptor() [1/8]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
MetadataSize  MD,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for a primitive.

Primitives.

Definition at line 233 of file Descriptor.cpp.

◆ Descriptor() [2/8]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
MetadataSize  MD,
size_t  NumElems,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for an array of primitives.

Primitive arrays.

Definition at line 245 of file Descriptor.cpp.

◆ Descriptor() [3/8]

Descriptor::Descriptor ( const DeclTy D,
PrimType  Type,
MetadataSize  MDSize,
bool  IsTemporary,
UnknownSize   
)

Allocates a descriptor for an array of primitives of unknown size.

Primitive unknown-size arrays.

Definition at line 258 of file Descriptor.cpp.

◆ Descriptor() [4/8]

Descriptor::Descriptor ( const DeclTy D,
const Descriptor Elem,
MetadataSize  MD,
unsigned  NumElems,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for an array of composites.

Arrays of composite elements.

Definition at line 270 of file Descriptor.cpp.

◆ Descriptor() [5/8]

Descriptor::Descriptor ( const DeclTy D,
const Descriptor Elem,
MetadataSize  MD,
bool  IsTemporary,
UnknownSize   
)

Allocates a descriptor for an array of composites of unknown size.

Unknown-size arrays of composite elements.

Definition at line 283 of file Descriptor.cpp.

◆ Descriptor() [6/8]

Descriptor::Descriptor ( const DeclTy D,
const Record R,
MetadataSize  MD,
bool  IsConst,
bool  IsTemporary,
bool  IsMutable 
)

Allocates a descriptor for a record.

Composite records.

Definition at line 294 of file Descriptor.cpp.

◆ Descriptor() [7/8]

Descriptor::Descriptor ( const DeclTy D)

Allocates a dummy descriptor.

Dummy.

Definition at line 305 of file Descriptor.cpp.

◆ Descriptor() [8/8]

Descriptor::Descriptor ( const DeclTy D,
UnknownSize   
)

Allocates a dummy array descriptor.

Dummy array.

Definition at line 313 of file Descriptor.cpp.

Member Function Documentation

◆ asDecl()

const Decl * clang::interp::Descriptor::asDecl ( ) const
inline

◆ asExpr()

const Expr * clang::interp::Descriptor::asExpr ( ) const
inline

Definition at line 170 of file Descriptor.h.

Referenced by dump(), getType(), and clang::interp::Pointer::toAPValue().

◆ asFieldDecl()

const FieldDecl * clang::interp::Descriptor::asFieldDecl ( ) const
inline

Definition at line 181 of file Descriptor.h.

References asDecl().

Referenced by clang::interp::Pointer::getField().

◆ asRecordDecl()

const RecordDecl * clang::interp::Descriptor::asRecordDecl ( ) const
inline

Definition at line 185 of file Descriptor.h.

References asDecl().

◆ asValueDecl()

const ValueDecl * clang::interp::Descriptor::asValueDecl ( ) const
inline

◆ asVarDecl()

const VarDecl * clang::interp::Descriptor::asVarDecl ( ) const
inline

Definition at line 177 of file Descriptor.h.

References asDecl().

Referenced by clang::interp::CheckInitialized().

◆ dump() [1/2]

LLVM_DUMP_METHOD void Descriptor::dump ( ) const

Definition at line 177 of file Disasm.cpp.

References dump().

Referenced by dump(), and clang::interp::Program::dump().

◆ dump() [2/2]

LLVM_DUMP_METHOD void Descriptor::dump ( llvm::raw_ostream &  OS) const

◆ getAllocSize()

unsigned clang::interp::Descriptor::getAllocSize ( ) const
inline

◆ getElemQualType()

QualType Descriptor::getElemQualType ( ) const

Definition at line 330 of file Descriptor.cpp.

References getType(), and isArray().

◆ getElemSize()

unsigned clang::interp::Descriptor::getElemSize ( ) const
inline

returns the size of an element when the structure is viewed as an array.

Definition at line 203 of file Descriptor.h.

Referenced by clang::interp::Pointer::elemSize(), and getNumElems().

◆ getLocation()

SourceLocation Descriptor::getLocation ( ) const

Definition at line 336 of file Descriptor.cpp.

Referenced by clang::interp::Pointer::getDeclLoc().

◆ getMetadataSize()

unsigned clang::interp::Descriptor::getMetadataSize ( ) const
inline

Returns the size of the metadata.

Definition at line 205 of file Descriptor.h.

Referenced by clang::interp::Block::data(), and clang::interp::InterpState::deallocate().

◆ getNumElems()

unsigned clang::interp::Descriptor::getNumElems ( ) const
inline

Returns the number of elements stored in the block.

Definition at line 208 of file Descriptor.h.

References getElemSize(), and getSize().

Referenced by ctorArrayDesc(), ctorArrayTy(), clang::interp::DoMemcpy(), dtorArrayDesc(), dtorArrayTy(), clang::interp::Pointer::initialize(), moveArrayDesc(), and moveArrayTy().

◆ getPrimType()

PrimType clang::interp::Descriptor::getPrimType ( ) const
inline

Definition at line 195 of file Descriptor.h.

References isPrimitive(), isPrimitiveArray(), and PrimT.

Referenced by clang::interp::DoMemcpy(), and clang::interp::Program::dump().

◆ getSize()

unsigned clang::interp::Descriptor::getSize ( ) const
inline

Returns the size of the object without metadata.

Definition at line 190 of file Descriptor.h.

References isUnknownSizeArray().

Referenced by clang::interp::Pointer::elemSize(), getNumElems(), and clang::interp::Pointer::getSize().

◆ getSource()

const DeclTy & clang::interp::Descriptor::getSource ( ) const
inline

Definition at line 171 of file Descriptor.h.

Referenced by clang::interp::Pointer::getSource().

◆ getType()

QualType Descriptor::getType ( ) const

◆ isArray()

bool clang::interp::Descriptor::isArray ( ) const
inline

Checks if the descriptor is of an array.

Definition at line 225 of file Descriptor.h.

References IsArray.

Referenced by getElemQualType().

◆ isCompositeArray()

bool clang::interp::Descriptor::isCompositeArray ( ) const
inline

Checks if the descriptor is of an array of composites.

Definition at line 215 of file Descriptor.h.

References ElemDesc, and IsArray.

Referenced by dump().

◆ isDummy()

bool clang::interp::Descriptor::isDummy ( ) const
inline

Checks if this is a dummy descriptor.

Definition at line 229 of file Descriptor.h.

References IsDummy.

Referenced by dump(), clang::interp::Program::dump(), and clang::interp::Pointer::isDummy().

◆ isPrimitive()

bool clang::interp::Descriptor::isPrimitive ( ) const
inline

Checks if the descriptor is of a primitive.

Definition at line 222 of file Descriptor.h.

References ElemRecord, and IsArray.

Referenced by clang::interp::DoMemcpy(), dump(), clang::interp::Program::dump(), and getPrimType().

◆ isPrimitiveArray()

bool clang::interp::Descriptor::isPrimitiveArray ( ) const
inline

◆ isRecord()

bool clang::interp::Descriptor::isRecord ( ) const
inline

Checks if the descriptor is of a record.

Definition at line 227 of file Descriptor.h.

References ElemRecord, and IsArray.

Referenced by clang::interp::DoMemcpy(), and dump().

◆ isUnknownSizeArray()

bool clang::interp::Descriptor::isUnknownSizeArray ( ) const
inline

Checks if the descriptor is of an array of unknown size.

Definition at line 219 of file Descriptor.h.

Referenced by dump(), getSize(), and clang::interp::Pointer::isUnknownSizeArray().

◆ isZeroSizeArray()

bool clang::interp::Descriptor::isZeroSizeArray ( ) const
inline

Checks if the descriptor is of an array of zero size.

Definition at line 217 of file Descriptor.h.

Referenced by dump().

Member Data Documentation

◆ CtorFn

const BlockCtorFn clang::interp::Descriptor::CtorFn = nullptr

Storage management methods.

Definition at line 131 of file Descriptor.h.

Referenced by ctorArrayDesc(), and clang::interp::Block::invokeCtor().

◆ DtorFn

const BlockDtorFn clang::interp::Descriptor::DtorFn = nullptr

Definition at line 132 of file Descriptor.h.

Referenced by dtorArrayDesc(), and clang::interp::Block::invokeDtor().

◆ ElemDesc

const Descriptor* const clang::interp::Descriptor::ElemDesc = nullptr

◆ ElemRecord

const Record* const clang::interp::Descriptor::ElemRecord = nullptr

◆ InlineDescMD

constexpr MetadataSize clang::interp::Descriptor::InlineDescMD = sizeof(InlineDescriptor)
staticconstexpr

◆ IsArray

const bool clang::interp::Descriptor::IsArray = false

◆ IsConst

const bool clang::interp::Descriptor::IsConst = false

Flag indicating if the block is mutable.

Definition at line 120 of file Descriptor.h.

Referenced by ctorArrayDesc(), clang::interp::Block::invokeCtor(), and clang::interp::Pointer::isConst().

◆ IsDummy

const bool clang::interp::Descriptor::IsDummy = false

Flag indicating if this is a dummy descriptor.

Definition at line 128 of file Descriptor.h.

Referenced by isDummy().

◆ IsMutable

const bool clang::interp::Descriptor::IsMutable = false

Flag indicating if a field is mutable.

Definition at line 122 of file Descriptor.h.

Referenced by ctorArrayDesc(), and clang::interp::Block::invokeCtor().

◆ IsTemporary

const bool clang::interp::Descriptor::IsTemporary = false

Flag indicating if the block is a temporary.

Definition at line 124 of file Descriptor.h.

Referenced by clang::interp::Block::isTemporary().

◆ MoveFn

const BlockMoveFn clang::interp::Descriptor::MoveFn = nullptr

Definition at line 133 of file Descriptor.h.

Referenced by clang::interp::InterpState::deallocate(), and moveArrayDesc().

◆ PrimT

const std::optional<PrimType> clang::interp::Descriptor::PrimT = std::nullopt

The primitive type this descriptor was created for, or the primitive element type in case this is a primitive array.

Definition at line 118 of file Descriptor.h.

Referenced by getPrimType().


The documentation for this struct was generated from the following files: