15#ifndef LLVM_TRANSFORMS_COROUTINES_ABI_H
16#define LLVM_TRANSFORMS_COROUTINES_ABI_H
44 std::function<
bool(
Instruction &)> IsMaterializable)
52 virtual void buildCoroutineFrame(
bool OptimizeFrame);
70 std::function<
bool(
Instruction &)> IsMaterializable)
83 std::function<
bool(
Instruction &)> IsMaterializable)
96 std::function<
bool(
Instruction &)> IsMaterializable)
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)
AsyncABI(Function &F, coro::Shape &S, std::function< bool(Instruction &)> IsMaterializable)
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 ~BaseABI()=default
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.