LLVM 20.0.0git
Static Public Member Functions | Protected Member Functions | List of all members
llvm::coro::SwitchCloner Class Reference

#include "Transforms/Coroutines/CoroCloner.h"

Inheritance diagram for llvm::coro::SwitchCloner:
Inheritance graph
[legend]

Static Public Member Functions

static FunctioncreateClone (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 FunctioncreateClone (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 ()
 
ValuederiveNewFramePointer ()
 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 ()
 
FunctiongetFunction () 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
FunctionOrigF
 
const TwineSuffix
 
coro::ShapeShape
 
CloneKind FKind
 
IRBuilder Builder
 
TargetTransformInfoTTI
 
ValueToValueMapTy VMap
 
FunctionNewF = nullptr
 
ValueNewFramePtr = nullptr
 
AnyCoroSuspendInstActiveSuspend = nullptr
 The active suspend instruction; meaningful only for continuation and async ABIs.
 

Detailed Description

Definition at line 128 of file CoroCloner.h.

Constructor & Destructor Documentation

◆ SwitchCloner()

llvm::coro::SwitchCloner::SwitchCloner ( Function OrigF,
const Twine Suffix,
coro::Shape Shape,
CloneKind  FKind,
TargetTransformInfo TTI 
)
inlineprotected

Create a cloner for a switch lowering.

Definition at line 131 of file CoroCloner.h.

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 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().

◆ createClone()

static Function * llvm::coro::SwitchCloner::createClone ( Function OrigF,
const Twine Suffix,
coro::Shape Shape,
CloneKind  FKind,
TargetTransformInfo TTI 
)
inlinestatic

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