15#ifndef LLVM_TRANSFORMS_COROUTINES_ABI_H
16#define LLVM_TRANSFORMS_COROUTINES_ABI_H
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
AnyRetconABI(Function &F, coro::Shape &S, std::function< bool(Instruction &)> IsMaterializable)
void splitCoroutine(Function &F, coro::Shape &Shape, SmallVectorImpl< Function * > &Clones, TargetTransformInfo &TTI) override
AsyncABI(Function &F, coro::Shape &S, std::function< bool(Instruction &)> IsMaterializable)
void splitCoroutine(Function &F, coro::Shape &Shape, SmallVectorImpl< Function * > &Clones, TargetTransformInfo &TTI) override
std::function< bool(Instruction &I)> IsMaterializable
virtual void splitCoroutine(Function &F, coro::Shape &Shape, SmallVectorImpl< Function * > &Clones, TargetTransformInfo &TTI)=0
BaseABI(Function &F, coro::Shape &S, std::function< bool(Instruction &)> IsMaterializable)
virtual void buildCoroutineFrame(bool OptimizeFrame)
virtual ~BaseABI()=default
void splitCoroutine(Function &F, coro::Shape &Shape, SmallVectorImpl< Function * > &Clones, TargetTransformInfo &TTI) override
SwitchABI(Function &F, coro::Shape &S, std::function< bool(Instruction &)> IsMaterializable)
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.