clang 24.0.0git
CIRGenItaniumCXXABI.cpp File Reference
#include "CIRGenCXXABI.h"
#include "CIRGenFunction.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/GlobalDecl.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/TypeBase.h"
#include "clang/AST/VTableBuilder.h"
#include "clang/CIR/MissingFeatures.h"
#include "clang/CodeGenUtils/ItaniumCXXABIUtils.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "clang/AST/TypeNodes.inc"

Go to the source code of this file.

Macros

#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 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)
static mlir::Value performTypeAdjustment (CIRGenFunction &cgf, Address initialPtr, const CXXRecordDecl *unadjustedClass, int64_t nonVirtualAdjustment, int64_t virtualAdjustment, bool isReturnAdjustment)

Macro Definition Documentation

◆ ABSTRACT_TYPE [1/2]

#define ABSTRACT_TYPE ( Class,
Base )

◆ ABSTRACT_TYPE [2/2]

#define ABSTRACT_TYPE ( Class,
Base )

◆ DEPENDENT_TYPE [1/2]

#define DEPENDENT_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ DEPENDENT_TYPE [2/2]

#define DEPENDENT_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ NON_CANONICAL_TYPE [1/2]

#define NON_CANONICAL_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ NON_CANONICAL_TYPE [2/2]

#define NON_CANONICAL_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ NON_CANONICAL_UNLESS_DEPENDENT_TYPE [1/2]

#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ NON_CANONICAL_UNLESS_DEPENDENT_TYPE [2/2]

#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE ( Class,
Base )
Value:
case Type::Class:

◆ TYPE [1/2]

#define TYPE ( Class,
Base )

◆ TYPE [2/2]

#define TYPE ( Class,
Base )

Function Documentation

◆ emitCallToBadCast()

◆ emitConstructorDestructorAlias()

◆ emitDynamicCastInfo()

◆ emitDynamicCastToVoid()

◆ emitExactDynamicCast()

◆ getBadCastFn()

◆ getCIRGenToUse()

◆ getItaniumDynamicCastFn()

◆ getTypeInfoLinkage()

◆ insertThrowAndSplit()

void insertThrowAndSplit ( mlir::OpBuilder & builder,
mlir::Location loc,
mlir::Value exceptionPtr = {},
mlir::FlatSymbolRefAttr typeInfo = {},
mlir::FlatSymbolRefAttr dtor = {} )
static

Definition at line 1474 of file CIRGenItaniumCXXABI.cpp.

◆ performTypeAdjustment()