clang API Documentation
#include "CGCXXABI.h"
#include "CGVTables.h"
#include "CodeGenModule.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/VTableBuilder.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/IR/CallSite.h"
Go to the source code of this file.
Functions | |
static llvm::Value * | getPolymorphicOffset (CodeGenFunction &CGF, const CXXRecordDecl *RD, llvm::Value *Value) |
Gets the offset to the virtual base that contains the vfptr for MS-ABI polymorphic types. | |
static std::pair< llvm::Value *, llvm::Value * > | performBaseAdjustment (CodeGenFunction &CGF, llvm::Value *Value, QualType SrcRecordTy) |
static llvm::CallSite | emitRTtypeidCall (CodeGenFunction &CGF, llvm::Value *Argument) |
static bool | isDeletingDtor (GlobalDecl GD) |
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 MSInheritanceAttr::Spelling | getInheritanceFromMemptr (const MemberPointerType *MPT) |
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 void | emitCXXConstructor (CodeGenModule &CGM, const CXXConstructorDecl *ctor, StructorType ctorType) |
static void | emitCXXDestructor (CodeGenModule &CGM, const CXXDestructorDecl *dtor, StructorType dtorType) |
static void detectAmbiguousBases | ( | SmallVectorImpl< MSRTTIClass > & | Classes | ) | [static] |
Find ambiguity among base classes.
Definition at line 2781 of file CodeGen/MicrosoftCXXABI.cpp.
static void emitCXXConstructor | ( | CodeGenModule & | CGM, |
const CXXConstructorDecl * | ctor, | ||
StructorType | ctorType | ||
) | [static] |
Definition at line 3018 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CodeGen::CodeGenModule::codegenCXXStructor(), and clang::CodeGen::Complete.
static void emitCXXDestructor | ( | CodeGenModule & | CGM, |
const CXXDestructorDecl * | dtor, | ||
StructorType | dtorType | ||
) | [static] |
Definition at line 3025 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CodeGen::Base, clang::CodeGen::CodeGenModule::codegenCXXStructor(), clang::CodeGen::Complete, clang::Dtor_Base, clang::Dtor_Complete, clang::CodeGen::CodeGenVTables::EmitThunks(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), clang::CodeGen::CodeGenModule::getVTables(), clang::CXXMethodDecl::isVirtual(), clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias(), and clang::CodeGen::CodeGenModule::TryEmitDefinitionAsAlias().
static void emitGlobalDtorWithTLRegDtor | ( | CodeGenFunction & | CGF, |
const VarDecl & | VD, | ||
llvm::Constant * | Dtor, | ||
llvm::Constant * | Addr | ||
) | [static] |
Definition at line 1751 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::createAtExitStub(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), and clang::CodeGen::CodeGenTypeCache::IntTy.
static llvm::CallSite emitRTtypeidCall | ( | CodeGenFunction & | CGF, |
llvm::Value * | Argument | ||
) | [static] |
static MSInheritanceAttr::Spelling getInheritanceFromMemptr | ( | const MemberPointerType * | MPT | ) | [static] |
Definition at line 2381 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::MemberPointerType::getMostRecentCXXRecordDecl(), and clang::CXXRecordDecl::getMSInheritanceModel().
static llvm::Value* getPolymorphicOffset | ( | CodeGenFunction & | CGF, |
const CXXRecordDecl * | RD, | ||
llvm::Value * | Value | ||
) | [static] |
Gets the offset to the virtual base that contains the vfptr for MS-ABI polymorphic types.
Definition at line 670 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, Context, clang::Decl::getASTContext(), clang::ASTContext::getASTRecordLayout(), clang::CodeGen::CodeGenModule::getCXXABI(), clang::CodeGen::CGCXXABI::GetVirtualBaseClassOffset(), and clang::CXXRecordDecl::vbases().
Referenced by performBaseAdjustment().
static llvm::GlobalVariable* getTypeInfoVTable | ( | CodeGenModule & | CGM | ) | [static] |
Definition at line 2653 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::ExternalLinkage, clang::CodeGen::CodeGenModule::getModule(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
static bool isDeletingDtor | ( | GlobalDecl | GD | ) | [static] |
Definition at line 815 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::Dtor_Deleting, clang::GlobalDecl::getDecl(), and clang::GlobalDecl::getDtorType().
static void mangleVFTableName | ( | MicrosoftMangleContext & | MangleContext, |
const CXXRecordDecl * | RD, | ||
const VPtrInfo * | VFPtr, | ||
SmallString< 256 > & | Name | ||
) | [static] |
Definition at line 1262 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::MicrosoftMangleContext::mangleCXXVFTable(), and clang::VPtrInfo::MangledPath.
static std::pair<llvm::Value *, llvm::Value *> performBaseAdjustment | ( | CodeGenFunction & | CGF, |
llvm::Value * | Value, | ||
QualType | SrcRecordTy | ||
) | [static] |
Definition at line 683 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getASTRecordLayout(), clang::CodeGen::CodeGenFunction::getContext(), getPolymorphicOffset(), clang::ASTRecordLayout::hasExtendableVFPtr(), clang::CodeGen::CodeGenTypeCache::Int32Ty, and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
static void serializeClassHierarchy | ( | SmallVectorImpl< MSRTTIClass > & | Classes, |
const CXXRecordDecl * | RD | ||
) | [static] |
Recursively serializes a class hierarchy in pre-order depth first order.
Definition at line 2772 of file CodeGen/MicrosoftCXXABI.cpp.
References clang::CXXRecordDecl::bases().