|
clang 24.0.0git
|
#include "CIRGenFunction.h"#include "mlir/Support/LLVM.h"#include "clang/AST/StmtCXX.h"#include "clang/AST/StmtVisitor.h"#include "clang/Basic/TargetInfo.h"#include "clang/CIR/Dialect/IR/CIRDialect.h"#include "clang/CIR/MissingFeatures.h"Go to the source code of this file.
Classes | |
| struct | clang::CIRGen::CGCoroData |
Functions | |
| static void | createCoroData (CIRGenFunction &cgf, CIRGenFunction::CGCoroInfo &curCoro, cir::CoroIdOp coroId, CallExpr const *coroIdExpr=nullptr) |
| static mlir::LogicalResult | emitBodyAndFallthrough (CIRGenFunction &cgf, const CoroutineBodyStmt &s, Stmt *body, const CIRGenFunction::LexicalScope *currLexScope) |
| static mlir::LogicalResult | coroutineBodyExceptionHelper (CIRGenFunction &cgf, const CoroutineBodyStmt &s) |
| static bool | functionCanThrow (const FunctionDecl *d) |
| static bool | stmtCanThrow (const Stmt *s) |
| static bool | isResumeExprInTryCatch (const CGCoroData &coro, cir::AwaitKind kind, const CoroutineSuspendExpr &s) |
| static LValueOrRValue | emitSuspendExpression (CIRGenFunction &cgf, CGCoroData &coro, CoroutineSuspendExpr const &s, cir::AwaitKind kind, AggValueSlot aggSlot, bool ignoreResult, mlir::Block *scopeParentBlock, mlir::Value &tmpResumeRValAddr, bool forLValue) |
| static RValue | emitSuspendExpr (CIRGenFunction &cgf, const CoroutineSuspendExpr &e, cir::AwaitKind kind, AggValueSlot aggSlot, bool ignoreResult) |
| static QualType | getCoroutineSuspendExprReturnType (const ASTContext &ctx, const CoroutineSuspendExpr *e) |
| static LValue | emitSuspendLValue (CIRGenFunction &cgf, const CoroutineSuspendExpr *e, cir::AwaitKind kind) |
|
static |
Definition at line 316 of file CIRGenCoroutine.cpp.
References clang::CXXTryStmt::Create(), clang::CIRGen::CIRGenFunction::curCoro, clang::CIRGen::CIRGenFunction::curLexScope, clang::CIRGen::CIRGenFunction::CGCoroInfo::data, emitBodyAndFallthrough(), clang::CIRGen::CIRGenFunction::emitCXXTryStmt(), clang::CoroutineBodyStmt::getBeginLoc(), clang::CoroutineBodyStmt::getBody(), and clang::CIRGen::CIRGenFunction::getContext().
|
static |
Definition at line 131 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::curCoro, clang::CIRGen::CIRGenFunction::CGCoroInfo::data, and clang::CIRGen::CIRGenModule::error().
Referenced by clang::CIRGen::CIRGenFunction::emitCoroIDBuiltinCall(), clang::CodeGen::CodeGenFunction::EmitCoroutineBody(), clang::CIRGen::CIRGenFunction::emitCoroutineBody(), and clang::CodeGen::CodeGenFunction::EmitCoroutineIntrinsic().
|
static |
Definition at line 155 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CIRGenFunction::emitStmt(), clang::CoroutineBodyStmt::getFallthroughHandler(), and clang::CIRGen::CIRGenFunction::LexicalScope::hasCoreturn().
Referenced by coroutineBodyExceptionHelper(), and clang::CodeGen::CodeGenFunction::EmitCoroutineBody().
|
static |
Definition at line 899 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CIRGenFunction::curCoro, clang::CIRGen::CIRGenFunction::curLexScope, clang::CIRGen::CIRGenFunction::CGCoroInfo::data, emitSuspendExpression(), clang::CIRGen::RValue::get(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::RValue::getComplex(), clang::CIRGen::RValue::getComplexValue(), clang::CIRGen::CIRGenFunction::LexicalScope::getEntryBlock(), clang::CIRGen::CIRGenFunction::getLoc(), clang::Stmt::getSourceRange(), clang::CIRGen::RValue::getValue(), clang::CIRGen::RValue::isAggregate(), clang::CIRGen::RValue::isIgnored(), clang::CIRGen::RValue::isScalar(), and kind.
Referenced by clang::CIRGen::CIRGenFunction::emitCoawaitExpr(), and clang::CIRGen::CIRGenFunction::emitCoyieldExpr().
|
static |
Definition at line 700 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CIRGenFunction::cgm, clang::CIRGen::CIRGenFunction::createAggTemp(), clang::CIRGen::CIRGenFunction::currentFullExprCleanupScope, clang::CIRGen::CIRGenFunction::ehStack, clang::CIRGen::CIRGenModule::errorNYI(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getLoc(), clang::CoroutineSuspendExpr::getOpaqueValue(), clang::CoroutineSuspendExpr::getResumeExpr(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::CIRGen::AggValueSlot::isExternallyDestructed(), clang::CIRGen::AggValueSlot::isIgnored(), isResumeExprInTryCatch(), kind, clang::CIRGen::CIRGenFunction::resumeExprDefersCleanups(), clang::CIRGen::AggValueSlot::setExternallyDestructed(), and clang::CIRGen::EHScopeStack::stable_begin().
Referenced by clang::CodeGen::CodeGenFunction::EmitCoawaitExpr(), clang::CodeGen::CodeGenFunction::EmitCoawaitLValue(), clang::CodeGen::CodeGenFunction::EmitCoyieldExpr(), clang::CodeGen::CodeGenFunction::EmitCoyieldLValue(), emitSuspendExpr(), and emitSuspendLValue().
|
static |
Definition at line 961 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CIRGenFunction::convertType(), clang::CIRGen::CIRGenFunction::curCoro, clang::CIRGen::CIRGenFunction::curLexScope, clang::CIRGen::CIRGenFunction::CGCoroInfo::data, emitSuspendExpression(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::CIRGenFunction::getContext(), getCoroutineSuspendExprReturnType(), clang::CIRGen::CIRGenFunction::LexicalScope::getEntryBlock(), clang::CIRGen::CIRGenFunction::getLoc(), cir::CIRBaseBuilderTy::getNullPtr(), clang::Type::getPointeeType(), clang::CIRGen::Address::getPointer(), cir::CIRBaseBuilderTy::getPointerTo(), clang::Stmt::getSourceRange(), clang::CIRGen::AggValueSlot::ignored(), clang::Type::isReferenceType(), isResumeExprInTryCatch(), kind, clang::CIRGen::CIRGenFunction::makeNaturalAlignAddrLValue(), and clang::CIRGen::Address::withPointer().
Referenced by clang::CIRGen::CIRGenFunction::emitCoawaitLValue(), and clang::CIRGen::CIRGenFunction::emitCoyieldLValue().
|
static |
Definition at line 645 of file CIRGenCoroutine.cpp.
References clang::CT_Cannot, clang::Type::getAs(), clang::ValueDecl::getType(), and clang::isNoexceptExceptionSpec().
Referenced by stmtCanThrow().
|
static |
Definition at line 954 of file CIRGenCoroutine.cpp.
References clang::cast(), clang::CoroutineSuspendExpr::getResumeExpr(), and clang::isa().
Referenced by clang::CodeGen::CodeGenFunction::EmitCoawaitLValue(), clang::CodeGen::CodeGenFunction::EmitCoyieldLValue(), and emitSuspendLValue().
|
static |
Definition at line 693 of file CIRGenCoroutine.cpp.
References clang::CIRGen::CGCoroData::exceptionHandler, clang::CoroutineSuspendExpr::getResumeExpr(), kind, and stmtCanThrow().
Referenced by emitSuspendExpression(), and emitSuspendLValue().
Definition at line 653 of file CIRGenCoroutine.cpp.
References clang::Stmt::children(), and functionCanThrow().
Referenced by isResumeExprInTryCatch().