diff --git a/llvm/include/llvm/ADT/iterator.h b/llvm/include/llvm/ADT/iterator.h --- a/llvm/include/llvm/ADT/iterator.h +++ b/llvm/include/llvm/ADT/iterator.h @@ -64,9 +64,15 @@ template -class iterator_facade_base - : public std::iterator { +class iterator_facade_base { + +public: + typedef T value_type; + typedef PointerT pointer; + typedef ReferenceT reference; + typedef DifferenceTypeT difference_type; + typedef IteratorCategoryT iterator_category; + protected: enum { IsRandomAccess = std::is_base_ofgetIncomingBlock(ArgNo); } - typename BaseT::iterator::pointer operator*() const { + typename BaseT::pointer operator*() const { assert(Access && "Tried to access past the end of our iterator"); // Go to the first argument for phis, and the defining access for everything // else. @@ -1196,7 +1196,7 @@ return DefIterator == Other.DefIterator; } - BaseT::iterator::reference operator*() const { + BaseT::reference operator*() const { assert(DefIterator != OriginalAccess->defs_end() && "Tried to access past the end of our iterator"); return CurrentPair;