LLVM 20.0.0git
|
#include "llvm/Transforms/Coroutines/SuspendCrossingInfo.h"
Public Member Functions | |
void | dump () const |
void | dump (StringRef Label, BitVector const &BV, const ReversePostOrderTraversal< Function * > &RPOT, ModuleSlotTracker &MST) const |
SuspendCrossingInfo (Function &F, const SmallVectorImpl< AnyCoroSuspendInst * > &CoroSuspends, const SmallVectorImpl< AnyCoroEndInst * > &CoroEnds) | |
bool | hasPathCrossingSuspendPoint (BasicBlock *From, BasicBlock *To) const |
Returns true if there is a path from From to To crossing a suspend point without crossing From a 2nd time. | |
bool | hasPathOrLoopCrossingSuspendPoint (BasicBlock *From, BasicBlock *To) const |
Returns true if there is a path from From to To crossing a suspend point without crossing From a 2nd time. | |
bool | isDefinitionAcrossSuspend (BasicBlock *DefBB, User *U) const |
bool | isDefinitionAcrossSuspend (Argument &A, User *U) const |
bool | isDefinitionAcrossSuspend (Instruction &I, User *U) const |
bool | isDefinitionAcrossSuspend (Value &V, User *U) const |
bool | isDefinitionAcrossSuspend (Value &V) const |
Definition at line 67 of file SuspendCrossingInfo.h.
llvm::SuspendCrossingInfo::SuspendCrossingInfo | ( | Function & | F, |
const SmallVectorImpl< AnyCoroSuspendInst * > & | CoroSuspends, | ||
const SmallVectorImpl< AnyCoroEndInst * > & | CoroEnds | ||
) |
Definition at line 156 of file SuspendCrossingInfo.cpp.
References assert(), B, dump(), F, llvm::BasicBlock::getParent(), I, LLVM_DEBUG, N, llvm::SmallVectorImpl< T >::resize(), and llvm::BlockToIndexMapping::size().
LLVM_DUMP_METHOD void llvm::SuspendCrossingInfo::dump | ( | ) | const |
Definition at line 48 of file SuspendCrossingInfo.cpp.
References B, llvm::BlockToIndexMapping::blockToIndex(), llvm::dbgs(), dump(), llvm::dumpBasicBlockLabel(), llvm::SmallVectorBase< Size_T >::empty(), F, llvm::ModuleSlotTracker::incorporateFunction(), and llvm::BlockToIndexMapping::indexToBlock().
Referenced by dump(), and SuspendCrossingInfo().
LLVM_DUMP_METHOD void llvm::SuspendCrossingInfo::dump | ( | StringRef | Label, |
BitVector const & | BV, | ||
const ReversePostOrderTraversal< Function * > & | RPOT, | ||
ModuleSlotTracker & | MST | ||
) | const |
Definition at line 34 of file SuspendCrossingInfo.cpp.
References llvm::BlockToIndexMapping::blockToIndex(), llvm::dbgs(), and llvm::dumpBasicBlockLabel().
bool llvm::SuspendCrossingInfo::hasPathCrossingSuspendPoint | ( | BasicBlock * | From, |
BasicBlock * | To | ||
) | const |
Returns true if there is a path from From
to To
crossing a suspend point without crossing From
a 2nd time.
Definition at line 70 of file SuspendCrossingInfo.cpp.
References llvm::BlockToIndexMapping::blockToIndex(), llvm::dbgs(), From, llvm::Value::getName(), and LLVM_DEBUG.
Referenced by isDefinitionAcrossSuspend().
bool llvm::SuspendCrossingInfo::hasPathOrLoopCrossingSuspendPoint | ( | BasicBlock * | From, |
BasicBlock * | To | ||
) | const |
Returns true if there is a path from From
to To
crossing a suspend point without crossing From
a 2nd time.
If From
is the same as To
this will also check if there is a looping path crossing a suspend point.
Definition at line 80 of file SuspendCrossingInfo.cpp.
References llvm::BlockToIndexMapping::blockToIndex(), llvm::dbgs(), From, llvm::Value::getName(), and LLVM_DEBUG.
Definition at line 141 of file SuspendCrossingInfo.h.
References A, and isDefinitionAcrossSuspend().
|
inline |
Definition at line 119 of file SuspendCrossingInfo.h.
References assert(), llvm::BasicBlock::getSinglePredecessor(), hasPathCrossingSuspendPoint(), and I.
Referenced by llvm::coro::doRematerializations(), isDefinitionAcrossSuspend(), and sinkLifetimeStartMarkers().
|
inline |
Definition at line 145 of file SuspendCrossingInfo.h.
References assert(), I, and isDefinitionAcrossSuspend().
Definition at line 169 of file SuspendCrossingInfo.h.
References isDefinitionAcrossSuspend(), and llvm_unreachable.
Definition at line 159 of file SuspendCrossingInfo.h.
References isDefinitionAcrossSuspend(), and llvm_unreachable.