|
clang 23.0.0git
|
#include "CIRGenCXXABI.h"#include "CIRGenFunction.h"#include "mlir/IR/Block.h"#include "mlir/IR/Location.h"#include "clang/CIR/MissingFeatures.h"#include "llvm/Support/SaveAndRestore.h"Go to the source code of this file.
Functions | |
| static const EHPersonality & | getCPersonality (const TargetInfo &target, const CodeGenOptions &cgOpts) |
| static const EHPersonality & | getObjCPersonality (const TargetInfo &target, const LangOptions &langOpts, const CodeGenOptions &cgOpts) |
| static const EHPersonality & | getCXXPersonality (const TargetInfo &target, const CodeGenOptions &cgOpts) |
| static const EHPersonality & | getObjCXXPersonality (const TargetInfo &target, const LangOptions &langOpts, const CodeGenOptions &cgOpts) |
| Determines the personality function to use when both C++ and Objective-C exceptions are being caught. | |
| static const EHPersonality & | getSEHPersonalityMSVC (const llvm::Triple &triple) |
| static llvm::StringRef | getPersonalityFn (CIRGenModule &cgm, const EHPersonality &personality) |
| static mlir::Value | callBeginCatch (CIRGenFunction &cgf, mlir::Value ehToken, mlir::Type exnPtrTy) |
| static cir::FuncOp | getOrCreateCopyThunk (CIRGenFunction &cgf, const VarDecl &catchParam, cir::PointerType paramAddrType, mlir::Location loc) |
Get or create the catch-init copy thunk for catchParam. | |
| static void | initCatchParam (CIRGenFunction &cgf, CIRGenBuilderTy &builder, mlir::Value ehToken, const VarDecl &catchParam, SourceLocation loc) |
| A "special initializer" callback for initializing a catch parameter during catch initialization. | |
|
static |
Definition at line 288 of file CIRGenException.cpp.
References clang::CIRGen::CIRGenFunction::ehStack, clang::CIRGen::CIRGenFunction::getBuilder(), and clang::CIRGen::NormalAndEHCleanup.
Referenced by clang::CIRGen::CIRGenFunction::emitBeginCatch(), and initCatchParam().
|
static |
Definition at line 60 of file CIRGenException.cpp.
References clang::TargetInfo::getTriple(), clang::CIRGen::EHPersonality::GNU_C, clang::CIRGen::EHPersonality::GNU_C_SEH, clang::CIRGen::EHPersonality::GNU_C_SJLJ, clang::CodeGenOptions::hasDWARFExceptions(), clang::CodeGenOptions::hasSEHExceptions(), clang::CodeGenOptions::hasSjLjExceptions(), and clang::CIRGen::EHPersonality::MSVC_CxxFrameHandler3.
Referenced by clang::CIRGen::EHPersonality::get(), clang::CodeGen::EHPersonality::get(), getObjCPersonality(), and getObjCPersonality().
|
static |
Definition at line 103 of file CIRGenException.cpp.
References clang::TargetInfo::getTriple(), clang::CIRGen::EHPersonality::GNU_CPlusPlus, clang::CIRGen::EHPersonality::GNU_CPlusPlus_SEH, clang::CIRGen::EHPersonality::GNU_CPlusPlus_SJLJ, clang::CIRGen::EHPersonality::GNU_Wasm_CPlusPlus, clang::CodeGenOptions::hasDWARFExceptions(), clang::CodeGenOptions::hasSEHExceptions(), clang::CodeGenOptions::hasSjLjExceptions(), clang::CodeGenOptions::hasWasmExceptions(), clang::CIRGen::EHPersonality::MSVC_CxxFrameHandler3, and clang::CIRGen::EHPersonality::XL_CPlusPlus.
Referenced by clang::CIRGen::EHPersonality::get(), clang::CodeGen::EHPersonality::get(), getObjCXXPersonality(), and getObjCXXPersonality().
|
static |
Definition at line 74 of file CIRGenException.cpp.
References clang::ObjCRuntime::FragileMacOSX, clang::ObjCRuntime::GCC, getCPersonality(), clang::ObjCRuntime::getKind(), clang::TargetInfo::getTriple(), clang::ObjCRuntime::getVersion(), clang::CIRGen::EHPersonality::GNU_ObjC, clang::CIRGen::EHPersonality::GNU_ObjC_SEH, clang::CIRGen::EHPersonality::GNU_ObjC_SJLJ, clang::ObjCRuntime::GNUstep, clang::CIRGen::EHPersonality::GNUstep_ObjC, clang::CodeGenOptions::hasSEHExceptions(), clang::CodeGenOptions::hasSjLjExceptions(), clang::ObjCRuntime::iOS, clang::ObjCRuntime::MacOSX, clang::CIRGen::EHPersonality::MSVC_CxxFrameHandler3, clang::CIRGen::EHPersonality::NeXT_ObjC, clang::LangOptions::ObjCRuntime, clang::ObjCRuntime::ObjFW, and clang::ObjCRuntime::WatchOS.
Referenced by clang::CIRGen::EHPersonality::get(), clang::CodeGen::EHPersonality::get(), getObjCXXPersonality(), and getObjCXXPersonality().
|
static |
Determines the personality function to use when both C++ and Objective-C exceptions are being caught.
Definition at line 123 of file CIRGenException.cpp.
References clang::ObjCRuntime::FragileMacOSX, clang::ObjCRuntime::GCC, getCXXPersonality(), clang::ObjCRuntime::getKind(), getObjCPersonality(), clang::TargetInfo::getTriple(), clang::CIRGen::EHPersonality::GNU_ObjCXX, clang::ObjCRuntime::GNUstep, clang::ObjCRuntime::iOS, clang::ObjCRuntime::MacOSX, clang::CIRGen::EHPersonality::MSVC_CxxFrameHandler3, clang::LangOptions::ObjCRuntime, clang::ObjCRuntime::ObjFW, and clang::ObjCRuntime::WatchOS.
Referenced by clang::CIRGen::EHPersonality::get(), and clang::CodeGen::EHPersonality::get().
|
static |
Get or create the catch-init copy thunk for catchParam.
The copy thunk has signature void(T*, T*) (where T is the catch parameter type) and contains the normal aggregate emission of the catch parameter's init expression.
The thunk name is keyed off the catch parameter's canonical type mangled name, so a single translation unit emits at most one thunk per catch type.
Definition at line 309 of file CIRGenException.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::curFn, clang::CIRGen::AggValueSlot::DoesNotOverlap, clang::CIRGen::CIRGenFunction::emitAggExpr(), clang::OpaqueValueExpr::findInCopyConstruct(), clang::CIRGen::AggValueSlot::forAddr(), clang::CIRGen::CIRGenModule::getBuilder(), clang::CIRGen::CIRGenModule::getCXXABI(), clang::VarDecl::getInit(), clang::CIRGen::CIRGenCXXABI::getMangleContext(), clang::CIRGen::CIRGenModule::getModule(), clang::ValueDecl::getType(), clang::CIRGen::CIRGenModule::insertGlobalSymbol(), clang::CIRGen::AggValueSlot::IsNotAliased, clang::CIRGen::AggValueSlot::IsNotDestructed, clang::CIRGen::CIRGenModule::lookupFuncOp(), clang::CIRGen::CIRGenFunction::makeNaturalAddressForPointer(), clang::CIRGen::CIRGenFunction::makeNaturalAlignAddrLValue(), clang::MangleContext::mangleCanonicalTypeName(), and clang::CharUnits::Zero().
Referenced by initCatchParam().
|
static |
Definition at line 189 of file CIRGenException.cpp.
References clang::CIRGen::CIRGenModule::createRuntimeFunction(), clang::CIRGen::CIRGenModule::getBuilder(), and clang::CIRGen::EHPersonality::personalityFn.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXTryStmt(), and getOpaquePersonalityFn().
|
static |
Definition at line 155 of file CIRGenException.cpp.
References clang::CIRGen::EHPersonality::MSVC_C_specific_handler, and clang::CIRGen::EHPersonality::MSVC_except_handler.
Referenced by clang::CIRGen::EHPersonality::get(), and clang::CodeGen::EHPersonality::get().
|
static |
A "special initializer" callback for initializing a catch parameter during catch initialization.
Definition at line 384 of file CIRGenException.cpp.
References callBeginCatch(), clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::emitAutoVarAlloca(), clang::CIRGen::CIRGenFunction::emitAutoVarCleanups(), clang::CIRGen::CIRGenModule::getASTContext(), clang::ASTContext::getCanonicalType(), clang::CIRGen::CIRGenFunction::getEvaluationKind(), clang::VarDecl::getInit(), clang::CIRGen::CIRGenFunction::getLoc(), clang::Qualifiers::getObjCLifetime(), getOrCreateCopyThunk(), clang::CIRGen::Address::getPointer(), clang::CanQual< T >::getQualifiers(), clang::ValueDecl::getType(), cir::CIRBaseBuilderTy::getVoidPtrTy(), clang::isa(), kind, clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, cir::MissingFeatures::sanitizers(), and cir::TEK_Aggregate.
Referenced by clang::CIRGen::CIRGenFunction::emitBeginCatch().