LLVM: include/llvm/Transforms/Coroutines/SpillUtils.h Source File (original) (raw)
1
2
3
4
5
6
7
8
12
13#ifndef LLVM_TRANSFORMS_COROUTINES_SPILLINGINFO_H
14#define LLVM_TRANSFORMS_COROUTINES_SPILLINGINFO_H
15
17
19
30
39
42
43
44
49
50
53
54}
55
56#endif
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.
SmallMapVector< Value *, SmallVector< Instruction *, 2 >, 8 > SpillInfo
Definition SpillUtils.h:18
BasicBlock::iterator getSpillInsertionPt(const coro::Shape &, Value *Def, const DominatorTree &DT)
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)
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.
AllocaInst * Alloca
Definition SpillUtils.h:21
DenseMap< Instruction *, std::optional< APInt > > Aliases
Definition SpillUtils.h:22
bool MayWriteBeforeCoroBegin
Definition SpillUtils.h:23
AllocaInfo(AllocaInst *Alloca, DenseMap< Instruction *, std::optional< APInt > > Aliases, bool MayWriteBeforeCoroBegin)
Definition SpillUtils.h:24