clang
7.0.0
|
#include "CGCXXABI.h"
#include "CGCleanup.h"
#include "CGRecordLayout.h"
#include "CGVTables.h"
#include "CodeGenFunction.h"
#include "CodeGenModule.h"
#include "TargetInfo.h"
#include "clang/CodeGen/ConstantInitBuilder.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/Type.h"
#include "clang/AST/StmtCXX.h"
#include "llvm/IR/CallSite.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 "clang/Basic/OpenCLImageTypes.def"
#include "clang/AST/BuiltinTypes.def"
#include "clang/AST/TypeNodes.def"
Go to the source code of this file.
Macros | |
#define | IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) 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: |
Enumerations | |
enum | StructorCodegen |
Functions | |
static llvm::Constant * | getAllocateExceptionFn (CodeGenModule &CGM) |
static llvm::Constant * | getThrowFn (CodeGenModule &CGM) |
static llvm::Constant * | getItaniumDynamicCastFn (CodeGenFunction &CGF) |
static llvm::Constant * | 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::Constant * | getBadTypeidFn (CodeGenFunction &CGF) |
static llvm::Value * | performTypeAdjustment (CodeGenFunction &CGF, Address InitialPtr, int64_t NonVirtualAdjustment, int64_t VirtualAdjustment, bool IsReturnAdjustment) |
static llvm::Constant * | getGuardAcquireFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static llvm::Constant * | getGuardReleaseFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static llvm::Constant * | getGuardAbortFn (CodeGenModule &CGM, llvm::PointerType *GuardPtrTy) |
static void | emitGlobalDtorWithCXAAtExit (CodeGenFunction &CGF, llvm::Constant *dtor, llvm::Constant *addr, bool TLS) |
Register a global destructor using __cxa_atexit. More... | |
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::Constant * | getBeginCatchFn (CodeGenModule &CGM) |
static llvm::Constant * | getEndCatchFn (CodeGenModule &CGM) |
static llvm::Constant * | 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::Constant * | getClangCallTerminateFn (CodeGenModule &CGM) |
Get or define the following function: void (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 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 TYPE | ( | Class, | |
Base | |||
) |
#define TYPE | ( | Class, | |
Base | |||
) |
|
strong |
Definition at line 3726 of file ItaniumCXXABI.cpp.
|
static |
Emits a call to __cxa_begin_catch and enters a cleanup to call __cxa_end_catch.
EndMightThrow | - true if __cxa_end_catch might throw |
Definition at line 3921 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), getBeginCatchFn(), and clang::CodeGen::NormalAndEHCleanup.
Referenced by InitCatchParam().
|
static |
Definition at line 2972 of file ItaniumCXXABI.cpp.
References clang::AS_public, clang::Auto, clang::CXXRecordDecl::bases_begin(), clang::CodeGen::CodeGenTypes::ConvertType(), clang::CXXBaseSpecifier::getAccessSpecifier(), clang::Type::getAs(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getModule(), clang::CXXRecordDecl::getNumBases(), clang::ASTContext::getPointerDiffType(), clang::CXXBaseSpecifier::getType(), clang::Type::getTypeClass(), clang::CodeGen::CodeGenModule::getTypes(), clang::CXXRecordDecl::hasDefinition(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CXXRecordDecl::isDynamicClass(), clang::CXXRecordDecl::isEmpty(), clang::CXXBaseSpecifier::isVirtual(), clang::CodeGen::CodeGenModule::setDSOLocal(), and clang::CodeGen::Type.
|
static |
Compute the src2dst_offset hint as described in the Itanium C++ ABI [2.9.7].
Definition at line 1253 of file ItaniumCXXABI.cpp.
Referenced by getBadTypeidFn().
|
static |
ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in abi::__vmi_class_type_info.
Definition at line 3441 of file ItaniumCXXABI.cpp.
References clang::Type::getAs(), clang::CXXBaseSpecifier::getType(), and clang::CXXBaseSpecifier::isVirtual().
|
static |
Definition at line 3478 of file ItaniumCXXABI.cpp.
ContainsIncompleteClassType - Returns whether the given type contains an incomplete class type.
This is true if
Definition at line 2947 of file ItaniumCXXABI.cpp.
References IsIncompleteClassType().
Referenced by extractPBaseFlags(), and getTypeInfoLinkage().
|
static |
Definition at line 3765 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::addReplacement(), clang::CodeGen::Base, clang::CodeGen::CodeGenModule::codegenCXXStructor(), clang::CodeGen::Complete, clang::serialized_diags::create(), clang::Ctor_Base, clang::Ctor_Complete, clang::Dtor_Base, clang::Dtor_Complete, clang::CodeGen::CodeGenModule::GetAddrOfGlobal(), getCodegenToUse(), clang::CodeGen::CodeGenModule::getFunctionLinkage(), clang::CodeGen::CodeGenModule::GetGlobalValue(), clang::CodeGen::CodeGenModule::getMangledName(), clang::CodeGen::CodeGenModule::SetCommonAttributes(), and clang::CodeGen::CodeGenModule::TryEmitBaseDestructorAsAlias().
|
static |
Register a global destructor using __cxa_atexit.
Definition at line 2251 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::CreateRuntimeVariable(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenFunction::getTarget(), clang::TargetInfo::getTriple(), clang::HiddenVisibility, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::CodeGen::CodeGenTypeCache::IntTy, clang::CodeGen::Type, and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Compute the flags for a __pbase_type_info, and remove the corresponding pieces from Type
.
Definition at line 3578 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::CodeGen::CodeGenTypes::ConvertType(), clang::DefaultVisibility, clang::EST_None, clang::ExternalLinkage, clang::Type::getAs(), clang::MemberPointerType::getClass(), clang::CodeGen::CodeGenModule::getContext(), clang::ASTContext::getFunctionTypeWithExceptionSpec(), clang::CodeGen::CodeGenModule::GetLLVMVisibility(), clang::MemberPointerType::getPointeeType(), clang::CodeGen::CodeGenModule::getTypes(), clang::QualType::getUnqualifiedType(), clang::NamedDecl::getVisibility(), clang::Type::getVisibility(), clang::Decl::hasAttr(), clang::QualType::isConstQualified(), IsIncompleteClassType(), clang::QualType::isRestrictQualified(), clang::QualType::isVolatileQualified(), clang::CodeGen::Type, and clang::ASTContext::UnsignedIntTy.
|
static |
Definition at line 1168 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, and clang::CodeGen::CodeGenTypeCache::SizeTy.
Referenced by getThrowFn().
|
static |
Definition at line 1245 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
Referenced by getBadTypeidFn().
|
static |
Definition at line 1303 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::CGM, computeOffsetHint(), clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CGBuilderTy::CreateAlignedLoad(), clang::CodeGen::CodeGenFunction::createBasicBlock(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::Ctor_Base, clang::Ctor_Complete, clang::CodeGen::CodeGenFunction::EmitBlock(), clang::CodeGen::CodeGenFunction::EmitCastToVoidPtr(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenFunction::EmitRuntimeCallOrInvoke(), clang::CodeGen::CodeGenModule::GetAddrOfRTTIDescriptor(), clang::Type::getAs(), clang::Type::getAsCXXRecordDecl(), getBadCastFn(), clang::CodeGen::CodeGenFunction::getContext(), getItaniumDynamicCastFn(), clang::CXXMethodDecl::getParent(), clang::CodeGen::Address::getPointer(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::ASTContext::getPointerDiffType(), clang::CharUnits::getQuantity(), clang::QualType::getUnqualifiedType(), clang::CodeGen::CodeGenFunction::GetVTablePtr(), clang::CXXRecordDecl::isAbstract(), clang::Type::isReferenceType(), clang::CodeGen::Type, and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 3865 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 (i8* exn) nounwind noreturn This code is used only in C++.
Definition at line 4156 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::Create(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::CurrentFuncletPad, clang::CodeGen::CodeGenFunction::EHStack, clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), getBeginCatchFn(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::CodeGen::CodeGenModule::getLLVMContext(), clang::CodeGen::CodeGenModule::getModule(), clang::CodeGen::CodeGenTypeCache::getRuntimeCC(), clang::CodeGen::CodeGenFunction::getTarget(), clang::CodeGen::CodeGenModule::getTerminateFn(), clang::CodeGen::CodeGenFunction::GetVTablePtr(), clang::TargetInfo::hasFeature(), clang::HiddenVisibility, clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::NormalCleanup, clang::CodeGen::CodeGenModule::supportsCOMDAT(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 3728 of file ItaniumCXXABI.cpp.
References 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().
Referenced by emitConstructorDestructorAlias().
|
static |
Definition at line 3873 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
Referenced by getGetExceptionPtrFn().
|
static |
Definition at line 3881 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenFunction::EmitRuntimeCallOrInvoke(), getEndCatchFn(), and clang::CodeGen::CodeGenTypeCache::Int8PtrTy.
Referenced by InitCatchParam().
|
static |
Definition at line 2038 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 2013 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 2026 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenModule::getLLVMContext(), and clang::CodeGen::CodeGenTypeCache::VoidTy.
|
static |
Definition at line 1222 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::Int8PtrTy, and clang::CodeGen::Type.
Referenced by getBadTypeidFn().
|
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 2375 of file ItaniumCXXABI.cpp.
References clang::Create(), clang::CodeGen::CodeGenModule::getLLVMLinkageVarDefinition(), clang::QualType::getNonReferenceType(), clang::ValueDecl::getType(), clang::VarDecl::hasDefinition(), clang::HiddenVisibility, clang::Type::isReferenceType(), and isThreadWrapperReplaceable().
|
static |
Definition at line 1177 of file ItaniumCXXABI.cpp.
References clang::CodeGen::Complete, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CodeGenModule::CreateRuntimeFunction(), clang::CodeGen::CodeGenFunction::EmitAnyExprToExn(), clang::CodeGen::CodeGenFunction::EmitNoreturnRuntimeCallOrInvoke(), clang::CodeGen::CodeGenFunction::EmitNounwindRuntimeCall(), getAllocateExceptionFn(), clang::Type::getAs(), clang::CXXRecordDecl::getDestructor(), clang::CXXThrowExpr::getSubExpr(), clang::Expr::getType(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::Type, and clang::CodeGen::CodeGenTypeCache::VoidTy.
Referenced by emitCXXDestructor().
|
static |
Return the linkage that the type info and type info name constants should have for the given type.
Definition at line 3127 of file ItaniumCXXABI.cpp.
References ContainsIncompleteClassType(), clang::ExternalLinkage, clang::QualType::getCanonicalType(), clang::CodeGen::CodeGenModule::getContext(), clang::CodeGen::CodeGenModule::getLangOpts(), clang::Type::getLinkage(), clang::ASTContext::getTargetInfo(), clang::CodeGen::CodeGenModule::getTriple(), clang::TargetInfo::getTriple(), clang::CodeGen::CodeGenModule::getVTableLinkage(), clang::Decl::hasAttr(), clang::InternalLinkage, clang::CXXRecordDecl::isDynamicClass(), clang::ModuleInternalLinkage, clang::ModuleLinkage, clang::NoLinkage, ShouldUseExternalRTTIDescriptor(), clang::UniqueExternalLinkage, and clang::VisibleNoLinkage.
|
static |
A "special initializer" callback for initializing a catch parameter during catch initialization.
Definition at line 3934 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, CallBeginCatch(), clang::CodeGen::CodeGenFunction::CGM, clang::CodeGen::CodeGenFunction::ConvertTypeForMem(), clang::CodeGen::CGBuilderTy::CreateBitCast(), 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::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::Address::getPointer(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::CanQual< T >::getQualifiers(), clang::CodeGen::TargetCodeGenInfo::getSizeOfUnwindException(), clang::CodeGen::CodeGenModule::getTargetCodeGenInfo(), clang::ValueDecl::getType(), clang::CodeGen::AggValueSlot::IsNotAliased, clang::CodeGen::AggValueSlot::IsNotDestructed, clang::Type::isRecordType(), 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::EHScopeStack::popTerminate(), clang::CodeGen::EHScopeStack::pushTerminate(), clang::CodeGen::TEK_Aggregate, clang::CodeGen::TEK_Complex, clang::CodeGen::TEK_Scalar, and clang::CodeGen::Type.
|
static |
IsIncompleteClassType - Returns whether the given record type is incomplete.
Definition at line 2932 of file ItaniumCXXABI.cpp.
References clang::RecordType::getDecl(), and clang::TagDecl::isCompleteDefinition().
Referenced by ContainsIncompleteClassType(), and extractPBaseFlags().
IsStandardLibraryRTTIDescriptor - Returns whether the type information for the given type exists in the standard library.
Definition at line 2876 of file ItaniumCXXABI.cpp.
References TypeInfoIsInStandardLibrary().
|
static |
Definition at line 2362 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 1801 of file ItaniumCXXABI.cpp.
References clang::CodeGen::CodeGenFunction::Builder, clang::CodeGen::CodeGenFunction::ConvertType(), clang::CodeGen::CGBuilderTy::CreateAlignedLoad(), clang::CodeGen::CGBuilderTy::CreateBitCast(), clang::CodeGen::CGBuilderTy::CreateConstInBoundsByteGEP(), clang::CodeGen::CGBuilderTy::CreateConstInBoundsGEP(), clang::CodeGen::CGBuilderTy::CreateElementBitCast(), clang::CodeGen::CGBuilderTy::CreateLoad(), clang::CodeGen::CGBuilderTy::CreateStore(), clang::CodeGen::CodeGenFunction::CurGD, clang::ast_matchers::expr, clang::CharUnits::fromQuantity(), clang::CodeGen::RValue::get(), clang::CodeGen::Address::getAddressSpace(), clang::CodeGen::CodeGenFunction::getContext(), clang::GlobalDecl::getDecl(), clang::CodeGen::Address::getElementType(), clang::CXXNewExpr::getOperatorNew(), clang::CodeGen::Address::getPointer(), clang::CodeGen::CodeGenTypeCache::getPointerAlign(), clang::ASTContext::getPointerDiffType(), clang::CodeGen::CodeGenTypeCache::getSizeSize(), clang::CodeGen::Address::getType(), clang::ASTContext::getTypeAlignInChars(), clang::CodeGen::CodeGenTypeCache::Int8PtrTy, clang::CodeGen::CodeGenTypeCache::Int8Ty, clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::CharUnits::isZero(), clang::ReturnAdjustment::VirtualAdjustment::Itanium, clang::ThisAdjustment::VirtualAdjustment::Itanium, max(), clang::ReturnAdjustment::NonVirtual, clang::ThisAdjustment::NonVirtual, clang::CodeGen::CodeGenFunction::ReturnValue, clang::CodeGen::CodeGenTypeCache::SizeTy, clang::CodeGen::Type, clang::ReturnAdjustment::VirtualAdjustment::VBaseOffsetOffset, clang::ThisAdjustment::VirtualAdjustment::VCallOffsetOffset, clang::ReturnAdjustment::Virtual, and clang::ThisAdjustment::Virtual.
|
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 2893 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 2762 of file ItaniumCXXABI.cpp.
References clang::BuiltinType::getKind().
Referenced by IsStandardLibraryRTTIDescriptor(), and TypeInfoIsInStandardLibrary().
|
static |
Definition at line 2858 of file ItaniumCXXABI.cpp.
References clang::Qualifiers::empty(), clang::PointerType::getPointeeType(), clang::QualType::getQualifiers(), clang::Qualifiers::removeConst(), and TypeInfoIsInStandardLibrary().