LLVM  10.0.0svn
Classes | Enumerations | Functions
llvm::coro Namespace Reference

Classes

struct  LowererBase
 
struct  Shape
 

Enumerations

enum  ABI { ABI::Switch, ABI::Retcon, ABI::RetconOnce }
 

Functions

bool declaresIntrinsics (Module &M, std::initializer_list< StringRef >)
 
void replaceAllCoroAllocs (CoroBeginInst *CB, bool Replacement)
 
void replaceAllCoroFrees (CoroBeginInst *CB, Value *Replacement)
 
void replaceCoroFree (CoroIdInst *CoroId, bool Elide)
 
void updateCallGraph (Function &Caller, ArrayRef< Function *> Funcs, CallGraph &CG, CallGraphSCC &SCC)
 
void buildCoroutineFrame (Function &F, Shape &Shape)
 

Enumeration Type Documentation

◆ ABI

enum llvm::coro::ABI
strong
Enumerator
Switch 

The "resume-switch" lowering, where there are separate resume and destroy functions that are shared between all suspend points.

The coroutine frame implicitly stores the resume and destroy functions, the current index, and any promise value.

Retcon 

The "returned-continuation" lowering, where each suspend point creates a single continuation function that is used for both resuming and destroying.

Does not support promises.

RetconOnce 

The "unique returned-continuation" lowering, where each suspend point creates a single continuation function that is used for both resuming and destroying.

Does not support promises. The function is known to suspend at most once during its execution, and the return value of the continuation is void.

Definition at line 65 of file CoroInternal.h.

Function Documentation

◆ buildCoroutineFrame()

void llvm::coro::buildCoroutineFrame ( Function F,
Shape Shape 
)

◆ declaresIntrinsics()

bool llvm::coro::declaresIntrinsics ( Module M,
std::initializer_list< StringRef List 
)

◆ replaceAllCoroAllocs()

void llvm::coro::replaceAllCoroAllocs ( CoroBeginInst CB,
bool  Replacement 
)

◆ replaceAllCoroFrees()

void llvm::coro::replaceAllCoroFrees ( CoroBeginInst CB,
Value Replacement 
)

◆ replaceCoroFree()

void llvm::coro::replaceCoroFree ( CoroIdInst CoroId,
bool  Elide 
)

◆ updateCallGraph()

void llvm::coro::updateCallGraph ( Function Caller,
ArrayRef< Function *>  Funcs,
CallGraph CG,
CallGraphSCC SCC 
)