LLVM 22.0.0git
Public Member Functions | List of all members
llvm::LockstepReverseIterator< EarlyFailure > Class Template Reference

Iterates through instructions in a set of blocks in reverse order from the first non-terminator. More...

#include "llvm/Transforms/Utils/LockstepReverseIterator.h"

Inheritance diagram for llvm::LockstepReverseIterator< EarlyFailure >:
[legend]

Public Member Functions

 LockstepReverseIterator (ArrayRef< BasicBlock * > Blocks)
 
void reset ()
 
bool isValid () const
 
ArrayRef< Instruction * > operator* () const
 
SmallSetVector< BasicBlock *, 4 > & getActiveBlocks ()
 
void restrictToBlocks (SmallSetVector< BasicBlock *, 4 > &Blocks)
 
LockstepReverseIteratoroperator-- ()
 
LockstepReverseIteratoroperator++ ()
 

Detailed Description

template<bool EarlyFailure = true>
class llvm::LockstepReverseIterator< EarlyFailure >

Iterates through instructions in a set of blocks in reverse order from the first non-terminator.

For example (assume all blocks have size n): LockstepReverseIterator I([B1, B2, B3]); *I– = [B1[n], B2[n], B3[n]]; *I– = [B1[n-1], B2[n-1], B3[n-1]]; *I– = [B1[n-2], B2[n-2], B3[n-2]]; ...

The iterator continues processing until all blocks have been exhausted if EarlyFailure is explicitly set to false. Use getActiveBlocks() to determine which blocks are still going and the order they appear in the list returned by operator*.

Definition at line 41 of file LockstepReverseIterator.h.

Constructor & Destructor Documentation

◆ LockstepReverseIterator()

template<bool EarlyFailure = true>
llvm::LockstepReverseIterator< EarlyFailure >::LockstepReverseIterator ( ArrayRef< BasicBlock * >  Blocks)
inline

Member Function Documentation

◆ getActiveBlocks()

template<bool EarlyFailure = true>
SmallSetVector< BasicBlock *, 4 > & llvm::LockstepReverseIterator< EarlyFailure >::getActiveBlocks ( )
inline

Definition at line 90 of file LockstepReverseIterator.h.

◆ isValid()

template<bool EarlyFailure = true>
bool llvm::LockstepReverseIterator< EarlyFailure >::isValid ( ) const
inline

Definition at line 81 of file LockstepReverseIterator.h.

References Fail.

Referenced by sinkCommonCodeFromPredecessors().

◆ operator*()

template<bool EarlyFailure = true>
ArrayRef< Instruction * > llvm::LockstepReverseIterator< EarlyFailure >::operator* ( ) const
inline

Definition at line 82 of file LockstepReverseIterator.h.

◆ operator++()

template<bool EarlyFailure = true>
LockstepReverseIterator & llvm::LockstepReverseIterator< EarlyFailure >::operator++ ( )
inline

◆ operator--()

template<bool EarlyFailure = true>
LockstepReverseIterator & llvm::LockstepReverseIterator< EarlyFailure >::operator-- ( )
inline

◆ reset()

template<bool EarlyFailure = true>
void llvm::LockstepReverseIterator< EarlyFailure >::reset ( )
inline

◆ restrictToBlocks()

template<bool EarlyFailure = true>
void llvm::LockstepReverseIterator< EarlyFailure >::restrictToBlocks ( SmallSetVector< BasicBlock *, 4 > &  Blocks)
inline

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