]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/ChangeLog
PR libstdc++/87822 fix layout change for nested std::pair
[thirdparty/gcc.git] / libstdc++-v3 / ChangeLog
index ea4928f5a7873c1a1831a6948f3fae6d7c5561de..ac4df1ad515ed5caad6dfbacebd60966cd0f8660 100644 (file)
@@ -1,5 +1,379 @@
+2018-10-31  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/87822
+       * include/bits/stl_pair.h (__pair_base): Change to class template.
+       (pair): Make base class type depend on template parameters.
+       * testsuite/20_util/pair/87822.cc: New test.
+
+2018-10-30  Marek Polacek  <polacek@redhat.com>
+
+       Implement P0892R2, explicit(bool).
+       * testsuite/20_util/any/cons/explicit.cc: Adjust dg-error.
+       * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
+       * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
+
+2018-10-30  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/87809
+       * include/bits/forward_list.h (_Fwd_list_impl::_Fwd_list_impl()): Use
+       trait in exception-specification instead of possibly invalid
+       expression.
+       * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
+       Likewise.
+       * include/bits/stl_list.h (_List_impl::_List_impl()): Likewise.
+       * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()): Likewise.
+       * testsuite/23_containers/forward_list/cons/87809.cc: New test.
+       * testsuite/23_containers/list/cons/87809.cc: New test.
+       * testsuite/23_containers/vector/bool/cons/87809.cc: New test.
+       * testsuite/23_containers/vector/cons/87809.cc: New test.
+
+       PR libstdc++/87784
+       * include/tr2/dynamic_bitset (dynamic_bitset::push_back): When there
+       are no unused bits in the last block, append a new block with the
+       right value so the bit doesn't need to be set. Only increment size
+       after setting the new bit, not before.
+       * testsuite/tr2/dynamic_bitset/pr87784.cc: New test.
+
+2018-10-29  David Malcolm  <dmalcolm@redhat.com>
+
+       * testsuite/17_intro/using_namespace_std_exp_neg.cc: Remove
+       "expected namespace-name before" error.
+       * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Likewise.
+
+2018-10-28  François Dumont  <fdumont@gcc.gnu.org>
+
+       * testsuite/23_containers/deque/48101_neg.cc: Remove dg-prune-output
+       'std' from regex pattern for versioned namespace compatibility.
+       * testsuite/23_containers/vector/48101_neg.cc: Likewise.
+       * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
+
+2018-10-25  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/87749
+       * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
+       (basic_string::operator=(basic_string&&)): For short strings copy the
+       buffer inline. Only fall back to using assign(const basic_string&) to
+       do a deep copy when reallocation is needed.
+       * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc:
+       New test.
+       * testsuite/21_strings/basic_string/modifiers/assign/char/
+       move_assign_optim.cc: New test.
+       * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc:
+       New test.
+       * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
+       move_assign_optim.cc: New test.
+
+2018-10-25  Marc Glisse  <marc.glisse@inria.fr>
+
+       PR libstdc++/87106
+       * include/bits/alloc_traits.h (_S_construct, _S_destroy, construct,
+       destroy): Add noexcept specification.
+       * include/bits/allocator.h (construct, destroy): Likewise.
+       * include/ext/alloc_traits.h (construct, destroy): Likewise.
+       * include/ext/malloc_allocator.h (construct, destroy): Likewise.
+       * include/ext/new_allocator.h (construct, destroy): Likewise.
+       * include/bits/stl_uninitialized.h (__relocate_object_a, __relocate_a,
+       __relocate_a_1): New functions.
+       (__is_trivially_relocatable): New class.
+       * include/bits/stl_vector.h (__use_relocate): New static member.
+       * include/bits/vector.tcc (reserve, _M_realloc_insert,
+       _M_default_append): Use __relocate_a.
+       (reserve, _M_assign_aux, _M_realloc_insert, _M_fill_insert,
+       _M_default_append, _M_range_insert): Move _GLIBCXX_ASAN_ANNOTATE_REINIT
+       after _Destroy.
+       * testsuite/23_containers/vector/modifiers/push_back/49836.cc:
+       Replace CopyConsOnlyType with DelAnyAssign.
+
+2018-10-24  François Dumont  <fdumont@gcc.gnu.org>
+
+       * include/debug/safe_unordered_container.h
+       (_Safe_unordered_container<>::_M_invalidate_locals): Take lambda
+       parameter type from local end variable.
+       (_Safe_unordered_container<>::_M_invalidate_all): Likewise.
+       * include/debug/unordered_map
+       (unordered_map<>::begin()): Use C++11 direct initialization.
+       (unordered_map<>::end()): Likewise.
+       (unordered_map<>::cbegin()): Likewise.
+       (unordered_map<>::cend()): Likewise.
+       (unordered_map<>::begin(size_type)): Likewise.
+       (unordered_map<>::end(size_type)): Likewise.
+       (unordered_map<>::cbegin(size_type)): Likewise.
+       (unordered_map<>::cend(size_type)): Likewise.
+       (unordered_map<>::emplace<>(_Args&&...)): Likewise.
+       (unordered_map<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
+       (unordered_map<>::insert(const value_type&)): Likewise.
+       (unordered_map<>::insert(value_type&&)): Likewise.
+       (unordered_map<>::insert<>(_Pair&&)): Likewise.
+       (unordered_map<>::insert(const_iterator, const value_type&)): Likewise.
+       (unordered_map<>::insert(const_iterator, value_type&&)): Likewise.
+       (unordered_map<>::insert<>(const_iterator, _Pair&&)): Likewise.
+       (unordered_map<>::try_emplace<>(const key_type&, _Args&&...)): Likewise.
+       (unordered_map<>::try_emplace<>(key_type&&, _Args&&...)): Likewise.
+       (unordered_map<>::try_emplace<>(const_iterator, const key_type&,
+       _Args&&...)): Likewise.
+       (unordered_map<>::try_emplace<>(const_iterator, key_type&&,
+       _Args&&...)): Likewise.
+       (unordered_map<>::insert_or_assign<>(const key_type&, _Obj&&)): Likewise.
+       (unordered_map<>::insert_or_assign<>(key_type&&, _Obj&&)): Likewise.
+       (unordered_map<>::insert_or_assign<>(const_iterator, const key_type&,
+       _Obj&&)): Likewise.
+       (unordered_map<>::insert_or_assign<>(const_iterator, key_type&&,
+       _Obj&&)): Likewise.
+       (unordered_map<>::insert(note_type&&)): Likewise.
+       (unordered_map<>::find(const key_type&)): Likewise.
+       (unordered_map<>::equal_range(const key_type&)): Likewise.
+       (unordered_map<>::_M_extract): New.
+       (unordered_map<>::extract(const_iterator)): Use latter.
+       (unordered_map<>::extract(const key_type&)): Likewise.
+       (unordered_map<>::_M_erase): New.
+       (unordered_map<>::erase(const key_type&)): Use latter.
+       (unordered_map<>::erase(const_iterator)): Likewise.
+       (unordered_map<>::erase(iterator)): Likewise.
+       (unordered_map<>::_M_invalidate): New.
+       (unordered_map<>::erase(const_iterator, const_iterator)): Use latter.
+       (unordered_multimap<>::begin()): Use C++11 direct initialization.
+       (unordered_multimap<>::end()): Likewise.
+       (unordered_multimap<>::cbegin()): Likewise.
+       (unordered_multimap<>::cend()): Likewise.
+       (unordered_multimap<>::begin(size_type)): Likewise.
+       (unordered_multimap<>::end(size_type)): Likewise.
+       (unordered_multimap<>::cbegin(size_type)): Likewise.
+       (unordered_multimap<>::cend(size_type)): Likewise.
+       (unordered_multimap<>::emplace<>(_Args&&...)): Likewise.
+       (unordered_multimap<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
+       (unordered_multimap<>::insert(const value_type&)): Likewise.
+       (unordered_multimap<>::insert(const_iterator, const value_type&)): Likewise.
+       (unordered_multimap<>::insert(const_iterator, value_type&&)): Likewise.
+       (unordered_multimap<>::insert<>(_Pair&&)): Likewise.
+       (unordered_multimap<>::insert<>(const_iterator, _Pair&&)): Likewise.
+       (unordered_multimap<>::insert(note_type&&)): Likewise.
+       (unordered_multimap<>::insert(const_iterator, note_type&&)): Likewise.
+       (unordered_multimap<>::find(const key_type&)): Likewise.
+       (unordered_multimap<>::equal_range(const key_type&)): Likewise.
+       (unordered_multimap<>::_M_extract): New.
+       (unordered_multimap<>::extract(const_iterator)): Use latter.
+       (unordered_multimap<>::extract(const key_type&)): Likewise.
+       (unordered_multimap<>::_M_erase): New.
+       (unordered_multimap<>::erase(const_iterator)): Likewise.
+       (unordered_multimap<>::erase(iterator)): Likewise.
+       (unordered_multimap<>::_M_invalidate): New.
+       (unordered_multimap<>::erase(const key_type&)): Use latter.
+       (unordered_multimap<>::erase(const_iterator, const_iterator)): Likewise.
+       * include/debug/unordered_set
+       (unordered_set<>::begin()): Use C++11 direct initialization.
+       (unordered_set<>::end()): Likewise.
+       (unordered_set<>::cbegin()): Likewise.
+       (unordered_set<>::cend()): Likewise.
+       (unordered_set<>::begin(size_type)): Likewise.
+       (unordered_set<>::end(size_type)): Likewise.
+       (unordered_set<>::cbegin(size_type)): Likewise.
+       (unordered_set<>::cend(size_type)): Likewise.
+       (unordered_set<>::emplace<>(_Args&&...)): Likewise.
+       (unordered_set<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
+       (unordered_set<>::insert(const value_type&)): Likewise.
+       (unordered_set<>::insert(value_type&&)): Likewise.
+       (unordered_set<>::insert(const_iterator, const value_type&)): Likewise.
+       (unordered_set<>::insert(const_iterator, value_type&&)): Likewise.
+       (unordered_set<>::insert(note_type&&)): Likewise.
+       (unordered_set<>::insert(const_iterator, note_type&&)): Likewise.
+       (unordered_set<>::find(const key_type&)): Likewise.
+       (unordered_set<>::equal_range(const key_type&)): Likewise.
+       (unordered_set<>::_M_extract): New.
+       (unordered_set<>::extract(const_iterator)): Use latter.
+       (unordered_set<>::extract(const key_type&)): Likewise.
+       (unordered_set<>::_M_erase): New.
+       (unordered_set<>::erase(const key_type&)): Use latter.
+       (unordered_set<>::erase(const_iterator)): Likewise.
+       (unordered_set<>::erase(iterator)): Likewise.
+       (unordered_set<>::_M_invalidate): New.
+       (unordered_set<>::erase(const_iterator, const_iterator)): Use latter.
+       (unordered_multiset<>::begin()): Use C++11 direct initialization.
+       (unordered_multiset<>::end()): Likewise.
+       (unordered_multiset<>::cbegin()): Likewise.
+       (unordered_multiset<>::cend()): Likewise.
+       (unordered_multiset<>::begin(size_type)): Likewise.
+       (unordered_multiset<>::end(size_type)): Likewise.
+       (unordered_multiset<>::cbegin(size_type)): Likewise.
+       (unordered_multiset<>::cend(size_type)): Likewise.
+       (unordered_multiset<>::emplace<>(_Args&&...)): Likewise.
+       (unordered_multiset<>::emplace_hint<>(const_iterator, _Args&&...)): Likewise.
+       (unordered_multiset<>::insert(const value_type&)): Likewise.
+       (unordered_multiset<>::insert(const_iterator, const value_type&)): Likewise.
+       (unordered_multiset<>::insert(value_type&&)): Likewise.
+       (unordered_multiset<>::insert(const_iterator, value_type&&)): Likewise.
+       (unordered_multiset<>::insert(node_type&&)): Likewise.
+       (unordered_multiset<>::insert(const_iterator, node_type&&)): Likewise.
+       (unordered_multiset<>::find(const key_type&)): Likewise.
+       (unordered_multiset<>::equal_range(const key_type&)): Likewise.
+       (unordered_multiset<>::_M_extract): New.
+       (unordered_multiset<>::extract(const_iterator)): Use latter.
+       (unordered_multiset<>::extract(const key_type&)): Likewise.
+       (unordered_multiset<>::_M_erase): New.
+       (unordered_multiset<>::erase(const_iterator)): Likewise.
+       (unordered_multiset<>::erase(iterator)): Likewise.
+       (unordered_multiset<>::_M_invalidate): New.
+       (unordered_multiset<>::erase(const key_type&)): Use latter.
+       (unordered_multiset<>::erase(const_iterator, const_iterator)): Likewise.
+
+       * include/c_global/cstddef: Add versioned namespace.
+
+2018-10-23  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/87704
+       * include/bits/unique_ptr.h (unique_ptr::unique_ptr(nullptr_t)): Do
+       not delegate to default constructor.
+       (unique_ptr<T[], D>::unique_ptr(nullptr_t)): Likewise.
+       * testsuite/20_util/unique_ptr/cons/incomplete.cc: New test.
+
+2018-10-20  François Dumont  <fdumont@gcc.gnu.org>
+
+       * testsuite/util/testsuite_containers.h
+       (forward_members_unordered<>::forward_members_unordered
+       (const value_type&)): Add local_iterator pre and post increment checks.
+       * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.26 new symbol.
+
 2018-10-19  Jonathan Wakely  <jwakely@redhat.com>
 
+       * testsuite/23_containers/array/requirements/explicit_instantiation/
+       3.cc: Skip test when compiled with a -std=c++NN strict mode.
+       * testsuite/23_containers/deque/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/forward_list/requirements/
+       explicit_instantiation/3.cc: Likewise.
+       * testsuite/23_containers/list/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/map/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/multimap/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/multiset/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/set/requirements/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/
+       explicit_instantiation/3.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/
+       explicit_instantiation/3.cc: Likewise.
+       * testsuite/23_containers/unordered_multiset/requirements/
+       explicit_instantiation/3.cc: Likewise.
+       * testsuite/23_containers/unordered_set/requirements/
+       explicit_instantiation/3.cc: Likewise.
+       * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
+       3.cc: Likewise.
+       * testsuite/23_containers/vector/requirements/explicit_instantiation/
+       3.cc: Likewise.
+
+       * testsuite/23_containers/deque/48101_neg.cc: Prune additional errors
+       printed when __STRICT_ANSI__ is defined.
+       * testsuite/23_containers/forward_list/48101_neg.cc: Likewise.
+       * testsuite/23_containers/list/48101_neg.cc: Likewise.
+       * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
+       * testsuite/23_containers/set/48101_neg.cc: Likewise.
+       * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
+       * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
+       * testsuite/23_containers/vector/48101_neg.cc: Likewise.
+
+       * testsuite/23_containers/forward_list/requirements/
+       explicit_instantiation/5.cc [__STRICT_ANSI__]: Don't test non-standard
+       extension.
+       * testsuite/23_containers/list/requirements/explicit_instantiation/
+       5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
+       [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/multimap/requirements/explicit_instantiation/
+       5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/multiset/requirements/explicit_instantiation/
+       5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
+       [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/debug_container.cc
+       [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/
+       explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/
+       explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/unordered_multiset/requirements/
+       explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
+       * testsuite/23_containers/unordered_set/requirements/
+       explicit_instantiation/5.cc [__STRICT_ANSI__]: Likewise.
+
+       * testsuite/20_util/scoped_allocator/1.cc: Use allocator with correct
+       value type for the container.
+       * testsuite/23_containers/forward_list/cons/14.cc: Likewise.
+       * testsuite/23_containers/map/56613.cc: Likewise.
+       * testsuite/23_containers/unordered_map/55043.cc: Likewise.
+       * testsuite/23_containers/unordered_map/allocator/copy.cc: Likewise.
+       * testsuite/23_containers/unordered_map/allocator/copy_assign.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_map/allocator/minimal.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_map/allocator/move.cc: Likewise.
+       * testsuite/23_containers/unordered_map/allocator/move_assign.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_map/allocator/noexcept.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_map/cons/81891.cc: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/exception/
+       basic.cc: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/exception/
+       generation_prohibited.cc: Likewise.
+       * testsuite/23_containers/unordered_map/requirements/exception/
+       propagation_consistent.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/55043.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/copy.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/minimal.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/move.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
+       Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/exception/
+       basic.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/exception/
+       generation_prohibited.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/exception/
+       propagation_consistent.cc: Likewise.
+       * testsuite/23_containers/unordered_multimap/requirements/
+       explicit_instantiation/5.cc: Likewise.
+       * testsuite/ext/malloc_allocator/sanity.cc: Likewise.
+
+       * ext/special_functions/airy_ai/check_nan.cc: Skip test for
+       non-standard extension when a strict -std=c++NN dialect is used.
+       * ext/special_functions/airy_ai/check_value.cc: Likewise.
+       * ext/special_functions/airy_ai/compile.cc: Likewise.
+       * ext/special_functions/airy_bi/check_nan.cc: Likewise.
+       * ext/special_functions/airy_bi/check_value.cc: Likewise.
+       * ext/special_functions/airy_bi/compile.cc: Likewise.
+       * ext/special_functions/conf_hyperg/check_nan.cc: Likewise.
+       * ext/special_functions/conf_hyperg/check_value.cc: Likewise.
+       * ext/special_functions/conf_hyperg/compile.cc: Likewise.
+       * ext/special_functions/hyperg/check_nan.cc: Likewise.
+       * ext/special_functions/hyperg/check_value.cc: Likewise.
+       * ext/special_functions/hyperg/compile.cc: Likewise.
+
+       * testsuite/23_containers/list/requirements/explicit_instantiation/
+       5_c++0x.cc: Remove redundant test that is functionally identical to
+       the 5.cc test.
+       * testsuite/23_containers/map/requirements/explicit_instantiation/
+       5_c++0x.cc: Likewise.
+       * testsuite/23_containers/multimap/requirements/explicit_instantiation/
+       5_c++0x.cc: Likewise.
+       * testsuite/23_containers/multiset/requirements/explicit_instantiation/
+       5_c++0x.cc: Likewise.
+       * testsuite/23_containers/set/requirements/explicit_instantiation/
+       5_c++0x.cc: Likewise.
+
+       * include/bits/regex_executor.tcc (_Backref_matcher::_M_apply): Use
+       _GLIBCXX_STD_A to refer to normal mode algorithms.
+       * testsuite/28_regex/headers/regex/parallel_mode.cc: New test.
+       * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Remove empty
+       whitespace.
+
        * include/debug/map.h (map::erase(iterator)): Add abi-tag so that
        C++11 version mangles differently from incompatible C++98 version.
        * include/debug/multimap.h (multimap::erase(iterator)): Likewise.