LLVM: llvm::coro::SwitchCloner Class Reference (original) (raw)

#include "[Transforms/Coroutines/CoroCloner.h](CoroCloner%5F8h%5Fsource.html)"

Inheritance diagram for llvm::coro::SwitchCloner:

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.

Detailed Description

Constructor & Destructor Documentation

Member Function Documentation

create()

void coro::SwitchCloner::create ( ) 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().

createClone()


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