summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/ADT/iterator.h2
-rw-r--r--include/llvm/Analysis/LazyCallGraph.h13
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.