clang 22.0.0git
|
#include "CIRGenCXXABI.h"
#include "CIRGenFunction.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/GlobalDecl.h"
#include "clang/AST/VTableBuilder.h"
#include "clang/CIR/MissingFeatures.h"
#include "llvm/Support/ErrorHandling.h"
#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/AMDGPUTypes.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) |
#define | EXT_OPAQUE_TYPE(ExtType, Id, Ext) |
#define | SVE_TYPE(Name, Id, SingletonId) |
#define | PPC_VECTOR_TYPE(Name, Id, Size) |
#define | RVV_TYPE(Name, Id, SingletonId) |
#define | AMDGPU_TYPE(Name, Id, SingletonId, Width, Align) |
#define | BUILTIN_TYPE(Id, SingletonId) |
#define | PLACEHOLDER_TYPE(Id, SingletonId) |
#define | TYPE(Class, Base) |
#define | ABSTRACT_TYPE(Class, Base) |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) |
#define | NON_CANONICAL_TYPE(Class, Base) |
#define | DEPENDENT_TYPE(Class, Base) |
#define | TYPE(Class, Base) |
#define | ABSTRACT_TYPE(Class, Base) |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) |
#define | NON_CANONICAL_TYPE(Class, Base) |
#define | DEPENDENT_TYPE(Class, Base) |
Functions | |
static StructorCIRGen | getCIRGenToUse (CIRGenModule &cgm, const CXXMethodDecl *md) |
static void | emitConstructorDestructorAlias (CIRGenModule &cgm, GlobalDecl aliasDecl, GlobalDecl targetDecl) |
static cir::GlobalLinkageKind | getTypeInfoLinkage (CIRGenModule &cgm, QualType ty) |
Return the linkage that the type info and type info name constants should have for the given type. | |
static void | insertThrowAndSplit (mlir::OpBuilder &builder, mlir::Location loc, mlir::Value exceptionPtr={}, mlir::FlatSymbolRefAttr typeInfo={}, mlir::FlatSymbolRefAttr dtor={}) |
static cir::FuncOp | getBadCastFn (CIRGenFunction &cgf) |
static CharUnits | computeOffsetHint (ASTContext &astContext, const CXXRecordDecl *src, const CXXRecordDecl *dst) |
static cir::FuncOp | getItaniumDynamicCastFn (CIRGenFunction &cgf) |
static Address | emitDynamicCastToVoid (CIRGenFunction &cgf, mlir::Location loc, QualType srcRecordTy, Address src) |
static cir::DynamicCastInfoAttr | emitDynamicCastInfo (CIRGenFunction &cgf, mlir::Location loc, QualType srcRecordTy, QualType destRecordTy) |
#define ABSTRACT_TYPE | ( | Class, | |
Base ) |
#define ABSTRACT_TYPE | ( | Class, | |
Base ) |
#define AMDGPU_TYPE | ( | Name, | |
Id, | |||
SingletonId, | |||
Width, | |||
Align ) |
#define BUILTIN_TYPE | ( | Id, | |
SingletonId ) |
#define DEPENDENT_TYPE | ( | Class, | |
Base ) |
#define DEPENDENT_TYPE | ( | Class, | |
Base ) |
#define EXT_OPAQUE_TYPE | ( | ExtType, | |
Id, | |||
Ext ) |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix ) |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base ) |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base ) |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base ) |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base ) |
#define PLACEHOLDER_TYPE | ( | Id, | |
SingletonId ) |
#define PPC_VECTOR_TYPE | ( | Name, | |
Id, | |||
Size ) |
#define RVV_TYPE | ( | Name, | |
Id, | |||
SingletonId ) |
#define SVE_TYPE | ( | Name, | |
Id, | |||
SingletonId ) |
#define TYPE | ( | Class, | |
Base ) |
#define TYPE | ( | Class, | |
Base ) |
|
static |
Definition at line 1873 of file CIRGenItaniumCXXABI.cpp.
References clang::AS_public, clang::CharUnits::fromQuantity(), clang::ASTContext::getASTRecordLayout(), and clang::ASTRecordLayout::getBaseClassOffset().
Referenced by emitDynamicCastInfo().
|
static |
Definition at line 268 of file CIRGenItaniumCXXABI.cpp.
References clang::cast(), clang::CIRGen::CIRGenModule::emitAliasForGlobal(), clang::CIRGen::CIRGenModule::getAddrOfGlobal(), clang::CIRGen::CIRGenModule::getFunctionLinkage(), clang::CIRGen::CIRGenModule::getGlobalValue(), and clang::CIRGen::CIRGenModule::getMangledName().
|
static |
Definition at line 1957 of file CIRGenItaniumCXXABI.cpp.
References clang::CIRGen::CIRGenFunction::cgm, computeOffsetHint(), clang::CIRGen::CIRGenFunction::convertType(), clang::CIRGen::CIRGenModule::getAddrOfRTTIDescriptor(), clang::Type::getAsCXXRecordDecl(), getBadCastFn(), clang::CIRGen::CIRGenFunction::getContext(), getItaniumDynamicCastFn(), clang::ASTContext::getPointerDiffType(), and clang::CharUnits::getQuantity().
|
static |
Definition at line 1948 of file CIRGenItaniumCXXABI.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenBuilderTy::createDynCastToVoid(), clang::CIRGen::Address::getAlignment(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenModule::getItaniumVTableContext(), clang::CIRGen::Address::getPointer(), and clang::ItaniumVTableContext::isRelativeLayout().
|
static |
Definition at line 1861 of file CIRGenItaniumCXXABI.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenModule::createRuntimeFunction(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenBuilderTy::getFuncType(), and cir::MissingFeatures::opFuncCallingConv().
Referenced by emitDynamicCastInfo().
|
static |
Definition at line 230 of file CIRGenItaniumCXXABI.cpp.
References clang::cast(), clang::Ctor_Complete, clang::Dtor_Complete, clang::CIRGen::CIRGenModule::getCodeGenOpts(), clang::CIRGen::CIRGenModule::getFunctionLinkage(), clang::CXXRecordDecl::getNumVBases(), clang::CXXMethodDecl::getParent(), clang::CIRGen::CIRGenModule::getTarget(), clang::TargetInfo::getTriple(), cir::isDiscardableIfUnused(), cir::isValidLinkage(), and cir::isWeakForLinker().
|
static |
Definition at line 1924 of file CIRGenItaniumCXXABI.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::convertType(), clang::CIRGen::CIRGenModule::createRuntimeFunction(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getContext(), clang::CIRGen::CIRGenBuilderTy::getFuncType(), clang::ASTContext::getPointerDiffType(), clang::CIRGen::CIRGenBuilderTy::getUInt8PtrTy(), cir::CIRBaseBuilderTy::getVoidPtrTy(), cir::MissingFeatures::opFuncCallingConv(), cir::MissingFeatures::opFuncNoUnwind(), cir::MissingFeatures::opFuncReadOnly(), and cir::MissingFeatures::opFuncWillReturn().
Referenced by emitDynamicCastInfo().
|
static |
Return the linkage that the type info and type info name constants should have for the given type.
Definition at line 999 of file CIRGenItaniumCXXABI.cpp.
References clang::cast(), clang::External, clang::CIRGen::CIRGenModule::getASTContext(), clang::CIRGen::CIRGenModule::getLangOpts(), clang::Type::getLinkage(), clang::ASTContext::getTargetInfo(), clang::CIRGen::CIRGenModule::getTriple(), clang::TargetInfo::getTriple(), clang::CIRGen::CIRGenModule::getVTableLinkage(), clang::Decl::hasAttr(), clang::Internal, clang::Invalid, clang::CXXRecordDecl::isDynamicClass(), clang::Module, clang::None, clang::UniqueExternal, and clang::VisibleNone.
|
static |
Definition at line 1575 of file CIRGenItaniumCXXABI.cpp.