Public Member Functions | List of all members
clang::insights::CoroutineASTTransformer Class Reference

Find a SuspendsExpr's in a coroutine body statement for early transformation. More...

Inheritance diagram for clang::insights::CoroutineASTTransformer:
Inheritance graph
[legend]
Collaboration diagram for clang::insights::CoroutineASTTransformer:
Collaboration graph
[legend]

Public Member Functions

 CoroutineASTTransformer (CoroutineASTData &coroutineASTData, size_t &suspendsCounter, Stmt *stmt, llvm::DenseMap< VarDecl *, MemberExpr * > varNamePrefix, Stmt *prev=nullptr)
 
void Visit (Stmt *stmt)
 
void VisitCompoundStmt (CompoundStmt *stmt)
 
void VisitSwitchStmt (SwitchStmt *stmt)
 
void VisitDoStmt (DoStmt *stmt)
 
void VisitWhileStmt (WhileStmt *stmt)
 
void VisitIfStmt (IfStmt *stmt)
 
void VisitForStmt (ForStmt *stmt)
 
void VisitCXXForRangeStmt (CXXForRangeStmt *stmt)
 
void VisitDeclRefExpr (DeclRefExpr *stmt)
 
void VisitDeclStmt (DeclStmt *stmt)
 
void VisitCXXThisExpr (CXXThisExpr *stmt)
 
void VisitCallExpr (CallExpr *stmt)
 
void VisitCXXMemberCallExpr (CXXMemberCallExpr *stmt)
 
void VisitCoreturnStmt (CoreturnStmt *stmt)
 
void VisitCoyieldExpr (CoyieldExpr *stmt)
 
void VisitCoawaitExpr (CoawaitExpr *stmt)
 
void VisitCoroutineBodyStmt (CoroutineBodyStmt *stmt)
 
void VisitStmt (Stmt *stmt)
 

Detailed Description

Find a SuspendsExpr's in a coroutine body statement for early transformation.

Traverse the whole CoroutineBodyStmt to find all appearing VarDecl. These need to be rerouted to the coroutine frame and hence prefixed by something like __f->. For that reason we only look for VarDecls directly appearing in the body, CallExpr will be skipped.

Definition at line 108 of file CoroutinesCodeGenerator.cpp.

Constructor & Destructor Documentation

◆ CoroutineASTTransformer()

clang::insights::CoroutineASTTransformer::CoroutineASTTransformer ( CoroutineASTData coroutineASTData,
size_t &  suspendsCounter,
Stmt stmt,
llvm::DenseMap< VarDecl *, MemberExpr * >  varNamePrefix,
Stmt prev = nullptr 
)
inline

Definition at line 119 of file CoroutinesCodeGenerator.cpp.

Member Function Documentation

◆ Visit()

void clang::insights::CoroutineASTTransformer::Visit ( Stmt stmt)
inline

Definition at line 136 of file CoroutinesCodeGenerator.cpp.

◆ VisitCallExpr()

void clang::insights::CoroutineASTTransformer::VisitCallExpr ( CallExpr *  stmt)
inline

Definition at line 278 of file CoroutinesCodeGenerator.cpp.

◆ VisitCoawaitExpr()

void clang::insights::CoroutineASTTransformer::VisitCoawaitExpr ( CoawaitExpr *  stmt)
inline

◆ VisitCompoundStmt()

void clang::insights::CoroutineASTTransformer::VisitCompoundStmt ( CompoundStmt *  stmt)
inline

◆ VisitCoreturnStmt()

void clang::insights::CoroutineASTTransformer::VisitCoreturnStmt ( CoreturnStmt *  stmt)
inline

Definition at line 302 of file CoroutinesCodeGenerator.cpp.

◆ VisitCoroutineBodyStmt()

void clang::insights::CoroutineASTTransformer::VisitCoroutineBodyStmt ( CoroutineBodyStmt *  stmt)
inline

◆ VisitCoyieldExpr()

void clang::insights::CoroutineASTTransformer::VisitCoyieldExpr ( CoyieldExpr *  stmt)
inline

Definition at line 308 of file CoroutinesCodeGenerator.cpp.

◆ VisitCXXForRangeStmt()

void clang::insights::CoroutineASTTransformer::VisitCXXForRangeStmt ( CXXForRangeStmt *  stmt)
inline

Definition at line 219 of file CoroutinesCodeGenerator.cpp.

◆ VisitCXXMemberCallExpr()

void clang::insights::CoroutineASTTransformer::VisitCXXMemberCallExpr ( CXXMemberCallExpr *  stmt)
inline

Definition at line 290 of file CoroutinesCodeGenerator.cpp.

◆ VisitCXXThisExpr()

void clang::insights::CoroutineASTTransformer::VisitCXXThisExpr ( CXXThisExpr *  stmt)
inline

◆ VisitDeclRefExpr()

void clang::insights::CoroutineASTTransformer::VisitDeclRefExpr ( DeclRefExpr *  stmt)
inline

◆ VisitDeclStmt()

void clang::insights::CoroutineASTTransformer::VisitDeclStmt ( DeclStmt *  stmt)
inline

◆ VisitDoStmt()

void clang::insights::CoroutineASTTransformer::VisitDoStmt ( DoStmt *  stmt)
inline

Definition at line 170 of file CoroutinesCodeGenerator.cpp.

◆ VisitForStmt()

void clang::insights::CoroutineASTTransformer::VisitForStmt ( ForStmt *  stmt)
inline

◆ VisitIfStmt()

void clang::insights::CoroutineASTTransformer::VisitIfStmt ( IfStmt *  stmt)
inline

Definition at line 184 of file CoroutinesCodeGenerator.cpp.

◆ VisitStmt()

void clang::insights::CoroutineASTTransformer::VisitStmt ( Stmt stmt)
inline

Definition at line 396 of file CoroutinesCodeGenerator.cpp.

◆ VisitSwitchStmt()

void clang::insights::CoroutineASTTransformer::VisitSwitchStmt ( SwitchStmt *  stmt)
inline

Definition at line 163 of file CoroutinesCodeGenerator.cpp.

◆ VisitWhileStmt()

void clang::insights::CoroutineASTTransformer::VisitWhileStmt ( WhileStmt *  stmt)
inline

Definition at line 177 of file CoroutinesCodeGenerator.cpp.


The documentation for this class was generated from the following file: