LLVM 20.0.0git
|
#include "Transforms/Coroutines/CoroCloner.h"
Static Public Member Functions | |
static Function * | createClone (Function &OrigF, const Twine &Suffix, coro::Shape &Shape, CloneKind FKind, TargetTransformInfo &TTI) |
Create a clone for a switch lowering. | |
Static Public Member Functions inherited from llvm::coro::BaseCloner | |
static Function * | createClone (Function &OrigF, const Twine &Suffix, coro::Shape &Shape, Function *NewF, AnyCoroSuspendInst *ActiveSuspend, TargetTransformInfo &TTI) |
Create a clone for a continuation lowering. | |
Protected Member Functions | |
SwitchCloner (Function &OrigF, const Twine &Suffix, coro::Shape &Shape, CloneKind FKind, TargetTransformInfo &TTI) | |
Create a cloner for a switch lowering. | |
void | create () override |
Clone the body of the original function into a resume function of some sort. | |
Protected Member Functions inherited from llvm::coro::BaseCloner | |
BaseCloner (Function &OrigF, const Twine &Suffix, coro::Shape &Shape, Function *NewF, AnyCoroSuspendInst *ActiveSuspend, TargetTransformInfo &TTI) | |
Create a cloner for a continuation lowering. | |
bool | isSwitchDestroyFunction () |
void | replaceEntryBlock () |
Value * | deriveNewFramePointer () |
Derive the value of the new frame pointer. | |
void | replaceRetconOrAsyncSuspendUses () |
Replace uses of the active llvm.coro.suspend.retcon/async call with the arguments to the continuation function. | |
void | replaceCoroSuspends () |
void | replaceCoroEnds () |
void | replaceSwiftErrorOps () |
void | salvageDebugInfo () |
void | handleFinalSuspend () |
Additional Inherited Members | |
Public Member Functions inherited from llvm::coro::BaseCloner | |
BaseCloner (Function &OrigF, const Twine &Suffix, coro::Shape &Shape, CloneKind FKind, TargetTransformInfo &TTI) | |
virtual | ~BaseCloner () |
Function * | getFunction () const |
virtual void | create () |
Clone the body of the original function into a resume function of some sort. | |
Protected Attributes inherited from llvm::coro::BaseCloner | |
Function & | OrigF |
const Twine & | Suffix |
coro::Shape & | Shape |
CloneKind | FKind |
IRBuilder | Builder |
TargetTransformInfo & | TTI |
ValueToValueMapTy | VMap |
Function * | NewF = nullptr |
Value * | NewFramePtr = nullptr |
AnyCoroSuspendInst * | ActiveSuspend = nullptr |
The active suspend instruction; meaningful only for continuation and async ABIs. | |
Definition at line 128 of file CoroCloner.h.
|
inlineprotected |
Create a cloner for a switch lowering.
Definition at line 131 of file CoroCloner.h.
|
overrideprotectedvirtual |
Clone the body of the original function into a resume function of some sort.
FIXME: Is it really good to add the NoAlias attribute?
Reimplemented from llvm::coro::BaseCloner.
Definition at line 1093 of file CoroSplit.cpp.
References llvm::coro::Shape::CoroBegin, llvm::coro::BaseCloner::create(), createCloneDeclaration(), llvm::CoroBeginInst::getId(), llvm::coro::replaceCoroFree(), and llvm::coro::SwitchCleanup.
Referenced by createClone().
|
inlinestatic |
Create a clone for a switch lowering.
Definition at line 139 of file CoroCloner.h.
References llvm::coro::Shape::ABI, assert(), create(), llvm::coro::BaseCloner::FKind, llvm::coro::BaseCloner::getFunction(), llvm::coro::BaseCloner::OrigF, llvm::coro::BaseCloner::Suffix, and llvm::coro::Switch.