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