19 #ifndef LLVM_IR_INSTITERATOR_H
20 #define LLVM_IR_INSTITERATOR_H
33 template <
class BB_t,
class BB_i_t,
class BI_t,
class II_t>
class InstIterator {
53 template<
typename A,
typename B,
typename C,
typename D>
55 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
57 template<
typename A,
typename B,
typename C,
typename D>
59 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
62 : BBs(&m.getBasicBlockList()), BB(BBs->
begin()) {
63 if (BB != BBs->end()) {
70 : BBs(&m.getBasicBlockList()), BB(BBs->
end()) {
81 return BB == y.BB && (BB == BBs->end() || BI == y.BI);
97 while (BB == BBs->end() || BI == BB->begin()) {
108 inline bool atEnd()
const {
return BB == BBs->end(); }
111 inline void advanceToNextBB() {
114 while (BI == BB->end()) {
116 if (BB == BBs->end())
break;
161 #endif // LLVM_IR_INSTITERATOR_H
BasicBlockListType::const_iterator const_iterator
const_iterator end(StringRef path)
Get end iterator over path.
InstIterator operator++(int)
This provides a very simple, boring adaptor for a begin and end iterator into a range type...
const_iterator begin(StringRef path)
Get begin iterator over path.
InstIterator & operator++()
InstIterator< SymbolTableList< BasicBlock >, Function::iterator, BasicBlock::iterator, Instruction > inst_iterator
inst_iterator inst_begin(Function *F)
InstIterator(InstIterator< A, B, C, D > &II)
InstListType::const_iterator const_iterator
InstIterator & operator--()
pointer operator->() const
BBIty & getBasicBlockIterator()
bool operator==(const InstIterator &y) const
InstIterator< const SymbolTableList< BasicBlock >, Function::const_iterator, BasicBlock::const_iterator, const Instruction > const_inst_iterator
BIty & getInstructionIterator()
BasicBlockListType::iterator iterator
iterator_range< inst_iterator > inst_range
iterator_range< const_inst_iterator > const_inst_range
bool operator!=(const InstIterator &y) const
A range adaptor for a pair of iterators.
InstIterator operator--(int)
inst_range instructions(Function *F)
inst_iterator inst_end(Function *F)
reference operator*() const
std::bidirectional_iterator_tag iterator_category
InstListType::iterator iterator
Instruction iterators...
InstIterator(const InstIterator< A, B, C, D > &II)