19 #ifndef LLVM_SUPPORT_INSTITERATOR_H
20 #define LLVM_SUPPORT_INSTITERATOR_H
30 template <
class _BB_t,
class _BB_i_t,
class _BI_t,
class _II_t>
33 typedef _BB_i_t BBIty;
50 template<
typename A,
typename B,
typename C,
typename D>
52 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
54 template<
typename A,
typename B,
typename C,
typename D>
56 : BBs(II.BBs), BB(II.BB), BI(II.BI) {}
59 : BBs(&m.getBasicBlockList()), BB(BBs->
begin()) {
60 if (BB != BBs->end()) {
67 : BBs(&m.getBasicBlockList()), BB(BBs->
end()) {
78 return BB == y.BB && (BB == BBs->end() || BI == y.BI);
94 while (BB == BBs->end() || BI == BB->begin()) {
105 inline bool atEnd()
const {
return BB == BBs->end(); }
108 inline void advanceToNextBB() {
111 while (BI == BB->end()) {
113 if (BB == BBs->end())
break;
120 typedef InstIterator<iplist<BasicBlock>,
BBIty & getBasicBlockIterator()
BasicBlockListType::const_iterator const_iterator
const_iterator end(StringRef path)
Get end iterator over path.
bool operator==(const InstIterator &y) const
BIty & getInstructionIterator()
InstIterator & operator++()
const_iterator begin(StringRef path)
Get begin iterator over path.
InstIterator & operator--()
inst_iterator inst_begin(Function *F)
InstListType::const_iterator const_iterator
bool operator!=(const InstIterator &y) const
InstIterator< const iplist< BasicBlock >, Function::const_iterator, BasicBlock::const_iterator, const Instruction > const_inst_iterator
pointer operator->() const
BasicBlockListType::iterator iterator
std::bidirectional_iterator_tag iterator_category
reference operator*() const
InstIterator< iplist< BasicBlock >, Function::iterator, BasicBlock::iterator, Instruction > inst_iterator
InstIterator(const InstIterator< A, B, C, D > &II)
InstIterator operator--(int)
InstIterator operator++(int)
InstIterator(InstIterator< A, B, C, D > &II)
inst_iterator inst_end(Function *F)
InstListType::iterator iterator
Instruction iterators...