LLVM  4.0.0
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::MachineInstrBundleIterator< Ty, IsReverse > Class Template Reference

MachineBasicBlock iterator that automatically skips over MIs that are inside bundles (i.e. More...

#include <MachineInstrBundleIterator.h>

Inheritance diagram for llvm::MachineInstrBundleIterator< Ty, IsReverse >:
[legend]
Collaboration diagram for llvm::MachineInstrBundleIterator< Ty, IsReverse >:
[legend]

Public Types

typedef instr_iterator::value_type value_type
 
typedef
instr_iterator::difference_type 
difference_type
 
typedef instr_iterator::pointer pointer
 
typedef instr_iterator::reference reference
 
typedef
std::bidirectional_iterator_tag 
iterator_category
 
typedef
instr_iterator::const_pointer 
const_pointer
 
typedef
instr_iterator::const_reference 
const_reference
 

Public Member Functions

 MachineInstrBundleIterator (instr_iterator MI)
 
 MachineInstrBundleIterator (reference MI)
 
 MachineInstrBundleIterator (pointer MI)
 
template<class OtherTy >
 MachineInstrBundleIterator (const MachineInstrBundleIterator< OtherTy, IsReverse > &I, typename std::enable_if< std::is_convertible< OtherTy *, Ty * >::value, void * >::type=nullptr)
 
 MachineInstrBundleIterator ()
 
 MachineInstrBundleIterator (const MachineInstrBundleIterator< Ty,!IsReverse > &I)
 Explicit conversion between forward/reverse iterators. More...
 
reference operator* () const
 
pointer operator-> () const
 
bool isValid () const
 Check for null. More...
 
MachineInstrBundleIteratoroperator-- ()
 
MachineInstrBundleIteratoroperator++ ()
 
MachineInstrBundleIterator operator-- (int)
 
MachineInstrBundleIterator operator++ (int)
 
instr_iterator getInstrIterator () const
 
nonconst_iterator getNonConstIterator () const
 
reverse_iterator getReverse () const
 Get a reverse iterator to the same node. More...
 

Static Public Member Functions

static MachineInstrBundleIterator getAtBundleBegin (instr_iterator MI)
 Get the bundle iterator for the given instruction's bundle. More...
 

Friends

bool operator== (const MachineInstrBundleIterator &L, const MachineInstrBundleIterator &R)
 
bool operator== (const MachineInstrBundleIterator &L, const const_instr_iterator &R)
 
bool operator== (const const_instr_iterator &L, const MachineInstrBundleIterator &R)
 
bool operator== (const MachineInstrBundleIterator &L, const nonconst_instr_iterator &R)
 
bool operator== (const nonconst_instr_iterator &L, const MachineInstrBundleIterator &R)
 
bool operator== (const MachineInstrBundleIterator &L, const_pointer R)
 
bool operator== (const_pointer L, const MachineInstrBundleIterator &R)
 
bool operator== (const MachineInstrBundleIterator &L, const_reference R)
 
bool operator== (const_reference L, const MachineInstrBundleIterator &R)
 
bool operator!= (const MachineInstrBundleIterator &L, const MachineInstrBundleIterator &R)
 
bool operator!= (const MachineInstrBundleIterator &L, const const_instr_iterator &R)
 
bool operator!= (const const_instr_iterator &L, const MachineInstrBundleIterator &R)
 
bool operator!= (const MachineInstrBundleIterator &L, const nonconst_instr_iterator &R)
 
bool operator!= (const nonconst_instr_iterator &L, const MachineInstrBundleIterator &R)
 
bool operator!= (const MachineInstrBundleIterator &L, const_pointer R)
 
bool operator!= (const_pointer L, const MachineInstrBundleIterator &R)
 
bool operator!= (const MachineInstrBundleIterator &L, const_reference R)
 
bool operator!= (const_reference L, const MachineInstrBundleIterator &R)
 

Detailed Description

template<typename Ty, bool IsReverse = false>
class llvm::MachineInstrBundleIterator< Ty, IsReverse >

MachineBasicBlock iterator that automatically skips over MIs that are inside bundles (i.e.

walk top level MIs only).

Definition at line 106 of file MachineInstrBundleIterator.h.

Member Typedef Documentation

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::const_pointer llvm::MachineInstrBundleIterator< Ty, IsReverse >::const_pointer

Definition at line 118 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::const_reference llvm::MachineInstrBundleIterator< Ty, IsReverse >::const_reference

Definition at line 119 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::difference_type llvm::MachineInstrBundleIterator< Ty, IsReverse >::difference_type

Definition at line 113 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef std::bidirectional_iterator_tag llvm::MachineInstrBundleIterator< Ty, IsReverse >::iterator_category

Definition at line 116 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::pointer llvm::MachineInstrBundleIterator< Ty, IsReverse >::pointer

Definition at line 114 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::reference llvm::MachineInstrBundleIterator< Ty, IsReverse >::reference

Definition at line 115 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
typedef instr_iterator::value_type llvm::MachineInstrBundleIterator< Ty, IsReverse >::value_type

Definition at line 112 of file MachineInstrBundleIterator.h.

Constructor & Destructor Documentation

template<typename Ty, bool IsReverse = false>
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( instr_iterator  MI)
inline

Definition at line 130 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( reference  MI)
inline

Definition at line 136 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( pointer  MI)
inline

Definition at line 141 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
template<class OtherTy >
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( const MachineInstrBundleIterator< OtherTy, IsReverse > &  I,
typename std::enable_if< std::is_convertible< OtherTy *, Ty * >::value, void * >::type  = nullptr 
)
inline

Definition at line 149 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( )
inline

Definition at line 154 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
llvm::MachineInstrBundleIterator< Ty, IsReverse >::MachineInstrBundleIterator ( const MachineInstrBundleIterator< Ty,!IsReverse > &  I)
inlineexplicit

Explicit conversion between forward/reverse iterators.

Translate between forward and reverse iterators without changing range boundaries. The resulting iterator will dereference (and have a handle) to the previous node, which is somewhat unexpected; but converting the two endpoints in a range will give the same range in reverse.

This matches std::reverse_iterator conversions.

Definition at line 164 of file MachineInstrBundleIterator.h.

Member Function Documentation

template<typename Ty, bool IsReverse = false>
static MachineInstrBundleIterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::getAtBundleBegin ( instr_iterator  MI)
inlinestatic

Get the bundle iterator for the given instruction's bundle.

Definition at line 169 of file MachineInstrBundleIterator.h.

Referenced by llvm::MachineBasicBlock::rbegin().

template<typename Ty, bool IsReverse = false>
instr_iterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::getInstrIterator ( ) const
inline
template<typename Ty, bool IsReverse = false>
nonconst_iterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::getNonConstIterator ( ) const
inline

Definition at line 271 of file MachineInstrBundleIterator.h.

Referenced by nextIfDebug(), and priorNonDebug().

template<typename Ty, bool IsReverse = false>
reverse_iterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::getReverse ( ) const
inline

Get a reverse iterator to the same node.

Gives a reverse iterator that will dereference (and have a handle) to the same node. Converting the endpoint iterators in a range will give a different range; for range operations, use the explicit conversions.

Definition at line 278 of file MachineInstrBundleIterator.h.

Referenced by areCFlagsAccessedBetweenInstrs(), FindLastAluClause(), llvm::X86InstrInfo::optimizeCompareInstr(), and llvm::MipsInstrInfo::removeBranch().

template<typename Ty, bool IsReverse = false>
bool llvm::MachineInstrBundleIterator< Ty, IsReverse >::isValid ( ) const
inline
template<typename Ty, bool IsReverse = false>
reference llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator* ( ) const
inline
template<typename Ty, bool IsReverse = false>
MachineInstrBundleIterator& llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator++ ( )
inline

Definition at line 254 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
MachineInstrBundleIterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator++ ( int  )
inline

Definition at line 263 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
MachineInstrBundleIterator& llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator-- ( )
inline

Definition at line 250 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
MachineInstrBundleIterator llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator-- ( int  )
inline

Definition at line 258 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
pointer llvm::MachineInstrBundleIterator< Ty, IsReverse >::operator-> ( ) const
inline

Definition at line 174 of file MachineInstrBundleIterator.h.

Friends And Related Function Documentation

template<typename Ty, bool IsReverse = false>
bool operator!= ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 214 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const const_instr_iterator &  R 
)
friend

Definition at line 218 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const const_instr_iterator &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 222 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const nonconst_instr_iterator &  R 
)
friend

Definition at line 226 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const nonconst_instr_iterator &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 230 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const_pointer  R 
)
friend

Definition at line 234 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const_pointer  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 237 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const_reference  R 
)
friend

Definition at line 240 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator!= ( const_reference  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 244 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 179 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const const_instr_iterator &  R 
)
friend

Definition at line 183 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const const_instr_iterator &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 187 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const nonconst_instr_iterator &  R 
)
friend

Definition at line 191 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const nonconst_instr_iterator &  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 195 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const_pointer  R 
)
friend

Definition at line 199 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const_pointer  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 202 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const MachineInstrBundleIterator< Ty, IsReverse > &  L,
const_reference  R 
)
friend

Definition at line 205 of file MachineInstrBundleIterator.h.

template<typename Ty, bool IsReverse = false>
bool operator== ( const_reference  L,
const MachineInstrBundleIterator< Ty, IsReverse > &  R 
)
friend

Definition at line 209 of file MachineInstrBundleIterator.h.


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