[PATCH][_GLIBCXX_DEBUG] Remove useless checks

François Dumont frs.dumont@gmail.com
Mon Jan 23 06:02:27 GMT 2023


     libstdc++: [_GLIBCXX_DEBUG] Remove useless constructor checks

     Creating a safe iterator from a normal iterator is done within the 
library where we
     already know that it is done correctly. The rare situation where a 
user would use safe
     iterators for his own purpose is non-Standard code so outside 
_GLIBCXX_DEBUG scope. For
     those reasons the __msg_init_singular is useless and can be removed.

     Additionally in the copy constructor used for post-increment and 
post-decrement operators
     the __msg_init_copy_singular check can also be ommitted because of 
the preliminary
     __msg_bad_inc and __msg_bad_dec checks.

     libstdc++-v3/ChangeLog:

             * include/debug/safe_iterator.h 
(_Safe_iterator<>::_Unsafe_call): New.
             (_Safe_iterator(const _Safe_iterator&, _Unsafe_call): New.
             (_Safe_iterator::operator++(int)): Use latter.
             (_Safe_iterator::operator--(int)): Likewise.
             (_Safe_iterator(_Iterator, const _Safe_sequence_base*)): 
Remove !_M_insular()
             check.
             * include/debug/safe_local_iterator.h 
(_Safe_local_iterator<>::_Unsafe_call):
             New.
             (_Safe_local_iterator(const _Safe_local_iterator&, 
_Unsafe_call): New.
             (_Safe_local_iterator::operator++(int)): Use latter.
             * src/c++11/debug.cc (_S_debug_messages): Add as comment 
the _Debug_msg_id
             entry associated to the array entry.

Tested under Linux x64.

Ok to commit ?

François
-------------- next part --------------
A non-text attachment was scrubbed...
Name: useless_debug_check.patch
Type: text/x-patch
Size: 11170 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20230123/1c433d22/attachment.bin>


More information about the Libstdc++ mailing list