diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-09-16 11:39:41 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-09-16 15:54:41 +0100 |
commit | 15943285867a6952dbc5a603c434e61bfe32296f (patch) | |
tree | 1cc434375b33f7be03de34f78c421a03506e10e2 | |
parent | 64f9580423eef22b81a7e90be851c81dc6e04778 (diff) | |
download | gcc-15943285867a6952dbc5a603c434e61bfe32296f.zip gcc-15943285867a6952dbc5a603c434e61bfe32296f.tar.gz gcc-15943285867a6952dbc5a603c434e61bfe32296f.tar.bz2 |
libstdc++: Remove __alloc_neq helper
This class template and partial specialization were added 15 years ago
to optimize allocator equality comparisons in std::list. I think it's
safe to assume that GCC is now capable of optimizing an inline
operator!= that just returns false at least as well as an inline member
function that just returns false.
libstdc++-v3/ChangeLog:
* include/bits/allocator.h (__alloc_neq): Remove.
* include/bits/stl_list.h (list::_M_check_equal_allocators):
Compare allocators directly, without __alloc_neq.
-rw-r--r-- | libstdc++-v3/include/bits/allocator.h | 17 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_list.h | 5 |
2 files changed, 2 insertions, 20 deletions
diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h index 28abf13..c39166e 100644 --- a/libstdc++-v3/include/bits/allocator.h +++ b/libstdc++-v3/include/bits/allocator.h @@ -298,23 +298,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } }; - // Optimize for stateless allocators. - template<typename _Alloc, bool = __is_empty(_Alloc)> - struct __alloc_neq - { - static bool - _S_do_it(const _Alloc&, const _Alloc&) - { return false; } - }; - - template<typename _Alloc> - struct __alloc_neq<_Alloc, false> - { - static bool - _S_do_it(const _Alloc& __one, const _Alloc& __two) - { return __one != __two; } - }; - #if __cplusplus >= 201103L template<typename _Tp, bool = __or_<is_copy_constructible<typename _Tp::value_type>, diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index b8bd461..a73ca60 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -2026,10 +2026,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 // To implement the splice (and merge) bits of N1599. void - _M_check_equal_allocators(list& __x) _GLIBCXX_NOEXCEPT + _M_check_equal_allocators(const list& __x) _GLIBCXX_NOEXCEPT { - if (std::__alloc_neq<typename _Base::_Node_alloc_type>:: - _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator())) + if (_M_get_Node_allocator() != __x._M_get_Node_allocator()) __builtin_abort(); } |