clang 22.0.0git
MicrosoftCXXABI.cpp File Reference
#include "ABIInfo.h"
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGDebugInfo.h"
#include "CGVTables.h"
#include "CodeGenModule.h"
#include "CodeGenTypes.h"
#include "TargetInfo.h"
#include "clang/AST/Attr.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/VTableBuilder.h"
#include "clang/CodeGen/ConstantInitBuilder.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/IR/Intrinsics.h"

Go to the source code of this file.

Functions

static llvm::CallBase * emitRTtypeidCall (CodeGenFunction &CGF, llvm::Value *Argument)
static bool isDeletingDtor (GlobalDecl GD)
static bool isTrivialForMSVC (const CXXRecordDecl *RD, QualType Ty, CodeGenModule &CGM)
static bool hasDefaultCXXMethodCC (ASTContext &Context, const CXXMethodDecl *MD)
static void mangleVFTableName (MicrosoftMangleContext &MangleContext, const CXXRecordDecl *RD, const VPtrInfo &VFPtr, SmallString< 256 > &Name)
static void emitGlobalDtorWithTLRegDtor (CodeGenFunction &CGF, const VarDecl &VD, llvm::FunctionCallee Dtor, llvm::Constant *Addr)
static llvm::GlobalValue * getTlsGuardVar (CodeGenModule &CGM)
static llvm::FunctionCallee getDynTlsOnDemandInitFn (CodeGenModule &CGM)
static void emitTlsGuardCheck (CodeGenFunction &CGF, llvm::GlobalValue *TlsGuard, llvm::BasicBlock *DynInitBB, llvm::BasicBlock *ContinueBB)
static void emitDynamicTlsInitializationCall (CodeGenFunction &CGF, llvm::GlobalValue *TlsGuard, llvm::BasicBlock *ContinueBB)
static void emitDynamicTlsInitialization (CodeGenFunction &CGF)
static ConstantAddress getInitThreadEpochPtr (CodeGenModule &CGM)
static llvm::FunctionCallee getInitThreadHeaderFn (CodeGenModule &CGM)
static llvm::FunctionCallee getInitThreadFooterFn (CodeGenModule &CGM)
static llvm::FunctionCallee getInitThreadAbortFn (CodeGenModule &CGM)
static llvm::GlobalVariable * getTypeInfoVTable (CodeGenModule &CGM)
static void serializeClassHierarchy (SmallVectorImpl< MSRTTIClass > &Classes, const CXXRecordDecl *RD)
 Recursively serializes a class hierarchy in pre-order depth first order.
static void detectAmbiguousBases (SmallVectorImpl< MSRTTIClass > &Classes)
 Find ambiguity among base classes.
static QualType decomposeTypeForEH (ASTContext &Context, QualType T, bool &IsConst, bool &IsVolatile, bool &IsUnaligned)

Function Documentation

◆ decomposeTypeForEH()

◆ detectAmbiguousBases()

void detectAmbiguousBases ( SmallVectorImpl< MSRTTIClass > & Classes)
static

Find ambiguity among base classes.

Definition at line 3739 of file MicrosoftCXXABI.cpp.

◆ emitDynamicTlsInitialization()

◆ emitDynamicTlsInitializationCall()

void emitDynamicTlsInitializationCall ( CodeGenFunction & CGF,
llvm::GlobalValue * TlsGuard,
llvm::BasicBlock * ContinueBB )
static

◆ emitGlobalDtorWithTLRegDtor()

◆ emitRTtypeidCall()

◆ emitTlsGuardCheck()

void emitTlsGuardCheck ( CodeGenFunction & CGF,
llvm::GlobalValue * TlsGuard,
llvm::BasicBlock * DynInitBB,
llvm::BasicBlock * ContinueBB )
static

◆ getDynTlsOnDemandInitFn()

llvm::FunctionCallee getDynTlsOnDemandInitFn ( CodeGenModule & CGM)
static

◆ getInitThreadAbortFn()

◆ getInitThreadEpochPtr()

◆ getInitThreadFooterFn()

◆ getInitThreadHeaderFn()

◆ getTlsGuardVar()

llvm::GlobalValue * getTlsGuardVar ( CodeGenModule & CGM)
static

◆ getTypeInfoVTable()

llvm::GlobalVariable * getTypeInfoVTable ( CodeGenModule & CGM)
static

◆ hasDefaultCXXMethodCC()

bool hasDefaultCXXMethodCC ( ASTContext & Context,
const CXXMethodDecl * MD )
static

◆ isDeletingDtor()

◆ isTrivialForMSVC()

◆ mangleVFTableName()

void mangleVFTableName ( MicrosoftMangleContext & MangleContext,
const CXXRecordDecl * RD,
const VPtrInfo & VFPtr,
SmallString< 256 > & Name )
static

Definition at line 1817 of file MicrosoftCXXABI.cpp.

References clang::VPtrInfo::MangledPath.

◆ serializeClassHierarchy()

void serializeClassHierarchy ( SmallVectorImpl< MSRTTIClass > & Classes,
const CXXRecordDecl * RD )
static

Recursively serializes a class hierarchy in pre-order depth first order.

Definition at line 3730 of file MicrosoftCXXABI.cpp.

References clang::CXXRecordDecl::bases(), and serializeClassHierarchy().

Referenced by serializeClassHierarchy().