LLVM
8.0.1
|
#include "Transforms/Coroutines/CoroInternal.h"
Public Types | |
enum | { ResumeField, DestroyField, PromiseField, IndexField } |
Public Member Functions | |
IntegerType * | getIndexType () const |
ConstantInt * | getIndex (uint64_t Value) const |
Shape ()=default | |
Shape (Function &F) | |
void | buildFrom (Function &F) |
Public Attributes | |
CoroBeginInst * | CoroBegin |
SmallVector< CoroEndInst *, 4 > | CoroEnds |
SmallVector< CoroSizeInst *, 2 > | CoroSizes |
SmallVector< CoroSuspendInst *, 4 > | CoroSuspends |
StructType * | FrameTy |
Instruction * | FramePtr |
BasicBlock * | AllocaSpillBlock |
SwitchInst * | ResumeSwitch |
AllocaInst * | PromiseAlloca |
bool | HasFinalSuspend |
Definition at line 67 of file CoroInternal.h.
anonymous enum |
Enumerator | |
---|---|
ResumeField | |
DestroyField | |
PromiseField | |
IndexField |
Definition at line 74 of file CoroInternal.h.
|
default |
|
inlineexplicit |
Definition at line 97 of file CoroInternal.h.
References llvm::coro::buildCoroutineFrame(), and F().
void coro::Shape::buildFrom | ( | Function & | F | ) |
Definition at line 238 of file Coroutines.cpp.
References llvm::changeToUnreachable(), clear(), llvm::Intrinsic::coro_begin, llvm::Intrinsic::coro_end, llvm::Intrinsic::coro_frame, llvm::Intrinsic::coro_save, llvm::Intrinsic::coro_size, llvm::Intrinsic::coro_suspend, createCoroSave(), llvm::AttributeList::FunctionIndex, llvm::UndefValue::get(), llvm::Function::getContext(), llvm::Type::getInt8PtrTy(), I, llvm::instructions(), llvm::Attribute::NoAlias, llvm::Attribute::NoDuplicate, llvm::Attribute::NonNull, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::report_fatal_error(), llvm::AttributeList::ReturnIndex, std::swap(), and llvm::RegState::Undef.
|
inline |
Definition at line 92 of file CoroInternal.h.
References llvm::ConstantInt::get().
Referenced by createResumeEntryBlock().
|
inline |
Definition at line 88 of file CoroInternal.h.
References assert(), and llvm::StructType::getElementType().
BasicBlock* llvm::coro::Shape::AllocaSpillBlock |
Definition at line 83 of file CoroInternal.h.
Referenced by clear(), createClone(), and insertSpills().
CoroBeginInst* llvm::coro::Shape::CoroBegin |
Definition at line 68 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), clear(), createClone(), insertSpills(), simplifySuspendPoints(), splitCoroutine(), and updateCoroFrame().
SmallVector<CoroEndInst *, 4> llvm::coro::Shape::CoroEnds |
Definition at line 69 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), clear(), createClone(), removeCoroEnds(), and replaceUnwindCoroEnds().
SmallVector<CoroSizeInst *, 2> llvm::coro::Shape::CoroSizes |
Definition at line 70 of file CoroInternal.h.
Referenced by clear(), and replaceFrameSize().
SmallVector<CoroSuspendInst *, 4> llvm::coro::Shape::CoroSuspends |
Definition at line 71 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), buildFrameType(), clear(), createClone(), createResumeEntryBlock(), simplifySuspendPoints(), and splitCoroutine().
Instruction* llvm::coro::Shape::FramePtr |
Definition at line 82 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), clear(), createClone(), createResumeEntryBlock(), and updateCoroFrame().
StructType* llvm::coro::Shape::FrameTy |
Definition at line 81 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), clear(), createClone(), createResumeEntryBlock(), handleFinalSuspend(), insertSpills(), replaceFrameSize(), splitCoroutine(), and updateCoroFrame().
bool llvm::coro::Shape::HasFinalSuspend |
Definition at line 86 of file CoroInternal.h.
Referenced by clear(), createClone(), and handleFinalSuspend().
AllocaInst* llvm::coro::Shape::PromiseAlloca |
Definition at line 85 of file CoroInternal.h.
Referenced by llvm::coro::buildCoroutineFrame(), buildFrameType(), clear(), and insertSpills().
SwitchInst* llvm::coro::Shape::ResumeSwitch |
Definition at line 84 of file CoroInternal.h.
Referenced by clear(), createClone(), and createResumeEntryBlock().