clang  6.0.0svn
Functions
MicrosoftCXXABI.cpp File Reference
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGVTables.h"
#include "CodeGenModule.h"
#include "CodeGenTypes.h"
#include "TargetInfo.h"
#include "clang/CodeGen/ConstantInitBuilder.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/VTableBuilder.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/Intrinsics.h"
Include dependency graph for MicrosoftCXXABI.cpp:

Go to the source code of this file.

Functions

static llvm::CallSite emitRTtypeidCall (CodeGenFunction &CGF, llvm::Value *Argument)
 
static bool isDeletingDtor (GlobalDecl GD)
 
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::Constant *Dtor, llvm::Constant *Addr)
 
static ConstantAddress getInitThreadEpochPtr (CodeGenModule &CGM)
 
static llvm::Constant * getInitThreadHeaderFn (CodeGenModule &CGM)
 
static llvm::Constant * getInitThreadFooterFn (CodeGenModule &CGM)
 
static llvm::Constant * 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. More...
 
static void detectAmbiguousBases (SmallVectorImpl< MSRTTIClass > &Classes)
 Find ambiguity among base classes. More...
 
static QualType decomposeTypeForEH (ASTContext &Context, QualType T, bool &IsConst, bool &IsVolatile, bool &IsUnaligned)
 
static void emitCXXConstructor (CodeGenModule &CGM, const CXXConstructorDecl *ctor, StructorType ctorType)
 
static void emitCXXDestructor (CodeGenModule &CGM, const CXXDestructorDecl *dtor, StructorType dtorType)
 

Function Documentation

◆ decomposeTypeForEH()

static QualType decomposeTypeForEH ( ASTContext Context,
QualType  T,
bool IsConst,
bool IsVolatile,
bool IsUnaligned 
)
static

◆ detectAmbiguousBases()

static void detectAmbiguousBases ( SmallVectorImpl< MSRTTIClass > &  Classes)
static

◆ emitCXXConstructor()

static void emitCXXConstructor ( CodeGenModule CGM,
const CXXConstructorDecl ctor,
StructorType  ctorType 
)
static

◆ emitCXXDestructor()

static void emitCXXDestructor ( CodeGenModule CGM,
const CXXDestructorDecl dtor,
StructorType  dtorType 
)
static

Definition at line 3802 of file MicrosoftCXXABI.cpp.

References clang::CodeGen::CallArgList::add(), clang::CodeGen::CodeGenTypes::arrangeCXXConstructorCall(), clang::CodeGen::CodeGenTypes::arrangeMSCtorClosure(), clang::CodeGen::Base, clang::CodeGen::CodeGenFunction::Builder, clang::Type::castAs(), clang::CodeGen::CodeGenModule::codegenCXXStructor(), clang::CodeGen::Complete, clang::Create(), clang::CodeGen::ApplyDebugLocation::CreateArtificial(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::ApplyDebugLocation::CreateEmpty(), clang::CodeGen::CGBuilderTy::CreateLoad(), clang::CodeGen::CodeGenFunction::CreateMemTemp(), clang::Ctor_Complete, clang::Ctor_CopyingClosure, clang::Ctor_DefaultClosure, clang::CodeGen::CodeGenFunction::CurGD, decomposeTypeForEH(), detectAmbiguousBases(), clang::Dtor_Base, clang::Dtor_Complete, clang::CodeGen::CodeGenFunction::EmitAnyExprToMem(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCallArgs(), emitCXXConstructor(), clang::CodeGen::CodeGenFunction::EmitNoreturnRuntimeCallOrInvoke(), clang::CodeGen::CodeGenVTables::EmitThunks(), clang::CodeGen::CodeGenFunction::FinishFunction(), clang::CodeGen::CodeGenFunction::RunCleanupsScope::ForceCleanup(), clang::CodeGen::CGCallee::forDirect(), clang::CodeGen::RValue::get(), clang::CodeGen::CodeGenModule::getAddrOfCXXStructor(), clang::CodeGen::CodeGenFunction::GetAddrOfLocalVar(), clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getASTRecordLayout(), clang::CodeGen::CodeGenModule::getContext(), clang::ASTContext::getCopyConstructorForExceptionObject(), clang::CXXRecordDecl::getDestructor(), clang::CodeGen::CGFunctionInfo::getEffectiveCallingConvention(), clang::CodeGen::CodeGenTypes::GetFunctionType(), clang::Decl::getLocation(), clang::CodeGen::CodeGenModule::getMicrosoftVTableContext(), clang::CodeGen::CodeGenModule::getModule(), clang::FunctionDecl::getNumParams(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), clang::Type::getPointeeType(), clang::CodeGen::Address::getPointer(), clang::ASTContext::getPointerType(), clang::QualType::getQualifiers(), clang::CharUnits::getQuantity(), clang::CodeGen::CGFunctionInfo::getReturnType(), clang::CXXThrowExpr::getSubExpr(), clang::CXXMethodDecl::getThisType(), getThrowFn(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenModule::getTypes(), clang::ASTRecordLayout::getVBPtrOffset(), clang::MicrosoftVTableContext::getVBTableIndex(), clang::CodeGen::CodeGenModule::getVTables(), hasDefaultCXXMethodCC(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::IntTy, clang::Type::isNullPtrType(), clang::Type::isObjectType(), clang::Type::isPointerType(), clang::Type::isReferenceType(), clang::CXXMethodDecl::isVirtual(), clang::ImplicitParamDecl::Other, clang::FunctionDecl::parameters(), serializeClassHierarchy(), clang::CodeGen::CodeGenFunction::StartFunction(), clang::T, clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias(), clang::CodeGen::CodeGenModule::TryEmitDefinitionAsAlias(), and clang::CodeGen::Type.

◆ emitGlobalDtorWithTLRegDtor()

static void emitGlobalDtorWithTLRegDtor ( CodeGenFunction CGF,
const VarDecl VD,
llvm::Constant *  Dtor,
llvm::Constant *  Addr 
)
static

◆ emitRTtypeidCall()

static llvm::CallSite emitRTtypeidCall ( CodeGenFunction CGF,
llvm::Value Argument 
)
static

◆ getInitThreadAbortFn()

static llvm::Constant* getInitThreadAbortFn ( CodeGenModule CGM)
static

◆ getInitThreadEpochPtr()

static ConstantAddress getInitThreadEpochPtr ( CodeGenModule CGM)
static

◆ getInitThreadFooterFn()

static llvm::Constant* getInitThreadFooterFn ( CodeGenModule CGM)
static

◆ getInitThreadHeaderFn()

static llvm::Constant* getInitThreadHeaderFn ( CodeGenModule CGM)
static

◆ getTypeInfoVTable()

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

◆ hasDefaultCXXMethodCC()

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

◆ isDeletingDtor()

static bool isDeletingDtor ( GlobalDecl  GD)
static

◆ mangleVFTableName()

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

◆ serializeClassHierarchy()

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

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

Definition at line 3472 of file MicrosoftCXXABI.cpp.

References clang::CXXRecordDecl::bases(), and clang::CodeGen::Address::getType().

Referenced by detectAmbiguousBases(), and emitCXXDestructor().