clang 22.0.0git
|
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGDebugInfo.h"
#include "CGRecordLayout.h"
#include "CGVTables.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.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/AArch64ACLETypes.def"
#include "clang/Basic/PPCTypes.def"
#include "clang/Basic/RISCVVTypes.def"
#include "clang/Basic/WebAssemblyReferenceTypes.def"
#include "clang/Basic/AMDGPUTypes.def"
#include "clang/Basic/HLSLIntangibleTypes.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 | 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 | AMDGPU_TYPE(Name, Id, SingletonId, Width, Align) case BuiltinType::Id: |
#define | HLSL_INTANGIBLE_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::Constant * | pointerAuthResignConstant (llvm::Value *Ptr, const CGPointerAuthInfo &CurAuthInfo, const CGPointerAuthInfo &NewAuthInfo, CodeGenModule &CGM) |
static llvm::Constant * | pointerAuthResignMemberFunctionPointer (llvm::Constant *Src, QualType DestType, QualType SrcType, CodeGenModule &CGM) |
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]. | |
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, const CXXRecordDecl *UnadjustedClass, 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. | |
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. | |
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. | |
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. | |
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. | |
static bool | IsIncompleteClassType (const RecordType *RecordTy) |
IsIncompleteClassType - Returns whether the given record type is incomplete. | |
static bool | ContainsIncompleteClassType (QualType Ty) |
ContainsIncompleteClassType - Returns whether the given type contains an incomplete class type. | |
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. | |
static unsigned | ComputeVMIClassTypeInfoFlags (const CXXBaseSpecifier *Base, SeenBases &Bases) |
ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in abi::__vmi_class_type_info. | |
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 . | |
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. | |
static void | InitCatchParam (CodeGenFunction &CGF, const VarDecl &CatchParam, Address ParamAddr, SourceLocation Loc) |
A "special initializer" callback for initializing a catch parameter during catch initialization. | |
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++. | |
#define ABSTRACT_TYPE | ( | Class, | |
Base | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Base | |||
) |
#define AMDGPU_TYPE | ( | Name, | |
Id, | |||
SingletonId, | |||
Width, | |||
Align | |||
) | case BuiltinType::Id: |
#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 HLSL_INTANGIBLE_TYPE | ( | Name, | |
Id, | |||
SingletonId | |||
) | case BuiltinType::Id: |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) | case BuiltinType::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 4858 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 3849 of file ItaniumCXXABI.cpp.
References clang::AS_public, clang::CXXRecordDecl::bases_begin(), 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 1538 of file ItaniumCXXABI.cpp.
References clang::AS_public, clang::CharUnits::fromQuantity(), clang::ASTContext::getASTRecordLayout(), clang::ASTRecordLayout::getBaseClassOffset(), clang::CXXRecordDecl::isDerivedFrom(), and Path.
|
static |
ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in abi::__vmi_class_type_info.
Definition at line 4381 of file ItaniumCXXABI.cpp.
References ComputeVMIClassTypeInfoFlags().
Referenced by ComputeVMIClassTypeInfoFlags().
|
static |
Definition at line 4416 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 3825 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), and IsIncompleteClassType().
Referenced by ContainsIncompleteClassType(), extractPBaseFlags(), and getTypeInfoLinkage().
|
static |
|
static |
Definition at line 1996 of file ItaniumCXXABI.cpp.
References D, clang::FunctionDecl::doesThisDeclarationHaveABody(), clang::Decl::hasAttr(), clang::FunctionDecl::isInlined(), clang::FunctionDecl::isPureVirtual(), clang::DeclContext::noload_decls(), and clang::T.
|
static |
Definition at line 4702 of file ItaniumCXXABI.cpp.
References clang::AliasDecl, 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 2865 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::CreateRuntimeVariable(), dtorTy(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenTypes::getCodeGenOpts(), clang::CodeGen::CodeGenModule::getContext(), clang::ASTContext::getDefaultCallingConvention(), clang::CodeGen::CodeGenModule::getFunctionPointer(), clang::ASTContext::getFunctionType(), clang::CodeGen::CodeGenFunction::getLLVMContext(), clang::CodeGen::CodeGenFunction::getTarget(), clang::TargetInfo::getTriple(), clang::CodeGen::CodeGenFunction::getTypes(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::CodeGen::CodeGenTypeCache::IntTy, clang::T, clang::CodeGen::CodeGenTypeCache::UnqualPtrTy, and clang::ASTContext::VoidTy.
|
static |
Compute the flags for a __pbase_type_info, and remove the corresponding pieces from Type
.
Definition at line 4515 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::EST_None, clang::Type::getAs(), and clang::ASTContext::getFunctionTypeWithExceptionSpec().
|
static |
Definition at line 1444 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::CodeGenTypeCache::SizeTy.
|
static |
Definition at line 1530 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 1588 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 4800 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 5096 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenTypes::arrangeBuiltinFunctionDeclaration(), clang::C, 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::CodeGen::CodeGenModule::SetLLVMFunctionAttributes(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), and clang::CodeGen::CodeGenModule::supportsCOMDAT().
|
static |
Definition at line 4665 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 4808 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 4816 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
Referenced by InitCatchParam().
|
static |
Definition at line 2621 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 2596 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 2609 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 1504 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 3078 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getLLVMLinkageVarDefinition(), and isThreadWrapperReplaceable().
|
static |
Definition at line 1453 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 4036 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::External, clang::CodeGen::CodeGenModule::getContext(), clang::CXXRecordDecl::getDefinitionOrSelf(), 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 4873 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::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, clang::CodeGen::TEK_Scalar, and clang::CodeGen::CodeGenTypeCache::UnqualPtrTy.
|
static |
IsIncompleteClassType - Returns whether the given record type is incomplete.
Definition at line 3808 of file ItaniumCXXABI.cpp.
References clang::RecordDecl::getDefinitionOrSelf(), clang::RecordType::getOriginalDecl(), 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 3748 of file ItaniumCXXABI.cpp.
References TypeInfoIsInStandardLibrary().
|
static |
Definition at line 3065 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 2378 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::Address::emitRawPointer(), clang::CharUnits::fromQuantity(), clang::CodeGen::CodeGenFunction::getContext(), clang::CodeGen::CodeGenModule::getItaniumVTableContext(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::ASTContext::getPointerDiffType(), clang::CodeGen::CodeGenFunction::GetVTablePtr(), clang::CodeGen::CodeGenTypeCache::Int32Ty, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::ItaniumVTableContext::isRelativeLayout(), V, and clang::CodeGen::Address::withElementType().
|
static |
Definition at line 897 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getConstantSignedPointer(), clang::CodeGen::CGPointerAuthInfo::getDiscriminator(), and clang::CodeGen::CGPointerAuthInfo::getKey().
Referenced by pointerAuthResignMemberFunctionPointer().
|
static |
Definition at line 1037 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::getMemberFunctionPointerAuthInfo(), clang::Type::isMemberFunctionPointerType(), and pointerAuthResignConstant().
|
static |
Definition at line 2010 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 3765 of file ItaniumCXXABI.cpp.
References false, clang::CodeGen::CodeGenModule::getContext(), clang::CXXRecordDecl::getDefinitionOrSelf(), clang::ASTContext::getLangOpts(), clang::CodeGen::CodeGenModule::getTarget(), clang::CodeGen::CodeGenModule::getTriple(), clang::CodeGen::CodeGenModule::getVTables(), clang::Decl::hasAttr(), clang::CXXRecordDecl::hasDefinition(), clang::TargetInfo::hasPS4DLLImportExport(), clang::CXXRecordDecl::isDynamicClass(), and clang::CodeGen::CodeGenVTables::isVTableExternal().
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 3615 of file ItaniumCXXABI.cpp.
References clang::BuiltinType::getKind().
Referenced by IsStandardLibraryRTTIDescriptor(), and TypeInfoIsInStandardLibrary().
|
static |
Definition at line 3730 of file ItaniumCXXABI.cpp.
References clang::Qualifiers::empty(), clang::PointerType::getPointeeType(), clang::QualType::getQualifiers(), clang::Qualifiers::removeConst(), and TypeInfoIsInStandardLibrary().