[PATCH] libstdc++/98466 Fix _GLIBCXX_DEBUG N3644 integration
François Dumont
frs.dumont@gmail.com
Fri Jan 1 17:51:03 GMT 2021
I think the PR is not limited to unordered containers iterator, it
impacts all _GLIBCXX_DEBUG iterators.
However unordered containers local_iterator was more complicated to
handle. Because of c++/65816 I prefer to review _Node_iterator_default
constructor to set _M_cur to nullptr even if in principle it is not
necessary except for the _Local_iterator_base constructor when hash code
is not cached.
libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators
libstdc++-v3/ChangeLog
PR libstdc++/98466
* include/bits/hashtable_policy.h (_Node_iterator_base()):
Set _M_cur to nullptr.
(_Node_iterator()): Make default.
(_Node_const_iterator()): Make default.
* include/debug/macros.h
(__glibcxx_check_erae_range_after): Add _M_singular
iterator checks.
* include/debug/safe_iterator.h
(_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator
are value initialized.
* include/debug/safe_local_iterator.h
(_GLIBCXX_DEBUG_VERIFY_OPERANDS):
Likewise.
* include/debug/safe_iterator.tcc
(_Safe_iterator<>::_M_valid_range): Add
_M_singular checks on input iterators.
* src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare):
Remove _M_singular
checks.
* testsuite/23_containers/deque/debug/98466.cc: New test.
* testsuite/23_containers/unordered_map/debug/98466.cc: New
test.
Tested under Linux x86_64 normal and debug mode.
Ok to commit ?
François
-------------- next part --------------
A non-text attachment was scrubbed...
Name: n3644.patch
Type: text/x-patch
Size: 7749 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20210101/0276d096/attachment.bin>
More information about the Libstdc++
mailing list