Committed as trivial.
The main reason I am fixing this is that:
if (__it._M_get_sequence()->begin() == __it._M_get_sequence()->end())
is generating safe iterators to check for an empty sequence. Doing so it
locks the mutex to link the iterator so quite an expensive operation
compared to calling empty().
2018-09-28 François Dumont <fdum...@gcc.gnu.org>
* include/debug/functions.h
(__foreign_iterator_aux3(const _Safe_iterator<>&, const _InputeIter&,
const _InputIter&, __true_type)): Use empty() rather than begin() ==
end().
François
diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h
index 21b60df16ed..13059bbf463 100644
--- a/libstdc++-v3/include/debug/functions.h
+++ b/libstdc++-v3/include/debug/functions.h
@@ -123,7 +123,7 @@ namespace __gnu_debug
{
if (__other == __other_end)
return true; // inserting nothing is safe even if not foreign iters
- if (__it._M_get_sequence()->begin() == __it._M_get_sequence()->end())
+ if (__it._M_get_sequence()->empty())
return true; // can't be self-inserting if self is empty
return __foreign_iterator_aux4(__it, std::__addressof(*__other));
}