diff options
-rw-r--r-- | include/llvm/ADT/iterator.h | 2 | ||||
-rw-r--r-- | include/llvm/Analysis/LazyCallGraph.h | 13 |
2 files changed, 4 insertions, 11 deletions
diff --git a/include/llvm/ADT/iterator.h b/include/llvm/ADT/iterator.h index 00d0ba15ed..0b33d7e0a1 100644 --- a/include/llvm/ADT/iterator.h +++ b/include/llvm/ADT/iterator.h @@ -32,7 +32,7 @@ namespace llvm { /// terms of addition of one. These aren't equivalent for all iterator /// categories, and respecting that adds a lot of complexity for little gain. template <typename DerivedT, typename IteratorCategoryT, typename T, - typename DifferenceTypeT, typename PointerT = T *, + typename DifferenceTypeT = ptrdiff_t, typename PointerT = T *, typename ReferenceT = T &> struct iterator_facade_base : std::iterator<IteratorCategoryT, T, DifferenceTypeT, PointerT, diff --git a/include/llvm/Analysis/LazyCallGraph.h b/include/llvm/Analysis/LazyCallGraph.h index 99e6fc25d9..417c610b0a 100644 --- a/include/llvm/Analysis/LazyCallGraph.h +++ b/include/llvm/Analysis/LazyCallGraph.h @@ -228,7 +228,8 @@ public: /// always visits SCCs for a callee prior to visiting the SCC for a caller /// (when they are in different SCCs). class postorder_scc_iterator - : public std::iterator<std::forward_iterator_tag, SCC> { + : public iterator_facade_base<postorder_scc_iterator, + std::forward_iterator_tag, SCC> { friend class LazyCallGraph; friend class LazyCallGraph::Node; @@ -251,22 +252,14 @@ public: bool operator==(const postorder_scc_iterator &Arg) const { return G == Arg.G && C == Arg.C; } - bool operator!=(const postorder_scc_iterator &Arg) const { - return !operator==(Arg); - } reference operator*() const { return *C; } - pointer operator->() const { return &operator*(); } + using iterator_facade_base::operator++; postorder_scc_iterator &operator++() { C = G->getNextSCCInPostOrder(); return *this; } - postorder_scc_iterator operator++(int) { - postorder_scc_iterator prev = *this; - ++*this; - return prev; - } }; /// \brief Construct a graph for the given module. |