clang 24.0.0git
CIRGenCoroutine.cpp File Reference
#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)

Function Documentation

◆ coroutineBodyExceptionHelper()

◆ createCoroData()

◆ emitBodyAndFallthrough()

◆ emitSuspendExpr()

◆ emitSuspendExpression()

◆ emitSuspendLValue()

◆ functionCanThrow()

bool functionCanThrow ( const FunctionDecl * d)
static

◆ getCoroutineSuspendExprReturnType()

◆ isResumeExprInTryCatch()

bool isResumeExprInTryCatch ( const CGCoroData & coro,
cir::AwaitKind kind,
const CoroutineSuspendExpr & s )
static

◆ stmtCanThrow()

bool stmtCanThrow ( const Stmt * s)
static

Definition at line 653 of file CIRGenCoroutine.cpp.

References clang::Stmt::children(), and functionCanThrow().

Referenced by isResumeExprInTryCatch().