diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-05-16 11:04:50 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-05-16 11:04:50 +0100 |
commit | 0bc229dbbe2a109ea39d08ced1bb296c59bcd120 (patch) | |
tree | a33625dd7b815900c4872972d8f8a1a082241b1f | |
parent | 4b8e35f1b1df60633aeb0bf37ea9f6311f2132b9 (diff) | |
download | gcc-0bc229dbbe2a109ea39d08ced1bb296c59bcd120.zip gcc-0bc229dbbe2a109ea39d08ced1bb296c59bcd120.tar.gz gcc-0bc229dbbe2a109ea39d08ced1bb296c59bcd120.tar.bz2 |
Remove unnecessary non-const accessors in hash table bases
The const accessors are OK (and arguably more correct) for most callers
to use. The _M_swap functions that use the non-const overloads can just
directly use the _S_get members of the EBO helpers.
* include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
_S_get accessors for members in EBO helpers.
(_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
(_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
overloads.
(_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
helpers.
(_Hashtable_base::_M_eq()): Remove non-const overload.
From-SVN: r271286
-rw-r--r-- | libstdc++-v3/ChangeLog | 11 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/hashtable_policy.h | 48 |
2 files changed, 23 insertions, 36 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b5e6c97..acb6b17 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2019-05-16 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use + _S_get accessors for members in EBO helpers. + (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash()) + (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const + overloads. + (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO + helpers. + (_Hashtable_base::_M_eq()): Remove non-const overload. + 2019-05-15 Jonathan Wakely <jwakely@redhat.com> * include/std/variant (visit, visit<R>): Qualify calls to __do_visit. diff --git a/libstdc++-v3/include/bits/hashtable_policy.h b/libstdc++-v3/include/bits/hashtable_policy.h index c7f466c..b417a7d 100644 --- a/libstdc++-v3/include/bits/hashtable_policy.h +++ b/libstdc++-v3/include/bits/hashtable_policy.h @@ -1229,21 +1229,16 @@ namespace __detail void _M_swap(_Hash_code_base& __x) { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_ranged_hash(), __x._M_ranged_hash()); + std::swap(__ebo_extract_key::_S_get(*this), + __ebo_extract_key::_S_get(__x)); + std::swap(__ebo_hash::_S_get(*this), __ebo_hash::_S_get(__x)); } const _ExtractKey& _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - const _Hash& _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); } - - _Hash& - _M_ranged_hash() { return __ebo_hash::_S_get(*this); } }; // No specialization for ranged hash function while caching hash codes. @@ -1322,28 +1317,20 @@ namespace __detail void _M_swap(_Hash_code_base& __x) { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_h1(), __x._M_h1()); - std::swap(_M_h2(), __x._M_h2()); + std::swap(__ebo_extract_key::_S_get(*this), + __ebo_extract_key::_S_get(__x)); + std::swap(__ebo_h1::_S_get(*this), __ebo_h1::_S_get(__x)); + std::swap(__ebo_h2::_S_get(*this), __ebo_h2::_S_get(__x)); } const _ExtractKey& _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - const _H1& _M_h1() const { return __ebo_h1::_S_cget(*this); } - _H1& - _M_h1() { return __ebo_h1::_S_get(*this); } - const _H2& _M_h2() const { return __ebo_h2::_S_cget(*this); } - - _H2& - _M_h2() { return __ebo_h2::_S_get(*this); } }; /// Specialization: hash function and range-hashing function, @@ -1410,28 +1397,20 @@ namespace __detail void _M_swap(_Hash_code_base& __x) { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_h1(), __x._M_h1()); - std::swap(_M_h2(), __x._M_h2()); + std::swap(__ebo_extract_key::_S_get(*this), + __ebo_extract_key::_S_get(__x)); + std::swap(__ebo_h1::_S_get(*this), __ebo_h1::_S_get(__x)); + std::swap(__ebo_h2::_S_get(*this), __ebo_h2::_S_get(__x)); } const _ExtractKey& _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - const _H1& _M_h1() const { return __ebo_h1::_S_cget(*this); } - _H1& - _M_h1() { return __ebo_h1::_S_get(*this); } - const _H2& _M_h2() const { return __ebo_h2::_S_cget(*this); } - - _H2& - _M_h2() { return __ebo_h2::_S_get(*this); } }; /** @@ -1840,14 +1819,11 @@ namespace __detail _M_swap(_Hashtable_base& __x) { __hash_code_base::_M_swap(__x); - std::swap(_M_eq(), __x._M_eq()); + std::swap(_EqualEBO::_S_get(*this), _EqualEBO::_S_get(__x)); } const _Equal& _M_eq() const { return _EqualEBO::_S_cget(*this); } - - _Equal& - _M_eq() { return _EqualEBO::_S_get(*this); } }; /** |