13#ifndef LLVM_TRANSFORMS_COROUTINES_SPILLINGINFO_H
14#define LLVM_TRANSFORMS_COROUTINES_SPILLINGINFO_H
an instruction to allocate memory on the stack
InstListType::iterator iterator
Instruction iterators...
This class represents the llvm.coro.begin or llvm.coro.begin.custom.abi instructions.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
LLVM Value Representation.
BasicBlock::iterator getSpillInsertionPt(const coro::Shape &, Value *Def, const DominatorTree &DT)
SmallMapVector< Value *, SmallVector< Instruction *, 2 >, 8 > SpillInfo
void sinkSpillUsesAfterCoroBegin(const DominatorTree &DT, CoroBeginInst *CoroBegin, coro::SpillInfo &Spills, SmallVectorImpl< coro::AllocaInfo > &Allocas)
Async and Retcon{Once} conventions assume that all spill uses can be sunk after the coro....
void collectSpillsFromArgs(SpillInfo &Spills, Function &F, const SuspendCrossingInfo &Checker)
void collectSpillsFromDbgInfo(SpillInfo &Spills, Function &F, const SuspendCrossingInfo &Checker)
void collectSpillsAndAllocasFromInsts(SpillInfo &Spills, SmallVector< AllocaInfo, 8 > &Allocas, SmallVector< Instruction *, 4 > &DeadInstructions, SmallVector< CoroAllocaAllocInst *, 4 > &LocalAllocas, Function &F, const SuspendCrossingInfo &Checker, const DominatorTree &DT, const coro::Shape &Shape)
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.
A MapVector that performs no allocations if smaller than a certain size.
DenseMap< Instruction *, std::optional< APInt > > Aliases
bool MayWriteBeforeCoroBegin
AllocaInfo(AllocaInst *Alloca, DenseMap< Instruction *, std::optional< APInt > > Aliases, bool MayWriteBeforeCoroBegin)