clang 23.0.0git
CIRGenVTables.cpp File Reference
#include "CIRGenVTables.h"
#include "CIRGenCXXABI.h"
#include "CIRGenModule.h"
#include "mlir/IR/Types.h"
#include "clang/AST/VTTBuilder.h"
#include "clang/AST/VTableBuilder.h"
#include "llvm/ADT/SmallVector.h"

Go to the source code of this file.

Functions

static void setThunkProperties (CIRGenModule &cgm, const ThunkInfo &thunk, cir::FuncOp thunkFn, bool forVTable, GlobalDecl gd)
static cir::GlobalOp getAddrOfVTTVTable (CIRGenVTables &cgvt, CIRGenModule &cgm, const CXXRecordDecl *mostDerivedClass, const VTTVTable &vtable, cir::GlobalLinkageKind linkage, VTableLayout::AddressPointsMapTy &addressPoints)
static RValue performReturnAdjustment (CIRGenFunction &cgf, QualType resultType, RValue rv, const ThunkInfo &thunk)
static bool shouldEmitVTableThunk (CIRGenModule &cgm, const CXXMethodDecl *md, bool isUnprototyped, bool forVTable)
static bool shouldEmitAvailableExternallyVTable (const CIRGenModule &cgm, const CXXRecordDecl *rd)
static bool shouldEmitVTableAtEndOfTranslationUnit (CIRGenModule &cgm, const CXXRecordDecl *rd)
 Given that we're currently at the end of the translation unit, and we've emitted a reference to the vtable for this class, should we define that vtable?

Function Documentation

◆ getAddrOfVTTVTable()

◆ performReturnAdjustment()

◆ setThunkProperties()

◆ shouldEmitAvailableExternallyVTable()

◆ shouldEmitVTableAtEndOfTranslationUnit()

bool shouldEmitVTableAtEndOfTranslationUnit ( CIRGenModule & cgm,
const CXXRecordDecl * rd )
static

Given that we're currently at the end of the translation unit, and we've emitted a reference to the vtable for this class, should we define that vtable?

Definition at line 953 of file CIRGenVTables.cpp.

References clang::CIRGen::CIRGenModule::getVTables(), clang::CIRGen::CIRGenVTables::isVTableExternal(), and shouldEmitAvailableExternallyVTable().

Referenced by clang::CIRGen::CIRGenModule::emitDeferredVTables().

◆ shouldEmitVTableThunk()