|
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 void | emitCallToBadCast (CIRGenFunction &cgf, mlir::Location loc) |
| 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 mlir::Value | emitExactDynamicCast (CIRGenItaniumCXXABI &abi, CIRGenFunction &cgf, mlir::Location loc, QualType srcRecordTy, QualType destRecordTy, cir::PointerType destCIRTy, bool isRefCast, 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 1897 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 1882 of file CIRGenItaniumCXXABI.cpp.
References clang::CIRGen::CIRGenFunction::emitRuntimeCall(), getBadCastFn(), clang::CIRGen::CIRGenFunction::getBuilder(), and cir::MissingFeatures::opFuncCallingConv().
Referenced by emitExactDynamicCast().
|
static |
Definition at line 279 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 2111 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 1972 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().
Referenced by emitExactDynamicCast().
|
static |
Definition at line 1981 of file CIRGenItaniumCXXABI.cpp.
References cir::MissingFeatures::addressSpace(), clang::AS_public, cir::CIRBaseBuilderTy::createBitcast(), cir::CIRBaseBuilderTy::createCompare(), clang::CIRGen::CIRGenBuilderTy::createLoad(), cir::CIRBaseBuilderTy::createNot(), cir::CIRBaseBuilderTy::createYield(), emitCallToBadCast(), emitDynamicCastToVoid(), clang::CIRGen::Address::getAlignment(), clang::Type::getAsCXXRecordDecl(), clang::ASTContext::getASTRecordLayout(), clang::ASTRecordLayout::getBaseClassOffset(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenBuilderTy::getConstInt(), clang::CIRGen::CIRGenFunction::getContext(), cir::CIRBaseBuilderTy::getNullPtr(), clang::CIRGen::Address::getPointer(), cir::CIRBaseBuilderTy::getPointerTo(), clang::CIRGen::CIRGenBuilderTy::getUInt64Ty(), clang::CIRGen::CIRGenBuilderTy::getUInt8PtrTy(), clang::ASTRecordLayout::getVBaseClassOffset(), clang::CXXRecordDecl::isDerivedFrom(), cir::MissingFeatures::opTBAA(), and clang::CharUnits::Zero().
|
static |
Definition at line 1871 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 emitCallToBadCast(), and emitDynamicCastInfo().
|
static |
Definition at line 241 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 1948 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 1009 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 1585 of file CIRGenItaniumCXXABI.cpp.