#ifndef LLVM_CODEGEN_MACHINEINSTRBUNDLEITERATOR_H
#define LLVM_CODEGEN_MACHINEINSTRBUNDLEITERATOR_H
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/simple_ilist.h"
#include <cassert>
#include <iterator>
#include <type_traits>
namespace llvm {
template <class T, bool IsReverse> struct MachineInstrBundleIteratorTraits;
MachineInstrBundleIteratorTraits<T, false>;
MachineInstrBundleIteratorTraits<T, true>;
MachineInstrBundleIteratorTraits<const T, false>;
MachineInstrBundleIteratorTraits<const T, true>;
template <bool IsReverse> struct MachineInstrBundleIteratorHelper;
template <> struct MachineInstrBundleIteratorHelper<false> { … };
template <> struct MachineInstrBundleIteratorHelper<true> { … };
template <typename Ty, bool IsReverse = false>
class MachineInstrBundleIterator : MachineInstrBundleIteratorHelper<IsReverse> { … };
}
#endif