19 #ifndef LLVM_IR_INSTITERATOR_H
20 #define LLVM_IR_INSTITERATOR_H
30 template <
class BB_t,
class BB_i_t,
class BI_t,
class II_t>
class InstIterator {
49 template<
typename A,
typename B,
typename C,
typename D>
51 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
53 template<
typename A,
typename B,
typename C,
typename D>
55 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
58 : BBs(&m.getBasicBlockList()), BB(BBs->
begin()) {
59 if (BB != BBs->end()) {
66 : BBs(&m.getBasicBlockList()), BB(BBs->
end()) {
77 return BB == y.BB && (BB == BBs->end() || BI == y.BI);
93 while (BB == BBs->end() || BI == BB->begin()) {
104 inline bool atEnd()
const {
return BB == BBs->end(); }
107 inline void advanceToNextBB() {
110 while (BI == BB->end()) {
112 if (BB == BBs->end())
break;
119 typedef InstIterator<iplist<BasicBlock>,
BasicBlockListType::const_iterator const_iterator
const_iterator end(StringRef path)
Get end iterator over path.
InstIterator operator++(int)
const_iterator begin(StringRef path)
Get begin iterator over path.
InstIterator & operator++()
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()
InstIterator< const iplist< BasicBlock >, Function::const_iterator, BasicBlock::const_iterator, const Instruction > const_inst_iterator
bool operator==(const InstIterator &y) const
BIty & getInstructionIterator()
BasicBlockListType::iterator iterator
bool operator!=(const InstIterator &y) const
InstIterator< iplist< BasicBlock >, Function::iterator, BasicBlock::iterator, Instruction > inst_iterator
A range adaptor for a pair of iterators.
iterator_range< inst_iterator > inst_range(Function *F)
InstIterator operator--(int)
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)