| 
    LLVM 22.0.0git
    
   | 
 
Simple and conservative implementation of LoopSafetyInfo that can give false-positive answers to its queries in order to avoid complicated analysis. More...
#include "llvm/Analysis/MustExecute.h"
Public Member Functions | |
| bool | blockMayThrow (const BasicBlock *BB) const override | 
Returns true iff the block BB potentially may throw exception.   | |
| bool | anyBlockMayThrow () const override | 
| Returns true iff any block of the loop for which this info is contains an instruction that may throw or otherwise exit abnormally.   | |
| void | computeLoopSafetyInfo (const Loop *CurLoop) override | 
| Computes safety information for a loop checks loop body & header for the possibility of may throw exception, it takes LoopSafetyInfo and loop as argument.   | |
| bool | isGuaranteedToExecute (const Instruction &Inst, const DominatorTree *DT, const Loop *CurLoop) const override | 
| Returns true if the instruction in a loop is guaranteed to execute at least once.   | |
| Public Member Functions inherited from llvm::LoopSafetyInfo | |
| LLVM_ABI const DenseMap< BasicBlock *, ColorVector > & | getBlockColors () const | 
| Returns block colors map that is used to update funclet operand bundles.   | |
| LLVM_ABI void | copyColors (BasicBlock *New, BasicBlock *Old) | 
Copy colors of block Old into the block New.   | |
| LLVM_ABI bool | allLoopPathsLeadToBlock (const Loop *CurLoop, const BasicBlock *BB, const DominatorTree *DT) const | 
Return true if we must reach the block BB under assumption that the loop CurLoop is entered.   | |
| LoopSafetyInfo ()=default | |
| virtual | ~LoopSafetyInfo ()=default | 
Additional Inherited Members | |
| Protected Member Functions inherited from llvm::LoopSafetyInfo | |
| LLVM_ABI void | computeBlockColors (const Loop *CurLoop) | 
| Computes block colors.   | |
Simple and conservative implementation of LoopSafetyInfo that can give false-positive answers to its queries in order to avoid complicated analysis.
Definition at line 111 of file MustExecute.h.
      
  | 
  overridevirtual | 
Returns true iff any block of the loop for which this info is contains an instruction that may throw or otherwise exit abnormally.
Implements llvm::LoopSafetyInfo.
Definition at line 45 of file MustExecute.cpp.
Referenced by blockMayThrow(), and llvm::isSafeToUnrollAndJam().
      
  | 
  overridevirtual | 
Returns true iff the block BB potentially may throw exception. 
It can be false-positive in cases when we want to avoid complex analysis.
Implements llvm::LoopSafetyInfo.
Definition at line 40 of file MustExecute.cpp.
References anyBlockMayThrow().
Computes safety information for a loop checks loop body & header for the possibility of may throw exception, it takes LoopSafetyInfo and loop as argument.
Updates safety information in LoopSafetyInfo argument. Note: This is defined to clear and reinitialize an already initialized LoopSafetyInfo. Some callers rely on this fact.
Implements llvm::LoopSafetyInfo.
Definition at line 49 of file MustExecute.cpp.
References assert(), llvm::LoopBase< BlockT, LoopT >::blocks(), llvm::LoopSafetyInfo::computeBlockColors(), llvm::drop_begin(), llvm::LoopBase< BlockT, LoopT >::getBlocks(), llvm::LoopBase< BlockT, LoopT >::getHeader(), and llvm::isGuaranteedToTransferExecutionToSuccessor().
Referenced by isMustExecuteIn(), and llvm::isSafeToUnrollAndJam().
      
  | 
  overridevirtual | 
Returns true if the instruction in a loop is guaranteed to execute at least once.
Implements llvm::LoopSafetyInfo.
Definition at line 266 of file MustExecute.cpp.
References llvm::LoopSafetyInfo::allLoopPathsLeadToBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), and llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent().
Referenced by isMustExecuteIn().