clang
19.0.0git
|
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGRecordLayout.h"
#include "CGVTables.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "CodeGenTypeCache.h"
#include "TargetInfo.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/StmtCXX.h"
#include "clang/AST/Type.h"
#include "clang/CodeGen/ConstantInitBuilder.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/ScopedPrinter.h"
#include <optional>
#include "clang/Basic/OpenCLImageTypes.def"
#include "clang/Basic/OpenCLExtensionTypes.def"
#include "clang/Basic/AArch64SVEACLETypes.def"
#include "clang/Basic/PPCTypes.def"
#include "clang/Basic/RISCVVTypes.def"
#include "clang/Basic/WebAssemblyReferenceTypes.def"
#include "clang/AST/BuiltinTypes.def"
#include "clang/AST/TypeNodes.inc"
Go to the source code of this file.
Macros | |
#define | IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) case BuiltinType::Id: |
#define | IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) case BuiltinType::Sampled##Id: |
#define | IMAGE_WRITE_TYPE(Type, Id, Ext) |
#define | IMAGE_READ_WRITE_TYPE(Type, Id, Ext) |
#define | EXT_OPAQUE_TYPE(ExtType, Id, Ext) case BuiltinType::Id: |
#define | SVE_TYPE(Name, Id, SingletonId) case BuiltinType::Id: |
#define | PPC_VECTOR_TYPE(Name, Id, Size) case BuiltinType::Id: |
#define | RVV_TYPE(Name, Id, SingletonId) case BuiltinType::Id: |
#define | WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id: |
#define | BUILTIN_TYPE(Id, SingletonId) |
#define | PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id: |
#define | TYPE(Class, Base) |
#define | ABSTRACT_TYPE(Class, Base) |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | NON_CANONICAL_TYPE(Class, Base) case Type::Class: |
#define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | TYPE(Class, Base) |
#define | ABSTRACT_TYPE(Class, Base) |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | NON_CANONICAL_TYPE(Class, Base) case Type::Class: |
#define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
Functions | |
static llvm::FunctionCallee | getAllocateExceptionFn (CodeGenModule &CGM) |
static llvm::FunctionCallee | getThrowFn (CodeGenModule &CGM) |
static llvm::FunctionCallee | getItaniumDynamicCastFn (CodeGenFunction &CGF) |
static llvm::FunctionCallee | getBadCastFn (CodeGenFunction &CGF) |
static CharUnits | computeOffsetHint (ASTContext &Context, const CXXRecordDecl *Src, const CXXRecordDecl *Dst) |
Compute the src2dst_offset hint as described in the Itanium C++ ABI [2.9.7]. More... | |
static llvm::FunctionCallee | getBadTypeidFn (CodeGenFunction &CGF) |
template<typename T > | |
static bool | CXXRecordNonInlineHasAttr (const CXXRecordDecl *RD) |
static void | setVTableSelectiveDLLImportExport (CodeGenModule &CGM, llvm::GlobalVariable *VTable, const CXXRecordDecl *RD) |
static llvm::Value * | performTypeAdjustment (CodeGenFunction &CGF, Address InitialPtr, int64_t NonVirtualAdjustment, int64_t VirtualAdjustment, bool IsReturnAdjustment) |
static llvm::FunctionCallee | getGuardAcquireFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static llvm::FunctionCallee | getGuardReleaseFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static llvm::FunctionCallee | getGuardAbortFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static void | emitGlobalDtorWithCXAAtExit (CodeGenFunction &CGF, llvm::FunctionCallee dtor, llvm::Constant *addr, bool TLS) |
Register a global destructor using __cxa_atexit. More... | |
static llvm::Function * | createGlobalInitOrCleanupFn (CodeGen::CodeGenModule &CGM, StringRef FnName) |
static bool | isThreadWrapperReplaceable (const VarDecl *VD, CodeGen::CodeGenModule &CGM) |
static llvm::GlobalValue::LinkageTypes | getThreadLocalWrapperLinkage (const VarDecl *VD, CodeGen::CodeGenModule &CGM) |
Get the appropriate linkage for the wrapper function. More... | |
static bool | TypeInfoIsInStandardLibrary (const BuiltinType *Ty) |
TypeInfoIsInStandardLibrary - Given a builtin type, returns whether the type info for that type is defined in the standard library. More... | |
static bool | TypeInfoIsInStandardLibrary (const PointerType *PointerTy) |
static bool | IsStandardLibraryRTTIDescriptor (QualType Ty) |
IsStandardLibraryRTTIDescriptor - Returns whether the type information for the given type exists in the standard library. More... | |
static bool | ShouldUseExternalRTTIDescriptor (CodeGenModule &CGM, QualType Ty) |
ShouldUseExternalRTTIDescriptor - Returns whether the type information for the given type exists somewhere else, and that we should not emit the type information in this translation unit. More... | |
static bool | IsIncompleteClassType (const RecordType *RecordTy) |
IsIncompleteClassType - Returns whether the given record type is incomplete. More... | |
static bool | ContainsIncompleteClassType (QualType Ty) |
ContainsIncompleteClassType - Returns whether the given type contains an incomplete class type. More... | |
static bool | CanUseSingleInheritance (const CXXRecordDecl *RD) |
static llvm::GlobalVariable::LinkageTypes | getTypeInfoLinkage (CodeGenModule &CGM, QualType Ty) |
Return the linkage that the type info and type info name constants should have for the given type. More... | |
static unsigned | ComputeVMIClassTypeInfoFlags (const CXXBaseSpecifier *Base, SeenBases &Bases) |
ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in abi::__vmi_class_type_info. More... | |
static unsigned | ComputeVMIClassTypeInfoFlags (const CXXRecordDecl *RD) |
static unsigned | extractPBaseFlags (ASTContext &Ctx, QualType &Type) |
Compute the flags for a __pbase_type_info, and remove the corresponding pieces from Type . More... | |
static StructorCodegen | getCodegenToUse (CodeGenModule &CGM, const CXXMethodDecl *MD) |
static void | emitConstructorDestructorAlias (CodeGenModule &CGM, GlobalDecl AliasDecl, GlobalDecl TargetDecl) |
static llvm::FunctionCallee | getBeginCatchFn (CodeGenModule &CGM) |
static llvm::FunctionCallee | getEndCatchFn (CodeGenModule &CGM) |
static llvm::FunctionCallee | getGetExceptionPtrFn (CodeGenModule &CGM) |
static llvm::Value * | CallBeginCatch (CodeGenFunction &CGF, llvm::Value *Exn, bool EndMightThrow) |
Emits a call to __cxa_begin_catch and enters a cleanup to call __cxa_end_catch. More... | |
static void | InitCatchParam (CodeGenFunction &CGF, const VarDecl &CatchParam, Address ParamAddr, SourceLocation Loc) |
A "special initializer" callback for initializing a catch parameter during catch initialization. More... | |
static llvm::FunctionCallee | getClangCallTerminateFn (CodeGenModule &CGM) |
Get or define the following function: void @__clang_call_terminate(i8* exn) nounwind noreturn This code is used only in C++. More... | |
#define ABSTRACT_TYPE | ( | Class, | |
Base | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Base | |||
) |
#define BUILTIN_TYPE | ( | Id, | |
SingletonId | |||
) |
#define DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define EXT_OPAQUE_TYPE | ( | ExtType, | |
Id, | |||
Ext | |||
) | case BuiltinType::Id: |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) | case BuiltinType::Id: |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) | case BuiltinType::Sampled##Id: |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define PLACEHOLDER_TYPE | ( | Id, | |
SingletonId | |||
) | case BuiltinType::Id: |
#define PPC_VECTOR_TYPE | ( | Name, | |
Id, | |||
Size | |||
) | case BuiltinType::Id: |
#define RVV_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) | case BuiltinType::Id: |
#define SVE_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) | case BuiltinType::Id: |
#define TYPE | ( | Class, | |
Base | |||
) |
#define TYPE | ( | Class, | |
Base | |||
) |
#define WASM_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) | case BuiltinType::Id: |
|
static |
Emits a call to __cxa_begin_catch and enters a cleanup to call __cxa_end_catch.
If -fassume-nothrow-exception-dtor is specified, we assume that the exception object's dtor is nothrow, therefore the __cxa_end_catch call can be marked as nounwind even if EndMightThrow is true.
EndMightThrow | - true if __cxa_end_catch might throw |
Definition at line 4529 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), getBeginCatchFn(), clang::CodeGen::CodeGenModule::getLangOpts(), and clang::CodeGen::NormalAndEHCleanup.
Referenced by InitCatchParam().
|
static |
Definition at line 3533 of file ItaniumCXXABI.cpp.
References clang::AS_public, clang::CXXRecordDecl::bases_begin(), clang::RecordType::getDecl(), clang::CXXRecordDecl::getNumBases(), and clang::CXXRecordDecl::isDynamicClass().
|
static |
Compute the src2dst_offset hint as described in the Itanium C++ ABI [2.9.7].
Definition at line 1369 of file ItaniumCXXABI.cpp.
|
static |
ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in abi::__vmi_class_type_info.
Definition at line 4048 of file ItaniumCXXABI.cpp.
References clang::RecordType::getDecl().
Referenced by ComputeVMIClassTypeInfoFlags().
|
static |
Definition at line 4085 of file ItaniumCXXABI.cpp.
References clang::CXXRecordDecl::bases(), and ComputeVMIClassTypeInfoFlags().
ContainsIncompleteClassType - Returns whether the given type contains an incomplete class type.
This is true if
Definition at line 3508 of file ItaniumCXXABI.cpp.
References IsIncompleteClassType().
Referenced by extractPBaseFlags(), and getTypeInfoLinkage().
|
static |
|
static |
Definition at line 1804 of file ItaniumCXXABI.cpp.
References clang::Decl::hasAttr(), clang::DeclContext::noload_decls(), and clang::T.
|
static |
Definition at line 4373 of file ItaniumCXXABI.cpp.
References clang::AliasDecl, clang::serialized_diags::create(), clang::CodeGen::CodeGenModule::GetAddrOfGlobal(), clang::CodeGen::CodeGenModule::getFunctionLinkage(), clang::CodeGen::CodeGenModule::GetGlobalValue(), clang::CodeGen::CodeGenModule::getMangledName(), and clang::CodeGen::CodeGenModule::SetCommonAttributes().
|
static |
Register a global destructor using __cxa_atexit.
Definition at line 2635 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenTypes::getCodeGenOpts(), clang::CodeGen::CodeGenFunction::getTarget(), clang::TargetInfo::getTriple(), and clang::CodeGen::CodeGenFunction::getTypes().
|
static |
Compute the flags for a __pbase_type_info, and remove the corresponding pieces from Type
.
Definition at line 4186 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::EST_None, clang::Type::getAs(), and clang::ASTContext::getFunctionTypeWithExceptionSpec().
|
static |
Definition at line 1281 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::CodeGenTypeCache::SizeTy.
|
static |
Definition at line 1361 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 1419 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 4471 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
Referenced by CallBeginCatch(), and getClangCallTerminateFn().
|
static |
Get or define the following function: void @__clang_call_terminate(i8* exn) nounwind noreturn This code is used only in C++.
Definition at line 4764 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenTypes::arrangeBuiltinFunctionDeclaration(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), getBeginCatchFn(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenTypes::GetFunctionType(), clang::CodeGen::CodeGenModule::getLLVMContext(), clang::CodeGen::CodeGenModule::getModule(), clang::CodeGen::CodeGenTypeCache::getRuntimeCC(), clang::CodeGen::CodeGenModule::getTerminateFn(), clang::CodeGen::CodeGenModule::getTypes(), clang::HiddenVisibility, clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributes(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), and clang::CodeGen::CodeGenModule::supportsCOMDAT().
|
static |
Definition at line 4336 of file ItaniumCXXABI.cpp.
References clang::AliasDecl, clang::Ctor_Complete, clang::Dtor_Complete, clang::CodeGen::CodeGenModule::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getFunctionLinkage(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), clang::CodeGen::CodeGenModule::getTarget(), and clang::TargetInfo::getTriple().
|
static |
Definition at line 4479 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 4487 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
Referenced by InitCatchParam().
|
static |
Definition at line 2391 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 2366 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenTypes::ConvertType(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getLLVMContext(), clang::CodeGen::CodeGenModule::getTypes(), and clang::ASTContext::IntTy.
|
static |
Definition at line 2379 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 1335 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::ASTContext::getPointerDiffType(), clang::CodeGen::CodeGenTypeCache::GlobalsInt8PtrTy, and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
|
static |
Get the appropriate linkage for the wrapper function.
This is essentially the weak form of the variable's linkage; every translation unit which needs the wrapper emits a copy, and we want the linker to merge them.
Definition at line 2836 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getLLVMLinkageVarDefinition(), and isThreadWrapperReplaceable().
|
static |
Definition at line 1290 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenTypeCache::GlobalsInt8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Return the linkage that the type info and type info name constants should have for the given type.
Definition at line 3708 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::External, clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::Type::getLinkage(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::CodeGen::CodeGenModule::getTriple(), clang::CodeGen::CodeGenModule::getVTableLinkage(), clang::Decl::hasAttr(), clang::Internal, clang::Invalid, clang::CXXRecordDecl::isDynamicClass(), clang::Module, clang::None, ShouldUseExternalRTTIDescriptor(), clang::UniqueExternal, and clang::VisibleNone.
|
static |
A "special initializer" callback for initializing a catch parameter during catch initialization.
Definition at line 4544 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, CallBeginCatch(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::ConvertTypeForMem(), clang::CodeGen::CGBuilderTy::CreateStore(), clang::CodeGen::CodeGenFunction::CreateTempAlloca(), clang::CodeGen::AggValueSlot::DoesNotNeedGCBarriers, clang::CodeGen::AggValueSlot::DoesNotOverlap, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitAggExpr(), clang::CodeGen::CodeGenFunction::EmitAggregateCopy(), clang::CodeGen::CodeGenFunction::EmitARCInitWeak(), clang::CodeGen::CodeGenFunction::EmitARCRetainNonBlock(), clang::CodeGen::CodeGenFunction::EmitLoadOfComplex(), clang::CodeGen::CodeGenFunction::EmitLoadOfScalar(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::Address::emitRawPointer(), clang::CodeGen::CodeGenFunction::EmitStoreOfComplex(), clang::CodeGen::CodeGenFunction::EmitStoreOfScalar(), clang::OpaqueValueExpr::findInCopyConstruct(), clang::CodeGen::AggValueSlot::forAddr(), clang::ASTContext::getCanonicalType(), clang::CodeGen::CodeGenModule::getClassPointerAlignment(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenFunction::getEvaluationKind(), clang::CodeGen::CodeGenFunction::getExceptionFromSlot(), getGetExceptionPtrFn(), clang::VarDecl::getInit(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::Qualifiers::getObjCLifetime(), clang::Type::getPointeeType(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::CanQual< T >::getQualifiers(), clang::CodeGen::TargetCodeGenInfo::getSizeOfUnwindException(), clang::CodeGen::CodeGenModule::getTargetCodeGenInfo(), clang::ValueDecl::getType(), clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::CodeGen::AggValueSlot::IsNotAliased, clang::CodeGen::AggValueSlot::IsNotDestructed, clang::Type::isRecordType(), Loc, clang::CodeGen::CodeGenFunction::MakeAddrLValue(), clang::CodeGen::CodeGenFunction::MakeNaturalAlignAddrLValue(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::CodeGen::CodeGenFunction::OpaqueValueMapping::pop(), clang::CodeGen::EHScopeStack::popTerminate(), clang::CodeGen::EHScopeStack::pushTerminate(), clang::CodeGen::TEK_Aggregate, clang::CodeGen::TEK_Complex, and clang::CodeGen::TEK_Scalar.
|
static |
IsIncompleteClassType - Returns whether the given record type is incomplete.
Definition at line 3493 of file ItaniumCXXABI.cpp.
References clang::RecordType::getDecl(), and clang::TagDecl::isCompleteDefinition().
Referenced by ContainsIncompleteClassType().
IsStandardLibraryRTTIDescriptor - Returns whether the type information for the given type exists in the standard library.
Definition at line 3434 of file ItaniumCXXABI.cpp.
References TypeInfoIsInStandardLibrary().
|
static |
Definition at line 2823 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getTarget(), clang::VarDecl::getTLSKind(), clang::TargetInfo::getTriple(), clang::VarDecl::isStaticLocal(), and clang::VarDecl::TLS_Dynamic.
Referenced by getThreadLocalWrapperLinkage().
|
static |
Definition at line 2151 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CGBuilderTy::CreateAlignedLoad(), clang::CodeGen::CGBuilderTy::CreateConstInBoundsByteGEP(), clang::CodeGen::CGBuilderTy::CreateInBoundsGEP(), clang::CodeGen::CGBuilderTy::CreateLoad(), clang::CodeGen::Address::emitRawPointer(), clang::CharUnits::fromQuantity(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenModule::getItaniumVTableContext(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::ASTContext::getPointerDiffType(), clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::ItaniumVTableContext::isRelativeLayout(), Offset, V, and clang::CodeGen::Address::withElementType().
|
static |
Definition at line 1818 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getVTables(), clang::Decl::hasAttr(), and clang::CodeGen::CodeGenVTables::isVTableExternal().
|
static |
ShouldUseExternalRTTIDescriptor - Returns whether the type information for the given type exists somewhere else, and that we should not emit the type information in this translation unit.
Assumes that it is not a standard-library type.
Definition at line 3451 of file ItaniumCXXABI.cpp.
Referenced by getTypeInfoLinkage().
|
static |
TypeInfoIsInStandardLibrary - Given a builtin type, returns whether the type info for that type is defined in the standard library.
Definition at line 3300 of file ItaniumCXXABI.cpp.
References clang::RISCV::Float, and clang::BuiltinType::getKind().
Referenced by IsStandardLibraryRTTIDescriptor(), and TypeInfoIsInStandardLibrary().
|
static |
Definition at line 3416 of file ItaniumCXXABI.cpp.
References clang::Qualifiers::empty(), clang::PointerType::getPointeeType(), clang::QualType::getQualifiers(), clang::Qualifiers::removeConst(), and TypeInfoIsInStandardLibrary().