clang 22.0.0git
Descriptor.cpp File Reference
#include "Descriptor.h"
#include "Boolean.h"
#include "FixedPoint.h"
#include "Floating.h"
#include "IntegralAP.h"
#include "MemberPointer.h"
#include "Pointer.h"
#include "PrimType.h"
#include "Record.h"
#include "Source.h"
#include "clang/AST/ExprCXX.h"

Go to the source code of this file.

Functions

template<typename T>
static constexpr bool needsCtor ()
template<typename T>
static void ctorTy (Block *, std::byte *Ptr, bool, bool, bool, bool, bool, const Descriptor *)
template<typename T>
static void dtorTy (Block *, std::byte *Ptr, const Descriptor *)
template<typename T>
static void ctorArrayTy (Block *, std::byte *Ptr, bool, bool, bool, bool, bool, const Descriptor *D)
template<typename T>
static void dtorArrayTy (Block *, std::byte *Ptr, const Descriptor *D)
static void ctorArrayDesc (Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, bool IsVolatile, bool IsActive, bool InUnion, const Descriptor *D)
static void dtorArrayDesc (Block *B, std::byte *Ptr, const Descriptor *D)
static void initField (Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, bool IsVolatile, bool IsActive, bool IsUnionField, bool InUnion, const Descriptor *D, unsigned FieldOffset)
static void initBase (Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, bool IsVolatile, bool IsActive, bool InUnion, const Descriptor *D, unsigned FieldOffset, bool IsVirtualBase)
static void ctorRecord (Block *B, std::byte *Ptr, bool IsConst, bool IsMutable, bool IsVolatile, bool IsActive, bool InUnion, const Descriptor *D)
static void destroyField (Block *B, std::byte *Ptr, const Descriptor *D, unsigned FieldOffset)
static void destroyBase (Block *B, std::byte *Ptr, const Descriptor *D, unsigned FieldOffset)
static void dtorRecord (Block *B, std::byte *Ptr, const Descriptor *D)
static bool needsRecordDtor (const Record *R)
 Whether a record needs its descriptor dtor function called.
static BlockCtorFn getCtorPrim (PrimType T)
static BlockDtorFn getDtorPrim (PrimType T)
static BlockCtorFn getCtorArrayPrim (PrimType Type)
static BlockDtorFn getDtorArrayPrim (PrimType Type)

Function Documentation

◆ ctorArrayDesc()

◆ ctorArrayTy()

template<typename T>
void ctorArrayTy ( Block * ,
std::byte * Ptr,
bool ,
bool ,
bool ,
bool ,
bool ,
const Descriptor * D )
static

◆ ctorRecord()

void ctorRecord ( Block * B,
std::byte * Ptr,
bool IsConst,
bool IsMutable,
bool IsVolatile,
bool IsActive,
bool InUnion,
const Descriptor * D )
static

◆ ctorTy()

template<typename T>
void ctorTy ( Block * ,
std::byte * Ptr,
bool ,
bool ,
bool ,
bool ,
bool ,
const Descriptor *  )
static

Definition at line 40 of file Descriptor.cpp.

References needsCtor(), and clang::T.

Referenced by getCtorPrim().

◆ destroyBase()

void destroyBase ( Block * B,
std::byte * Ptr,
const Descriptor * D,
unsigned FieldOffset )
static

◆ destroyField()

void destroyField ( Block * B,
std::byte * Ptr,
const Descriptor * D,
unsigned FieldOffset )
static

Definition at line 195 of file Descriptor.cpp.

References clang::interp::Descriptor::DtorFn, and clang::interp::Fn.

Referenced by destroyBase(), and dtorRecord().

◆ dtorArrayDesc()

◆ dtorArrayTy()

template<typename T>
void dtorArrayTy ( Block * ,
std::byte * Ptr,
const Descriptor * D )
static

◆ dtorRecord()

◆ dtorTy()

template<typename T>
void dtorTy ( Block * ,
std::byte * Ptr,
const Descriptor *  )
static

Definition at line 47 of file Descriptor.cpp.

References needsCtor(), and clang::T.

Referenced by emitGlobalDtorWithCXAAtExit(), and getDtorPrim().

◆ getCtorArrayPrim()

BlockCtorFn getCtorArrayPrim ( PrimType Type)
static

◆ getCtorPrim()

◆ getDtorArrayPrim()

BlockDtorFn getDtorArrayPrim ( PrimType Type)
static

◆ getDtorPrim()

◆ initBase()

◆ initField()

◆ needsCtor()

template<typename T>
constexpr bool needsCtor ( )
staticconstexpr

Definition at line 24 of file Descriptor.cpp.

Referenced by ctorArrayTy(), ctorTy(), dtorArrayTy(), and dtorTy().

◆ needsRecordDtor()

bool needsRecordDtor ( const Record * R)
static

Whether a record needs its descriptor dtor function called.

Definition at line 222 of file Descriptor.cpp.

References clang::interp::Record::bases(), clang::interp::Record::fields(), V, and clang::interp::Record::virtual_bases().

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