LLVM: llvm::MachineInstrBundleIterator< Ty, IsReverse > Class Template Reference (original) (raw)

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

#include "[llvm/CodeGen/MachineInstrBundleIterator.h](MachineInstrBundleIterator%5F8h%5Fsource.html)"

Public Types
using value_type = typename instr_iterator::value_type
using difference_type = typename instr_iterator::difference_type
using pointer = typename instr_iterator::pointer
using reference = typename instr_iterator::reference
using const_pointer = typename instr_iterator::const_pointer
using const_reference = typename instr_iterator::const_reference
using iterator_category = std::bidirectional_iterator_tag
Public Member Functions
MachineInstrBundleIterator (instr_iterator MI)
MachineInstrBundleIterator (reference MI)
MachineInstrBundleIterator (pointer MI)
template
MachineInstrBundleIterator (const MachineInstrBundleIterator< OtherTy, IsReverse > &I, std::enable_if_t< std::is_convertible< OtherTy *, Ty * >::value, void * >=nullptr)
MachineInstrBundleIterator ()
MachineInstrBundleIterator (const MachineInstrBundleIterator< Ty, !IsReverse > &I)
Explicit conversion between forward/reverse iterators.
reference operator* () const
pointer operator-> () const
bool isValid () const
Check for null.
MachineInstrBundleIterator & operator-- ()
MachineInstrBundleIterator & operator++ ()
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.
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)

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 108 of file MachineInstrBundleIterator.h.

const_pointer

template<typename Ty , bool IsReverse = false>

const_reference

template<typename Ty , bool IsReverse = false>

difference_type

template<typename Ty , bool IsReverse = false>

iterator_category

template<typename Ty , bool IsReverse = false>

pointer

template<typename Ty , bool IsReverse = false>

template<typename Ty , bool IsReverse = false>

value_type

template<typename Ty , bool IsReverse = false>

MachineInstrBundleIterator() [1/6]

template<typename Ty , bool IsReverse = false>

MachineInstrBundleIterator() [2/6]

template<typename Ty , bool IsReverse = false>

MachineInstrBundleIterator() [3/6]

template<typename Ty , bool IsReverse = false>

MachineInstrBundleIterator() [4/6]

template<typename Ty , bool IsReverse = false>

template

MachineInstrBundleIterator() [5/6]

template<typename Ty , bool IsReverse = false>

MachineInstrBundleIterator() [6/6]

template<typename Ty , bool IsReverse = false>

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 169 of file MachineInstrBundleIterator.h.

getAtBundleBegin()

template<typename Ty , bool IsReverse = false>

getInstrIterator()

template<typename Ty , bool IsReverse = false>

getNonConstIterator()

template<typename Ty , bool IsReverse = false>

getReverse()

template<typename Ty , bool IsReverse = false>

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 283 of file MachineInstrBundleIterator.h.

References llvm::MachineInstrBundleIterator< Ty, IsReverse >::getReverse().

Referenced by llvm::LoongArchInstrInfo::analyzeBranch(), llvm::RISCVInstrInfo::analyzeBranch(), llvm::CSKYInstrInfo::analyzeBranch(), areCFlagsAccessedBetweenInstrs(), FindLastAluClause(), getLiveOutRegsAt(), llvm::MachineInstrBundleIterator< Ty, IsReverse >::getReverse(), performCopyPropagation(), and llvm::MachineBasicBlock::splitAt().

isValid()

template<typename Ty , bool IsReverse = false>

operator*()

template<typename Ty , bool IsReverse = false>

operator++() [1/2]

template<typename Ty , bool IsReverse = false>

operator++() [2/2]

template<typename Ty , bool IsReverse = false>

operator--() [1/2]

template<typename Ty , bool IsReverse = false>

operator--() [2/2]

template<typename Ty , bool IsReverse = false>

operator->()

template<typename Ty , bool IsReverse = false>

operator!= [1/9]

template<typename Ty , bool IsReverse = false>

operator!= [2/9]

template<typename Ty , bool IsReverse = false>

operator!= [3/9]

template<typename Ty , bool IsReverse = false>

operator!= [4/9]

template<typename Ty , bool IsReverse = false>

operator!= [5/9]

template<typename Ty , bool IsReverse = false>

operator!= [6/9]

template<typename Ty , bool IsReverse = false>

operator!= [7/9]

template<typename Ty , bool IsReverse = false>

operator!= [8/9]

template<typename Ty , bool IsReverse = false>

operator!= [9/9]

template<typename Ty , bool IsReverse = false>

operator== [1/9]

template<typename Ty , bool IsReverse = false>

operator== [2/9]

template<typename Ty , bool IsReverse = false>

operator== [3/9]

template<typename Ty , bool IsReverse = false>

operator== [4/9]

template<typename Ty , bool IsReverse = false>

operator== [5/9]

template<typename Ty , bool IsReverse = false>

operator== [6/9]

template<typename Ty , bool IsReverse = false>

operator== [7/9]

template<typename Ty , bool IsReverse = false>

operator== [8/9]

template<typename Ty , bool IsReverse = false>

operator== [9/9]

template<typename Ty , bool IsReverse = false>


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