Container debug light mode

François Dumont frs.dumont@gmail.com
Wed Jun 8 20:54:00 GMT 2016


Hi

     Here is the patch I already proposed to introduce the debug light 
mode for vector and deque containers.

     It also simplify some internal calls.

     * include/debug/debug.h
     (__glibcxx_requires_non_empty_range, __glibcxx_requires_nonempty)
     (__glibcxx_requires_subscript): Move...
     * include/debug/assertions.h: ...here and add __builtin_expect.
     (_GLIBCXX_DEBUG_ONLY): Remove ; value.
     * include/bits/stl_deque.h
     (std::deque<>::operator[]): Add __glibcxx_requires_subscript check.
     (std::deque<>::front()): Add __glibcxx_requires_nonempty check.
     (std::deque<>::back()): Likewise.
     (std::deque<>::pop_front()): Likewise.
     (std::deque<>::pop_back()): Likewise.
     (std::deque<>::swap(deque&)): Add allocator check.
     (std::deque<>::operator=): Call _M_assign_aux.
     (std::deque<>::assign(initializer_list<>)): Likewise.
     (std::deque<>::resize(size_t, const value_type&)): Call _M_fill_insert.
     (std::deque<>::insert(const_iterator, initializer_list<>)):
     Call _M_range_insert_aux.
     (std::deque<>::_M_assign_aux<It>(It, It, std::forward_iterator_tag):
     Likewise.
     (std::deque<>::_M_fill_assign): Call _M_fill_insert.
     (std::deque<>::_M_move_assign2): Call _M_assign_aux.
     * include/bits/deque.tcc
     (std::deque<>::operator=): Call _M_range_insert_aux.
     (std::deque<>::_M_assign_aux<It>(It, It, std::input_iterator_tag)):
     Likewise.
     * include/bits/stl_vector.h
     (std::vector<>::operator[]): Add __glibcxx_requires_subscript check.
     (std::vector<>::front()): Add __glibcxx_requires_nonempty check.
     (std::vector<>::back()): Likewise.
     (std::vector<>::pop_back()): Likewise.
     (std::vector<>::swap(vector&)): Add allocator check.
     (std::vector<>::operator=): Call _M_assign_aux.
     (std::vector<>::assign(initializer_list<>)): Likewise.
     (std::vector<>::resize(size_t, const value_type&)): Call 
_M_fill_insert.
     (std::vector<>::insert(const_iterator, initializer_list<>)):
     Call _M_range_insert.
     * include/bits/vector.tcc (std::vector<>::_M_assign_aux): Likewise.

Successfully run vector and deque tests under Linux x86_64 for now, will 
complete before commit.

François
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cont_debug_light.patch
Type: text/x-patch
Size: 18142 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20160608/0875a907/attachment.bin>


More information about the Gcc-patches mailing list