LLVM 20.0.0git
Classes | Public Member Functions | List of all members
llvm::SuspendCrossingInfo Class Reference

#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
 

Detailed Description

Definition at line 67 of file SuspendCrossingInfo.h.

Constructor & Destructor Documentation

◆ SuspendCrossingInfo()

llvm::SuspendCrossingInfo::SuspendCrossingInfo ( Function F,
const SmallVectorImpl< AnyCoroSuspendInst * > &  CoroSuspends,
const SmallVectorImpl< AnyCoroEndInst * > &  CoroEnds 
)

Member Function Documentation

◆ dump() [1/2]

LLVM_DUMP_METHOD void llvm::SuspendCrossingInfo::dump ( ) const

◆ dump() [2/2]

LLVM_DUMP_METHOD void llvm::SuspendCrossingInfo::dump ( StringRef  Label,
BitVector const BV,
const ReversePostOrderTraversal< Function * > &  RPOT,
ModuleSlotTracker MST 
) const

◆ hasPathCrossingSuspendPoint()

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().

◆ hasPathOrLoopCrossingSuspendPoint()

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.

◆ isDefinitionAcrossSuspend() [1/5]

bool llvm::SuspendCrossingInfo::isDefinitionAcrossSuspend ( Argument A,
User U 
) const
inline

Definition at line 141 of file SuspendCrossingInfo.h.

References A, and isDefinitionAcrossSuspend().

◆ isDefinitionAcrossSuspend() [2/5]

bool llvm::SuspendCrossingInfo::isDefinitionAcrossSuspend ( BasicBlock DefBB,
User U 
) const
inline

◆ isDefinitionAcrossSuspend() [3/5]

bool llvm::SuspendCrossingInfo::isDefinitionAcrossSuspend ( Instruction I,
User U 
) const
inline

Definition at line 145 of file SuspendCrossingInfo.h.

References assert(), I, and isDefinitionAcrossSuspend().

◆ isDefinitionAcrossSuspend() [4/5]

bool llvm::SuspendCrossingInfo::isDefinitionAcrossSuspend ( Value V) const
inline

Definition at line 169 of file SuspendCrossingInfo.h.

References isDefinitionAcrossSuspend(), and llvm_unreachable.

◆ isDefinitionAcrossSuspend() [5/5]

bool llvm::SuspendCrossingInfo::isDefinitionAcrossSuspend ( Value V,
User U 
) const
inline

Definition at line 159 of file SuspendCrossingInfo.h.

References isDefinitionAcrossSuspend(), and llvm_unreachable.


The documentation for this class was generated from the following files: