class MachineInstrBundleIterator

Declaration

template <typename Ty, bool IsReverse = false>
class MachineInstrBundleIterator { /* full declaration omitted */ };

Description

MachineBasicBlock iterator that automatically skips over MIs that are inside bundles (i.e. walk top level MIs only).

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:108

Templates

Ty
bool IsReverse = false

Method Overview

Methods

MachineInstrBundleIterator<Ty, IsReverse>(
    llvm::MachineInstrBundleIterator::
        instr_iterator MI)

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:132

Parameters

llvm::MachineInstrBundleIterator::instr_iterator MI

MachineInstrBundleIterator<Ty, IsReverse>(
    llvm::MachineInstrBundleIterator::reference
        MI)

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:138

Parameters

llvm::MachineInstrBundleIterator::reference MI

MachineInstrBundleIterator<Ty, IsReverse>(
    llvm::MachineInstrBundleIterator::pointer MI)

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:144

Parameters

llvm::MachineInstrBundleIterator::pointer MI

MachineInstrBundleIterator<Ty, IsReverse>()

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:159

MachineInstrBundleIterator<Ty, IsReverse>(
    const MachineInstrBundleIterator<Ty,
                                     !IsReverse>&
        I)

Description

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.

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:169

Parameters

const MachineInstrBundleIterator<Ty, !IsReverse>& I

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

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:153

Templates

OtherTy

Parameters

const MachineInstrBundleIterator<OtherTy, IsReverse>& I
typename std::enable_if< std::is_convertible<OtherTy*, Ty*>::value, void*>::type = nullptr

static MachineInstrBundleIterator<Ty, IsReverse>
getAtBundleBegin(
    llvm::MachineInstrBundleIterator::
        instr_iterator MI)

Description

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

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:174

Parameters

llvm::MachineInstrBundleIterator::instr_iterator MI

llvm::MachineInstrBundleIterator::instr_iterator
getInstrIterator() const

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:274

llvm::MachineInstrBundleIterator::
    nonconst_iterator
    getNonConstIterator() const

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:276

llvm::MachineInstrBundleIterator::reverse_iterator
getReverse() const

Description

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.

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:283

bool isValid() const

Description

Check for null.

Declared at: llvm/include/llvm/CodeGen/MachineInstrBundleIterator.h:182