|
LLVM 22.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 | replaceCoroIsInRamp () |
| 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 ()=default |
| Function * | getFunction () const |
| 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.
References llvm::coro::BaseCloner::BaseCloner(), llvm::coro::BaseCloner::FKind, llvm::coro::BaseCloner::OrigF, llvm::coro::BaseCloner::Shape, llvm::coro::BaseCloner::Suffix, and llvm::coro::BaseCloner::TTI.
Referenced by createClone().
|
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 1090 of file CoroSplit.cpp.
References llvm::coro::BaseCloner::ActiveSuspend, llvm::cast(), llvm::coro::BaseCloner::create(), createCloneDeclaration(), llvm::coro::BaseCloner::FKind, llvm::coro::BaseCloner::NewF, llvm::coro::BaseCloner::OrigF, llvm::coro::replaceCoroFree(), llvm::coro::BaseCloner::Shape, llvm::coro::BaseCloner::Suffix, llvm::coro::SwitchCleanup, and llvm::coro::BaseCloner::VMap.
Referenced by createClone().
|
inlinestatic |
Create a clone for a switch lowering.
Definition at line 139 of file CoroCloner.h.
References assert(), create(), llvm::coro::BaseCloner::FKind, llvm::coro::BaseCloner::getFunction(), llvm::coro::BaseCloner::OrigF, llvm::coro::BaseCloner::Shape, llvm::coro::BaseCloner::Suffix, llvm::coro::Switch, SwitchCloner(), and llvm::coro::BaseCloner::TTI.