Index: llvm/trunk/include/llvm/Support/Path.h =================================================================== --- llvm/trunk/include/llvm/Support/Path.h +++ llvm/trunk/include/llvm/Support/Path.h @@ -87,6 +87,9 @@ reverse_iterator &operator++(); // preincrement bool operator==(const reverse_iterator &RHS) const; bool operator!=(const reverse_iterator &RHS) const { return !(*this == RHS); } + + /// @brief Difference in bytes between this and RHS. + ptrdiff_t operator-(const reverse_iterator &RHS) const; }; /// @brief Get begin iterator over \a path. Index: llvm/trunk/lib/Support/Path.cpp =================================================================== --- llvm/trunk/lib/Support/Path.cpp +++ llvm/trunk/lib/Support/Path.cpp @@ -353,6 +353,10 @@ Position == RHS.Position; } +ptrdiff_t reverse_iterator::operator-(const reverse_iterator &RHS) const { + return Position - RHS.Position; +} + StringRef root_path(StringRef path) { const_iterator b = begin(path), pos = b,