1 2019-10-30 Jonathan Wakely <jwakely@redhat.com>
3 * include/std/bit (__cpp_lib_bitops): Define.
4 * include/std/version (__cpp_lib_constexpr): Remove.
5 (__cpp_lib_bitops, __cpp_lib_constexpr_dynamic_alloc): Define.
6 * testsuite/26_numerics/bit/header.cc: New test.
7 * testsuite/26_numerics/bit/header-2.cc: New test.
8 * testsuite/20_util/allocator_traits/header.cc: New test.
9 * testsuite/20_util/allocator_traits/header-2.cc: New test.
11 * include/bits/stl_iterator.h (namespace __gnu_cxx): Remove
12 using-declarations for std::iterator and std::iterator_traits.
13 (__gnu_cxx::__normal_iterator): Qualify iterator_traits.
14 * include/ext/algorithm (namespace __gnu_cxx): Remove
15 using-declarations for std names and qualify those names when used.
16 Also refer to std::min in parentheses to protect against function-like
18 * include/ext/rc_string_base.h: Qualify iterator_traits.
19 * include/ext/sso_string_base.h: Qualify iterator_traits.
22 * include/bits/stl_bvector.h (_Bit_iterator::pointer)
23 (_Bit_const_iterator::pointer): Define as void for C++20.
24 * include/bits/stl_iterator.h (reverse_iterator::operator->()): Add
25 constraints for C++20.
26 (__normal_iterator::iterator_concept): Define for C++20.
27 * include/bits/streambuf_iterator.h (istreambuf_iterator::pointer):
28 Define as void for C++20.
29 (ostreambuf_iterator::difference_type): Define as ptrdiff_t for C++20.
30 (ostreambuf_iterator::ostreambuf_iterator()): Add default constructor
32 * testsuite/23_containers/vector/bool/iterator_c++20.cc: New test.
33 * testsuite/24_iterators/bidirectional/concept.cc: New test.
34 * testsuite/24_iterators/bidirectional/tag.cc: New test.
35 * testsuite/24_iterators/contiguous/concept.cc: New test.
36 * testsuite/24_iterators/contiguous/tag.cc: New test.
37 * testsuite/24_iterators/forward/concept.cc: New test.
38 * testsuite/24_iterators/forward/tag.cc: New test.
39 * testsuite/24_iterators/input/concept.cc: New test.
40 * testsuite/24_iterators/input/tag.cc: New test.
41 * testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc:
43 * testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc:
45 * testsuite/24_iterators/output/concept.cc: New test.
46 * testsuite/24_iterators/output/tag.cc: New test.
47 * testsuite/24_iterators/random_access/concept.cc: New test.
48 * testsuite/24_iterators/random_access/tag.cc: New test.
49 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: New
51 * testsuite/24_iterators/random_access_iterator/26020.cc: Move to ...
52 * testsuite/24_iterators/operations/26020.cc: ... here.
53 * testsuite/24_iterators/random_access_iterator/
54 string_vector_iterators.cc: Move to ...
55 * testsuite/24_iterators/random_access/string_vector_iterators.cc: ...
58 * testsuite/util/testsuite_iterators.h: Fix typo in __cplusplus check.
60 2019-10-29 Jonathan Wakely <jwakely@redhat.com>
62 * include/bits/range_access.h (ranges::disable_sized_range)
63 (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
64 (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
65 (ranges::size, ranges::empty, ranges::data, ranges::cdata)
66 (ranges::range, ranges::sized_range, ranges::advance, ranges::distance)
67 (ranges::next, ranges::prev): Guard with __cpp_lib_concepts.
68 * include/bits/stl_iterator.h (disable_sized_sentinel): Likewise.
70 * include/bits/alloc_traits.h (__cpp_lib_constexpr_dynamic_alloc):
72 (allocator_traits::_S_construct, allocator_traits::_S_destroy)
73 (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use
74 _GLIBCXX14_CONSTEXPR instead of constexpr.
75 * include/bits/stl_construct.h (_Destroy): Likewise.
77 * include/Makefile.am: Add new header.
78 * include/Makefile.in: Regenerate.
79 * include/bits/iterator_concepts.h: New header.
80 (contiguous_iterator_tag, iter_reference_t, ranges::iter_move)
81 (iter_rvalue_reference_t, incrementable_traits, iter_difference_t)
82 (readable_traits, iter_value_t, readable, iter_common_reference_t)
83 (writable, waekly_incrementable, incrementable)
84 (input_or_output_iterator, sentinel_for, disable_sized_sentinel)
85 (sized_sentinel_for, input_iterator, output_iterator)
86 (forward_iterator, bidirectional_iterator, random_access_iterator)
87 (contiguous_iterator, indirectly_unary_invocable)
88 (indirectly_regular_unary_invocable, indirect_unary_predicate)
89 (indirect_relation, indirect_strict_weak_order, indirect_result_t)
90 (projected, indirectly_movable, indirectly_movable_storable)
91 (indirectly_copyable, indirectly_copyable_storable, ranges::iter_swap)
92 (indirectly_swappable, indirectly_comparable, permutable, mergeable)
93 (sortable, unreachable_sentinel_t, unreachable_sentinel)
94 (default_sentinel_t, default_sentinel): Define.
95 (__detail::__cpp17_iterator, __detail::__cpp17_input_iterator)
96 (__detail::__cpp17_fwd_iterator, __detail::__cpp17_bidi_iterator)
97 (__detail::__cpp17_randacc_iterator): Define.
98 (__iterator_traits): Define constrained specializations.
99 * include/bits/move.h (move): Only use old concept check for C++98.
100 * include/bits/range_access.h (ranges::disable_sized_range)
101 (ranges::begin, ranges::end, ranges::cbegin, ranges::cend)
102 (ranges::rbegin, ranges::rend, ranges::crbegin, ranges::crend)
103 (ranges::size, ranges::empty, ranges::data, ranges::cdata): Define
104 new customization points for C++20.
105 (ranges::range, ranges::sized_range): Define new concepts for C++20.
106 (ranges::advance, ranges::distance, ranges::next, ranges::prev):
107 Define new functions for C++20.
108 (__adl_end, __adl_cdata, __adl_cbegin, __adl_cend, __adl_rbegin)
109 (__adl_rend, __adl_crbegin, __adl_crend, __adl_cdata, __adl_size)
110 (__adl_empty): Remove.
111 * include/bits/stl_iterator.h (disable_sized_sentinel): Specialize
112 for reverse_iterator.
113 * include/bits/stl_iterator_base_types.h (contiguous_iterator_tag):
114 Define new struct for C++20.
115 (iterator_traits<_Tp*>): Constrain partial specialization in C++20.
116 * include/std/concepts (__is_class_or_enum): Move to __detail
118 * testsuite/20_util/forward/c_neg.cc: Adjust dg-error line number.
119 * testsuite/20_util/forward/f_neg.cc: Likewise.
120 * testsuite/24_iterators/associated_types/incrementable.traits.cc: New
122 * testsuite/24_iterators/associated_types/readable.traits.cc: New test.
123 * testsuite/24_iterators/contiguous/concept.cc: New test.
124 * testsuite/24_iterators/contiguous/tag.cc: New test.
125 * testsuite/24_iterators/customization_points/iter_move.cc: New test.
126 * testsuite/24_iterators/customization_points/iter_swap.cc: New test.
127 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: New test.
128 * testsuite/24_iterators/range_operations/advance.cc: New test.
129 * testsuite/24_iterators/range_operations/distance.cc: New test.
130 * testsuite/24_iterators/range_operations/next.cc: New test.
131 * testsuite/24_iterators/range_operations/prev.cc: New test.
132 * testsuite/26_numerics/adjacent_difference/requirements/
133 explicit_instantiation/2.cc: Rename types that conflict with C++20
135 * testsuite/26_numerics/adjacent_difference/requirements/
136 explicit_instantiation/pod.cc: Likewise.
137 * testsuite/26_numerics/partial_sum/requirements/
138 explicit_instantiation/2.cc: Likewise.
139 * testsuite/26_numerics/partial_sum/requirements/
140 explicit_instantiation/pod.cc: Likewise.
141 * testsuite/experimental/iterator/requirements.cc: Likewise.
142 * testsuite/std/ranges/access/begin.cc: New test.
143 * testsuite/std/ranges/access/cbegin.cc: New test.
144 * testsuite/std/ranges/access/cdata.cc: New test.
145 * testsuite/std/ranges/access/cend.cc: New test.
146 * testsuite/std/ranges/access/crbegin.cc: New test.
147 * testsuite/std/ranges/access/crend.cc: New test.
148 * testsuite/std/ranges/access/data.cc: New test.
149 * testsuite/std/ranges/access/empty.cc: New test.
150 * testsuite/std/ranges/access/end.cc: New test.
151 * testsuite/std/ranges/access/rbegin.cc: New test.
152 * testsuite/std/ranges/access/rend.cc: New test.
153 * testsuite/std/ranges/access/size.cc: New test.
154 * testsuite/util/testsuite_iterators.h (contiguous_iterator_wrapper)
155 (test_range, test_sized_range): New test utilities.
157 * testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add
159 (WritableObject::operator=): Constrain with enable_if when available.
160 (remove_cv): Use std::remove_if when available.
161 (test_container::it(int)): Use size().
162 (test_container::size()): Use BoundsContainer::size().
165 * include/bits/stl_deque.h (_Deque_iterator(const _Deque_iterator&)):
166 Do not define as defaulted.
167 * testsuite/23_containers/deque/types/92267.cc: New test.
169 2019-10-26 Gerald Pfeifer <gerald@pfeifer.com>
171 * doc/xml/manual/codecvt.xml: Switch pubs.opengroup.org to https.
172 * doc/xml/manual/locale.xml (LC_ALL): Ditto.
173 * doc/xml/manual/messages.xml: Ditto.
175 2019-10-26 John David Anglin <danglin@gcc.gnu.org>
177 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
179 2019-10-25 Jonathan Wakely <jwakely@redhat.com>
181 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper)
182 (input_iterator_wrapper, forward_iterator_wrapper)
183 bidirectional_iterator_wrapper, random_access_iterator_wrapper): Remove
184 user-provided copy constructors and copy assignment operators so they
185 are defined implicitly.
186 (input_iterator_wrapper): Initialize members in default constructor.
187 (forward_iterator_wrapper): Remove assignments to members of base.
189 * include/bits/allocator.h: Check __cpp_constexpr_dynamic_alloc
190 before making the std::allocator destructor constexpr.
191 * testsuite/20_util/allocator/requirements/constexpr.cc: New test.
193 * include/bits/range_cmp.h: Check __cpp_lib_concepts before defining
194 concepts. Fix comment.
195 * include/bits/allocator.h
197 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
199 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
200 pubs.opengroup.org to https.
202 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
204 * doc/xml/gnu/gpl-3.0.xml: Switch www.gnu.org to https.
206 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
208 * doc/xml/manual/status_cxx2020.xml: Add rows and update status.
210 2019-10-24 Jonathan Wakely <jwakely@redhat.com>
212 * include/bits/allocator.h (allocator<void>): Restore the explicit
213 specialization for C++20, but make its API consistent with the primary
215 (allocator::~allocator()): Restore the destructor for C++20, but make
217 * testsuite/20_util/allocator/rebind_c++20.cc: Check allocator<void>.
218 * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise.
219 * testsuite/20_util/allocator/void.cc: Check that constructors and
220 destructors are trivial. Check for converting constructor in C++20.
221 * testsuite/ext/malloc_allocator/variadic_construct.cc: Simplify
222 dejagnu target selector.
223 * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
225 * include/experimental/executor (__use_future_ct, use_future_t):
226 Define partial specializations for std::allocator.
227 (__use_future_ch): Overload constructor for completion tokens using
230 PR libstdc++/88338 Implement P0898R3, C++20 concepts library
231 * doc/xml/manual/status_cxx2020.xml: Update status.
232 * doc/html/*: Regenerate.
233 * testsuite/std/concepts/1.cc: New test.
234 * testsuite/std/concepts/2.cc: New test.
236 * include/bits/random.h (uniform_random_bit_generator): Define for
238 * testsuite/26_numerics/random/concept.cc: New test.
239 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
241 2019-10-23 Jonathan Wakely <jwakely@redhat.com>
243 * include/std/functional (invoke): Add constexpr for C++20.
244 * include/std/version (__cpp_lib_constexpr_invoke): Define.
245 * testsuite/20_util/function_objects/invoke/constexpr.cc: New test.
247 PR c++/91369 Implement P0784R7 changes to allocation and construction
248 * include/bits/alloc_traits.h: Include <bits/stl_construct.h>.
249 (allocator_traits::_S_allocate, allocator_traits::_S_construct)
250 (allocator_traits::_S_destroy, allocator_traits::_S_max_size)
251 (allocator_traits::_S_select, allocator_traits::allocate)
252 (allocator_traits::deallocate, allocator_traits::construct)
253 (allocator_traits::destroy, allocator_traits::max_size)
254 (allocator_traits::select_on_container_copy_construction)
255 (allocator_traits<allocator<T>>): Add constexpr specifier for C++20.
256 (allocator_traits<allocator<T>>::construct): Use construct_at.
257 (allocator_traits<allocator<T>>::destroy): Use destroy_at.
258 (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Add constexpr
260 (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
261 (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move here
262 from <bits/stl_construct.h>.
263 * include/bits/allocator.h (allocator::~allocator): Remove for C++20.
264 (allocator::allocate, allocate::deallocate): Define for C++20 and up.
265 (operator==, operator!=): Add constexpr specifier for C++20.
266 * include/bits/stl_construct.h: Don't include <ext/alloc_traits.h>.
267 (destroy_at): For C++20 add constexpr specifier and support for
269 (construct_at): Define new function for C++20.
270 (_Construct): Return result of placement new-expression. For C++11 and
271 up add constexpr. For C++20 dispatch to std::construct_at during
273 (_Destroy(pointer)): Add constexpr specifier. For C++20 dispatch to
274 std::destroy_at during constant evaluation.
275 (_Destroy_aux::__destroy, _Destroy_n_aux::__destroy_n): Add constexpr
277 (_Destroy(ForwardIterator, ForwardIterator))
278 (_Destroy(ForwardIterator, Size)): Likewise. Do not elide trivial
279 destructors during constant evaluation.
280 (destroy, destroy_n): Add constexpr specifier for C++20.
281 (_Destroy(ForwardIterator, ForwardIterator, Alloc&))
282 (_Destroy(ForwardIterator, ForwardIterator, allocator<T>&)): Move to
283 <bits/alloc_traits.h>, to remove dependency on allocators.
284 * include/bits/stl_uninitialized.h: Include <ext/alloc_traits.h>.
285 Include <bits/stl_pair.h> instead of <utility>.
286 * include/ext/alloc_traits.h: Always include <bits/alloc_traits.h>.
287 (__alloc_traits::construct, __alloc_traits::destroy)
288 (__alloc_traits::_S_select_on_copy, __alloc_traits::_S_on_swap): Add
290 * include/ext/malloc_allocator.h (operator==, operator!=): Add
291 constexpr specifier for C++20.
292 * include/ext/new_allocator.h (operator==, operator!=): Likewise.
293 * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr.
294 * testsuite/20_util/scoped_allocator/69293_neg.cc: Ignore additional
295 errors due to constexpr function called after failed static_assert.
296 * testsuite/20_util/specialized_algorithms/construct_at/1.cc: New test.
297 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
298 Ignore additional errors due to constexpr function called after failed
300 * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise.
302 * testsuite/20_util/bind/91371.cc: Fix test to compile as C++11.
304 * include/debug/helper_functions.h (__valid_range): Change
305 _GLIBCXX_CONSTEXPR to _GLIBCXX14_CONSTEXPR.
307 * include/ext/throw_allocator.h (throw_allocator_base): Qualify
308 size_t and ptrdiff_t.
310 * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp:
311 Use detail::rebind_traits.
312 * include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp:
314 * include/ext/pb_ds/detail/bin_search_tree_/traits.hpp: Likewise.
315 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp: Likewise.
316 * include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp: Likewise.
317 * include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp: Likewise.
318 * include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp:
320 * include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
322 * include/ext/pb_ds/detail/branch_policy/branch_policy.hpp: Likewise.
323 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Likewise.
324 * include/ext/pb_ds/detail/cond_dealtor.hpp: Likewise.
325 * include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp (has_eq_fn): Likewise.
326 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Likewise.
327 * include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp: Likewise.
328 * include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp: Likewise.
329 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
330 left_child_next_sibling_heap_.hpp: Likewise.
331 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp:
333 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
334 point_const_iterator.hpp: Likewise.
335 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp: Likewise.
336 * include/ext/pb_ds/detail/ov_tree_map_/
337 constructors_destructor_fn_imps.hpp: Likewise.
338 * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Likewise.
339 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp: Likewise.
340 * include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp: Likewise.
341 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Likewise.
342 * include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp: Likewise.
343 * include/ext/pb_ds/detail/rb_tree_map_/node.hpp: Likewise.
344 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp: Likewise.
345 * include/ext/pb_ds/detail/splay_tree_/node.hpp: Likewise.
346 * include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp: Likewise.
347 * include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp:
349 * include/ext/pb_ds/detail/type_utils.hpp: Fix typo in comment.
350 * include/ext/pb_ds/detail/types_traits.hpp (stored_value): Add
351 bool parameter to control whether the hash value is stored.
352 (select_base_type): New class template and partial specialization.
353 (maybe_null_type): Likewise.
354 (rebind_traits): New class template.
355 (type_base): Remove four nearly identical specializations.
356 (type_dispatch): Remove.
357 (type_traits): Use select_base_type and maybe_null_type instead of
358 type_base to control differences between specializations.
359 * include/ext/pb_ds/list_update_policy.hpp: Use detail::rebind_traits.
360 * include/ext/pb_ds/priority_queue.hpp: Likewise.
361 * include/ext/pb_ds/tree_policy.hpp: Likewise.
362 * include/ext/pb_ds/trie_policy.hpp: Likewise.
364 * include/backward/hash_set (hash_set): Use __alloc_traits.
365 * include/backward/hashtable.h (_Hashtable): Likewise.
366 * include/ext/alloc_traits.h (__alloc_traits::allocate): Add overload
368 * include/ext/extptr_allocator.h (_ExtPtr_allocator::allocate): Ignore
370 * include/ext/slist (_Slist_base): Use __alloc_traits.
371 * include/tr1/hashtable.h (_Hashtable): Likewise.
372 * include/tr1/regex (match_results): Use vector::const_reference
373 instead of assuming the allocator defines it.
374 * testsuite/backward/hash_map/23528.cc: Use allocator_traits in C++11.
375 * testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc: Use
376 __gnu_test::max_size.
377 * testsuite/tr1/6_containers/unordered_multimap/capacity/
378 29134-multimap.cc: Likewise.
379 * testsuite/tr1/6_containers/unordered_multiset/capacity/
380 29134-multiset.cc: Likewise.
381 * testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc:
384 2019-10-22 Jonathan Wakely <jwakely@redhat.com>
386 * testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
387 when compiled as C++98.
389 * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98.
390 * testsuite/17_intro/names.cc: Check uses_allocator in C++98.
392 * include/bits/alloc_traits.h
393 (allocator_traits<allocator<T>>::allocate): Ignore hint for C++20.
394 (allocator_traits<allocator<T>>::construct): Perform placement new
395 directly for C++20, instead of calling allocator<T>::construct.
396 (allocator_traits<allocator<T>>::destroy): Call destructor directly
397 for C++20, instead of calling allocator<T>::destroy.
398 (allocator_traits<allocator<T>>::max_size): Return value directly
399 for C++20, instead of calling std::allocator<T>::max_size().
400 (__do_alloc_on_copy, __do_alloc_on_move, __do_alloc_on_swap): Do not
401 define for C++17 and up.
402 (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if-constexpr
403 for C++17 and up, instead of tag dispatching.
404 * include/bits/allocator.h (allocator<void>): Remove for C++20.
405 (allocator::pointer, allocator::const_pointer, allocator::reference)
406 (allocator::const_reference, allocator::rebind): Remove for C++20.
407 * include/bits/basic_string.h (basic_string): Use __alloc_traits to
409 * include/bits/memoryfwd.h (allocator<void>): Remove for C++20.
410 * include/ext/debug_allocator.h: Use __alloc_traits for rebinding.
411 * include/ext/malloc_allocator.h (malloc_allocator::~malloc_allocator)
412 (malloc_allocator::pointer, malloc_allocator::const_pointer)
413 (malloc_allocator::reference, malloc_allocator::const_reference)
414 (malloc_allocator::rebind, malloc_allocator::max_size)
415 (malloc_allocator::construct, malloc_allocator::destroy): Do not
417 (malloc_allocator::_M_max_size): Define new function.
418 * include/ext/new_allocator.h (new_allocator::~new_allocator)
419 (new_allocator::pointer, new_allocator::const_pointer)
420 (new_allocator::reference, new_allocator::const_reference)
421 (new_allocator::rebind, new_allocator::max_size)
422 (new_allocator::construct, new_allocator::destroy): Do not
424 (new_allocator::_M_max_size): Define new function.
425 * include/ext/rc_string_base.h (__rc_string_base::_Rep): Use
426 __alloc_traits to rebind allocator.
427 * include/ext/rope (_Rope_rep_base, _Rope_base): Likewise.
428 (rope::rope(CharT, const allocator_type&)): Use __alloc_traits
429 to construct character.
430 * include/ext/slist (_Slist_base): Use __alloc_traits to rebind
432 * include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
434 * include/ext/throw_allocator.h (throw_allocator): Do not use optional
435 members of std::allocator, use __alloc_traits members instead.
436 * include/ext/vstring.h (__versa_string): Use __alloc_traits.
437 * include/ext/vstring_util.h (__vstring_utility): Likewise.
438 * include/std/memory: Include <bits/alloc_traits.h>.
439 * testsuite/20_util/allocator/8230.cc: Use __gnu_test::max_size.
440 * testsuite/20_util/allocator/rebind_c++20.cc: New test.
441 * testsuite/20_util/allocator/requirements/typedefs.cc: Do not check
442 for pointer, const_pointer, reference, const_reference or rebind in
444 * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: New test.
445 * testsuite/23_containers/deque/capacity/29134.cc: Use
446 __gnu_test::max_size.
447 * testsuite/23_containers/forward_list/capacity/1.cc: Likewise.
448 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
449 * testsuite/23_containers/map/capacity/29134.cc: Likewise.
450 * testsuite/23_containers/multimap/capacity/29134.cc: Likewise.
451 * testsuite/23_containers/multiset/capacity/29134.cc: Likewise.
452 * testsuite/23_containers/set/capacity/29134.cc: Likewise.
453 * testsuite/23_containers/vector/capacity/29134.cc: Likewise.
454 * testsuite/ext/malloc_allocator/variadic_construct.cc: Do not run
456 * testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
457 * testsuite/ext/vstring/capacity/29134.cc: Use __gnu_test::max_size.
458 * testsuite/util/replacement_memory_operators.h: Do not assume
459 Alloc::pointer exists.
460 * testsuite/util/testsuite_allocator.h (__gnu_test::max_size): Define
461 helper to call max_size for any allocator.
463 2019-10-22 Andreas Schwab <schwab@suse.de>
465 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
467 2019-10-18 Jonathan Wakely <jwakely@redhat.com>
470 * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
471 to at least sizeof(void*).
473 * include/bits/range_cmp.h (ranges::less::operator()): Inline the
474 logic from std::less::operator() to remove the dependency on it.
476 2019-10-17 Jonathan Wakely <jwakely@redhat.com>
478 * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
480 * include/Makefile.am: Add new header.
481 * include/Makefile.in: Regenerate.
482 * include/bits/range_cmp.h: New header for C++20 function objects.
483 * include/std/functional: Include new header.
484 * testsuite/20_util/function_objects/identity/1.cc: New test.
485 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: New test.
486 * testsuite/20_util/function_objects/range.cmp/greater.cc: New test.
487 * testsuite/20_util/function_objects/range.cmp/greater_equal.cc: New
489 * testsuite/20_util/function_objects/range.cmp/less.cc: New test.
490 * testsuite/20_util/function_objects/range.cmp/less_equal.cc: New test.
491 * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc: New
495 * include/bits/forward_list.h
496 (_M_move_assign(forward_list&&, false_type)): Do not use
497 __make_move_if_noexcept, instead move unconditionally.
498 * include/bits/stl_deque.h (_M_move_assign2(deque&&, false_type)):
500 * include/bits/stl_list.h (_M_move_assign(list&&, false_type)):
502 * include/bits/stl_vector.h (_M_move_assign(vector&&, false_type)):
504 * testsuite/23_containers/vector/92124.cc: New test.
506 2019-10-16 Jonathan Wakely <jwakely@redhat.com>
508 * include/bits/c++config (_GLIBCXX_BUILTIN_IS_SAME_AS): Define to
509 one of __is_same_as or __is_same when available.
510 * include/std/concepts (__detail::__same_as): Use std::is_same_v.
511 * include/std/type_traits (is_same) [_GLIBCXX_BUILTIN_IS_SAME_AS]:
512 Use new macro instead of __is_same_as.
513 (is_same) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Restore partial
515 (is_same_v) [_GLIBCXX_BUILTIN_IS_SAME_AS]: Use new macro.
516 (is_same_v) [!_GLIBCXX_BUILTIN_IS_SAME_AS]: Use std::is_same.
518 2019-10-16 François Dumont <fdumont@gcc.gnu.org>
520 * src/c++11/debug.cc (print_field): Replace constness_names <unknown>
521 entry with <unknown constness>. Replace state_names <unknown> entry with
524 2019-10-11 Jonathan Wakely <jwakely@redhat.com>
526 * include/Makefile.am: Add new header.
527 * include/Makefile.in: Regenerate.
528 * include/precompiled/stdc++.h: Include <concepts>.
529 * include/std/concepts: New header for C++20.
530 * include/std/version (__cpp_lib_concepts): Define.
531 * scripts/create_testsuite_files: Look for test files in new std
533 * testsuite/libstdc++-dg/conformance.exp: Likewise.
534 * testsuite/std/concepts/concepts.callable/invocable.cc: New test.
535 * testsuite/std/concepts/concepts.callable/regular_invocable.cc: New
537 * testsuite/std/concepts/concepts.callable/relation.cc: New test.
538 * testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
540 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
541 floating_point.cc: New test.
542 * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
544 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
545 signed_integral.cc: New test.
546 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
547 unsigned_integral.cc: New test.
548 * testsuite/std/concepts/concepts.lang/concept.assignable/1.cc: New
550 * testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
551 * testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
553 * testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
555 * testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
557 * testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
559 * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
561 * testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
563 * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
565 * testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
567 * testsuite/std/concepts/concepts.lang/concept.same/1.cc:
569 * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
571 * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
573 * testsuite/std/concepts/concepts.lang/concept.swappable/
574 swappable_with.cc: New test.
575 * testsuite/std/concepts/concepts.object/copyable.cc: New test.
576 * testsuite/std/concepts/concepts.object/movable.cc: New test.
577 * testsuite/std/concepts/concepts.object/regular.cc: New test.
578 * testsuite/std/concepts/concepts.object/semiregular.cc: New test.
580 * include/std/type_traits (is_same): Replace partial specialization
581 by using __is_same_as built-in in primary template.
582 (is_same_v): Use __is_same_as built-in instead of instantiating the
586 * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all
587 special member functions as defaulted. Add noexcept to most members.
588 (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)):
589 Mask off unwanted bits in the __val parameter. Avoid undefined left
591 (__dynamic_bitset_base::_M_assign): Remove.
592 (__dynamic_bitset_base::_M_do_reset): Use std::fill.
593 (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when
594 block_type has lower rank than int.
595 (dynamic_bitset): Add noexcept to most members. Use injected-class-name
596 in return types and parameter types.
597 (dynamic_bitset::_M_Nb): Add default member initializer.
598 (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as
600 (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
601 (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
603 (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier.
604 Define without using swap, to propagate allocator correctly.
605 (dynamic_bitset(const char*, const _Alloc&)): Use strlen.
606 (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use
607 casts to avoid unwanted integer promotions.
608 (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and
609 add default template arguments and default argument to simplify usage.
610 (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr.
611 (operator==(const dynamic_bitset&, const dynamic_bitset&))
612 (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb.
613 * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr):
614 Adjust template parameters to match declaration.
615 * testsuite/tr2/dynamic_bitset/cmp.cc: New test.
616 * testsuite/tr2/dynamic_bitset/cons.cc: New test.
617 * testsuite/tr2/dynamic_bitset/copy.cc: New test.
618 * testsuite/tr2/dynamic_bitset/move.cc: New test.
619 * testsuite/tr2/dynamic_bitset/pr92059.cc: New test.
621 * include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
624 2019-10-10 Jonathan Wakely <jwakely@redhat.com>
627 * src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
628 (find_ldbl_sync_facet): Fix parameter type and missing return.
630 2019-10-09 Marek Polacek <polacek@redhat.com>
632 PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
633 PR c++/69531 - DR 1307: Differently bounded array parameters.
634 PR c++/88128 - DR 330: Qual convs and pointers to arrays of pointers.
635 * testsuite/23_containers/span/lwg3255.cc: Adjust test to match the
636 post-P0388R4 behavior.
638 2019-10-09 Jonathan Wakely <jwakely@redhat.com>
641 * src/c++98/locale.cc (locale::id::_M_id()) [__GTHREADS]: Use atomic
642 compare-exchange or double-checked lock to ensure only one thread sets
643 the _M_index variable.
644 [_GLIBCXX_LONG_DOUBLE_COMPAT]: Call find_ldbl_sync_facet to detect
645 facets that share another facet's ID.
646 [_GLIBCXX_LONG_DOUBLE_COMPAT] (find_ldbl_sync_facet): New function.
649 * src/c++98/locale_init.cc (locale::classic()): Do not construct a new
650 locale object for every call.
651 (locale::_S_initialize_once()): Construct C locale here.
653 2019-10-08 Jonathan Wakely <jwakely@redhat.com>
655 * doc/Makefile.am (doc-html-docbook-regenerate): New target.
656 (${docbook_outdir}/html): Do not create unused 'html/ext' directory.
657 * doc/Makefile.in: Regenerate.
658 * doc/xml/manual/documentation_hacking.xml: Document new target.
659 * doc/html/*: Regenerate.
661 * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
662 * doc/html/*: Regenerate.
664 2019-10-06 François Dumont <fdumont@gcc.gnu.org>
666 * include/bits/stl_algo.h
667 (__copy_n_a(_IIte, _Size, _OIte)): New.
668 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New declaration.
669 (__copy_n(_IIte, _Size, _OIte, input_iterator_tag)): Adapt to use
671 * include/bits/streambuf_iterator.h (istreambuf_iterator<>): Declare
672 std::__copy_n_a friend.
673 (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*)): New.
674 * testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc: New.
675 * testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc: New.
676 * testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc: New.
678 * include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
680 (_RequireInputIte): Likewise and use __enable_if_t.
681 * include/std/numeric
682 (__is_random_access_iter): Use __iterator_category_t.
684 * include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
686 * testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
687 * testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
689 2019-10-04 François Dumont <fdumont@gcc.gnu.org>
691 * include/debug/forward_list
692 (_Sequence_traits<__debug::forward_list<>>::_S_size): Returns __dp_sign
693 distance when not empty.
694 * include/debug/list (_Sequence_traits<__debug::list<>>::_S_size):
696 * include/debug/helper_functions.h (__dp_sign_max_size): New
697 _Distance_precision enum entry.
698 (__valid_range_aux(_IIte, _IIte, _Distance_traits<>::__type,
699 __false_type)): Adapt.
700 * include/debug/safe_iterator.tcc
701 (_Safe_iterator<>::_M_get_distance_to(const _Safe_iterator&)): Review
702 distance computation.
704 2019-10-04 Jonathan Wakely <jwakely@redhat.com>
708 * configure.ac: Use AC_SYS_LARGEFILE to enable 64-bit file APIs.
709 * config.h.in: Regenerate:
710 * configure: Regenerate:
711 * include/Makefile.am (${host_builddir}/largefile-config.h): New
712 target to generate config header for filesystem library.
713 (${host_builddir}/c++config.h): Rename macros for large file support.
714 * include/Makefile.in: Regenerate.
715 * src/c++17/fs_dir.cc: Include new config header.
716 * src/c++17/fs_ops.cc: Likewise.
717 (filesystem::file_size): Use uintmax_t for size.
718 * src/filesystem/dir.cc: Include new config header.
719 * src/filesystem/ops.cc: Likewise.
720 (experimental::filesystem::file_size): Use uintmax_t for size.
722 * testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
723 std::tr1::unordered_map.
724 * testsuite/util/testsuite_allocator.h: Likewise.
726 * include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
728 * include/tr1/hashtable.h (tr1::_Hashtable::_M_allocate_node): Use
729 __gnu_cxx::__alloc_traits for allocator construct function.
730 (tr1::_Hashtable::_M_deallocate_node): Likewise for destroy function.
732 * include/precompiled/stdc++.h: Include <span> for C++20.
733 * testsuite/17_intro/names.cc: Do not define 'e' for C++20.
735 2019-10-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
737 * include/parallel/multiway_merge.h (_RAIter3): Replace _C by _Cp.
739 2019-10-02 Jonathan Wakely <jwakely@redhat.com>
741 * config/abi/pre/gnu.ver: Tighten up greedy wildcards.
743 * doc/xml/manual/parallel_mode.xml: Add caveat about support for
745 * doc/html/*: Regenerate.
747 2019-10-01 Jonathan Wakely <jwakely@redhat.com>
749 * include/experimental/algorithm (experimental::sample): Qualify call
750 to __sample correctly.
751 * include/parallel/algo.h (sample, for_each_n): Add using-declarations
752 for algorithms that don't have parallel implementations.
754 * include/parallel/algobase.h (equal, lexicographical_compare): Add
755 _GLIBCXX20_CONSTEXPR and dispatch to sequential algorithm when being
757 * include/parallel/algorithmfwd.h (equal, lexicographical_compare):
758 Add _GLIBCXX20_CONSTEXPR.
760 * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Skip test for
762 * testsuite/20_util/hash/84998.cc: Likewise.
763 * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: Likewise.
764 * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: Likewise.
765 * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
766 * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
767 * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: Likewise.
768 * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: Likewise.
769 * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
770 * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
772 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
774 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
776 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
778 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
780 * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: Likewise.
781 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
782 * testsuite/25_algorithms/copy/86658.cc: Likewise.
783 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
784 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
785 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
786 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
788 * include/parallel/algo.h: Replace non-reserved names.
789 * include/parallel/multiway_merge.h: Likewise.
790 * include/parallel/multiway_mergesort.h: Likewise.
791 * include/parallel/numericfwd.h: Likewise.
792 * testsuite/17_intro/names.cc: Add RAI to test macros.
794 2019-09-30 François Dumont <fdumont@gcc.gnu.org>
796 * include/debug/array: Add C++20 constexpr to comparison operators.
797 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adapt
798 dg-error line numbers.
799 * testsuite/23_containers/array/tuple_interface/
800 tuple_element_debug_neg.cc: Likewise.
802 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
804 * include/experimental/internet: Include netinet/in.h if we have
805 _GLIBCXX_HAVE_NETINET_IN_H defined.
807 * testsuite/ext/special_functions/airy_ai/check_nan.cc: Ignore the
808 FreeBSD warning about lower advertised precision of tgammal.
809 * testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
810 * testsuite/special_functions/07_cyl_bessel_i/check_nan.cc: Likewise.
811 * testsuite/special_functions/08_cyl_bessel_j/check_nan.cc: Likewise.
812 * testsuite/special_functions/09_cyl_bessel_k/check_nan.cc: Likewise.
813 * testsuite/special_functions/10_cyl_neumann/check_nan.cc: Likewise.
814 * testsuite/special_functions/19_sph_bessel/check_nan.cc: Likewise.
815 * testsuite/special_functions/21_sph_neumann/check_nan.cc: Likewise.
816 * testsuite/tr1/5_numerical_facilities/special_functions/
817 08_cyl_bessel_i/check_nan.cc: Likewise.
818 * testsuite/tr1/5_numerical_facilities/special_functions/
819 09_cyl_bessel_j/check_nan.cc: Likewise.
820 * testuite/tr1/5_numerical_facilities/special_functions/
821 10_cyl_bessel_k/check_nan.cc: Likewise.
822 * testsuite/tr1/5_numerical_facilities/special_functions/
823 11_cyl_neumann/check_nan.cc: Likewise.
824 * testsuite/tr1/5_numerical_facilities/special_functions/
825 21_sph_bessel/check_nan.cc: Likewise.
826 * testsuite/tr1/5_numerical_facilities/special_functions/
827 23_sph_neumann/check_nan.cc: Likewise.
829 2019-09-30 Jonathan Wakely <jwakely@redhat.com>
831 * include/std/span (span(element_type(&)[N]))
832 (span(array<value_type, N>&), span(const array<value_type, N>&)):
833 Deduce array element type to allow safe const conversions (LWG 3255).
834 [!_GLIBCXX_P1394] (span(Container&), span(const Container&)): Use
835 remove_cv_t on arguments to __is_std_span and __is_std_array.
836 * testsuite/23_containers/span/lwg3255.cc: New test.
839 * include/parallel/checkers.h (__is_sorted): Remove unused variable.
841 2019-09-28 François Dumont <fdumont@gcc.gnu.org>
843 * include/bits/stl_algo.h (merge): Fix documentation.
844 * include/debug/functions.h (__check_sorted_aux): Add C++20 constexpr.
845 (__check_sorted): Likewise and remove nested irreflexive check.
846 (__check_sorted_set_aux, __check_sorted_set): Add C++20 constexpr.
847 (__check_partitioned_lower, __check_partitioned_upper): Likewise.
848 (_Irreflexive_checker::_S_is_valid): Likewise.
849 (__is_irreflexive, __is_irreflexive_pred): Likewise.
850 * include/debug/helper_functions.h (__get_distance): Add constexpr.
851 (__valid_range_aux): Add C++20 constexpr.
852 (__valid_range(_Iter, _Iter, _Distance_traits<_Iter>::__type&)):
853 Likewise and add std::is_constant_evaluated check.
854 (__valid_range_aux(_Iter, _Iter, std::input_iterator_tag)): New.
855 (__valid_range_aux(_Iter, _Iter, std::random_accss_iterator_tag)): New.
856 (__valid_range_aux(_Integral, _Integral, std::__true_type)): New,
858 (__valid_range(_Iter, _Iter)): Adapt to use latter, add constexpr and
859 __builtin_is_contant_evaludated check..
860 (__can_advance, __base): Add constexpr.
861 * include/debug/macros.h [_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED]
862 (_GLIBCXX_DEBUG_VERIFY_COND_AT): New.
863 (__glibcxx_check_sorted): Use __glibcxx_check_irreflexive.
864 (__glibcxx_check_sorted_pred): Use __glibcxx_check_irreflexive_pred.
865 * testsuite/25_algorithms/binary_search/constexpr.cc: Use irreflexive
867 * testsuite/25_algorithms/is_sorted/constexpr.cc: Likewise.
868 * testsuite/25_algorithms/merge/constexpr.cc: Fix order in camm. Fix
869 lambda to be irreflexive.
871 2019-09-27 Maciej W. Rozycki <macro@wdc.com>
873 * configure: Regenerate.
875 2019-09-27 Jonathan Wakely <jwakely@redhat.com>
878 * src/c++11/debug.cc (_Safe_iterator_base::_M_detach()): Load pointer
879 atomically and lock the mutex before accessing the sequence.
880 (_Safe_local_iterator_base::_M_detach()): Likewise.
881 (_Safe_iterator_base::_M_reset()): Clear _M_sequence atomically.
883 2019-09-26 Jonathan Wakely <jwakely@redhat.com>
885 * include/debug/array (to_array): Define for debug mode.
887 * include/bits/stl_pair.h (pair): Add _GLIBCXX20_CONSTEXPR to
888 piecewise construction constructor, assignment operators, and swap.
889 * include/std/tuple (pair::pair(piecewise_construct_t, tuple, tuple)):
890 Add _GLIBCXX20_CONSTEXPR.
891 (pair::pair(tuple, tuple, _Index_tuple, _Index_tuple)): Likewise.
892 * testsuite/20_util/pair/constexpr_assign.cc: New test.
893 * testsuite/20_util/pair/constexpr_swap.cc: New test.
895 * include/experimental/internet (operator==, operator<): Fix loop
896 condition to avoid reading past the end of the array.
898 * include/std/array: Remove references to profile mode.
899 * include/std/bitset: Likewise.
900 * include/std/deque: Likewise.
901 * include/std/forward_list: Likewise.
902 * include/std/list: Likewise.
903 * include/std/map: Likewise.
904 * include/std/set: Likewise.
905 * include/std/unordered_map: Likewise.
906 * include/std/unordered_set: Likewise.
907 * include/std/vector: Likewise.
908 * testsuite/17_intro/headers/c++1998/profile_mode.cc: New test.
909 * testsuite/17_intro/headers/c++2011/profile_mode.cc: New test.
911 2019-09-25 Jonathan Wakely <jwakely@redhat.com>
913 * include/bits/regex.h
914 (basic_regex::assign(const C*, size_t, flag_type)): Add default
916 * testsuite/28_regex/basic_regex/assign/char/lwg3296.cc: New test.
917 * testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc: New test.
919 2019-09-24 Jonathan Wakely <jwakely@redhat.com>
921 * include/std/variant (variant::index()): Remove impossible case.
924 * testsuite/util/testsuite_hooks.h
925 (conversion::iterator_to_const_iterator()): Do not return an invalid
926 iterator. Test direct-initialization and direct-list-initialization
927 as well as implicit conversion.
929 2019-09-23 Jonathan Wakely <jwakely@redhat.com>
931 PR libstdc++/91788 (partial)
932 * include/std/variant (variant::index()): Improve codegen for cases
933 where conversion to size_t already works correctly.
935 2019-09-23 Andreas Schwab <schwab@suse.de>
937 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
939 2019-09-12 Jonathan Wakely <jwakely@redhat.com>
942 * include/bits/stl_algo.h (for_each_n): Fix random access iterator
944 * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
947 2019-09-11 Jonathan Wakely <jwakely@redhat.com>
949 * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
952 * testsuite/20_util/result_of/sfinae_friendly_1.cc: Add -Wno-volatile
953 for C++2a and up. Define HAS_52748_FIXED and fix incorrect tests.
954 * testsuite/tr1/3_function_objects/result_of.cc: Add -Wno-volatile
957 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
959 * include/std/type_traits (__do_common_type_impl): Implement
960 additional COND-RES(CREF(D1), CRED(D2)) condition for C++20.
961 (basic_common_reference, common_reference, common_reference_t): Define
963 * testsuite/20_util/common_reference/requirements/alias_decl.cc: New
965 * testsuite/20_util/common_reference/requirements/
966 explicit_instantiation.cc: New test.
967 * testsuite/20_util/common_reference/requirements/typedefs.cc: New
970 * include/std/charconv (to_chars): Rename to __to_chars_i. Define
971 non-template overloads for each signed and unsigned integer type and
972 char. Define deleted overload for bool (LWG 3266).
973 * testsuite/20_util/to_chars/1_neg.cc: Remove.
974 * testsuite/20_util/to_chars/3.cc: New test.
975 * testsuite/20_util/to_chars/lwg3266.cc: New test.
977 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
979 * acinclude.m4: Handle uclinux*.
980 * configure: Regenerate.
981 * configure.host: Handle uclinux*
983 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
984 Mickaël Guêné <mickael.guene@st.com>
986 * libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
989 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
992 * testsuite/23_containers/span/get_neg.cc: Avoid ambiguity due to
993 0ul being a valid null pointer constant.
995 * include/std/type_traits (__remove_cv_t): New alias template.
996 (is_void, is_integral, is_floating_point, is_pointer)
997 (is_member_object_pointer, is_member_function_pointer, is_null_pointer)
998 (is_member_point), __is_signed_integer, __is_unsigned_integer)
999 (__make_unsigned_selector, __make_signed_selector, remove_pointer)
1000 (__decay_selector): Use __remove_cv_t.
1001 (remove_cv): Add partial specializations for cv-qualified types.
1002 (__decay_t): New alias template.
1003 (__decay_and_strip, __common_type_impl, __result_of_impl): Use
1005 (__enable_if_t): Move earlier in the file.
1006 (_Require): Use __enable_if_t.
1007 (swap(T&, T&)): Use _Require.
1008 (swap(T(&)[N])): Use __enable_if_t.
1010 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
1012 Implement C++20 p1424 - 'constexpr' feature macro concerns,
1013 Issue 3256 - Feature testing macro for constexpr algorithms,
1014 and Issue 3257 - Missing feature testing macro update from P0858.
1015 * include/std/version (__cpp_lib_constexpr_algorithms): Bump value.
1016 * include/bits/algorithmfwd.h: Ditto.
1017 * include/std/utility: Ditto.
1018 * testsuite/25_algorithms/constexpr_macro.cc: Ditto.
1019 * testsuite/25_algorithms/cpp_lib_constexpr.cc: New check for
1020 __cpp_lib_constexpr macro in <algorith>.
1021 * testsuite/20_util/exchange/constexpr.cc: Add check for
1022 __cpp_lib_constexpr macro in <utility>.
1023 * testsuite/25_algorithms/adjacent_find/constexpr.cc: Remove check for
1024 __cpp_lib_constexpr_algorithms.
1025 * testsuite/25_algorithms/all_of/constexpr.cc: Ditto.
1026 * testsuite/25_algorithms/any_of/constexpr.cc: Ditto.
1027 * testsuite/25_algorithms/binary_search/constexpr.cc: Ditto.
1028 * testsuite/25_algorithms/copy/constexpr.cc: Ditto.
1029 * testsuite/25_algorithms/copy_backward/constexpr.cc: Ditto.
1030 * testsuite/25_algorithms/copy_if/constexpr.cc: Ditto.
1031 * testsuite/25_algorithms/copy_n/constexpr.cc: Ditto.
1032 * testsuite/25_algorithms/count/constexpr.cc: Ditto.
1033 * testsuite/25_algorithms/count_if/constexpr.cc: Ditto.
1034 * testsuite/25_algorithms/equal/constexpr.cc: Ditto.
1035 * testsuite/25_algorithms/equal_range/constexpr.cc: Ditto.
1036 * testsuite/25_algorithms/fill/constexpr.cc: Ditto.
1037 * testsuite/25_algorithms/fill_n/constexpr.cc: Ditto.
1038 * testsuite/25_algorithms/find/constexpr.cc: Ditto.
1039 * testsuite/25_algorithms/find_end/constexpr.cc: Ditto.
1040 * testsuite/25_algorithms/find_first_of/constexpr.cc: Ditto.
1041 * testsuite/25_algorithms/find_if/constexpr.cc: Ditto.
1042 * testsuite/25_algorithms/find_if_not/constexpr.cc: Ditto.
1043 * testsuite/25_algorithms/for_each/constexpr.cc: Ditto.
1044 * testsuite/25_algorithms/generate/constexpr.cc: Ditto.
1045 * testsuite/25_algorithms/generate_n/constexpr.cc: Ditto.
1046 * testsuite/25_algorithms/is_heap/constexpr.cc: Ditto.
1047 * testsuite/25_algorithms/is_heap_until/constexpr.cc: Ditto.
1048 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Ditto.
1049 * testsuite/25_algorithms/is_permutation/constexpr.cc: Ditto.
1050 * testsuite/25_algorithms/is_sorted/constexpr.cc: Ditto.
1051 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: Ditto.
1052 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: Ditto.
1053 * testsuite/25_algorithms/lower_bound/constexpr.cc: Ditto.
1054 * testsuite/25_algorithms/merge/constexpr.cc: Ditto.
1055 * testsuite/25_algorithms/mismatch/constexpr.cc: Ditto.
1056 * testsuite/25_algorithms/none_of/constexpr.cc: Ditto.
1057 * testsuite/25_algorithms/partition_copy/constexpr.cc: Ditto.
1058 * testsuite/25_algorithms/partition_point/constexpr.cc: Ditto.
1059 * testsuite/25_algorithms/remove/constexpr.cc: Ditto.
1060 * testsuite/25_algorithms/remove_copy/constexpr.cc: Ditto.
1061 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Ditto.
1062 * testsuite/25_algorithms/remove_if/constexpr.cc: Ditto.
1063 * testsuite/25_algorithms/replace_copy/constexpr.cc: Ditto.
1064 * testsuite/25_algorithms/replace_copy_if/constexpr.cc: Ditto.
1065 * testsuite/25_algorithms/replace_if/constexpr.cc: Ditto.
1066 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Ditto.
1067 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Ditto.
1068 * testsuite/25_algorithms/search/constexpr.cc: Ditto.
1069 * testsuite/25_algorithms/search_n/constexpr.cc: Ditto.
1070 * testsuite/25_algorithms/set_difference/constexpr.cc: Ditto.
1071 * testsuite/25_algorithms/set_intersection/constexpr.cc: Ditto.
1072 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: Ditto.
1073 * testsuite/25_algorithms/set_union/constexpr.cc: Ditto.
1074 * testsuite/25_algorithms/transform/constexpr.cc: Ditto.
1075 * testsuite/25_algorithms/unique/constexpr.cc: Ditto.
1076 * testsuite/25_algorithms/unique_copy/constexpr.cc: Ditto.
1077 * testsuite/25_algorithms/upper_bound/constexpr.cc: Ditto.
1079 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
1081 Update docs for recent <span> and constexpr lib changes.
1082 * doc/xml/manual/status_cxx2020.xml: Update p0202r3, p0858r0, p0879r0,
1083 p1023r0, p1085r2 status.
1084 * doc/html/manual/status.html: Regenerate.
1086 2019-09-09 Antony Polukhin <antoshkka@gmail.com>
1088 * include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
1089 final offsets with constants.
1091 2019-09-09 Jonathan Wakely <jwakely@redhat.com>
1093 * include/bits/range_access.h (__adl_to_address): Remove.
1094 * include/std/span (__is_base_derived_safe_convertible_v): Replace
1095 with span::__is_compatible.
1096 (__is_std_array_v): Replace with __is_std_array class template and
1097 partial specializations.
1098 (__is_std_array, __is_std_span): New class templates and partial
1100 (span::__is_compatible): New alias template for SFINAE constraints.
1101 (span::span(element_type (&)[N])): Remove redundant constraints. Do
1102 not use __adl_data to obtain a pointer.
1103 (span::span(array<value_type, N>&)): Likewise.
1104 (span::span(const array<value_type, N>&)): Likewise.
1105 [_GLIBCXX_P1394] (span::iter_reference_t, span::iterator_t)
1106 (span::iter_value_t, span::derived_from): New alias templates for
1107 SFINAE constraints, until the equivalents are supported in <concepts>
1109 [_GLIBCXX_P1394] (span::__is_compatible_iterator): New alias template
1110 for SFINAE constraints.
1111 [_GLIBCXX_P1394] (span::is_compatible_range): New class template for
1113 [_GLIBCXX_P1394] (span::span(Range&&)): Improve constraints.
1114 [_GLIBCXX_P1394] (span::span(ContiguousIterator, Sentinel)): Likewise.
1115 Use std::to_address instead of __adl_to_address.
1116 [_GLIBCXX_P1394] (span::span(ContiguousIterator, size_type)): Likewise.
1117 [!_GLIBCXX_P1394] (span::__is_compatible_container): New alias
1118 template for SFINAE constraints.
1119 [!_GLIBCXX_P1394] (span::span(Container&))
1120 (span::span(const Container&)): Improve constraints.
1121 [!_GLIBCXX_P1394] (span::span(pointer, size_type))
1122 (span::span(pointer, pointer)): Remove redundant cast of pointer.
1123 (span(const span<OType, OExtent>&)): New constructor.
1125 2019-09-06 Jonathan Wakely <jwakely@redhat.com>
1127 * include/bits/range_access.h (ssize): Define for C++20.
1128 * testsuite/24_iterators/range_access_cpp20.cc: New test.
1129 * doc/xml/manual/status_cxx2020.xml: Update P1227R2 status.
1130 * doc/html/*: Regenerate.
1132 2019-09-06 Florian Weimer <fweimer@redhat.com>
1134 * configure: Regenerate.
1136 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
1138 * doc/xml/manual/status_cxx2020.xml: Update status for P0122R7 and
1139 P1024R3. Remove entry for P0920R2.
1140 * include/std/span (__cpp_lib_span): Change value.
1141 (__extent_storage, __extent_storage<dynamic_extent>): Remove default
1143 (span): Replace __extent_storage base class with data member.
1144 (span::_S_subspan_extent): New function.
1145 (span::empty()): Add nodiscard attribute.
1146 (span::front, span::back, span::operator[]): Check preconditions.
1147 (span::first, span::last, span::subspan): Add noexcept. Improve
1148 precondition checks (LWG 3103).
1149 (get): Remove redundant condition from static_assert.
1150 (tuple_element<I, span<T, E>>): Fix static_assert message and simplify.
1151 (as_writable_bytes): Add inline specifier.
1152 * include/std/version (__cpp_lib_span): Change value.
1153 * testsuite/23_containers/span/back_neg.cc: Remove stray semi-colon.
1154 * testsuite/23_containers/span/front_neg.cc: Likewise.
1155 * testsuite/23_containers/span/index_op_neg.cc: Likewise.
1156 * testsuite/23_containers/span/last_neg.cc: Improve test.
1157 * testsuite/23_containers/span/subspan_neg.cc: Likewise.
1158 * testsuite/23_containers/span/1.cc: New test.
1159 * testsuite/23_containers/span/2.cc: New test.
1160 * testsuite/23_containers/span/back_assert_neg.cc: New test.
1161 * testsuite/23_containers/span/first_2_assert_neg.cc: New test.
1162 * testsuite/23_containers/span/first_assert_neg.cc: New test.
1163 * testsuite/23_containers/span/first_neg.cc: New test.
1164 * testsuite/23_containers/span/front_assert_neg.cc: New test.
1165 * testsuite/23_containers/span/index_op_assert_neg.cc: New test.
1166 * testsuite/23_containers/span/last_2_assert_neg.cc: New test.
1167 * testsuite/23_containers/span/last_assert_neg.cc: New test.
1168 * testsuite/23_containers/span/subspan_2_assert_neg.cc: New test.
1169 * testsuite/23_containers/span/subspan_3_assert_neg.cc: New test.
1170 * testsuite/23_containers/span/subspan_4_assert_neg.cc: New test.
1171 * testsuite/23_containers/span/subspan_5_assert_neg.cc: New test.
1172 * testsuite/23_containers/span/subspan_6_assert_neg.cc: New test.
1173 * testsuite/23_containers/span/subspan_assert_neg.cc: New test.
1175 2019-09-05 JeanHeyd Meneide <phdofthehouse@gmail.com>
1177 * include/Makefile.am: Add <span> header.
1178 * include/Makefile.in: Regenerate.
1179 * include/bits/range_access.h (__adl_begin, __adl_end, __adl_cbegin)
1180 (__adl_cend, __adl_rbegin, __adl_rend, __adl_crbegin, __adl_crend)
1181 (__adl_data, __adl_cdata, __adl_size, __adl_empty, __adl_to_address):
1182 New functions for performing argument-dependent lookup of range
1183 customization points.
1184 * include/bits/stl_iterator.h (__normal_iterator): Add
1185 _GLIBCXX20_CONSTEXPR to all functions.
1186 * include/std/span: New header.
1187 * include/std/version (__cpp_lib_span): Define feature test macro.
1188 * testsuite/23_containers/span/contiguous_range_neg.cc: New test.
1189 * testsuite/23_containers/span/everything.cc: New test.
1190 * testsuite/23_containers/span/get_neg.cc: New test.
1191 * testsuite/23_containers/span/last_neg.cc: New test.
1192 * testsuite/23_containers/span/subspan_neg.cc: New test.
1193 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: New test.
1194 * testsuite/23_containers/span/tuple_element_oob_neg.cc: New test.
1195 * testsuite/23_containers/span/tuple_size_neg.cc: New test.
1197 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
1199 * doc/xml/manual/allocator.xml: Remove URL for bibliography entry.
1200 * doc/html/*: Regenerate.
1202 2019-09-04 Mike Crowe <mac@mcrowe.com>
1205 * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT): Check for new
1206 pthread_cond_clockwait function.
1207 * configure.ac: Use GLIBCXX_CHECK_PTHREAD_COND_CLOCKWAIT.
1208 * configure: Regenerate.
1209 * config.h.in: Regenerate.
1210 * include/std/condition_variable: (condition_variable): Rename
1211 __steady_clock_t typedef and add system_clock. Change __clock_t to be
1212 a typedef for the preferred clock to convert arbitrary other clocks to.
1213 [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (wait_until): Add a steady_clock
1215 (wait_until): Change __clock_t overload to use system_clock.
1216 [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT] (__wait_until_impl): Add
1217 steady_clock overload that calls pthread_cond_clockwait.
1218 (__wait_until_impl): Change __clock_t overload to use system_clock.
1219 (condition_variable_any) [_GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT]: Use
1220 steady_clock for __clock_t if pthread_cond_clockwait is available.
1222 2019-09-04 Mike Crowe <mac@mcrowe.com>
1224 * testsuite/30_threads/condition_variable/members/2.cc (test01):
1225 Parameterise so that test can be run against an arbitrary clock.
1226 (main): Test using std::chrono::steady_clock and a user-defined
1227 clock in addition to the previous std::chrono::system_clock.
1228 * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1230 2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
1232 * crossconfig.m4: Remove references to spu.
1233 * configure: Regenerate.
1234 * doc/xml/manual/appendix_contributing.xml: Remove references
1235 to __ea as "badword" for spu.
1236 * doc/html/manual/source_code_style.html: Regenerate.
1237 * include/tr1/ell_integral.tcc (__ellint_rd): Do not attempt
1238 to avoid __ea (as "badword" for spu).
1239 (__ellint_rj): Likewise.
1241 2019-09-03 Chung-Lin Tang <cltang@codesourcery.com>
1244 * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
1245 scanning to conform to the GNU Coding Standards.
1246 * configure: Regenerate.
1248 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1250 * src/c++17/memory_resource.cc: Use __constinit keyword.
1252 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1254 * doc/xml/manual/abi.xml: Document 9.x library versions.
1255 * doc/html/*: Regenerate.
1257 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1259 * include/std/charconv (__detail::__to_chars_2_len): Use std::log2p1.
1260 (__detail::__to_chars_8_len): Remove.
1261 (__detail::__to_chars_8): Inline length calculation here.
1262 (__detail::__from_chars_binary): Use numeric_limits instead of
1265 2019-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1267 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
1268 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise.
1269 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
1270 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
1273 2019-09-01 François Dumont <fdumont@gcc.gnu.org>
1275 * testsuite_files/util/testsuite_performance.h
1276 (resource_counter::start): Ignore unused malloc(0) result.
1278 2019-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1280 * doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
1281 Model Object Technologies): Adjust name and link.
1283 2019-08-30 Antony Polukhin <antoshkka@gmail.com>
1285 * include/std/charconv (__detail::__to_chars_8)
1286 __detail::__to_chars_16): Replace array of precomputed digits with
1287 arithmetic operations to avoid CPU cache misses. Remove zero
1288 termination from array of digits to allow symbol merge with generic
1289 implementation of __detail::__to_chars. Replace final offsets with
1290 constants. Use __detail::__to_chars_len_2 instead of a generic
1291 __detail::__to_chars_len.
1292 (__detail::__to_chars): Remove zero termination from array of digits.
1293 (__detail::__to_chars_2): Leading digit is always '1'.
1295 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1297 * testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
1299 2019-08-30 Uros Bizjak <ubizjak@gmail.com>
1301 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1303 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1306 * include/bits/stl_algobase.h (__copy_move): Give descriptive names
1307 to template parameters.
1308 * include/bits/stl_uninitialized.h (uninitialized_copy)
1309 (uninitialized_fill, uninitialized_fill_n): Add static assertions to
1310 diagnose invalid uses.
1311 * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
1312 Adjust expected error.
1313 * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
1315 * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
1317 * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
1319 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
1321 * testsuite/23_containers/vector/cons/89164.cc: New test.
1322 * testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
1324 2019-08-29 Jonathan Wakely <jwakely@redhat.com>
1327 * acinclude.m4 (libtool_VERSION): Bump to 6:28:0.
1328 * configure: Regenerate.
1329 * config/abi/pre/gnu.ver (GLIBCXX_3.4.28): Add new version. Export
1331 * testsuite/27_io/filesystem/iterators/91067.cc: Test move
1333 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1335 2019-08-29 Jakub Jelinek <jakub@redhat.com>
1337 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1338 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1340 2019-08-28 Jonathan Wakely <jwakely@redhat.com>
1342 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1343 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1344 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
1345 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
1346 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1347 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1348 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1350 2019-08-23 Joseph Myers <joseph@codesourcery.com>
1352 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
1353 (std::filesystem::__gnu_posix::lstat): Add return type.
1355 2019-08-20 Jonathan Wakely <jwakely@redhat.com>
1357 * doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
1359 * include/std/numeric (reduce): Fix Doxygen markup.
1362 * include/std/type_traits (is_function): Simplify definition. Remove
1363 partial specializations for function types.
1364 (__is_referenceable): Simplify definition.
1365 * testsuite/20_util/bind/91371.cc: New test.
1366 * testsuite/20_util/is_function/91371.cc: New test.
1367 * testsuite/20_util/is_function/value.cc: Check more pointer types.
1368 * testsuite/20_util/is_member_function_pointer/91371.cc: New test.
1369 * testsuite/20_util/is_object/91371.cc: New test.
1371 2019-08-16 Uros Bizjak <ubizjak@gmail.com>
1373 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1375 2019-08-15 Jonathan Wakely <jwakely@redhat.com>
1378 * include/bits/std_function.h (__check_func_return_type): Remove.
1379 (function::_Callable): Use std::__is_invocable_impl instead of
1380 __check_func_return_type.
1381 * include/std/type_traits (__is_invocable_impl): Add another defaulted
1382 template parameter. Define a separate partial specialization for
1383 INVOKE and INVOKE<void>. For INVOKE<R> replace is_convertible check
1384 with a check that models delayed temporary materialization.
1385 * testsuite/20_util/function/91456.cc: New test.
1386 * testsuite/20_util/is_invocable/91456.cc: New test.
1388 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
1390 * include/std/type_traits (__is_nullptr_t): Add deprecated attribute.
1392 2019-08-14 Edward Smith-Rowland <3dw4rd@verizon.net>
1394 Implement C++20 p0879 - Constexpr for swap and swap related functions.
1395 * include/std/version (__cpp_lib_constexpr_swap_algorithms): New macro.
1396 * include/bits/algorithmfwd.h (__cpp_lib_constexpr_swap_algorithms):
1398 (iter_swap, make_heap, next_permutation, partial_sort_copy, pop_heap)
1399 (prev_permutation, push_heap, reverse, rotate, sort_heap, swap)
1400 (swap_ranges, nth_element, partial_sort, sort): Add constexpr.
1401 * include/bits/move.h (swap): Add constexpr.
1402 * include/bits/stl_algo.h (__move_median_to_first, __reverse, reverse)
1403 (__gcd, __rotate, rotate, __partition, __heap_select)
1404 (__partial_sort_copy, partial_sort_copy, __unguarded_partition)
1405 (__unguarded_partition_pivot, __partial_sort, __introsort_loop, __sort)
1406 (__introselect, __chunk_insertion_sort, next_permutation)
1407 (prev_permutation, partition, partial_sort, nth_element, sort)
1408 (__iter_swap::iter_swap, iter_swap, swap_ranges): Add constexpr.
1409 * include/bits/stl_algobase.h (__iter_swap::iter_swap, iter_swap)
1410 (swap_ranges): Add constexpr.
1411 * include/bits/stl_heap.h (__push_heap, push_heap, __adjust_heap,
1412 __pop_heap, pop_heap, __make_heap, make_heap, __sort_heap, sort_heap):
1414 * include/std/type_traits (swap): Add constexpr.
1415 * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Add constexpr.
1416 * testsuite/25_algorithms/iter_swap/constexpr.cc: New test.
1417 * testsuite/25_algorithms/make_heap/constexpr.cc: New test.
1418 * testsuite/25_algorithms/next_permutation/constexpr.cc: New test.
1419 * testsuite/25_algorithms/nth_element/constexpr.cc: New test.
1420 * testsuite/25_algorithms/partial_sort/constexpr.cc: New test.
1421 * testsuite/25_algorithms/partial_sort_copy/constexpr.cc: New test.
1422 * testsuite/25_algorithms/partition/constexpr.cc: New test.
1423 * testsuite/25_algorithms/pop_heap/constexpr.cc: New test.
1424 * testsuite/25_algorithms/prev_permutation/constexpr.cc: New test.
1425 * testsuite/25_algorithms/push_heap/constexpr.cc: New test.
1426 * testsuite/25_algorithms/reverse/constexpr.cc: New test.
1427 * testsuite/25_algorithms/rotate/constexpr.cc: New test.
1428 * testsuite/25_algorithms/sort/constexpr.cc: New test.
1429 * testsuite/25_algorithms/sort_heap/constexpr.cc: New test.
1430 * testsuite/25_algorithms/swap/constexpr.cc: New test.
1431 * testsuite/25_algorithms/swap_ranges/constexpr.cc: New test.
1433 2019-08-12 Jonathan Wakely <jwakely@redhat.com>
1436 * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
1438 * include/std/tuple (__unpack_std_tuple): New variable template and
1439 partial specializations.
1440 (apply, make_from_tuple): Add noexcept-specifier.
1441 * testsuite/20_util/tuple/apply/2.cc: New test.
1442 * testsuite/20_util/tuple/make_from_tuple/2.cc: New test.
1444 2019-08-09 Corentin Gay <gay@adacore.com>
1446 * testsuite/ext/random/beta_distribution/operators/serialize.cc,
1447 testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc,
1448 testsuite/ext/random/normal_mv_distribution/operators/serialize.cc,
1449 testsuite/ext/random/triangular_distribution/operators/serialize.cc,
1450 testsuite/ext/random/von_mises_distribution/operators/serialize.cc:
1451 Add call to `VERIFY`.
1453 2019-08-09 Alexandre Oliva <oliva@adacore.com>
1455 * include/ext/random
1456 (normal_mv_distribution::param_type::param_type): New private
1457 ctor taking a decomposed varcov matrix, for use by...
1458 (operator>>): ... this, befriended.
1459 * include/ext/random.tcc (operator>>): Use it.
1460 (normal_mv_distribution::param_type::_M_init_lower): Adjust
1461 member function name in exception message.
1463 2019-08-08 Jonathan Wakely <jwakely@redhat.com>
1465 P0325R4 to_array from LFTS with updates
1466 * include/experimental/array (to_array): Qualify call to __to_array.
1467 * include/std/array (__cpp_lib_to_array, to_array): Define for C++20.
1468 * include/std/version (__cpp_lib_to_array): Likewise.
1469 * testsuite/23_containers/array/creation/1.cc: New test.
1470 * testsuite/23_containers/array/creation/2.cc: New test.
1471 * testsuite/23_containers/array/creation/3_neg.cc: New test.
1472 * testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
1473 Use zero for dg-error line number.
1475 2019-08-06 Jonathan Wakely <jwakely@redhat.com>
1477 P1651R0 bind_front should not unwrap reference_wrapper
1478 * include/std/functional (bind_front): Don't unwrap reference_wrapper.
1479 * include/std/version (__cpp_lib_bind_front): Update value.
1480 * testsuite/20_util/function_objects/bind_front/1.cc: Fix test for
1482 * testsuite/20_util/function_objects/bind_front/2.cc: New test.
1484 * include/std/numbers [!__STRICT_ANSI__ && _GLIBCXX_USE_FLOAT128]
1485 (e_v, log2e_v, log10e_v, pi_v, inv_pi_v, inv_sqrtpi_v, ln2_v, ln10_v)
1486 (sqrt2_v, sqrt3_v, inv_sqrt3, egamma_v, phi_v): Add explicit
1487 specializations for __float128.
1488 * testsuite/26_numerics/numbers/float128.cc: New test.
1490 2019-08-04 Gerald Pfeifer <gerald@pfeifer.com>
1492 * doc/xml/manual/documentation_hacking.xml: doxygen.org is now
1495 2019-08-01 Edward Smith-Rowland <3dw4rd@verizon.net>
1497 Implement C++20 p0202 - Add Constexpr Modifiers to Functions
1498 in <algorithm> and <utility> Headers.
1499 Implement C++20 p1023 - constexpr comparison operators for std::array.
1500 * include/bits/algorithmfwd.h (all_of, any_of, binary_search, copy,
1501 copy_backward, copy_if, copy_n, equal_range, fill, find_end,
1502 find_if_not, includes, is_heap, is_heap_until, is_partitioned,
1503 is_permutation, is_sorted, is_sorted_until, iter_swap, lower_bound,
1504 none_of, partition_copy, partition_point, remove, remove_if,
1505 remove_copy, remove_copy_if, replace_copy, replace_copy_if,
1506 reverse_copy, rotate_copy, uunique, upper_bound, adjacent_find, count,
1507 count_if, equal, find, find_first_of, find_if, for_each, generate,
1508 generate_n, lexicographical_compare, merge, mismatch, replace,
1509 replace_if, search, search_n, set_difference, set_intersection,
1510 set_symmetric_difference, set_union, transform, unique_copy):
1512 * include/bits/cpp_type_traits.h (__miter_base): Mark constexpr.
1513 * include/bits/predefined_ops.h (_Iter_less_val::operator(),
1514 _Val_less_iter::operator(), _Iter_equal_to_iter::operator(),
1515 _Iter_equal_to_val::operator(), _Iter_equals_val::operator()):
1516 Use const ref instead of ref arg;
1517 (_Iter_less_val, __iter_less_val, _Val_less_iter, __val_less_iter,
1518 __iter_equal_to_iter, __iter_equal_to_val, __iter_comp_val,
1519 _Iter_comp_val, _Val_comp_iter, __val_comp_iter, __iter_equals_val,
1520 _Iter_equals_iter, __iter_comp_iter, _Iter_pred, __pred_iter,
1521 _Iter_comp_to_val, __iter_comp_val, _Iter_comp_to_iter,
1522 __iter_comp_iter): Mark constexpr.
1523 * include/bits/stl_algo.h (__find_if, __find_if_not, __find_if_not_n,
1524 __search, __search_n_aux, __search_n, __find_end, find_end, all_of,
1525 none_of, any_of, find_if_not, is_partitioned, partition_point,
1526 __remove_copy_if, remove_copy, remove_copy_if, copy_if, __copy_n,
1527 copy_n, partition_copy, __remove_if, remove, remove_if, __adjacent_find,
1528 __unique, unique, __unique_copy, reverse_copy, rotate_copy,
1529 __unguarded_linear_insert, __insertion_sort, __unguarded_insertion_sort,
1530 __final_insertion_sort, lower_bound, __upper_bound, upper_bound,
1531 __equal_range, equal_range, binary_search, __includes, includes,
1532 __next_permutation, __prev_permutation, __replace_copy_if, replace_copy,
1533 replace_copy_if, __count_if, is_sorted, __is_sorted_until,
1534 is_sorted_until, __is_permutation, is_permutation, for_each, find,
1535 find_if, find_first_of, adjacent_find, count, count_if, search,
1536 search_n, transform, replace, replace_if, generate, generate_n,
1537 unique_copy, __merge, merge, __set_union, set_union, __set_intersection,
1538 set_intersection, __set_difference, set_difference,
1539 __set_symmetric_difference, set_symmetric_difference): Mark constexpr.
1540 * include/bits/stl_algobase.h (__memmove, __memcmp): New maybe constexpr
1541 wrappers around __builtin_memmove and __builtin_memcmp
1543 (__niter_base, __niter_wrap, __copy_m, __copy_move_a, __copy_move_a2,
1544 copy, move, __copy_move_b, __copy_move_backward_a,
1545 __copy_move_backward_a2, copy_backward, move_backward, __fill_a, fill,
1546 __fill_n_a, fill_n, equal, __lc_rai::__newlast1, __lc_rai::__cnd2,
1547 __lexicographical_compare_impl, __lexicographical_compare,
1548 __lexicographical_compare<true>::__lc, __lexicographical_compare_aux,
1549 __lower_bound, lower_bound, equal, __equal4, lexicographical_compare,
1550 __mismatch, mismatch, __is_heap_until, __is_heap, is_heap_until,
1551 is_heap): Mark constexpr.
1552 * include/bits/stl_heap.h (__is_heap_until, __is_heap, is_heap_until,
1553 is_heap): Mark constexpr.
1554 * include/bits/stl_iterator.h (__niter_base, __miter_base): Mark constexpr.
1555 * include/std/array: Make comparison ops constexpr.
1556 * include/std/utility: Make exchange constexpr.
1557 * include/std/version (__cpp_lib_constexpr_algorithms): New macro.
1558 * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust.
1559 * testsuite/23_containers/array/tuple_interface/
1560 tuple_element_neg.cc: Adjust.
1561 * testsuite/20_util/exchange/constexpr.cc: New.
1562 * testsuite/23_containers/array/comparison_operators/constexpr.cc: New.
1563 * testsuite/25_algorithms/constexpr_macro.cc: New.
1564 * testsuite/25_algorithms/adjacent_find/constexpr.cc: New.
1565 * testsuite/25_algorithms/all_of/constexpr.cc: New.
1566 * testsuite/25_algorithms/any_of/constexpr.cc: New.
1567 * testsuite/25_algorithms/binary_search/constexpr.cc: New.
1568 * testsuite/25_algorithms/copy/constexpr.cc: New.
1569 * testsuite/25_algorithms/copy_backward/constexpr.cc: New.
1570 * testsuite/25_algorithms/copy_if/constexpr.cc: New.
1571 * testsuite/25_algorithms/copy_n/constexpr.cc: New.
1572 * testsuite/25_algorithms/count/constexpr.cc: New.
1573 * testsuite/25_algorithms/count_if/constexpr.cc: New.
1574 * testsuite/25_algorithms/equal/constexpr.cc: New.
1575 * testsuite/25_algorithms/equal_range/constexpr.cc: New.
1576 * testsuite/25_algorithms/fill/constexpr.cc: New.
1577 * testsuite/25_algorithms/fill_n/constexpr.cc: New.
1578 * testsuite/25_algorithms/find/constexpr.cc: New.
1579 * testsuite/25_algorithms/find_end/constexpr.cc: New.
1580 * testsuite/25_algorithms/find_first_of/constexpr.cc: New.
1581 * testsuite/25_algorithms/find_if/constexpr.cc: New.
1582 * testsuite/25_algorithms/find_if_not/constexpr.cc: New.
1583 * testsuite/25_algorithms/for_each/constexpr.cc: New.
1584 * testsuite/25_algorithms/generate/constexpr.cc: New.
1585 * testsuite/25_algorithms/generate_n/constexpr.cc: New.
1586 * testsuite/25_algorithms/is_heap/constexpr.cc: New.
1587 * testsuite/25_algorithms/is_heap_until/constexpr.cc: New.
1588 * testsuite/25_algorithms/is_partitioned/constexpr.cc: New.
1589 * testsuite/25_algorithms/is_permutation/constexpr.cc: New.
1590 * testsuite/25_algorithms/is_sorted/constexpr.cc: New.
1591 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: New.
1592 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: New.
1593 * testsuite/25_algorithms/lower_bound/constexpr.cc: New.
1594 * testsuite/25_algorithms/merge/constexpr.cc: New.
1595 * testsuite/25_algorithms/mismatch/constexpr.cc: New.
1596 * testsuite/25_algorithms/none_of/constexpr.cc: New.
1597 * testsuite/25_algorithms/partition_copy/constexpr.cc: New.
1598 * testsuite/25_algorithms/partition_point/constexpr.cc: New.
1599 * testsuite/25_algorithms/remove/constexpr.cc: New.
1600 * testsuite/25_algorithms/remove_copy/constexpr.cc: New.
1601 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: New.
1602 * testsuite/25_algorithms/remove_if/constexpr.cc: New.
1603 * testsuite/25_algorithms/replace_copy/constexpr.cc: New.
1604 * testsuite/25_algorithms/replace_copy_if/constexpr.cc: New.
1605 * testsuite/25_algorithms/replace_if/constexpr.cc: New.
1606 * testsuite/25_algorithms/reverse_copy/constexpr.cc: New.
1607 * testsuite/25_algorithms/rotate_copy/constexpr.cc: New.
1608 * testsuite/25_algorithms/search/constexpr.cc: New.
1609 * testsuite/25_algorithms/search_n/constexpr.cc: New.
1610 * testsuite/25_algorithms/set_difference/constexpr.cc: New.
1611 * testsuite/25_algorithms/set_intersection/constexpr.cc: New.
1612 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: New.
1613 * testsuite/25_algorithms/set_union/constexpr.cc: New.
1614 * testsuite/25_algorithms/transform/constexpr.cc: New.
1615 * testsuite/25_algorithms/unique/constexpr.cc: New.
1616 * testsuite/25_algorithms/unique_copy/constexpr.cc: New.
1617 * testsuite/25_algorithms/upper_bound/constexpr.cc: New.
1619 2019-07-31 Jonathan Wakely <jwakely@redhat.com>
1621 * include/std/memory (make_obj_using_allocator): Qualify call to
1622 uses_allocator_construction_args.
1624 P0631R4 Math Constants
1625 * include/Makefile.am: Add new header.
1626 * include/Makefile.in: Regenerate.
1627 * include/precompiled/stdc++.h: Include new header.
1628 * include/std/numbers: New header.
1629 * include/std/version (__cpp_lib_math_constants): Define.
1630 * testsuite/26_numerics/numbers/1.cc: New test.
1631 * testsuite/26_numerics/numbers/2.cc: New test.
1632 * testsuite/26_numerics/numbers/3.cc: New test.
1633 * testsuite/26_numerics/numbers/nonfloat_neg.cc: New test.
1635 * include/std/bit: Add Doxygen comments.
1638 * include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove
1639 constraints on deleter that should only apply to the constructor.
1640 (unique_ptr<T[], D>::__safe_conversion_up): Likewise.
1641 (unique_ptr<T[], D>::unique_ptr(unique_ptr<U, D>&&)): Restore
1642 constraints on deleter here.
1643 * testsuite/20_util/unique_ptr/assign/91308.cc: New test.
1645 2019-07-29 Jonathan Wakely <jwakely@redhat.com>
1648 * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
1650 * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
1652 * testsuite/18_support/51333.cc: New test.
1654 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
1656 * doc/xml/manual/documentation_hacking.xml: Fix broken reference
1657 to the Doxygen manual. Avoid a "here" link on the way.
1658 Fix another broken link to Doxygen docblocks.
1660 2019-07-26 Jonathan Wakely <jwakely@redhat.com>
1662 * include/std/bit (__cpp_lib_endian): Define.
1663 * include/std/version (__cpp_lib_endian): Define.
1664 * testsuite/26_numerics/endian/2.cc: New.
1665 * testsuite/26_numerics/endian/3.cc: New.
1666 * testsuite/26_numerics/endian/4.cc: New.
1668 2019-07-26 François Dumont <fdumont@gcc.gnu.org>
1670 * testsuite/util/testsuite_iterators.h
1671 (bidirectional_iterator_wrapper): Fix type comment.
1672 (random_access_iterator_wrapper): Likewise.
1674 2019-07-25 Jonathan Wakely <jwakely@redhat.com>
1676 * include/std/bit (endian): Move definition here as per P1612R1.
1677 * include/std/type_traits (endian): Remove definition from here.
1678 * testsuite/20_util/endian/1.cc: Rename to ...
1679 * testsuite/26_numerics/endian/1.cc: ... here. Adjust header.
1681 2019-07-25 Martin Liska <mliska@suse.cz>
1682 Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
1685 * testsuite/ext/bitmap_allocator/check_delete.cc: Add
1686 -fno-allocation-dce.
1687 * testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
1688 * testsuite/ext/new_allocator/check_delete.cc: Likewise.
1689 * testsuite/ext/new_allocator/check_new.cc: Likewise.
1691 2019-07-22 Jonathan Wakely <jwakely@redhat.com>
1693 * testsuite/26_numerics/bit/bitops.count/*: Rename to ...
1694 * testsuite/26_numerics/bit/bit.count/*: Here.
1696 * include/std/bit (__rotl, __rotr): Change second parameter from
1697 unsigned int to int and handle negative values.
1698 (rotl, rotr): Remove check for __STRICT_ANSI__. Change second
1699 parameter from unsigned int to int. Add nodiscard attribute.
1700 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Rename to ...
1701 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Here. Test negative
1703 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Rename to ...
1704 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Here. Test negative
1707 * include/std/bit (__ceil2): Make unrepresentable results undefined,
1708 as per P1355R2. Add debug assertion. Perform one left shift, not two,
1709 so that out of range values cause undefined behaviour. Ensure that
1710 shift will still be undefined if left operand is promoted.
1711 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Replace checks for
1712 unrepresentable values with checks that they are not core constant
1714 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: New test.
1716 2019-07-19 François Dumont <fdumont@gcc.gnu.org>
1718 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): Fix
1719 sized deallocation size computation.
1721 2019-07-19 Andreas Schwab <schwab@linux-m68k.org>
1723 * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
1725 2019-07-18 François Dumont <fdumont@gcc.gnu.org>
1727 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): New.
1728 (~_Temporary_buffer()): Use latter.
1729 (_Temporary_buffer(_FIterator, size_type)): Likewise.
1731 2019-07-17 Andreas Schwab <schwab@suse.de>
1733 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1735 2019-07-16 Jason Merrill <jason@redhat.com>
1737 * include/std/memory (uses_allocator_construction_args): Add parens
1740 2019-07-12 Jonathan Wakely <jwakely@redhat.com>
1742 * testsuite/29_atomics/atomic_float/1.cc: Fix comment.
1744 * include/experimental/string_view (__detail::__idt): Remove.
1745 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1746 Use __type_identity_t instead of __detail::__idt;
1747 * include/std/string_view (__detail::__idt): Remove.
1748 (operator==, operator!=, operator<, operator>, operator<=, operator>=):
1749 Use __type_identity_t instead of __detail::__idt;
1750 * include/std/type_traits (__type_identity_t): New alias template.
1752 * doc/xml/manual/status_cxx2020.xml: Update status for atomic_ref
1753 and floating point atomics.
1755 2019-07-11 Jonathan Wakely <jwakely@redhat.com>
1757 * doc/xml/manual/configure.xml: Improve documentation of
1758 --enable-libstdcxx-time option.
1760 * include/bits/atomic_base.h (__atomic_impl): New namespace for
1761 wrappers around atomic built-ins.
1762 (__atomic_float, __atomic_ref): New class templates for use as base
1764 * include/std/atomic (atomic<float>, atomic<double>)
1765 (atomic<long double>): New explicit specializations.
1766 (atomic_ref): New class template.
1767 (__cpp_lib_atomic_ref): Define.
1768 * include/std/version (__cpp_lib_atomic_ref): Define.
1769 * testsuite/29_atomics/atomic/60695.cc: Adjust dg-error.
1770 * testsuite/29_atomics/atomic_float/1.cc: New test.
1771 * testsuite/29_atomics/atomic_float/requirements.cc: New test.
1772 * testsuite/29_atomics/atomic_ref/deduction.cc: New test.
1773 * testsuite/29_atomics/atomic_ref/float.cc: New test.
1774 * testsuite/29_atomics/atomic_ref/generic.cc: New test.
1775 * testsuite/29_atomics/atomic_ref/integral.cc: New test.
1776 * testsuite/29_atomics/atomic_ref/pointer.cc: New test.
1777 * testsuite/29_atomics/atomic_ref/requirements.cc: New test.
1779 2019-07-06 Jonathan Wakely <jwakely@redhat.com>
1781 * include/ext/atomicity.h (__exchange_and_add, __atomic_add): Replace
1782 throw() with _GLIBCXX_NOTHROW.
1783 (__atomic_add_dispatch): Return after performing atomic increment.
1785 2019-07-05 Jonathan Wakely <jwakely@redhat.com>
1787 * include/ext/atomicity.h [_GLIBCXX_ATOMIC_BUILTINS] (__atomic_add)
1788 (__exchange_and_add): Replace static specifier with always_inline
1790 (__exchange_and_add_single, __atomic_add_single): Likewise.
1791 (__exchange_and_add_dispatch, __atomic_add_dispatch): Likewise. Also
1792 combine !__gthread_active_p() and !__GTHREADS branches.
1794 2019-07-03 Jonathan Wakely <jwakely@redhat.com>
1797 * acinclude.m4 (libtool_VERSION): Bump to 6:27:0.
1798 * configure: Regenerate.
1799 * config/abi/pre/gnu.ver (GLIBCXX_3.4.27): Add new version. Export
1801 * testsuite/27_io/filesystem/iterators/91067.cc: New test.
1802 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1804 2019-07-02 Jonathan Wakely <jwakely@redhat.com>
1806 * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_LAUNDER)
1807 (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED): Use __has_builtin
1808 instead of __is_identifier to detect Clang support.
1810 2019-07-02 Jim Wilson <jimw@sifive.com>
1812 * configure.ac (BUILD_PDF): Also test for doxygen, dot, xsltproc,
1814 * configure: Regenerate.
1816 2019-06-27 Jonathan Wakely <jwakely@redhat.com>
1819 * src/c++17/fs_path.cc (filesystem_error::_Impl): Use a string_view
1820 for the what_arg parameters.
1821 (filesystem_error::filesystem_error): Pass system_error::what() to
1822 the _Impl constructor.
1823 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Ensure that
1824 filesystem_error::what() contains system_error::what().
1826 2019-06-26 Jonathan Wakely <jwakely@redhat.com>
1828 * include/std/charconv (chars_format): Define bitmask type.
1829 * testsuite/20_util/to_chars/chars_format.cc: New test.
1831 * include/bits/fs_path.h (path::__is_encoded_char): Use __is_one_of.
1832 * include/std/bit (_If_is_unsigned_integer_type): Remove.
1833 (_If_is_unsigned_integer): Use __is_unsigned_integer.
1834 (rotl(byte, unsigned), rotr(byte, unsigned), countl_zero(byte))
1835 (countl_one(byte), countr_zero(byte), countr_one(byte))
1836 (popcount(byte), ispow2(byte), ceil2(byte), floor2(byte))
1837 (log2p1(byte)): Remove.
1838 * include/std/charconv (__detail::__is_one_of): Move to <type_traits>.
1839 (__detail::__is_int_to_chars_type): Remove.
1840 (__detail::__integer_to_chars_result_type): Use __is_signed_integer
1841 and __is_unsigned_integer.
1842 * include/std/type_traits (__is_one_of): Move here from <charconv>.
1843 (__is_signed_integer, __is_unsigned_integer): New helpers.
1844 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Remove test for
1846 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1847 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1848 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1849 * testsuite/26_numerics/bit/bitops.count/countl_one.cc: Likewise.
1850 * testsuite/26_numerics/bit/bitops.count/countl_zero.cc: Likewise.
1851 * testsuite/26_numerics/bit/bitops.count/countr_one.cc: Likewise.
1852 * testsuite/26_numerics/bit/bitops.count/countr_zero.cc: Likewise.
1853 * testsuite/26_numerics/bit/bitops.count/popcount.cc: Likewise.
1854 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Likewise.
1855 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Likewise.
1857 2019-06-25 Jonathan Wakely <jwakely@redhat.com>
1859 * include/std/numeric (midpoint(T, T)): Avoid std::abs in constexpr
1862 2019-06-25 Jakub Jelinek <jakub@redhat.com>
1864 * include/pstl/pstl_config.h (_PSTL_PRAGMA_SIMD_SCAN,
1865 _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN, _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN):
1866 Define to OpenMP 5.0 pragmas even for GCC 10.0+.
1867 (_PSTL_UDS_PRESENT): Define to 1 for GCC 10.0+.
1869 2019-06-24 Jonathan Wakely <jwakely@redhat.com>
1871 * include/std/numeric (midpoint(T, T)): Change implementation for
1872 floating-point types to avoid incorrect rounding of denormals.
1873 * testsuite/26_numerics/midpoint/floating.cc: Add check for correct
1874 rounding with denormals.
1875 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line numbers.
1876 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1878 * testsuite/18_support/headers/cfloat/values_c++17.cc: New test.
1880 2019-06-20 Jonathan Wakely <jwakely@redhat.com>
1882 * acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
1884 * configure: Regenerate.
1886 * include/std/variant (_Variant_storage, _Extra_visit_slot_needed):
1887 Qualify calls to __never_valueless.
1889 * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to
1890 C++17 working draft.
1892 * testsuite/libstdc++-prettyprinters/simple.cc: Use non-palindromic
1893 vector<bool> for test.
1894 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1896 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1898 * include/bits/stream_iterator.h (istream_iterator::_M_equal()): Make
1900 (istream_iterator::_M_read()): Do not check stream state before
1901 attempting extraction. Set stream pointer to null when extraction
1903 (operator==(const istream_iterator&, const istream_iterator&)): Change
1904 to be a hidden friend of istream_iterator.
1905 (operator!=(const istream_iterator&, const istream_iterator&)):
1907 (ostream_iterator::ostream_iterator()): Add default constructor.
1908 (ostream_iterator::ostream_iterator(ostream_type*, const C*)): Use
1910 * testsuite/24_iterators/istream_iterator/1.cc: New test.
1911 * testsuite/24_iterators/ostream_iterator/1.cc: New test.
1912 * testsuite/24_iterators/ostream_iterator/70766.cc: Also check
1913 constructor taking a string.
1914 * testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc:
1917 2019-06-19 Michael Weghorn <m.weghorn@posteo.de>
1918 Jonathan Wakely <jwakely@redhat.com>
1921 * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Use
1922 values of type bool for vector<bool> elements.
1923 * testsuite/libstdc++-prettyprinters/simple.cc: Test vector<bool>.
1924 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1926 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1928 PR libstdc++/90920 partially revert r263433
1929 * include/bits/stl_algo.h (__rotate): Restore checks for empty ranges.
1930 (rotate): Remove checks.
1931 * testsuite/25_algorithms/rotate/90920.cc: New test.
1933 * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value
1934 category used in invocable check.
1935 (reduce(Iter, Iter, T)): Pass initial value as rvalue.
1936 * testsuite/26_numerics/reduce/2.cc: New test.
1938 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
1940 * include/bits/algorithmfwd.h: Change title of doc group.
1941 * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from
1943 * include/bits/stl_numeric.h: Define doc group and add algos to it.
1944 * include/std/numeric (__is_random_access_iter): New internal trait.
1945 (reduce, transform_reduce, exclusive_scan, inclusive_scan)
1946 (transform_exclusive_scan, transform_inclusive_scan): Likewise.
1947 * testsuite/25_algorithms/for_each/for_each_n.cc: New test.
1948 * testsuite/26_numerics/exclusive_scan/1.cc: New test.
1949 * testsuite/26_numerics/inclusive_scan/1.cc: New test.
1950 * testsuite/26_numerics/reduce/1.cc: New test.
1951 * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test.
1952 * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test.
1953 * testsuite/26_numerics/transform_reduce/1.cc: New test.
1954 * testsuite/util/testsuite_iterators.h (test_container::size()): New
1957 * include/c_global/cstddef (std::byte): Perform arithmetic operations
1958 in unsigned int to avoid promotion (LWG 2950).
1960 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
1962 * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
1965 * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
1967 PR libstdc++/90281 Fix string conversions for filesystem::path
1968 * include/bits/fs_path.h (u8path) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
1969 Use codecvt_utf8_utf16 instead of codecvt_utf8. Use
1970 __str_codecvt_in_all to fail for partial conversions and throw on
1972 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS && _GLIBCXX_USE_CHAR8_T]
1973 (path::_Cvt<char8_t>): Add explicit specialization.
1974 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Remove
1976 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
1977 if-constexpr instead of dispatching to _S_wconvert. Use codecvt
1978 instead of codecvt_utf8. Use __str_codecvt_in_all and
1979 __str_codecvt_out_all.
1980 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
1981 codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
1982 (path::_S_str_convert) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1983 codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
1984 with allocator. Use __str_codecvt_out_all. Fallthrough to POSIX code
1985 after converting to UTF-8.
1986 (path::_S_str_convert): Use codecvt instead of codecvt_utf8. Use
1987 __str_codecvt_in_all.
1988 (path::string): Fix initialization of string types with different
1990 (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
1991 codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
1992 * include/bits/locale_conv.h (__do_str_codecvt): Reorder static and
1994 (__str_codecvt_out_all, __str_codecvt_in_all): New functions that
1995 return false for partial conversions.
1996 * include/experimental/bits/fs_path.h (u8path):
1997 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Implement correctly for mingw.
1998 [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_wconvert): Add
1999 missing handling for char8_t. Use codecvt and codecvt_utf8_utf16
2000 instead of codecvt_utf8. Use __str_codecvt_in_all and
2001 __str_codecvt_out_all.
2002 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::_Cvt::_S_convert): Use
2003 codecvt instead of codecvt_utf8. Use __str_codecvt_out_all.
2004 (path::string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
2005 codecvt_utf8_utf16 instead of codecvt_utf8. Construct return values
2006 with allocator. Use __str_codecvt_out_all and __str_codecvt_in_all.
2007 (path::string) [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
2008 __str_codecvt_in_all.
2009 (path::u8string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use
2010 codecvt_utf8_utf16 instead of codecvt_utf8. Use __str_codecvt_out_all.
2011 * src/c++17/fs_path.cc (path::_S_convert_loc): Use
2012 __str_codecvt_in_all.
2013 * src/filesystem/path.cc (path::_S_convert_loc): Likewise.
2014 * testsuite/27_io/filesystem/path/construct/90281.cc: New test.
2015 * testsuite/27_io/filesystem/path/factory/u8path.cc: New test.
2016 * testsuite/27_io/filesystem/path/native/string.cc: Test with empty
2017 strings and with Unicode characters outside the basic multilingual
2019 * testsuite/27_io/filesystem/path/native/alloc.cc: New test.
2020 * testsuite/experimental/filesystem/path/construct/90281.cc: New test.
2021 * testsuite/experimental/filesystem/path/factory/u8path.cc: New test.
2022 * testsuite/experimental/filesystem/path/native/alloc.cc: New test.
2023 * testsuite/experimental/filesystem/path/native/string.cc: Test with
2024 empty strings and with Unicode characters outside the basic
2027 2019-06-17 François Dumont <fdumont@gcc.gnu.org>
2028 Jonathan Wakely <jwakely@redhat.com>
2030 * include/bits/hashtable.h (struct _Hashtable::_Scoped_node): New type.
2031 (_Hashtable::_M_insert_unique_node): Add key_type parameter. Don't
2032 deallocate node if insertion fails.
2033 (_Hashtable::_M_insert_multi_node): Likewise.
2034 (_Hashtable::_M_reinsert_node): Pass additional key argument.
2035 (_Hashtable::_M_reinsert_node_multi): Likewise. Remove FIXME.
2036 (_Hashtable::_M_extract_node(size_t, __node_base*)): New function.
2037 (_Hashtable::extract(const_iterator)): Use _M_extract_node.
2038 (_Hashtable::extract(const _Key&)): Likewise.
2039 (_Hashtable::_M_merge_unique): Pass additional key argument.
2040 (_Hashtable::_M_emplace<Args>(true_type, Args&&...)): Likewise. Use
2042 (_Hashtable::_M_insert): Likewise.
2043 * include/bits/hashtable_policy.h (_Map_base::operator[]): Likewise.
2044 (_Hashtable_alloc): Add comments to functions with misleading names.
2046 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
2048 * testsuite/20_util/bad_function_call/what.cc: Include <string> header
2050 * testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc: Likewise.
2051 * testsuite/20_util/tuple/cons/allocator_with_any.cc: Include <memory>
2052 header for std::allocator.
2053 * testsuite/23_containers/array/tuple_interface/tuple_element.cc: Add
2054 using-declaration for std::size_t.
2055 * testsuite/23_containers/array/tuple_interface/tuple_size.cc:
2057 * testsuite/23_containers/deque/cons/55977.cc: Include <istream> for
2059 * testsuite/23_containers/vector/cons/55977.cc: Likewise.
2060 * testsuite/experimental/map/erasure.cc: Include <string> for
2062 * testsuite/experimental/unordered_map/erasure.cc: Likewise.
2064 2019-06-14 Jonathan Wakely <jwakely@redhat.com>
2066 * include/experimental/type_traits (experimental::nonesuch): Use
2067 pragma to disable -Wctor-dtor-privacy warnings.
2068 * include/std/type_traits (__is_convertible_helper<From, To, false>)
2069 (__is_nt_convertible_helper<From, To, false>, __nonesuch): Likewise.
2071 * include/std/version (__cpp_lib_bind_front): Add missing macro.
2073 2019-06-12 Jonathan Wakely <jwakely@redhat.com>
2075 * include/std/algorithm (__cpp_lib_parallel_algorithm): Fix value.
2076 * include/std/memory (__cpp_lib_parallel_algorithm): Likewise.
2077 * include/std/numeric (__cpp_lib_parallel_algorithm): Likewise.
2078 * testsuite/25_algorithms/pstl/feature_test.cc: New test.
2080 * include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
2081 (variant::emplace): Change static_assert messages from "should be"
2083 (hash<monostate>::operator()): Remove name of unused parameter.
2085 * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
2088 * include/Makefile.am: Add new <bits/charconv.h> header.
2089 * include/Makefile.in: Regenerate.
2090 * include/bits/basic_string.h (to_string(int), to_string(unsigned))
2091 (to_string(long), to_string(unsigned long), to_string(long long))
2092 (to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
2093 * include/bits/charconv.h: New header.
2094 (__detail::__to_chars_len): Move here from <charconv>.
2095 (__detail::__to_chars_10_impl): New function extracted from
2096 __detail::__to_chars_10.
2097 * include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
2098 (__to_chars_unsigned_type): New class template that reuses
2099 __make_unsigned_selector_base::__select to pick a type.
2100 (__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
2101 (__detail::__to_chars_len): Move to new header.
2102 (__detail::__to_chars_10): Add inline specifier. Move code doing the
2103 output to __detail::__to_chars_10_impl and call that.
2104 * include/std/version (__cpp_lib_to_chars): Add, but comment out.
2105 * testsuite/21_strings/basic_string/numeric_conversions/char/
2106 to_string.cc: Fix reference in comment. Remove unused variable.
2107 * testsuite/21_strings/basic_string/numeric_conversions/char/
2108 to_string_int.cc: New test.
2110 2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
2112 Fix ConstexprIterator requirements tests - No constexpr algorithms!
2113 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
2114 Replace copy with hand-rolled loop.
2115 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
2118 2019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
2120 Test for C++20 p0858 - ConstexprIterator requirements.
2121 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
2123 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
2126 2019-06-07 Thomas Rodgers <trodgers@redhat.com>
2128 Rename PSTL macro's consistent with libstdc++ (and llvm upstream
2130 * include/bits/c++config: Rename all macros of the form __PSTL* to
2132 * include/std/algorithm: Likewise.
2133 * include/std/execution: Likewise.
2134 * include/std/numeric: Likewise.
2135 * include/std/memory: Likewise.
2136 * include/pstl/glue_memory_impl.h: Likewise.
2137 * include/pstl/numeric_impl.h: Likewise.
2138 * include/pstl/glue_memory_defs.h: Likewise.
2139 * include/pstl/execution_defs.h: Likewise.
2140 * include/pstl/utils.h: Likewise.
2141 * include/pstl/algorithm_fwd.h: Likewise.
2142 * include/pstl/unseq_backend_simd.h: Likewise.
2143 * include/pstl/glue_execution_defs.h: Likewise.
2144 * include/pstl/algorithm_impl.h: Likewise.
2145 * include/pstl/parallel_impl.h: Likewise.
2146 * include/pstl/memory_impl.h: Likewise.
2147 * include/pstl/glue_numeric_defs.h: Likewise.
2148 * include/pstl/parallel_backend_utils.h: Likewise.
2149 * include/pstl/glue_algorithm_defs.h: Likewise.
2150 * include/pstl/parallel_backend.h: Likewise.
2151 * include/pstl/glue_numeric_impl.h: Likewise.
2152 * include/pstl/parallel_backend_tbb.h: Likewise.
2153 * include/pstl/numeric_fwd.h: Likewise.
2154 * include/pstl/glue_algorithm_impl.h: Likewise.
2155 * include/pstl/execution_impl.h: Likewise.
2156 * include/pstl/pstl_config.h: Likewise.
2157 * testsuite/util/pstl/pstl_test_config.h: Likewise.
2158 * testsuite/util/pstl/test_utils.h: Likewise.
2159 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
2161 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
2163 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
2165 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
2166 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise.
2167 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
2168 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise.
2169 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
2171 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise.
2172 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise.
2173 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise.
2174 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise.
2175 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
2177 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise.
2178 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise.
2179 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise.
2180 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise.
2181 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
2183 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
2184 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise.
2185 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
2187 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
2189 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise.
2190 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
2191 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
2193 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
2195 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
2197 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
2199 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
2201 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
2203 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
2205 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
2207 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
2209 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
2211 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
2213 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
2215 Rename header guards to be consistent with upstream project's
2217 * include/pstl/glue_memory_impl.h: Rename all macros of the form
2218 _PSTL_(.*)_H to _PSTL_\U\1_H.
2219 * include/pstl/numeric_impl.h: Likewise.
2220 * include/pstl/glue_memory_defs.h: Likewise.
2221 * include/pstl/execution_defs.h: Likewise.
2222 * include/pstl/utils.h: Likewise.
2223 * include/pstl/algorithm_fwd.h: Likewise.
2224 * include/pstl/unseq_backend_simd.h: Likewise.
2225 * include/pstl/glue_execution_defs.h: Likewise.
2226 * include/pstl/algorithm_impl.h: Likewise.
2227 * include/pstl/parallel_impl.h: Likewise.
2228 * include/pstl/memory_impl.h: Likewise.
2229 * include/pstl/glue_numeric_defs.h: Likewise.
2230 * include/pstl/parallel_backend_utils.h: Likewise.
2231 * include/pstl/glue_algorithm_defs.h: Likewise.
2232 * include/pstl/parallel_backend.h: Likewise.
2233 * include/pstl/glue_numeric_impl.h: Likewise.
2234 * include/pstl/parallel_backend_tbb.h: Likewise.
2235 * include/pstl/numeric_fwd.h: Likewise.
2236 * include/pstl/glue_algorithm_impl.h: Likewise.
2237 * include/pstl/execution_impl.h: Likewise.
2238 * include/pstl/pstl_config.h: Likewise.
2239 * testsuite/util/pstl/pstl_test_config.h: Likewise.
2241 Synchronize libstdc++ parallel algorithms with upstream
2243 * include/pstl/algorithm_fwd.h: Synchronize with
2244 upstream PSTL project.
2245 * include/pstl/algorithm_impl.h: Likewise.
2246 * include/pstl/execution_defs.h: Likewise.
2247 * include/pstl/execution_impl.h: Likewise.
2248 * include/pstl/glue_algorithm_impl.h: Likewise.
2249 * include/pstl/glue_execution_defs.h: Likewise.
2250 * include/pstl/numeric_fwd.h: Likewise.
2251 * include/pstl/numeric_impl.h: Likewise.
2252 * include/pstl/parallel_backend.h: Likewise.
2253 * include/pstl/pstl_config.h: Likewise.
2254 * include/pstl/unseq_backend_simd.h: Likewise.
2255 * include/pstl/parallel_backend_serial.h: New file.
2256 * include/Makefile.am (pstl_headers): Add
2257 parallel_backend_serial.h.
2258 * include/Makefile.in: Regenerate.
2260 Clean up non-conforming names
2261 * include/pstl/algorithm_impl.h (__parallel_set_union_op):
2262 Uglfiy copy_range1 and copy_range2
2263 (__pattern_walk2_n): Rename local n to __n
2264 * include/pstl/parallel_backend_tbb.h (struct __binary_no_op):
2265 Rename parameter _T to _Tp.
2267 Integrate non-TBB serial backend support
2268 * include/bits/c++config: Adjust TBB detection logic to select serial
2269 PSTL backend if no TBB present.
2270 * testsuite/utils/pstl/test_utils.h: Remove check for
2271 _PSTL_USE_PAR_POLICIES
2273 2019-06-07 Jonathan Wakely <jwakely@redhat.com>
2275 * testsuite/24_iterators/container_access.cc: Move dg-options before
2276 dg-do directive so the target check uses the -std option.
2279 * configure: Regenerate.
2280 * src/Makefile.am (stamp-debug): Also test for missing makefile.
2281 * src/Makefile.in: Regenerate.
2283 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
2285 * include/std/array: Do not include <stdexcept>.
2286 * include/std/optional: Include <exception> and
2287 <bits/exception_defines.h> instead of <stdexcept>.
2288 * testsuite/20_util/function_objects/searchers.cc: Include <cctype>
2290 * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
2292 * testsuite/23_containers/map/erasure.cc: Include <string>.
2293 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2295 * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add
2296 dg-prune-output for different C++98 diagnostic.
2297 * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc:
2299 * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
2301 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
2303 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
2305 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
2307 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
2309 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
2311 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
2313 * testsuite/23_containers/vector/requirements/dr438/
2314 constructor_1_neg.cc: Likewise.
2315 * testsuite/23_containers/vector/requirements/dr438/
2316 constructor_2_neg.cc: Likewise.
2317 * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
2319 * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
2321 * testsuite/23_containers/unordered_map/requirements/debug_container.cc:
2322 Do not test allocator rebinding extension for C++2a.
2323 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
2324 dg-do directive for C++17 and C++2a.
2326 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2327 1_c++0x.cc: Remove redundant test.
2328 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2329 2.cc: Use target selector instead of preprocessor condition.
2330 * testsuite/23_containers/deque/requirements/explicit_instantiation/
2331 3.cc: Do not run test for C++2a.
2332 * testsuite/23_containers/forward_list/requirements/
2333 explicit_instantiation/3.cc: Likewise.
2334 * testsuite/23_containers/forward_list/requirements/
2335 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2337 * testsuite/23_containers/list/requirements/explicit_instantiation/
2338 1_c++0x.cc: Remove redundant test.
2339 * testsuite/23_containers/list/requirements/explicit_instantiation/
2340 2.cc: Use target selector instead of preprocessor condition.
2341 * testsuite/23_containers/list/requirements/explicit_instantiation/
2342 3.cc: Do not run test for C++2a.
2343 * testsuite/23_containers/list/requirements/explicit_instantiation/
2344 5.cc: Do not test allocator rebinding extension for C++2a.
2345 * testsuite/23_containers/map/requirements/explicit_instantiation/
2346 1_c++0x.cc: Remove redundant test.
2347 * testsuite/23_containers/map/requirements/explicit_instantiation/
2348 2.cc: Adjust comment.
2349 * testsuite/23_containers/map/requirements/explicit_instantiation/
2350 3.cc: Do not run test for C++2a.
2351 * testsuite/23_containers/map/requirements/explicit_instantiation/
2352 5.cc: Do not test allocator rebinding extension for C++2a.
2353 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2354 1_c++0x.cc: Remove redundant test.
2355 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2356 3.cc: Do not run test for C++2a.
2357 * testsuite/23_containers/multimap/requirements/explicit_instantiation/
2358 5.cc: Do not test allocator rebinding extension for C++2a.
2359 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
2360 3.cc: Do not run test for C++2a.
2361 * testsuite/23_containers/multiset/requirements/explicit_instantiation/
2362 5.cc: Do not test allocator rebinding extension for C++2a.
2363 * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
2364 Do not run test for C++2a.
2365 * testsuite/23_containers/set/requirements/explicit_instantiation/
2366 1_c++0x.cc: Remove redundant test.
2367 * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
2368 Do not test allocator rebinding extension for C++2a.
2369 * testsuite/23_containers/unordered_map/requirements/
2370 explicit_instantiation/3.cc: Likewise.
2371 * testsuite/23_containers/unordered_map/requirements/
2372 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2374 * testsuite/23_containers/unordered_multimap/requirements/
2375 explicit_instantiation/3.cc: Do not run test for C++2a.
2376 * testsuite/23_containers/unordered_multimap/requirements/
2377 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2379 * testsuite/23_containers/unordered_multiset/requirements/
2380 explicit_instantiation/3.cc: Do not run test for C++2a.
2381 * testsuite/23_containers/unordered_multiset/requirements/
2382 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2384 * testsuite/23_containers/unordered_set/requirements/
2385 explicit_instantiation/3.cc: Do not run test for C++2a.
2386 * testsuite/23_containers/unordered_set/requirements/
2387 explicit_instantiation/5.cc: Do not test allocator rebinding extension
2389 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
2390 2.cc: Remove redundant test.
2391 * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/
2392 3.cc: Do not run test for C++2a.
2393 * testsuite/23_containers/vector/requirements/explicit_instantiation/
2396 * include/std/type_traits (is_empty, is_polymorphic, is_final)
2397 (is_abstract, is_aggregate): Remove static_assert.
2398 * testsuite/20_util/is_abstract/incomplete_neg.cc: Check for error
2400 * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. Add
2401 missing -std=gnu++17 option.
2402 * testsuite/20_util/is_empty/incomplete_neg.cc: New test.
2403 * testsuite/20_util/is_final/incomplete_neg.cc: New test.
2404 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: Check for error
2407 * testsuite/18_support/set_terminate.cc: Do not run for C++98 mode.
2408 * testsuite/18_support/set_unexpected.cc: Likewise.
2409 * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to
2411 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix constexpr
2412 function to be valid in C++11.
2413 * testsuite/26_numerics/complex/proj.cc: Do not run for C++98 mode.
2414 * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not
2415 include Library Fundamentals or Networking headers in C++11 mode.
2416 * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode.
2418 * include/std/tuple (_TC): Replace with _TupleConstraints.
2419 (_TupleConstraints): New helper for SFINAE constraints, with more
2420 expressive member functions to reduce duplication when used.
2421 (tuple::_TC2, tuple::_TMC, tuple::_TNTC): Remove.
2422 (tuple::_TCC): Replace dummy type parameter with bool non-type
2423 parameter that can be used to check the pack size.
2424 (tuple::_ImplicitDefaultCtor, tuple::_ExplicitDefaultCtor)
2425 (tuple::_ImplicitCtor, tuple::_ExplicitCtor): New alias templates for
2426 checking constraints in constructors.
2427 (tuple::__valid_args, tuple::_UseOtherCtor, tuple::__use_other_ctor):
2429 (tuple::tuple): Use new helpers to reduce repitition in constraints.
2430 (tuple::tuple(allocator_arg_t, const Alloc&)): Constrain.
2431 (tuple<T1, T2>::_TCC, tuple<T1, T2>::_ImplicitDefaultCtor)
2432 (tuple<T1, T2>::_ExplicitDefaultCtor, tuple<T1, T2>::_ImplicitCtor)
2433 (tuple<T1, T2>::_ExplicitCtor): New alias templates for checking
2434 constraints in constructors.
2435 (tuple::__is_alloc_arg()): New SFINAE helpers.
2436 (tuple<T1, T2>::tuple): Use new helpers to reduce repitition in
2438 (tuple<T1, T2>::tuple(allocator_arg_t, const Alloc&)): Constrain.
2439 * testsuite/20_util/tuple/cons/90700.cc: New test.
2440 * testsuite/20_util/tuple/cons/allocators.cc: Add default constructor
2441 to meet new constraint on allocator-extended default constructor.
2443 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2445 * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
2446 * include/bits/stl_multimap.h (multimap): Likewise.
2448 2019-06-03 François Dumont <fdumont@gcc.gnu.org>
2450 Rename variables and cleanup comments.
2451 * include/bits/hashtable_policy.h
2452 * include/bits/hashtable.h
2454 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2456 * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
2457 Fix bgcolor for P0340R3.
2458 * doc/html/*: Regenerate.
2461 * doc/xml/manual/status_cxx2014.xml: Document what's missing from
2462 <experimental/memory_resource>.
2463 * doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
2464 P0339R6, P0340R3, P1164R1 and P1357R1.
2465 * doc/html/*: Regenerate.
2467 * doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
2468 * include/bits/forward_list.h [__cplusplus > 201703]: Enable
2469 allocator::value_type assertion for C++2a.
2470 * include/bits/hashtable.h: Likewise.
2471 * include/bits/stl_deque.h: Likewise.
2472 * include/bits/stl_list.h: Likewise.
2473 * include/bits/stl_map.h: Likewise.
2474 * include/bits/stl_multimap.h: Likewise.
2475 * include/bits/stl_multiset.h: Likewise.
2476 * include/bits/stl_set.h: Likewise.
2477 * include/bits/stl_vector.h: Likewise.
2478 * testsuite/23_containers/deque/48101-3_neg.cc: New test.
2479 * testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
2480 * testsuite/23_containers/list/48101-3_neg.cc: New test.
2481 * testsuite/23_containers/map/48101-3_neg.cc: New test.
2482 * testsuite/23_containers/multimap/48101-3_neg.cc: New test.
2483 * testsuite/23_containers/multiset/48101-3_neg.cc: New test.
2484 * testsuite/23_containers/set/48101-3_neg.cc: New test.
2485 * testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
2486 * testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
2487 * testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
2488 * testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
2489 * testsuite/23_containers/vector/48101-3_neg.cc: New test.
2491 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
2493 * doc/xml/manual/allocator.xml: Move hoard.org back to http.
2495 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2497 * include/std/tuple (tuple<>): Add noexcept to allocator-extended
2499 (tuple<T1, T2>::__nothrow_default_constructible()): New helper
2501 (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
2503 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2505 * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
2508 * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
2509 definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
2510 * libsupc++/eh_term_handler.h: New header defining
2511 _GLIBCXX_DEFAULT_TERM_HANDLER.
2512 * libsupc++/eh_terminate.cc: Include eh_term_handler.h.
2513 (set_terminate): Restore default handler when argument is null.
2514 (set_unexpected): Likewise.
2515 * testsuite/18_support/set_terminate.cc: New test.
2516 * testsuite/18_support/set_unexpected.cc: New test.
2518 * include/backward/hashtable.h (size_t, ptrdiff_t)
2519 (forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
2520 (distance, vector, pair, __iterator_category): Remove
2521 using-declarations that add these names to namespace __gnu_cxx.
2522 * include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
2523 * include/ext/debug_allocator.h (size_t): Likewise.
2524 * include/ext/functional (size_t, unary_function, binary_function)
2525 (mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
2527 * include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
2528 * include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
2529 * include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
2530 * include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
2531 * include/ext/numeric (iota): Fix outdated comment.
2532 * include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
2533 * include/ext/rb_tree (_Rb_tree, allocator): Likewise.
2534 * include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
2535 * include/ext/ropeimpl.h (size_t, printf, basic_ostream)
2536 (__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
2538 * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
2539 (allocator, __true_type, __false_type): Likewise.
2541 2019-05-31 Antony Polukhin <antoshkka@gmail.com>
2544 * include/std/type_traits __type_identity, __is_complete_or_unbounded):
2545 New helpers for checking preconditions in traits.
2546 (is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
2547 (is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
2548 (is_destructible, is_nothrow_destructible, is_constructible)
2549 (is_default_constructible, is_copy_constructible)
2550 (is_move_constructible, is_nothrow_default_constructible)
2551 (is_nothrow_constructible, is_nothrow_copy_constructible)
2552 (is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
2553 (is_nothrow_assignable, is_nothrow_copy_assignable)
2554 (is_nothrow_move_assignable, is_trivially_constructible)
2555 (is_trivially_copy_constructible, is_trivially_move_constructible)
2556 is_trivially_assignable, is_trivially_copy_assignable)
2557 (is_trivially_move_assignable, is_trivially_destructible)
2558 (alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
2559 (is_invocable_r, is_nothrow_invocable)
2560 (has_unique_object_representations, is_aggregate): Add static_asserts
2561 to make sure that type traits are not misused with incomplete types.
2562 (__is_constructible_impl, __is_nothrow_default_constructible_impl)
2563 (__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
2564 base characteristics without assertions that can be reused in other
2566 * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
2567 * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
2569 * testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
2570 * testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
2571 * testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
2572 * testsuite/20_util/is_class/value.cc: Check incomplete type.
2573 * testsuite/20_util/is_function/value.cc: Likewise.
2574 * testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
2575 * testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
2577 * testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
2578 * testsuite/20_util/is_reference/value.cc: Check incomplete types.
2579 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
2580 * testsuite/20_util/is_union/value.cc: Likewise.
2581 * testsuite/20_util/is_void/value.cc: Likewise.
2582 * testsuite/util/testsuite_tr1.h: Add incomplete union type.
2584 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2586 * include/bits/random.h (random_device::_M_init(const char*, size_t)):
2587 Add new private member function.
2588 * src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
2589 (random_device::_M_init_pretr1(const string&)): Call new private
2590 member with string data.
2591 * src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
2593 * testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
2594 test using COW strings.
2595 * testsuite/26_numerics/random/random_device/cons/default.cc: Generate
2596 a value from the device.
2597 * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
2598 Fix typo in token string.
2600 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
2602 LWG2788 basic_string spurious use of a default constructible allocator
2603 * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
2604 (basic_string::_M_replace_dispatch): Construct temporary string with
2605 the current allocator.
2606 * testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
2607 * testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.
2609 2019-05-30 Jonathan Wakely <jwakely@redhat.com>
2611 * doc/xml/manual/diagnostics.xml: Update list of headers that define
2613 * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
2614 section about new/delete overloads. Improve section on verbose
2616 * doc/html/*: Regenerate.
2618 * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
2619 P0811R3. Change status of P1353R0.
2620 * doc/html/*: Regenerate.
2622 * doc/xml/manual/status_cxx2011.xml: Use <variablelist> for
2623 documentation of implementation-defined types for [thread.req.native].
2624 * doc/xml/manual/status_cxx2017.xml: Update documentation of
2625 implementation-defined strings for [variant.bad.access]. Fix typo in
2626 documentation of implementation-defined support for [fs.conform.9945].
2627 * doc/html/*: Regenerate.
2629 2019-05-29 Jonathan Wakely <jwakely@redhat.com>
2632 * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
2633 that fails on mingw-w64.
2636 * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
2637 (status(const path&, error_code&)): Use parent_path() to remove
2639 (symlink_status(const path&, error_code&)): Duplicate workaround for
2640 bug in _wstat for paths with trailing slash.
2641 * testsuite/27_io/filesystem/operations/remove_all.cc: Check path
2642 with trailing slash.
2643 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2644 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
2646 * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
2647 once instead of building it iteratively.
2649 * testsuite/util/testsuite_api.h: Remove names of unused parameters.
2651 PR libstdc++/85494 use rdseed and rand_s in std::random_device
2652 * acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
2653 the assembler supports rdseed.
2654 * config.h.in: Regenerate.
2655 * configure: Regenerate.
2656 * configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
2657 * config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
2658 * doc/html/*: Regenerate.
2659 * doc/xml/manual/status_cxx2011.xml: Document new tokens.
2660 * include/bits/random.h (random_device::random_device()): Always call
2661 _M_init rather than _M_init_pretr1.
2662 (random_device::random_device(const string&)): Likewise.
2663 (random_device::operator()()): Always call _M_getval().
2664 (random_device::_M_file): Replace first member of union with an
2665 anonymous struct, with _M_file as its first member.
2666 * src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
2667 [_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
2668 (USE_MT19937): Define if none of the above are defined.
2669 (USE_POSIX_FILE_IO): Define.
2670 (_M_strtoul): Remove.
2671 [USE_RDSEED] (__x86_rdseed): Define new function.
2672 [_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
2673 (random_device::_M_init(const string&)): Initialize new union members.
2674 Add support for "rdseed" and "rand_s" tokens. Decide what the
2675 "default" token does according to which USE_* macros are defined.
2676 [USE_POSIX_FILE_IO]: Store a file descriptor.
2677 [USE_MT19937]: Forward to _M_init_pretr1 instead.
2678 (random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
2679 code from _M_strtoul.
2680 [!USE_MT19937]: Call _M_init, transforming the old default token or
2681 numeric tokens to "default".
2682 (random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
2683 (random_device::_M_getval()): Use new union members to obtain a
2684 random number from the stored function pointer or file descriptor.
2685 [USE_MT19937]: Obtain a value from the mt19937 engine.
2686 (random_device::_M_getval_pretr1()): Call _M_getval().
2687 (random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
2689 [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
2690 * testsuite/26_numerics/random/random_device/85494.cc: New test.
2692 2019-05-28 Jonathan Wakely <jwakely@redhat.com>
2695 * include/experimental/bits/fs_path.h (path::path(path&&)): Only call
2696 _M_split_cmpts() for a path with multiple components.
2697 (path::_S_is_dir_sep()): Add missing 'static' keyword to function.
2698 * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
2699 components and reserve space in vector. Return early when there is
2701 * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
2702 * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
2704 * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
2705 form of std::equals for C++11 compatibility.
2707 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
2709 * doc/xml/manual/appendix_contributing.xml: Update pointer to
2710 C++ standard at ansi.org.
2712 2019-05-24 Jonathan Wakely <jwakely@redhat.com>
2714 * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
2715 * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
2718 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
2719 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
2721 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2723 * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
2725 * testsuite/20_util/function_objects/invoke/3.cc: New test.
2726 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
2727 "compile" test to "run".
2729 * doc/xml/manual/intro.xml: Document LWG DR 2996 change.
2730 * doc/html/*: Regenerate.
2731 * include/bits/shared_ptr.h (shared_ptr(shared_ptr&&, T*)): Add
2732 rvalue aliasing constructor.
2733 (static_pointer_cast, const_pointer, dynamic_pointer_cast)
2734 (reinterpret_pointer_cast): Add overloads taking rvalues.
2735 * include/bits/shared_ptr_base.h (__shared_ptr(__shared_ptr&&, T*)):
2736 Add rvalue aliasing constructor.
2737 * testsuite/20_util/shared_ptr/casts/1.cc: Change "compile" test to
2738 "run" and check return values as well as types.
2739 * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
2740 * testsuite/20_util/shared_ptr/casts/rval.cc: New test.
2741 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: New test.
2742 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused return
2745 * doc/xml/manual/evolution.xml: Document LWG DR 2921 change.
2746 * doc/xml/manual/intro.xml: Likewise.
2747 * include/std/future (__create_task_state): Add default arguments
2748 to make providing an allocator optional.
2749 (packaged_task::packaged_task(F&&)): Call __create_task_state directly
2750 instead of delegating to another constructor.
2751 (packaged_task::packaged_task(allocator_arg_t, const A&, ...)): Do not
2752 define allocator-extended constructors for C++17 and later.
2753 * testsuite/30_threads/packaged_task/cons/alloc.cc: Only run test for
2755 * testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
2756 * testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
2757 * testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
2759 2019-05-23 Hans-Peter Nilsson <hp@axis.com>
2761 * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
2762 Don't run the libstdc++/83237 part on simulator targets.
2764 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2766 * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
2768 * doc/html/*: Regenerate.
2770 * include/experimental/any (__any_caster): Use RTTI if comparing
2771 addresses fails, to support non-unique addresses in shared libraries.
2772 * include/std/any (__any_caster): Likewise.
2775 * include/experimental/any (__any_caster): Constrain to only be
2776 callable for object types. Use remove_cv_t instead of decay_t.
2777 If the type decays or isn't copy constructible, compare the manager
2778 function to a dummy specialization.
2779 (__any_caster): Add overload constrained for non-object types.
2780 (any::_Manager_internal<_Op>): Add dummy specialization.
2781 * testsuite/experimental/any/misc/any_cast.cc: Test function types
2784 2019-05-22 Jonathan Wakely <jwakely@redhat.com>
2787 * src/c++17/fs_path.cc (path::_List::operator=(const _List&)): Fix
2788 reversed arguments to uninitialized_copy_n.
2789 * testsuite/27_io/filesystem/path/assign/copy.cc: Check that source
2790 is unchanged by copy assignment.
2791 * testsuite/util/testsuite_fs.h (compare_paths): Use std::equal to
2792 compare path components.
2795 * include/experimental/memory_resource: Add system header pragma and
2796 do not define anything unless compiled as C++14 or later.
2797 (__resource_adaptor_common::__guaranteed_alignment): Remove.
2798 (__resource_adaptor_imp::do_allocate): If the requested alignment
2799 is a fundamental alignment then either allocate directly from _M_alloc
2800 or call the new _M_allocate function.
2801 (__resource_adaptor_imp::do_deallocate): Likewise for deallocation.
2802 (__resource_adaptor_imp::_M_allocate): New function that uses a copy
2803 of the allocator rebound to a POD type with the specified alignment.
2804 (__resource_adaptor_imp::_M_deallocate): Likewise for deallocation.
2805 * testsuite/experimental/memory_resource/new_delete_resource.cc:
2806 Adjust expected allocation sizes.
2807 * testsuite/experimental/memory_resource/resource_adaptor.cc: Remove
2808 xfail for Solaris x86.
2810 2019-05-21 Thomas Rodgers <trodgers@redhat.com>
2812 LWG 3062 - Unnecessary decay_t in is_execution_policy_v
2813 * include/pstl/execution_defs.h (__enable_if_execution_policy):
2814 Use std::__remove_cvref_t when building with GCC.
2816 2019-05-21 Jonathan Wakely <jwakely@redhat.com>
2819 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2820 Use "additional_flags" to pass -ltbb to v3_target_compile command.
2821 Use check_v3_target_prop_cached to cache the result of the test.
2823 * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
2825 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2828 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2829 Changed v3_target_compile check from preprocess to executable.
2830 Added "-ltbb" to v3_target_compile flags.
2832 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2834 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2835 Add check for Thread Building Blocks 2018 or later.
2837 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2839 * testsuite/experimental/names.cc: Only include Networking TS headers
2840 on targets with the necessary Gthreads support.
2842 2019-05-20 Marek Polacek <polacek@redhat.com>
2844 CWG 2094 - volatile scalars are trivially copyable.
2846 * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
2847 result for volatile int.
2849 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2851 * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
2852 * testsuite/experimental/names.cc: Include <experimental/filesystem>
2855 PR c++/90532 Ensure __is_constructible(T[]) is false
2856 * include/std/type_traits (__do_is_default_constructible_impl)
2857 (__is_default_constructible_atom, __is_default_constructible_safe):
2859 (is_default_constructible): Use is_constructible.
2860 * testsuite/20_util/is_constructible/value.cc: Check int[] case.
2861 * testsuite/20_util/is_default_constructible/value.cc: Likewise.
2862 * testsuite/20_util/is_trivially_constructible/value.cc: Likewise.
2863 * testsuite/20_util/is_trivially_default_constructible/value.cc:
2866 2019-05-20 Pádraig Brady <pbrady@fb.com>
2868 * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
2869 to the deallocator with -fsized-deallocation.
2871 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2873 * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
2874 test by passing correct alignment to deallocate function.
2876 2019-05-18 Jonathan Wakely <jwakely@redhat.com>
2879 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
2880 Raise exception if unique_ptr tuple member has unknown structure.
2881 * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker.__call__):
2882 Adjust worker to support new __uniq_ptr_data base class. Do not
2883 assume field called _M_head_impl is the first tuple element.
2885 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2887 * include/bits/stl_deque.h
2888 (_Deque_iterator<>::__ptr_to): Remove, use std::__ptr_rebind.
2889 (_Deque_base(_Deque_base&&, const allocator_type&)): New.
2890 (_Deque_base::_Deque_impl_data): New.
2891 (_Deque_base::_Deque_impl): Inherit latter.
2892 (_Deque_base::_Deque_impl::_M_swap_data): Move...
2893 (_Deque_base::_Deque_impl_data::_M_swap_data): ... here.
2894 (_Deque_base::_Deque_impl()): Add noexcept qualification.
2895 (_Deque_base::_Deque_impl(_Deque_impl&&, _Tp_alloc_type&&)): New.
2896 (_Deque_base::_Deque_impl::_M_get_Tp_allocator()): Remove static_cast.
2897 (deque<>::deque()): Default.
2898 (deque<>::deque(deque&&)): Default.
2899 (deque<>::deque(deque&&, const allocator_type&, false_type)): New.
2900 (deque<>::deque(deque&&, const allocator_type&, true_type)): New.
2901 (deque<>::deque(deque&&, const allocator_type&)): Delegate to latters.
2902 (deque<>::deque<_It>(_It, _It, const allocator_type&)): Use
2903 _M_range_initialize.
2904 (deque<>::assign<_It>(_It, _It)): Use _M_assign_aux.
2905 (deque<>::resize(size_type, const value_type&)): Share a single
2907 (deque<>::insert<_It>(const_iterator, _It, _It)): Use
2908 _M_range_insert_aux.
2909 [__cplusplus >= 201103L](_M_initialize_dispatch): Remove.
2910 [__cplusplus >= 201103L](_M_assign_dispatch): Remove.
2911 [__cplusplus >= 201103L](_M_insert_dispatch): Remove.
2912 * testsuite/23_containers/deque/allocator/default_init.cc: New.
2914 2019-05-17 Jonathan Wakely <jwakely@redhat.com>
2917 * include/std/variant (holds_alternative, get, get_if): Improve
2918 static assertion messages.
2919 (bad_variant_access::bad_variant_access()): Change default message.
2920 (__throw_bad_variant_access(bool)): New overload.
2921 (get): Use new overload.
2922 (visit, visit<R>): Improve exception message.
2924 * testsuite/20_util/variant/compile.cc: Fix narrowing test for ILP32
2925 targets. Add more cases from P0608R3.
2926 * testsuite/20_util/variant/run.cc: Add more cases from P0608R3.
2928 * include/bits/random.h (seed_seq::param): Fix non-reserved name.
2929 * include/experimental/type_traits (is_detected_exact)
2930 (is_detected_exact_v): Likewise.
2931 * include/pstl/execution_defs.h (is_execution_policy)
2932 (is_execution_policy_v, __enable_if_execution_policy): Likewise.
2933 * include/pstl/execution_impl.h (__policy_traits): Likewise.
2934 * testsuite/17_intro/names.cc: Check for more non-reserved names.
2935 * testsuite/experimental/names.cc: New test.
2938 * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
2939 assertions from the destructor.
2940 * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
2941 Move static_assert for hash function to here.
2942 (_Hash_table_base::_M_equals): Move static_assert for equality
2944 * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
2946 (_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access
2947 the value directly instead of calling _S_value.
2948 (_Rb_tree::_S_value(_Const_Base_ptr)): Remove.
2949 (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
2950 _S_key(_Const_Link_type).
2951 * testsuite/23_containers/set/85965.cc: Check construction,
2952 destruction, assignment and size() do not trigger the assertions.
2953 * testsuite/23_containers/unordered_set/85965.cc: Likewise.
2954 * testsuite/23_containers/map/48101_neg.cc: Call find and adjust
2956 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
2957 * testsuite/23_containers/multiset/48101_neg.cc: Likewise.
2958 * testsuite/23_containers/set/48101_neg.cc: Likewise.
2959 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
2960 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
2961 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
2962 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
2964 * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
2965 Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
2968 * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
2970 * doc/html/*: Regenerate.
2971 * include/std/tuple (make_from_tuple): Use remove_reference_t instead
2972 of decay_t (P0777R1).
2974 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2976 Move from state of allocators (LWG2593)
2977 * include/bits/stl_deque.h
2978 (_Deque_base(_Deque_base&&, false_type)): Remove.
2979 (_Deque_base(_Deque_base&&, true_type)): Remove.
2980 (_Deque_base(_Deque_base&&)): Adapt.
2981 (_Deque_base::_M_move_impl()): Remove.
2982 * testsuite/util/testsuite_allocator.h
2983 (propagating_allocator(propagating_allocator&&)): Preserve move from
2985 * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
2987 * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
2989 * testsuite/23_containers/list/allocator/move_assign.cc (test02): Adapt.
2990 * testsuite/23_containers/map/allocator/move_assign.cc (test02): Adapt.
2991 * testsuite/23_containers/multimap/allocator/move_assign.cc (test02):
2993 * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
2995 * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
2996 * testsuite/23_containers/unordered_map/allocator/move_assign.cc
2998 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
3000 * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
3002 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
3004 * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
3006 * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
3008 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
3010 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
3013 2019-05-16 Jonathan Wakely <jwakely@redhat.com>
3015 * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
3016 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
3018 * include/std/variant (__overload_set): Remove.
3020 (_Build_FUN): New class template to define a single FUN overload,
3021 with specializations to prevent unwanted conversions, as per P0608R3.
3022 (_Build_FUNs): New class template to build an overload set of FUN.
3023 (_FUN_type): New alias template to perform overload resolution.
3024 (__accepted_type): Use integer_constant base for failure case. Use
3025 _FUN_type for successful case.
3026 (variant::__accepted_index): Use _Tp instead of _Tp&&.
3027 (variant::variant(_Tp&&)): Likewise.
3028 (variant::operator=(_Tp&&)): Likewise.
3030 * include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
3031 Replace raw visitation with a runtime check for the valueless state
3032 and a non-raw visitor.
3033 (_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
3034 (variant::index()): Remove branch.
3035 (variant::swap(variant&)): Use valueless_by_exception() instead of
3036 comparing the index to variant_npos, and add likelihood attribute.
3038 * include/bits/hashtable_policy.h (_Equal_helper): Remove.
3039 (_Hashtable_base::_Equal_hash_code): Define new class template.
3040 (_Hashtable_base::_M_equals): Use _Equal_hash_code instead of
3043 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
3044 Replace with _M_get non-static member function.
3045 (_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
3047 (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
3048 (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
3050 * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
3051 _S_get accessors for members in EBO helpers.
3052 (_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
3053 (_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
3055 (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
3057 (_Hashtable_base::_M_eq()): Remove non-const overload.
3059 2019-05-15 Jonathan Wakely <jwakely@redhat.com>
3061 * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
3063 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3065 * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
3068 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3070 * config/os/solaris/solaris2.10: Move to ...
3071 * config/os/solaris: ... this.
3072 * configure.host (os_include_dir): Adapt.
3073 (abi_baseline_pair): Remove Solaris 10 handling.
3074 * config/abi/post/i386-solaris2.10: Remove.
3075 * config/abi/post/sparc-solaris2.10: Remove.
3076 * config/abi/post/i386-solaris2.11: Rename to ...
3077 * config/abi/post/i386-solaris: ... this.
3078 * config/abi/post/sparc-solaris2.11: Rename to ...
3079 * config/abi/post/sparc-solaris: ... this.
3081 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
3084 * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
3087 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3089 * include/std/variant (__visit_with_index): Remove typedef.
3090 (__deduce_visit_result): New tag type.
3091 (__raw_visit, __raw_idx_visit): New helper functions for "raw"
3092 visitation of possibly-valueless variants, forwarding to __do_visit
3093 with the relevant tag type.
3094 (_Variant_storage<false, _Types...>::_M_reset_impl): Use __raw_visit
3095 and make lambda return void.
3096 (__variant_construct): Likewise.
3097 (_Copy_assign_base::operator=, _Move_assign_base::operator=): Use
3098 __raw_idx_visit and make lambda return void.
3099 (_Multi_array::__untag_result): Add metafunction to check the function
3100 pointer type for a tag type that dictates the kind of visitation.
3101 (_Multi_array<_Ret(*)(_Visitor, _Variants...), __first, __rest...>):
3102 Use decltype(auto) instead of tagged function pointer type.
3103 (__gen_vtable_impl): Remove bool non-type parameter and unused
3104 _Variant_tuple parameter.
3105 (__gen_vtable_impl::__visit_invoke_impl): Remove.
3106 (__gen_vtable_impl::__do_visit_invoke): Remove.
3107 (__gen_vtable_impl::__do_visit_invoke_r): Remove.
3108 (__gen_vtable_impl::__visit_invoke): Use if-constexpr and __invoke_r
3109 for the visit<R> case, rather than dispatching to separate functions.
3110 (_VARIANT_RELATION_FUNCTION_TEMPLATE): Use __raw_idx_visit and make
3112 (variant::swap): Likewise.
3113 (__do_visit): Replace two non-type template parameters with a single
3114 type parameter, so that the caller must specify the visitor's return
3115 type (or one of the tag types).
3116 (visit): Deduce a return type from the visitor and use the
3117 __deduce_visit_result tag to enforce that all overloads return the
3119 (visit<R>): Call __do_visit<R> with explicit result type.
3120 (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
3123 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
3125 nonesuch is insufficiently useless (lwg2996)
3126 * include/std/type_traits (struct __nonesuch): Added private base
3127 class to make __nonesuch not an aggregate and removed deleted default
3129 * include/bits/stl_pair.h (struct __nonesuch_no_braces): Removed.
3130 (operator=(const pair&)): Use __nonesuch instead of
3131 __nonesuch_no_braces.
3132 (operator=(pair&&)): Likewise
3133 * include/std/tuple (operator=(const tuple&)): Use __nonesuch instead
3134 of __nonesuch_no_braces.
3135 (operator=(tuple&&)): Likewise
3136 * include/experimental/type_traits (struct nonesuch): Added private
3137 base class to make nonesuch not an aggregate and removed deleted
3138 default constructor.
3139 * testsuite/20_util/nonesuch/nonesuch.cc: New.
3140 * testsuite/experimental/type_traits/nonesuch.cc: New.
3142 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3144 * include/bits/std_function.h (_Simple_type_wrapper): Remove.
3145 (_Function_handler): Remove partial specializations for void return
3146 types and pointers to member.
3147 (_Function_handler::_M_manager): Adapt to removal of
3148 _Simple_type_wrapper.
3149 (_Function_handler::_M_invoke): Use __invoke_r instead of __invoke.
3150 * include/std/functional (_Bind_result::__enable_if_void)
3151 (_Bind_result::__disable_if_void): Remove sfinae helpers.
3152 (_Bind_result::__call): Use __invoke_r and remove overloads for void
3154 * include/std/future (__future_base::_Task_state::_M_run)
3155 (__future_base::_Task_state::_M_run_delayed): Use __invoke_r and
3156 change return type of lambda expressions.
3158 * include/bits/invoke.h (__invoke_r): Define new function implementing
3159 the INVOKE<R> pseudo-function.
3160 * testsuite/20_util/function_objects/invoke/1.cc: Add more tests.
3161 * testsuite/20_util/function_objects/invoke/2.cc: New test.
3163 * include/std/type_traits (__is_nt_convertible_helper): Define it
3164 unconditionally, not only for C++20.
3165 (__is_nothrow_convertible): Define internal trait for use in C++11.
3166 (__is_nt_invocable_impl: Fix by using __is_nothrow_convertible.
3167 (is_invocable_r_v, is_nothrow_invocable_r_v): Add missing parameter.
3168 * testsuite/20_util/is_nothrow_convertible/value_ext.cc: New test.
3169 * testsuite/20_util/is_nothrow_convertible/value.cc: Check with type
3170 that has nothrow explicit conversion but potentially-throwing implicit
3172 * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
3173 * testsuite/20_util/is_nothrow_invocable/value_ext.cc: Fix helper
3174 function to only consider implicit conversions.
3175 * testsuite/20_util/tuple/cons/noexcept_specs.cc: Add comment.
3177 * include/std/iterator: Include <iosfwd> instead of <istream> and
3180 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
3181 Remove unused, non-standard function.
3183 * include/bits/regex.h (match_results::max_size()): Adjust return
3184 value to account for prefix/suffix/unmatched subs.
3185 (match_results::_M_resize(unsigned int)): Use _Base_type::assign to
3186 reset the contained sub matches.
3187 (match_results::_M_establish_failed_match(_Bi_iter)): Add new member
3188 function to set result state following a failed match.
3189 * include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
3190 sub_match states after _M_resize. Use _M_establish_failed_match.
3193 * include/std/thread (thread::_State_impl, thread::_S_make_state):
3194 Replace single _Callable parameter with variadic _Args pack, to
3195 forward them directly to the tuple of decayed copies.
3196 * testsuite/30_threads/thread/cons/69724.cc: New test.
3198 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
3200 Inconsistency wrt Allocators in basic_string assignment (LWG2579)
3201 * include/bits/basic_string.h: (operator=(const basic_string&):
3202 Move allocator decision to assign.
3203 (assign(const basic_string&)): Move allocator decision here.
3204 * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
3206 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3209 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3211 * testsuite/util/testsuite_allocator.h (memory_resource)
3212 (default_resource_mgr): Fix indentation.
3214 * testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
3215 Use operator-> to access raw pointer member.
3216 * testsuite/23_containers/vector/59829.cc: Likewise.
3217 * testsuite/23_containers/vector/bool/80893.cc: Likewise.
3218 * testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
3219 * testsuite/util/testsuite_allocator.h (NullablePointer): New utility
3221 (PointerBase, PointerBase_void): Derive from NullablePointer and use
3222 its constructors and equality operators. Change converting
3223 constructors to use operator-> to access private member of the other
3225 (PointerBase_void::operator->()): Add, for access to private member.
3226 (operator-(PointerBase, PointerBase)): Change to hidden friend.
3227 (operator==(PointerBase, PointerBase)): Remove.
3228 (operator!=(PointerBase, PointerBase)): Remove.
3230 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
3231 not assume field called _M_head_impl is the first tuple element.
3232 * testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
3233 implementation more accurate.
3234 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
3235 empty pointer type and non-empty deleter.
3237 LWG 2899 - Make is_move_constructible correct for unique_ptr
3238 * include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
3239 move assignment operator.
3240 (__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
3241 (__uniq_ptr_data): New class template with conditionally deleted
3243 (unique_ptr, unique_ptr<T[], D>): Change type of data member from
3244 __uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
3245 constructor and move assignment operator as defaulted.
3246 (unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
3247 __uniq_ptr_impl::release().
3248 (unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
3249 to __uniq_ptr_impl::reset(pointer).
3250 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
3251 Check for new __uniq_ptr_data type.
3252 * testsuite/20_util/unique_ptr/dr2899.cc: New test.
3254 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3256 PR libstdc++/90454.cc path construction from void*
3257 * include/bits/fs_path.h (path::_Path): Use remove_pointer so that
3258 pointers to void are rejected as well as void.
3259 * include/experimental/bits/fs_path.h (path::_Path): Likewise.
3260 * testsuite/27_io/filesystem/path/construct/80762.cc: Also check
3262 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
3264 * doc/xml/manual/policy_data_structures.xml: Comment out stray
3265 <remark> elements. Fix formatting of bibliography references.
3267 2019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
3269 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
3271 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3273 Remove Profile Mode, deprecated since 7.1.0
3274 * doc/Makefile.am: Remove XML file for profile mode docs.
3275 * doc/Makefile.in: Regenerate.
3276 * doc/xml/authors.xml: Remove authors of profile mode docs.
3277 * doc/xml/manual/appendix_contributing.xml: Remove mention of profile
3279 * doc/xml/manual/debug.xml: Likewise.
3280 * doc/xml/manual/evolution.xml: Document removal of profile mode.
3281 * doc/xml/manual/profile_mode.xml: Remove profile mode docs.
3282 * doc/xml/manual/spine.xml: Remove profile mode author credit.
3283 * doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
3285 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
3287 * doc/html/*: Regenerate.
3288 * include/Makefile.am: Remove profile mode headers.
3289 * include/Makefile.in: Regenerate.
3290 * include/bits/c++config (std::__profile): Remove namespace.
3291 [_GLIBCXX_PROFILE]: Remove checks for macro.
3292 * include/profile/array: Remove.
3293 * include/profile/base.h: Remove.
3294 * include/profile/bitset: Remove.
3295 * include/profile/deque: Remove.
3296 * include/profile/forward_list: Remove.
3297 * include/profile/impl/profiler.h: Remove.
3298 * include/profile/impl/profiler_algos.h: Remove.
3299 * include/profile/impl/profiler_container_size.h: Remove.
3300 * include/profile/impl/profiler_hash_func.h: Remove.
3301 * include/profile/impl/profiler_hashtable_size.h: Remove.
3302 * include/profile/impl/profiler_list_to_slist.h: Remove.
3303 * include/profile/impl/profiler_list_to_vector.h: Remove.
3304 * include/profile/impl/profiler_map_to_unordered_map.h: Remove.
3305 * include/profile/impl/profiler_node.h: Remove.
3306 * include/profile/impl/profiler_state.h: Remove.
3307 * include/profile/impl/profiler_trace.h: Remove.
3308 * include/profile/impl/profiler_vector_size.h: Remove.
3309 * include/profile/impl/profiler_vector_to_list.h: Remove.
3310 * include/profile/iterator_tracker.h: Remove.
3311 * include/profile/list: Remove.
3312 * include/profile/map: Remove.
3313 * include/profile/map.h: Remove.
3314 * include/profile/multimap.h: Remove.
3315 * include/profile/multiset.h: Remove.
3316 * include/profile/ordered_base.h: Remove.
3317 * include/profile/set: Remove.
3318 * include/profile/set.h: Remove.
3319 * include/profile/unordered_base.h: Remove.
3320 * include/profile/unordered_map: Remove.
3321 * include/profile/unordered_set: Remove.
3322 * include/profile/vector: Remove.
3323 * scripts/run_doxygen: Do not process profile mode headers.
3324 * testsuite/23_containers/array/element_access/60497.cc: Don't use
3326 * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
3327 Remove dg-skip-if for profile mode.
3328 * testsuite/23_containers/forward_list/capacity/1.cc: Remove
3329 preprocessor check for profile mode.
3330 * testsuite/23_containers/list/capacity/29134.cc: Likewise.
3331 * testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
3333 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
3335 * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
3336 * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
3337 * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
3338 * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
3339 * testsuite/23_containers/unordered_map/modifiers/extract.cc:
3341 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
3343 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
3345 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
3347 * testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
3348 preprocessor check for profile mode.
3349 * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
3351 * testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
3352 Remove dg-skip-if for profile mode.
3353 * testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
3354 * testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
3355 * testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
3356 * testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
3357 * testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
3358 * testsuite/Makefile.am: Remove profile_flags variable and
3359 * testsuite/Makefile.am: Remove profile_flags variable and
3360 check-profile target.
3361 * testsuite/Makefile.in: Regenerate.
3362 * testsuite/ext/profile/all.cc: Remove.
3363 * testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
3364 * testsuite/ext/profile/profiler_algos.cc: Remove.
3365 * testsuite/ext/profile/replace_new.cc: Remove.
3366 * testsuite/ext/throw_allocator/deallocate_global.cc: Remove
3367 preprocessor check for profile mode.
3368 * testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
3369 * testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
3370 (check_v3_target_normal_mode): Do not check for profile mode macro.
3371 * testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
3373 * testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
3374 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3375 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3376 * testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
3377 * testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
3378 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3379 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3380 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3381 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3382 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
3384 Remove array_allocator extension, deprecated since 4.9.0
3385 * doc/xml/manual/allocator.xml: Remove documentation for
3387 * doc/xml/manual/evolution.xml: Document array_allocator removal.
3388 * doc/xml/manual/using.xml: Remove header from documentation.
3389 * include/Makefile.am: Remove <ext/array_allocator.h> header.
3390 * include/Makefile.in: Regenerate.
3391 * include/ext/array_allocator.h: Remove.
3392 * include/precompiled/extc++.h: Do not include removed header.
3393 * testsuite/ext/array_allocator/1.cc: Remove.
3394 * testsuite/ext/array_allocator/2.cc: Remove.
3395 * testsuite/ext/array_allocator/26875.cc: Remove.
3396 * testsuite/ext/array_allocator/3.cc: Remove.
3397 * testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
3398 * testsuite/ext/array_allocator/check_delete.cc: Remove.
3399 * testsuite/ext/array_allocator/check_new.cc: Remove.
3400 * testsuite/ext/array_allocator/variadic_construct.cc: Remove.
3401 * testsuite/ext/headers.cc: Do not include removed header.
3403 2019-05-11 François Dumont <fdumont@gcc.gnu.org>
3405 * include/bits/stl_bvector.h
3406 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3408 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3410 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3412 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3414 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3416 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3418 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3420 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
3422 (_Bit_iterator::operator-(difference_type)): Likewise.
3423 (operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
3424 (_Bit_const_iterator::operator+(difference_type)): Likewise and allow
3426 (_Bit_const_iterator::operator-(difference_type)): Likewise.
3427 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
3429 2019-05-10 Jonathan Wakely <jwakely@redhat.com>
3432 * testsuite/util/thread/all.h: Do not use remove_pointer for
3433 std::thread::native_handle_type.
3436 * include/std/variant (_Variant_storage<false, Types...>::_M_storage())
3437 (_Variant_storage<true, Types...>::_M_reset()))
3438 (_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
3439 (__get_storage): Likewise.
3440 (variant): Add noexcept to friend declarations for __get and
3444 * include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
3445 Use _Require for constraints.
3446 (operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
3448 (__uniq_ptr_hash): New base class with conditionally-disabled call
3450 (hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
3451 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
3452 * testsuite/20_util/unique_ptr/hash/90388.cc: New test.
3454 * include/bits/shared_ptr.h: Improve docs.
3455 * include/bits/shared_ptr_base.h: Likewise.
3456 * include/bits/stl_uninitialized.h: Likewise.
3457 * include/bits/unique_ptr.h: Likewise.
3458 * libsupc++/new: Likewise.
3460 2019-05-09 François Dumont <fdumont@gcc.gnu.org>
3462 * include/bits/stl_deque.h
3463 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3465 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3467 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3469 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3471 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3473 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3475 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
3477 (_Deque_iterator<>::operator-(difference_type)): Likewise.
3479 2019-05-08 François Dumont <fdumont@gcc.gnu.org>
3482 * testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
3483 (test01): Reserve for number of insertions to avoid rehash during test.
3484 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
3486 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
3491 2019-05-08 Jonathan Wakely <jwakely@redhat.com>
3493 * include/experimental/bits/fs_path.h: Improve docs.
3494 * include/experimental/bits/net.h: Fix wrong header name in comment.
3495 Do not document implementation details.
3496 * include/experimental/netfwd: Fix doxygen grouping.
3498 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3500 * include/bits/stl_pair.h: Improve docs.
3501 * include/std/tuple: Likewise.
3503 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
3505 * include/std/chrono: Improve docs.
3506 * include/std/ratio: Do not document implementation details.
3507 * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
3509 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
3512 * doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
3513 * include/std/chrono (__duration_common_type_wrapper): Replace with ...
3514 (__duration_common_type): New helper.
3515 (common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
3516 __duration_common_type.
3517 (__timepoint_common_type_wrapper): Replace with ...
3518 (__timepoint_common_type): New helper.
3519 (common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
3520 Use __time_point_common_type.
3521 * include/std/type_traits (common_type<>): Define, as per LWG 2408.
3522 (__common_type_impl): If either argument is transformed by decay,
3523 use the common_type of the decayed types.
3524 (__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
3525 decayed, use __do_common_type_impl to get the common_type.
3526 (common_type<_Tp>): Use common_type<_Tp, _Tp>.
3527 (__do_member_type_wrapper, __member_type_wrapper)
3528 (__expanded_common_type_wrapper): Remove.
3529 (__common_type_pack, __common_type_fold): New helpers.
3530 (common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
3531 __member_type_wrapper and __expanded_common_type_wrapper.
3532 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
3533 Test zero-length template argument list.
3534 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
3535 Test single argument cases and argument types that should decay.
3536 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
3537 Adjust expected error.
3538 * testsuite/20_util/duration/literals/range_neg.cc: Use zero for
3540 * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
3541 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
3542 * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
3544 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
3546 2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
3548 Make allocator propagation more consistent for
3549 operator+(basic_string) (P1165R1)
3550 * include/bits/basic_string.h
3551 (operator+(basic_string&&, basic_string&&): Changed resulting
3552 allocator to always be the one from the first parameter.
3553 * include/bits/basic_string.tcc
3554 (operator+(const _CharT*, const basic_string&)): Changed
3555 resulting allocator to be SOCCC on the second parameter's allocator.
3556 (operator+(_CharT, const basic_string&)): Likewise.
3557 * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
3559 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
3562 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3564 * include/bits/regex.h: Improve docs.
3565 * include/bits/regex.tcc: Do not document implementation details.
3567 * testsuite/19_diagnostics/error_code/hash.cc: New test.
3569 2019-05-06 François Dumont <fdumont@gcc.gnu.org>
3571 * python/libstdcxx/v6/printers.py (add_one_template_type_printer):
3572 Add type printer for container types in std::__debug namespace.
3573 * testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
3574 (gdb-tests): Use distinct parameters for the type of test and use of
3576 (gdb-test): Check for regex test even if 'whatis' test.
3577 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
3579 * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
3580 * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
3581 * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3582 * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
3583 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3584 * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
3585 * testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
3587 2019-05-04 Jonathan Wakely <jwakely@redhat.com>
3589 * include/std/system_error (error_category): Fix comment.
3592 * src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
3593 argument is an empty path.
3594 (absolute(const path&, error_code&)): Use invalid_argument as error
3595 code instead of no_such_file_or_directory.
3596 * testsuite/27_io/filesystem/operations/absolute.cc: Check handling
3597 of non-existent paths and empty paths with both overloads of absolute.
3599 * include/std/system_error (error_category, error_code)
3600 (error_condition): Improve docs.
3601 * libsupc++/exception: Add missing @addtogroup Doxygen command.
3602 * libsupc++/exception_ptr.h (exception_ptr): Link equality operators
3603 to class documentation. Suppress documentation for implementation
3605 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
3606 Suppress documentation for implementation details.
3608 * include/std/system_error (error_code): Remove friend declaration
3609 for hash<error_code>.
3610 (hash<error_code>::operator()): Use public member functions to access
3612 (hash<error_condition>::operator()): Use address of category, not
3613 its object representation.
3614 * src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
3615 Use public member functions to access value and category.
3616 * testsuite/19_diagnostics/error_condition/hash.cc: New test.
3618 2019-05-04 François Dumont <fdumont@gcc.gnu.org>
3620 * include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
3621 * include/bits/hashtable_policy.h
3622 (_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
3623 (_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
3624 (_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
3625 smaller than input value rather than always greater. Preserve
3626 _M_next_resize if called with 0 input. Use __builtin_floorl.
3627 (_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
3628 elements + number of insertions is greater than _M_next_resize. Start
3629 with 11 buckets if not told otherwise. Use __builtin_floorl.
3630 (_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
3631 * src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
3632 Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
3633 (_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
3634 told otherwise. Use __builtin_floorl.
3635 * testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
3636 to also validate _Power2_rehash_policy.
3637 * testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
3640 2019-05-03 Jonathan Wakely <jwakely@redhat.com>
3643 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
3647 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
3648 overflow warning with -Wpedantic -Wsystem-headers.
3650 2019-05-02 Jonathan Wakely <jwakely@redhat.com>
3653 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
3654 * include/bits/move.h (swap): Remove extra parentheses.
3656 * include/experimental/bits/lfts_config.h: Improve doc markup.
3657 * include/experimental/optional: Improve docs.
3658 (_Has_addressof_mem, _Has_addressof_free, _Has_addressof)
3659 (__constexpr_addressof): Remove.
3660 (optional::operator->()): Use std::__addressof().
3661 * include/std/optional (optional::operator->()): Adjust whitespace.
3662 * testsuite/experimental/optional/constexpr/observers/2.cc: Check
3663 that operator-> is still constexpr with overloaded operator&. Change
3664 to compile-only test.
3665 * testsuite/experimental/optional/constexpr/observers/3.cc: Change to
3668 * include/bits/shared_ptr.h: Improve docs.
3669 * include/bits/shared_ptr_atomic.h: Likewise.
3670 * include/bits/unique_ptr.h: Likewise. Adjust whitespace.
3672 * include/bits/basic_string.h: Fix iterator/index confusion in
3674 * include/bits/range_access.h: Fix Doxygen warnings.
3675 * include/bits/refwrap.h: Do not document implementation details.
3676 (ref, cref): Group docs with reference_wrapper.
3677 * include/std/fstream: Fix Doxygen markup.
3678 * libsupc++/initializer_list (begin, end): Group docs with
3681 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
3683 * include/bits/unique_lock.h: Fix/improve doxygen markup.
3684 * include/std/mutex: Likewise.
3685 * include/std/shared_mutex: Likewise.
3687 * include/bits/fs_dir.h: Fix/improve doxygen markup.
3688 * include/bits/fs_fwd.h: Likewise.
3689 * include/bits/fs_ops.h: Likewise.
3690 * include/bits/fs_path.h: Likewise.
3691 * include/std/filesystem: Likewise.
3693 * include/experimental/bits/net.h: Fix/improve doxygen markup.
3694 * include/experimental/buffer: Likewise.
3695 * include/experimental/executor: Likewise.
3696 * include/experimental/internet: Likewise.
3697 * include/experimental/io_context: Likewise.
3698 * include/experimental/net: Likewise.
3699 * include/experimental/netfwd: Likewise.
3700 * include/experimental/socket: Likewise.
3701 * include/experimental/timer: Likewise.
3703 * doc/doxygen/doxygroups.cc: Move description of experimental group
3705 * include/experimental/algorithm: Add to libfund-ts doc group.
3706 * include/experimental/any: Likewise. Do not document implementation
3708 * include/experimental/array: Add to libfund-ts doc group.
3709 * include/experimental/bits/lfts_config.h: Define libfund-ts doc group
3710 for Library Fundamentals.
3711 * include/experimental/chrono: Add to libfund-ts doc group.
3712 * include/experimental/deque: Likewise.
3713 * include/experimental/forward_list: Likewise.
3714 * include/experimental/functional: Likewise.
3715 * include/experimental/iterator: Likewise.
3716 * include/experimental/list: Likewise.
3717 * include/experimental/map: Likewise.
3718 * include/experimental/memory: Likewise.
3719 * include/experimental/memory_resource: Likewise. Improve docs.
3721 * include/experimental/numeric: Add to libfund-ts doc group.
3722 * include/experimental/optional: Likewise.
3723 * include/experimental/propagate_const: Likewise.
3724 * include/experimental/random: Likewise.
3725 * include/experimental/ratio: Likewise.
3726 * include/experimental/regex: Likewise.
3727 * include/experimental/set: Likewise.
3728 * include/experimental/source_location: Likewise.
3729 * include/experimental/string: Likewise.
3730 * include/experimental/string_view: Likewise.
3731 * include/experimental/system_error: Likewise.
3732 * include/experimental/tuple: Likewise.
3733 * include/experimental/type_traits: Likewise.
3734 * include/experimental/unordered_map: Likewise.
3735 * include/experimental/unordered_set: Likewise.
3736 * include/experimental/utility: Likewise.
3737 * include/experimental/vector: Likewise.
3738 * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
3739 * testsuite/experimental/array/neg.cc: Adjust dg-error.
3740 * testsuite/experimental/propagate_const/assignment/move_neg.cc:
3742 * testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
3743 * testsuite/experimental/propagate_const/requirements2.cc: Likewise.
3744 * testsuite/experimental/propagate_const/requirements3.cc: Likewise.
3745 * testsuite/experimental/propagate_const/requirements4.cc: Likewise.
3746 * testsuite/experimental/propagate_const/requirements5.cc: Likewise.
3748 * include/experimental/bits/fs_dir.h: Fix Doxygen markup.
3749 * include/experimental/bits/fs_fwd.h: Improve docs.
3750 * include/experimental/bits/fs_ops.h: fix Doxygen markup.
3751 * include/experimental/bits/fs_path.h: Likewise.
3752 (path, filesystem_error, u8path): Improve docs.
3753 * include/experimental/filesystem: Link to docs for TS.
3755 * config/allocator/new_allocator_base.h (__allocator_base): Add
3756 workaround for Doxygen bug #6945.
3757 * include/std/memory: Improve docs. Define group for pointer safety.
3758 * include/std/scoped_allocator: Improve docs. Use "undocumented"
3759 conditional to suppress documentation for implementation details.
3761 * include/bits/specfun.h: Improve docs.
3762 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
3765 * doc/doxygen/doxygroups.cc (std::tr2, std::__gnu_cxx): Improve docs.
3766 (std::experimental): Add docs.
3767 * doc/doxygen/user.cfg.in (PREDEFINED): Expand macros for __cxx11
3768 namespace to nothing when generating docs.
3769 * include/bits/regex_constants.h (std::regex_constants): Improve docs.
3770 * include/std/chrono (std::chrono): Likewise.
3771 * include/std/functional (std::placeholders): Likewise.
3772 * include/std/thread (std::this_thread): Likewise.
3774 * include/parallel/settings.h: Fix Doxygen markup.
3776 * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
3777 anything unless PB_DS_CLASS_C_DEC is defined.
3778 * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
3779 * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
3780 * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
3781 * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
3782 * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
3783 * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
3784 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
3786 * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
3787 * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
3788 * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
3789 * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
3790 * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
3791 * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
3792 * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
3793 * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
3794 * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
3795 * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
3796 * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
3798 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
3799 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
3801 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
3804 * doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
3805 GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
3806 _GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
3809 2019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3811 * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
3812 * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
3813 * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
3814 * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
3815 * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
3816 * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
3818 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
3819 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3822 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
3825 * include/std/complex (__complex_proj): Return parameter unchanged.
3826 [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for
3827 floating-point types to take std::complex arguments.
3828 [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for
3829 floating-point types.
3830 * testsuite/26_numerics/complex/proj.cc: New test.
3832 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3834 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Change _Lock_policyE2 exports
3835 to _Lock_policyE[012].
3836 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3838 2019-04-30 Jonathan Wakely <jwakely@redhat.com>
3840 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove
3841 macros accidentally left in.
3842 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Remove
3843 unnecessary -lstdc++fs option. Fix test for mingw.
3844 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
3847 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3849 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3851 2019-04-29 Jonathan Wakely <jwakely@redhat.com>
3853 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
3855 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
3856 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
3859 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
3861 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
3864 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
3865 class template and partial specialization.
3868 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
3870 * include/bits/stl_algobase.h (__size_to_integer): New overloaded
3871 functions to convert a value to an integral type.
3872 (__fill_n_a, __fill_n_a): Assert that __n is already an integral type.
3873 (fill_n): Convert _Size parameter to an integral type.
3874 * testsuite/25_algorithms/fill_n/87982.cc: New test.
3875 * testsuite/25_algorithms/fill_n/87982_neg.cc: New test.
3876 * testsuite/25_algorithms/fill_n/dr426.cc: New test.
3877 * testsuite/25_algorithms/generate_n/87982.cc: New test.
3878 * testsuite/25_algorithms/generate_n/87982_neg.cc: New test.
3879 * testsuite/25_algorithms/generate_n/dr426.cc: New test.
3881 2019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
3883 Adding noexcept-specification on tuple constructors (LWG 2899)
3884 * libstdc++-v3/include/std/tuple:
3885 (tuple()): Add noexcept-specification.
3886 (tuple(const _Elements&...)): Likewise
3887 (tuple(_UElements&&...)): Likewise
3888 (tuple(const tuple<_UElements...>&)): Likewise
3889 (tuple(tuple<_UElements...>&&)): Likewise
3890 (tuple(const _T1&, const _T2&)): Likewise
3891 (tuple(_U1&&, _U2&&)): Likewise
3892 (tuple(const tuple<_U1, _U2>&): Likewise
3893 (tuple(tuple<_U1, _U2>&&): Likewise
3894 (tuple(const pair<_U1, _U2>&): Likewise
3895 (tuple(pair<_U1, _U2>&&): Likewise
3896 * libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc: New
3898 2019-04-27 Marc Glisse <marc.glisse@inria.fr>
3901 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
3902 arguments with __restrict.
3904 2019-04-26 H.J. Lu <hongjiu.lu@intel.com>
3906 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3908 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
3910 * include/experimental/bits/fs_path.h
3911 (path::_S_convert_loc<_InputIterator>): Create const std::string to
3912 avoid redundant call to _S_convert_loc with non-const pointers.
3914 * testsuite/20_util/variant/run.cc: Use a new Hashable type to test
3915 hashing, because pmr::string depends on _GLIBCXX_USE_CXX11_ABI==1.
3916 * testsuite/21_strings/basic_string/hash/hash.cc
3917 [!_GLIBCXX_USE_CXX11_ABI]: Don't test pmr strings.
3918 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc
3919 [!_GLIBCXX_USE_CXX11_ABI]: Likewise.
3921 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace wildcard that matches
3922 wstring::_M_replace_dispatch with more specific patterns.
3923 * include/bits/fs_path.h (path::_S_convert_loc<_InputIterator>):
3924 Create const std::string to avoid redundant call to _S_convert_loc
3925 with non-const pointers.
3926 * include/bits/locale_conv.h (__do_str_codecvt): Use if-constexpr to
3927 avoid unnecessary basic_string::assign instantiations.
3929 * include/std/memory (__uses_alloc_args): Add string-literal to
3930 static_assert, to match the one in __uses_alloc.
3931 [__cpp_concepts] (_Std_pair): Use C++2a syntax for concept.
3932 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: Check
3933 for recursive uses-allocator construction of nested pairs.
3934 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc:: Add
3937 2019-04-26 Jakub Jelinek <jakub@redhat.com>
3939 * config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
3940 * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
3941 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
3942 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
3944 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3945 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3946 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
3947 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3948 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3949 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3950 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3952 2019-04-25 Jonathan Wakely <jwakely@redhat.com>
3955 * doc/xml/manual/status_cxx2020.xml: Amend P0591R4 status.
3956 * include/std/scoped_allocator [__cplusplus > 201703L]
3957 (scoped_allocator_adaptor::construct): Define in terms of
3958 uses_allocator_construction_args, as per P0591R4.
3959 * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc: New test.
3960 * testsuite/util/testsuite_allocator.h: Remove name of unused
3963 2019-04-24 Jonathan Wakely <jwakely@redhat.com>
3965 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
3966 * doc/html/*: Regenerate.
3968 * include/bits/fs_path.h (operator<, operator<=, operator>)
3969 (operator>=, operator==, operator!=): Make hidden friends, as per
3971 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Fix
3972 string type in test.
3973 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
3975 * include/std/any (any::any(ValueType&&)): Use __and_v.
3976 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
3979 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
3981 * include/std/type_traits (__result_of_memfun): Use remove_reference
3982 instead of __remove_cvref_t and remove redundant is_same check.
3983 (__inv_unwrap): Use __remove_cvref_t instead of decay_t.
3985 * include/experimental/string_view (basic_string_view::pointer)
3986 (basic_string_view::reference): Fix to refer to non-const value_type.
3987 * include/bits/basic_string.h (basic_string): Use __sv_check and
3988 __sv_limit instead of basic_string_view::_M_check and
3989 basic_string_view::_M_limit.
3990 * include/std/string_view (__sv_check, __sv_limit): New
3991 helper functions to replace basic_string_view::_M_check and
3992 basic_string_view::_M_limit.
3993 (basic_string_view): Add static assertions to enforce ill-formed
3994 requirement for traits_type::char_type from P1148R0, and to enforce
3995 required properties of char-like types.
3996 (basic_string_view::pointer, basic_string_view::reference): Fix to
3997 refer to non-const value_type.
3998 (basic_string_view::operator[], basic_string_view::at)
3999 (basic_string_view::front, basic_string_view::back)
4000 (basic_string_view::data): Use const_reference and const_pointer
4001 typedefs for return types.
4002 (basic_string_view::_M_check, basic_string_view::_M_limit): Remove.
4003 (hash<wstring_view>): Fix argument_type typedef.
4004 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
4005 char/1.cc: Fix expected return type of basic_string_view::data().
4006 * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
4007 wchar_t/1.cc: Likewise.
4008 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
4009 char/1.cc: Likewise.
4010 * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
4011 wchar_t/1.cc: Likewise.
4012 * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
4014 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
4015 Check reference and pointer typedefs.
4016 * testsuite/experimental/string_view/requirements/typedefs.cc:
4018 * testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc:
4019 Fix expected return type of basic_string_view::data().
4020 * testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/
4022 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
4024 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
4028 * include/std/any (__any_caster): Use remove_cv_t instead of decay_t.
4029 Avoid a runtime check for types that can never be stored in std::any.
4030 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
4033 PR libstdc++/90220 (partial)
4034 * include/std/any (any_cast<T>(any*), any_cast<T>(const any*)): Do
4035 not attempt ill-formed static_cast to pointers to non-object types.
4036 * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with
4039 * testsuite/20_util/variant/run.cc: Catch exception by reference to
4040 prevent -Wcatch-value warning.
4042 * include/std/variant (__variant_construct): Use template parameter
4043 type instead of equivalent decltype-specifier.
4044 (_Move_ctor_base<false, Types...>::_Move_ctor_base(_Move_ctor_base&&)):
4045 Replace forward with move.
4046 (_Move_ctor_base<false, Types...>::_M_destructive_move)
4047 (_Move_ctor_base<false, Types...>::_M_destructive_copy)
4048 (_Move_ctor_base<true, Types...>::_M_destructive_move)
4049 (_Move_ctor_base<true, Types...>::_M_destructive_copy): Only set the
4050 index after construction succeeds.
4051 (_Copy_assign_base<false, Types...>::operator=): Remove redundant
4052 if-constexpr checks that are always true. Use __remove_cvref_t instead
4053 of remove_reference so that is_nothrow_move_constructible check
4054 doesn't use a const rvalue parameter. In the potentially-throwing case
4055 construct a temporary and move assign it, as per LWG 2904.
4056 (_Move_assign_base<false, Types...>::operator=): Remove redundant
4057 if-constexpr checks that are always true. Use emplace as per LWG 2904.
4058 (variant::operator=(T&&)): Only use emplace conditionally, otherwise
4059 construct a temporary and move assign from it, as per LWG 2904.
4060 * testsuite/20_util/variant/exception_safety.cc: Check that
4061 assignment operators have strong exception safety guarantee.
4063 2019-04-23 Thomas Rodgers <trodgers@redhat.com>
4065 Document PSTL linker flags
4067 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
4069 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
4071 * include/std/variant (__detail::__variant::_Traits): Make
4072 _S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
4073 _S_trivial_move_assign depend on _S_trivial_move_ctor, as per
4075 (__detail::__variant::_Copy_assign_alias): Only depend on
4076 _S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
4077 * testsuite/20_util/variant/compile.cc: Correct checks for trivial
4078 move assignment operators.
4081 * include/std/variant (variant::__not_self): New helper for the
4082 is_same_v<remove_cvref_t<T>, variant>==false constraints.
4083 (variant::__to_type_impl): Remove.
4084 (variant::__to_type): Add default argument to check pack size, instead
4085 of using __to_type_impl.
4086 (variant::__accepted_type): Add default argument using __not_self.
4087 (variant::__is_in_place_tag, variant::__not_in_place_tag): New helpers
4088 for variant(T&&) constructor constraint.
4089 (variant::variant(T&&)): Use __not_in_place_tag in constraints.
4090 Extract __accepted_type into a named template parameter for reuse in
4091 other constraints and in the exception specification.
4092 (variant::variant(in_place_type_t<T>, Args&&...))
4093 (variant::variant(in_place_type_t<T>, initializer_list<U>, Args&&...))
4094 (variant::variant(in_place_index_t<T>, Args&&...))
4095 (variant::variant(in_place_index_t<T>, initializer_list<U>, Args&&...))
4096 (variant::operator=T&&)): Remove redundant && from trait arguments.
4097 * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor
4098 isn't used for in_place_type or in_place_index arguments.
4100 * include/std/type_traits (unwrap_reference_t): Define for C++2a.
4101 (unwrap_ref_decay): Remove inheritance from unwrap_reference.
4102 * testsuite/20_util/unwrap_reference/1.cc: Adjust test to use alias.
4104 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4105 Bernd Edlinger <bernd.edlinger@hotmail.de>
4106 Jakub Jelinek <jakub@redhat.com>
4109 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
4110 general-regs-only target attribute for ARM.
4112 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
4115 * include/bits/basic_string.h (_Never_valueless_alt): Make partial
4116 specialization also depend on is_nothrow_move_constructible.
4117 * include/std/variant (__detail::__variant::__never_valueless()):
4118 Only true if the variant would have a move assignment operator.
4119 (__detail::__variant::_Variant_storage<false, T...>::_M_valid()):
4120 Check __never_valueless<T...>().
4121 (variant::emplace): Only perform non-throwing move assignments
4122 for never-valueless alternatives if the variant has a move assignment
4124 * testsuite/20_util/variant/compile.cc: Check that never-valueless
4125 types can be emplaced into non-assignable variants.
4126 * testsuite/20_util/variant/run.cc: Check that never-valueless types
4127 don't get copied when emplaced into non-assignable variants.
4129 * include/std/variant (__detail::__variant::__ref_cast): Remove
4131 (__detail::__variant::_Uninitialized::_M_get)
4132 (__detail::__variant::__get)
4133 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
4135 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
4137 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
4139 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
4140 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
4141 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
4142 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
4144 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
4146 Delegate PSTL configuration to pstl/pstl_config.h
4148 * include/bits/c++config: Remove explicit PSTL configuration
4149 macros and use definitions from <pstl/pstl_config.h>.
4151 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
4153 Cleanup algorithm implementations
4154 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
4156 (mismatch): Forward execution policy.
4157 (equal): Qualify call to std::equal().
4158 (partial_sort): Forward execution policy.
4159 (inplace_merge): Forward execution policy.
4161 2019-04-19 Thomas Rodgers <trodgers@redhat.com>
4163 Improve implementation of parallel equal()
4164 * include/pstl/algorithm_impl.h
4165 (__internal::__brick_equal): use "4 iterator" version of
4167 (__internal::__brick_equal): use simd for random access
4168 iterators on unsequenced execution policies.
4169 (__internal::__pattern_equal): add "4 iterator" version
4170 (__internal::__pattern_equal): dispatch to simd __brick_equal
4171 for vector-only execution policies.
4172 (__internal::__pattern_equal): dispatch to __parallel_or for
4173 parallel execution policies.
4174 * include/pstl/glue_algorithm_impl.h
4175 (std::equal): dispatch to "4 iterator" version of
4176 __internal::__pattern_equal().
4178 2019-04-17 Jonathan Wakely <jwakely@redhat.com>
4181 * include/bits/forward_list.h (operator==): Do not use operator!= to
4183 (forward_list<T, A>::sort(Comp)): When elements are equal take the one
4184 earlier in the list, so that sort is stable.
4185 * testsuite/23_containers/forward_list/operations/90105.cc: New test.
4186 * testsuite/23_containers/forward_list/comparable.cc: Test with
4187 types that meet the minimum EqualityComparable and LessThanComparable
4188 requirements. Remove irrelevant comment.
4190 * include/std/variant (__detail::__variant::_Traits::_S_copy_assign):
4191 Do not depend on whether all alternative types are move constructible.
4192 (__detail::__variant::_Copy_assign_base::operator=): Remove cv-quals
4193 from the operand when deciding whether to perform the assignment.
4194 * testsuite/20_util/variant/compile.cc (DeletedMoves): Define type
4195 with deleted move constructor and deleted move assignment operator.
4196 (default_ctor, copy_ctor, move_ctor, copy_assign, move_assign): Check
4197 behaviour of variants with DeletedMoves as an alternative.
4198 * testsuite/20_util/variant/run.cc (DeletedMoves): Define same type.
4199 (move_ctor, move_assign): Check that moving a variant with a
4200 DeletedMoves alternative falls back to copying instead of moving.
4202 * testsuite/20_util/variant/compile.cc: Remove empty string literals
4203 from static_assert declarations.
4205 * testsuite/20_util/variant/compile.cc (MoveCtorOnly): Fix type to
4206 actually match its name.
4207 (MoveCtorAndSwapOnly): Define new type that adds swap to MoveCtorOnly.
4208 (test_swap()): Fix result for MoveCtorOnly and check
4209 MoveCtorAndSwapOnly.
4211 * include/std/optional (optional::value_or(U&&) &&): Add missing
4212 constexpr specifier.
4213 * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or
4214 for disengaged optionals and rvalue optionals.
4215 * testsuite/20_util/optional/observers/4.cc: Likewise.
4217 2019-04-12 Thomas Rodgers <trodgers@redhat.com>
4219 * include/pstl/algorithm_impl.h: Uglify identfiers.
4220 * include/pstl/numeric_impl.h: Uglify identfiers.
4221 * include/pstl/parallel_backend_tbb.h: Uglify identfiers.
4223 2019-04-11 Thomas Rodgers <trodgers@redhat.com>
4225 * include/bits/c++config:
4226 Add definition for __PSTL_ASSERT.
4227 Add definition for __PSTL_ASSERT_MSG.
4228 * include/pstl/algorithm_impl.h: Replace use of assert().
4229 * include/pstl/numeric_impl.h: Replace use of assert().
4230 * include/pstl/parallel_backend_tbb.h:
4231 Replace use of assert().
4232 Replace use of __TBB_ASSERT().
4233 * include/pstl/parallel_backend_utils.h: Replace use of assert().
4235 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
4238 * src/c++17/memory_resource.cc
4239 (monotonic_buffer_resource::_Chunk::allocate): Increase alignment if
4240 needed to allow placing a _Chunk at the end of the buffer.
4241 (monotonic_buffer_resource::_M_new_buffer): Remove static_assert.
4243 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
4245 * doc/xml/faq.xml: Add information about emergency EH pool.
4246 * doc/xml/manual/debug.xml: Update list of memory debugging tools.
4247 Move outdated information on mt_allocator to a separate section.
4248 * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW
4249 doesn't affect the default allocator.
4251 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
4255 * testsuite/20_util/variant/89851.cc: New test.
4257 2019-04-09 Jonathan Wakely <jwakely@redhat.com>
4259 * include/std/variant: Adjust whitespace. Add comments.
4260 (_Multi_array): Leave primary template undefined.
4261 (_Multi_array<_Tp>): Define partial specialization for base case of
4263 (__gen_vtable_impl, __gen_vtable): Remove redundant && from type
4264 which is always a reference.
4265 (__gen_vtable::_S_apply()): Remove function, inline body into
4266 default member initializer.
4267 * testsuite/20_util/variant/visit.cc: Test with noncopyable types.
4269 * include/std/variant (__variant_idx_cookie): Add member type.
4270 (__visitor_result_type): Remove.
4271 (__do_visit): Use invoke_result instead of __visitor_result_type.
4272 * testsuite/20_util/variant/visit.cc: New test.
4275 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
4277 * testsuite/20_util/variant/90008.cc: New test.
4279 2019-04-09 Thomas Rodgers <trodgers@redhat.com>
4281 * include/pstl/algorithm_impl.h: Add namespace qualification.
4282 * include/pstl/execution_defs.h: Add namespace qualification.
4283 * include/pstl/execution_impl.h: Add namespace qualification.
4284 * include/pstl/numeric_impl.h: Add namespace qualification.
4285 * include/pstl/parallel_backend_tbb.h: Add namespace qualification.
4286 * include/pstl/unseq_backend_simd.h: Add namespace qualification.
4287 * include/pstl/parallel_backend_utils.h: Include <cassert>.
4289 2019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
4291 Fix visit<R> for variant.
4292 * include/std/variant (__do_visit): Add a template parameter
4293 for enforcing same return types for visit.
4294 (__gen_vtable_impl): Likewise.
4295 (_S_apply_single_alt): Adjust.
4296 (__visit_invoke_impl): New. Handle casting to void.
4297 (__do_visit_invoke): New. Enforces same return types.
4298 (__do_visit_invoke_r): New. Converts return types.
4299 (__visit_invoke): Adjust.
4300 (__gen_vtable): Add a template parameter for enforcing
4301 same return types for visit.
4302 * testsuite/20_util/variant/visit_r.cc: Add a test for a visitor with
4303 different return types.
4304 * testsuite/20_util/variant/visit_neg.cc: New. Ensures that
4305 visitors with different return types don't accidentally
4306 compile with regular visitation.
4308 2019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
4310 * testsuite/27_io/filesystem/iterators/caching.cc: Add
4311 dg-require-filesystem-ts.
4313 2019-04-05 Jonathan Wakely <jwakely@redhat.com>
4315 * doc/xml/manual/status_cxx2020.xml: Update status.
4316 * include/std/variant (visit<R>): Define for C++2a (P0655R1).
4317 * testsuite/20_util/variant/visit_r.cc: New test.
4319 * include/bits/fs_dir.h (directory_iterator::operator*)
4320 (directory_iterator::operator->): Add noexcept.
4321 (operator==, operator!=): Replace namespace-scope equality operators
4322 for directory iterators with hidden friends.
4325 * config/abi/pre/gnu.ver: Add missing exports.
4326 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
4329 * config/abi/pre/gnu.ver: Export new symbols.
4330 * include/bits/fs_dir.h (recursive_directory_iterator::options())
4331 (recursive_directory_iterator::recursion_pending())
4332 (recursive_directory_iterator::disable_recursion_pending()): Remove
4333 inline definitions. Make noexcept.
4334 (recursive_directory_iterator::depth())
4335 (recursive_directory_iterator::operator*())
4336 (recursive_directory_iterator::operator->()): Make noexcept.
4337 (recursive_directory_iterator::_M_options)
4338 (recursive_directory_iterator::_M_pending): Remove data members.
4339 * src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
4340 (recursive_directory_iterator::recursive_directory_iterator): Remove
4341 ctor-initializer. Use new constructor for _Dir_stack.
4342 (recursive_directory_iterator::options())
4343 (recursive_directory_iterator::recursion_pending())
4344 (recursive_directory_iterator::disable_recursion_pending()): Add
4345 non-inline definitions.
4346 (recursive_directory_iterator::depth()): Make noexcept.
4347 (recursive_directory_iterator::increment(error_code&))
4348 (recursive_directory_iterator::pop(error_code&)): Adjust to new
4349 location of options and recursion_pending members.
4350 * testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
4351 * testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
4352 user-declared move constructor and assignment operator, to make the
4355 * src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
4356 d_type == DT_UNKNOWN immediately.
4357 (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
4359 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
4361 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
4363 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
4364 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
4367 PR libstdc++/87431 (again)
4368 * include/bits/basic_string.h (__variant::_Never_valueless_alt):
4369 Define partial specialization for basic_string.
4370 * include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
4371 shared_ptr and weak_ptr.
4372 * include/bits/std_function.h (_Never_valueless_alt): Likewise for
4374 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
4376 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
4378 * include/debug/vector (_Never_valueless_alt): Likewise for debug
4380 * include/std/any (_Never_valueless_alt): Define explicit
4381 specialization for any.
4382 * include/std/variant (_Never_valueless_alt): Define primary template.
4383 (__never_valueless): Use _Never_valueless_alt instead of
4384 is_trivially_copyable.
4385 (variant::emplace<N>(Args&&...)): Add special case for non-throwing
4386 initializations to avoid try-catch overhead. Add special case for
4387 scalars produced by potentially-throwing conversions. Use
4388 _Never_valueless_alt instead of is_trivially_copyable for the
4389 remaining strong exception-safety cases.
4390 (variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
4391 * testsuite/20_util/variant/87431.cc: Run both test functions.
4392 * testsuite/20_util/variant/exception_safety.cc: New test.
4393 * testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
4394 so the variant becomes valueless.
4396 2019-04-03 Jonathan Wakely <jwakely@redhat.com>
4399 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
4401 (variant::emplace<_Tp>): Return result of emplace<N> directly.
4403 * include/std/string (__hash_string_base): New class template defining
4404 operator() for hashing strings.
4405 (hash<pmr::string>, hash<pmr::u8string>, hash<pmr::u16string>)
4406 (hash<pmr::u32string>, hash<pmr::wstring>): Define for C++17.
4407 * testsuite/21_strings/basic_string/hash/hash.cc: New test.
4408 * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: New test.
4410 2019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
4412 Use single-visitation in variant assignment and swap and relops.
4413 Also use indices instead of types when checking whether
4414 variants hold the same thing.
4415 * include/std/variant (__do_visit): Add a template parameter
4416 for index visitation, invoke with indices if index visitation
4418 (__variant_idx_cookie): New.
4419 (__visit_with_index): Likewise.
4420 (_Copy_assign_base::operator=): Do single-visitation with
4422 (_Move_assign_base::operator=): Likewise.
4423 (_Extra_visit_slot_needed): Adjust.
4424 (__visit_invoke): Call with indices if it's an index visitor.
4425 (relops): Do single-visitation with an index visitor.
4427 (__visitor_result_type): New.
4429 2019-03-30 Eric Botcazou <ebotcazou@adacore.com>
4431 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
4433 2019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
4435 Don't revisit a variant we are already visiting.
4436 * include/std/variant (__variant_construct_single): New.
4437 (__variant_construct): Use it.
4438 (_M_destructive_move): Likewise.
4439 (_M_destructive_copy): Likewise.
4440 (_Copy_assign_base::operator=): Adjust.
4441 (_Move_assign_base::operator=): Likewise.
4444 2019-03-26 Jonathan Wakely <jwakely@redhat.com>
4447 * include/bits/hashtable.h (_Hashtable): Move static assertions to
4448 destructor so they are not evaluated until the _Key type is complete.
4449 * include/bits/stl_tree.h (_Rb_tree): Likewise.
4450 * testsuite/23_containers/set/85965.cc: New test.
4451 * testsuite/23_containers/unordered_set/85965.cc: New test.
4452 * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors
4453 with regexp matching the corresponding _Rb_tree specialization.
4454 * testsuite/23_containers/multimap/48101_neg.cc: Likewise.
4455 * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error.
4456 * testsuite/23_containers/set/48101_neg.cc: Likewise.
4457 * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
4458 * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
4459 * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
4460 * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
4462 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4465 Fix based on a suggestion by Antony Polukhin.
4466 * include/std/variant (__never_valueless): New.
4468 (_Extra_visit_slot_needed): New.
4469 (_Multi_array): Use it.
4470 (_S_apply_all_alts): Likewise.
4472 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4475 Fix based on a suggestion by Antony Polukhin.
4476 * include/std/variant (__gen_vtable): Don't reserve an
4477 additional table slot, _Multi_array already does that.
4479 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4482 Fix based on a suggestion by Antony Polukhin.
4483 * include/std/variant (__variant_construct): Capture a pointer
4484 to the storage and visit just one variant.
4486 2019-03-22 Jonathan Wakely <jwakely@redhat.com>
4488 * doc/xml/manual/backwards_compatibility.xml: Remove link to
4489 Doxygen-generated pages with unstable URL.
4490 * doc/xml/manual/concurrency_extensions.xml: Likewise.
4491 * doc/xml/manual/extensions.xml: Likewise.
4492 * doc/xml/manual/parallel_mode.xml: Likewise.
4493 * doc/xml/manual/support.xml: Likewise.
4495 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
4496 avoid -Wconversion warnings.
4498 2019-03-21 Thomas Rodgers <trodgers@redhat.com>
4500 * include/Makefile.am (std_header): Add ${std_srcdir}/execution.
4501 (pstl_srcdir, pstl_builddir, pstl_headers): New variables.
4502 (allstamped): Add stamp-pstl.
4503 (install-headers): Add ptsl_builddir.
4504 * include/Makefile.in: Regenerate.
4505 * include/bits/c++config: Add pstl configuration.
4506 * include/pstl/LICENSE.txt: New file.
4507 * include/pstl/algorithm_fwd.h: New file.
4508 * include/pstl/algorithm_impl.h: New file.
4509 * include/pstl/execution_defs.h: New file.
4510 * include/pstl/execution_impl.h: New file.
4511 * include/pstl/glue_algorithm_defs.h: New file.
4512 * include/pstl/glue_algorithm_impl.h: New file.
4513 * include/pstl/glue_execution_defs.h: New file.
4514 * include/pstl/glue_memory_defs.h: New file.
4515 * include/pstl/glue_memory_impl.h: New file.
4516 * include/pstl/glue_numeric_defs.h: New file.
4517 * include/pstl/glue_numeric_impl.h: New file.
4518 * include/pstl/memory_impl.h: New file.
4519 * include/pstl/numeric_fwd.h: New file.
4520 * include/pstl/numeric_impl.h: New file.
4521 * include/pstl/parallel_backend.h: New file.
4522 * include/pstl/parallel_backend_tbb.h: New file.
4523 * include/pstl/parallel_backend_utils.h: New file.
4524 * include/pstl/parallel_impl.h: New file.
4525 * include/pstl/pstl_config.h: New file.
4526 * include/pstl/unseq_backend_simd.h: New file.
4527 * include/pstl/utils.h: New file.
4528 * include/std/algorithm: Include parallel algorithm implementations.
4529 * include/std/execution: New file.
4530 * include/std/memory: Include parallel algorithm implementations.
4531 * include/std/numeric: Include parallel algorithm implementations.
4532 * include/std/version: Add parallel algorithms feature test macro.
4533 * testsuite/util/pstl/pstl_test_config.h: New file.
4534 * testsuite/util/pstl/test_utils.h: New file.
4535 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
4536 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
4537 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
4538 * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
4539 * testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
4540 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
4541 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
4542 * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
4543 * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
4544 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
4545 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
4546 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
4547 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
4548 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
4549 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
4550 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
4551 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
4552 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
4553 * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
4554 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
4555 * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
4556 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
4557 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
4558 * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
4559 * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
4560 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
4561 * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
4562 * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
4563 * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
4564 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
4565 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
4566 * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
4567 * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
4568 * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
4569 * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
4570 * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
4571 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
4572 * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
4573 * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
4574 * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
4575 * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
4576 * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
4577 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
4578 * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
4579 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
4580 * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
4581 * testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
4582 * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
4583 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
4584 * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
4585 * testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
4586 * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
4587 * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
4588 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: New file.
4589 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: New file.
4590 * testsuite/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: New file.
4591 * testsuite/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: New file.
4592 * testsuite/testsuite/25_algorithms/pstl/alg_merge/merge.cc: New file.
4593 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: New file.
4594 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: New file.
4595 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: New file.
4596 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: New file.
4597 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: New file.
4598 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: New file.
4599 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: New file.
4600 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: New file.
4601 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: New file.
4602 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: New file.
4603 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: New file.
4604 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: New file.
4605 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: New file.
4606 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: New file.
4607 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: New file.
4608 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: New file.
4609 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: New file.
4610 * testsuite/testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: New file.
4611 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: New file.
4612 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: New file.
4613 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: New file.
4614 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: New file.
4615 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: New file.
4616 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: New file.
4617 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: New file.
4618 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: New file.
4619 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: New file.
4620 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: New file.
4621 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: New file.
4622 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: New file.
4623 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: New file.
4624 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: New file.
4625 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: New file.
4626 * testsuite/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: New file.
4627 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/includes.cc: New file.
4628 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: New file.
4629 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: New file.
4630 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: New file.
4631 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: New file.
4632 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: New file.
4633 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: New file.
4634 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/set.cc: New file.
4635 * testsuite/testsuite/25_algorithms/pstl/alg_sorting/sort.cc: New file.
4636 * testsuite/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: New file.
4637 * testsuite/testsuite/26_numerics/pstl/numeric_ops/reduce.cc: New file.
4638 * testsuite/testsuite/26_numerics/pstl/numeric_ops/scan.cc: New file.
4639 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: New file.
4640 * testsuite/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: New file.
4642 2019-03-21 Jonathan Wakely <jwakely@redhat.com>
4644 * include/c_compatibility/math.h [!__STDCPP_WANT_MATH_SPEC_FUNCS__]
4645 (assoc_laguerre, assoc_laguerref, assoc_laguerrel, assoc_legendre)
4646 (assoc_legendref, assoc_legendrel, beta, betaf, betal, comp_ellint_1)
4647 (comp_ellint_1f, comp_ellint_1l, comp_ellint_2, comp_ellint_2f)
4648 (comp_ellint_2l, comp_ellint_3, comp_ellint_3f, comp_ellint_3l)
4649 (cyl_bessel_i, cyl_bessel_if, cyl_bessel_il, cyl_bessel_j)
4650 (cyl_bessel_jf, cyl_bessel_jl, cyl_bessel_k, cyl_bessel_kf)
4651 (cyl_bessel_kl, cyl_neumann, cyl_neumannf, cyl_neumannl, ellint_1)
4652 (ellint_1f, ellint_1l, ellint_2, ellint_2f, ellint_2l, ellint_3)
4653 (ellint_3f, ellint_3l, expint, expintf, expintl, hermite, hermitef)
4654 (hermitel, laguerre, laguerref, laguerrel, legendre, legendref)
4655 (legendrel, riemann_zeta, riemann_zetaf, riemann_zetal, sph_bessel)
4656 (sph_besself, sph_bessell, sph_legendre, sph_legendref, sph_legendrel)
4657 (sph_neumann, sph_neumannf, sph_neumannl): Only add using-declarations
4658 when the special functions IS is enabled, not for C++17.
4659 * testsuite/26_numerics/headers/cmath/functions_global_c++17.cc:
4661 * testsuite/26_numerics/headers/cmath/functions_global.cc: New test,
4662 without checks for special functions in C++17.
4663 * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
4667 * include/backward/hash_map: Use <> for includes not "".
4668 * include/backward/hash_set: Likewise.
4669 * include/backward/strstream: Likewise.
4670 * include/tr1/bessel_function.tcc: Likewise.
4671 * include/tr1/exp_integral.tcc: Likewise.
4672 * include/tr1/legendre_function.tcc: Likewise.
4673 * include/tr1/modified_bessel_func.tcc: Likewise.
4674 * include/tr1/riemann_zeta.tcc: Likewise.
4676 2019-03-19 Jonathan Wakely <jwakely@redhat.com>
4678 * doc/xml/manual/allocator.xml: Link to table documenting evolution
4679 of extension allocators.
4680 * doc/xml/manual/evolution.xml: Use angle brackets for header names.
4681 Document new headers in 7.2, 8.1 and 9.1 releases.
4682 * doc/xml/manual/using.xml: Adjust link target for new_allocator.
4683 * doc/html/*: Regenerate.
4685 2019-03-12 John David Anglin <dave.anglin@bell.net>
4688 * testsuite/lib/libstdc++.exp: Locate libatomic.
4689 * testsuite/lib/dg-options.exp (add_options_for_libatomic): New.
4690 * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Add
4692 * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
4693 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
4694 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
4695 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
4697 2019-03-11 Jonathan Wakely <jwakely@redhat.com>
4700 * configure.ac: Check for sockatmark.
4701 * crossconfig.m4: Check for sockatmark.
4702 * config.h.in: Regenerate.
4703 * configure: Regenerate.
4704 * include/experimental/internet (address_v4::_S_hton): Rename
4705 overloaded functions to _S_hton_16 and _S_ntoh_16.
4706 (address_v4::_S_ntoh): Rename to _S_ntoh_16 and _S_ntoh_32.
4707 (basic_endpoint): Adjust calls to _S_hton and _S_ntoh.
4708 * include/experimental/socket (basic_socket::at_mark): Check
4709 _GLIBCXX_HAVE_SOCKATMARK.
4711 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
4712 const variables instead of macros.
4715 * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
4716 Use correct type for len_aligned.
4717 * testsuite/20_util/hash/89629.cc: New test.
4719 2019-03-11 Jakub Jelinek <jakub@redhat.com>
4722 * include/std/atomic (atomic<T>::store, atomic<T>::load,
4723 atomic<T>::exchange, atomic<T>::compare_exchange_weak,
4724 atomic<T>::compare_exchange_strong): Cast __m or __s and __f to int.
4725 * include/bits/atomic_base.h (__atomic_base<T>::operator++,
4726 __atomic_base<T>::operator--, __atomic_base<T>::operator+=,
4727 __atomic_base<T>::operator-=, __atomic_base<T>::operator&=,
4728 __atomic_base<T>::operator|=, __atomic_base<T>::operator^=,
4729 __atomic_base<T*>::operator++, __atomic_base<T*>::operator--,
4730 __atomic_base<T*>::operator+=, __atomic_base<T*>::operator-=): Cast
4731 memory_order_seq_cst to int.
4733 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
4735 * doc/xml/manual/using.xml: Use link element instead of xref.
4736 * doc/html/*: Regenerate.
4738 * include/bits/fs_path.h (path::format): Add fixed underlying type.
4740 2019-03-08 François Dumont <fdumont@gcc.gnu.org>
4743 * include/debug/map.h (map): Use _RequireNotAllocator to constrain
4744 parameters in deduction guides.
4745 * include/debug/multimap.h (multimap): Likewise.
4746 * include/debug/set.h (multimap): Likewise.
4747 * include/debug/multiset.h (multimap): Likewise.
4748 * include/debug/unordered_map (unordered_map): Likewise.
4749 (unordered_multimap): Likewise.
4750 * include/debug/unordered_set (unordered_set): Likewise.
4751 (unordered_multiset): Likewise.
4754 * include/debug/unordered_map (unordered_map<>::_M_check_rehashed):
4755 Invalidate all iterators in case of rehash.
4756 (unordered_multimap<>::_M_check_rehashed): Likewise.
4757 * include/debug/unordered_set
4758 (unordered_set<>::_M_check_rehashed): Likewise.
4759 (unordered_multiset<>::_M_check_rehashed): Likewise.
4760 * testsuite/23_containers/unordered_set/debug/89608_neg.cc: New.
4762 2019-03-07 Andreas Schwab <schwab@suse.de>
4764 * config/abi/post/riscv64-linux-gnu: New directory.
4765 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
4767 2019-03-07 Jonathan Wakely <jwakely@redhat.com>
4769 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
4770 compile test to run. Fix typo.
4772 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
4773 * doc/html/*: Regenerate.
4775 P0356R5 Simplified partial function application
4776 * include/std/functional [C++20] (_Bind_front, _Bind_front_t): Define
4777 helpers for bind_front.
4778 (bind_front, __cpp_lib_bind_front): Define.
4779 * testsuite/20_util/function_objects/bind_front/1.cc: New test.
4781 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4783 * include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
4784 * include/std/version (__cpp_lib_bounded_array_traits): Likewise.
4785 * testsuite/20_util/is_bounded_array/value.cc: Check for macro.
4786 * testsuite/20_util/is_unbounded_array/value.cc: Likewise.
4788 2019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
4790 PR libstdc++/86655 - std::assoc_legendre should not constrain
4791 the value of m (or x).
4792 * include/tr1/legendre_function.tcc (__assoc_legendre_p,
4793 __sph_legendre): If degree > order Don't throw, return 0.
4794 (__legendre_p, __assoc_legendre_p): Don't constrain x either.
4795 * testsuite/special_functions/02_assoc_legendre/pr86655.cc: New test.
4796 * testsuite/special_functions/20_sph_legendre/pr86655.cc: New test.
4797 * testsuite/tr1/5_numerical_facilities/special_functions/
4798 02_assoc_legendre/pr86655.cc: New test.
4799 * testsuite/tr1/5_numerical_facilities/special_functions/
4800 22_sph_legendre/pr86655.cc: New test.
4802 2019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
4805 Also PR libstdc++/85517
4806 * include/std/variant (__do_visit): New.
4807 (__variant_cast): Likewise.
4808 (__variant_cookie): Likewise.
4809 (__erased_*): Remove.
4810 (_Variant_storage::_S_vtable): Likewise.
4811 (_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
4812 (_Variant_storage::__M_reset): Adjust.
4813 (__variant_construct): New.
4814 (_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
4815 __variant_construct.
4816 (_Move_ctor_base(_Move_ctor_base&&)): Likewise.
4817 (_Move_ctor_base::__M_destructive_copy): New.
4818 (_Move_ctor_base::__M_destructive_move): Adjust to use
4819 __variant_construct.
4820 (_Copy_assign_base::operator=): Adjust to use __do_visit.
4821 (_Copy_assign_alias): Adjust to check both copy assignment
4822 and copy construction for triviality.
4823 (_Move_assign_base::operator=): Adjust to use __do_visit.
4824 (_Multi_array): Add support for visitors that accept and return
4826 (__gen_vtable_impl::_S_apply_all_alts): Likewise.
4827 (__gen_vtable_impl::_S_apply_single_alt): Likewise.
4828 (__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
4829 a __variant_cookie temporary for a variant that is valueless and..
4830 (__gen_vtable_impl::__visit_invoke): ..adjust here.
4831 (__gen_vtable::_Array_type): Conditionally make space for
4832 the __variant_cookie visitor case.
4833 (__variant_construct_by_index): New.
4834 (get_if): Adjust to use std::addressof.
4835 (relops): Adjust to use __do_visit.
4836 (variant): Add __variant_cast and __variant_construct_by_index
4838 (variant::emplace): Use _M_reset() and __variant_construct_by_index
4839 instead of self-destruction.
4840 (variant::swap): Adjust to use __do_visit.
4841 (visit): Reimplement in terms of __do_visit.
4842 (__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
4843 * testsuite/20_util/variant/compile.cc: Adjust.
4844 * testsuite/20_util/variant/run.cc: Likewise.
4846 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4848 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
4850 * testsuite/experimental/feat-char8_t.cc: Likewise.
4852 * include/std/type_traits [C++20] (is_bounded_array)
4853 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
4855 * testsuite/20_util/is_bounded_array/requirements/
4856 explicit_instantiation.cc: New test.
4857 * testsuite/20_util/is_bounded_array/requirements/typedefs.cc: New
4859 * testsuite/20_util/is_bounded_array/value.cc: New test.
4860 * testsuite/20_util/is_unbounded_array/requirements/
4861 explicit_instantiation.cc: New test.
4862 * testsuite/20_util/is_unbounded_array/requirements/typedefs.cc: New
4864 * testsuite/20_util/is_unbounded_array/value.cc: New test.
4866 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
4868 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
4870 2019-03-05 Jonathan Wakely <jwakely@redhat.com>
4872 * include/c_compatibility/math.h [C++20] (lerp): Add using
4874 * include/c_global/cmath [C++20] (__cpp_lib_interpolate): Define.
4875 (__lerp): Define function template to implement lerp.
4876 (lerp(float, float, float), lerp(double, double, double))
4877 (lerp(long double, long double, long double)): Define for C++20.
4878 * include/std/numeric [C++20] (__cpp_lib_interpolate): Define.
4879 (midpoint(T, T), midpoint(T*, T*)): Define.
4880 * include/std::version [C++20] (__cpp_lib_interpolate): Define.
4881 * testsuite/26_numerics/lerp.cc: New test.
4882 * testsuite/26_numerics/midpoint/floating.cc: New test.
4883 * testsuite/26_numerics/midpoint/integral.cc: New test.
4884 * testsuite/26_numerics/midpoint/pointer.cc: New test.
4886 2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
4888 PR libstdc++/88996 Implement P0439R0
4889 Make std::memory_order a scoped enumeration.
4890 * include/bits/atomic_base.h: For C++20 make memory_order a scoped enum,
4891 add variables for the old enumerators. Adjust calls.
4892 * testsuite/29_atomics/headers/atomic/types_std_c++2a.cc: New test.
4893 * testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc: New test.
4895 2019-03-04 Jonathan Wakely <jwakely@redhat.com>
4897 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
4900 * include/std/memory_resource (polymorphic_allocator): Add default
4901 template argument for C++20.
4902 (polymorphic_allocator::allocate_bytes)
4903 (polymorphic_allocator::deallocate_bytes)
4904 (polymorphic_allocator::allocate_object)
4905 (polymorphic_allocator::deallocate_object)
4906 (polymorphic_allocator::new_object)
4907 (polymorphic_allocator::delete_object): New member functions for
4909 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
4912 2019-03-03 Jonathan Wakely <jwakely@redhat.com>
4915 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
4918 2019-03-01 Jonathan Wakely <jwakely@redhat.com>
4920 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
4921 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
4923 * include/std/memory (uses_allocator_construction_args): New set of
4924 overloaded functions.
4925 (make_obj_using_allocator, uninitialized_construct_using_allocator):
4927 * include/std/memory_resource (polymorphic_allocator::construct)
4928 [__cplusplus > 201703l]: Replace all overloads with a single function
4929 using uses_allocator_construction_args.
4930 * testsuite/20_util/polymorphic_allocator/construct_c++2a.cc: New
4932 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
4934 2019-02-27 Jonathan Wakely <jwakely@redhat.com>
4937 * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
4938 stylesheet directories before check for xsltproc. Try to use
4939 xmlcatalog to find local stylesheet directory before trying hardcoded
4940 paths. Add path used by suse to hardcoded paths. Adjust xsltproc
4941 check to look for the same stylesheet as doc/Makefile.am uses. Don't
4942 use xsltproc if xmlcatalog fails to find a local stylesheet.
4943 * configure.ac: Check for xmlcatalog.
4944 * Makefile.in: Regenerate.
4945 * configure: Likewise.
4946 * doc/Makefile.in: Likewise.
4947 * include/Makefile.in: Likewise.
4948 * libsupc++/Makefile.in: Likewise.
4949 * po/Makefile.in: Likewise.
4950 * python/Makefile.in: Likewise.
4951 * src/Makefile.in: Likewise.
4952 * src/c++11/Makefile.in: Likewise.
4953 * src/c++17/Makefile.in: Likewise.
4954 * src/c++98/Makefile.in: Likewise.
4955 * src/filesystem/Makefile.in: Likewise.
4956 * testsuite/Makefile.in: Likewise.
4958 2019-02-26 Jonathan Wakely <jwakely@redhat.com>
4961 * include/bits/alloc_traits.h (_RequireNotAllocator): New helper for
4962 container deduction guides.
4963 * include/bits/hashtable.h (_RequireNotAllocatorOrIntegral): Likewise.
4964 * include/bits/stl_map.h (map): Use _RequireNotAllocator to constrain
4965 parameters in deduction guides.
4966 * include/bits/stl_multimap.h (multimap): Likewise.
4967 * include/bits/stl_multiset.h (multiset): Likewise.
4968 * include/bits/stl_queue.h (queue, priority_queue): Likewise.
4969 * include/bits/stl_set.h (set): Likewise.
4970 * include/bits/stl_stack.h (stack): Likewise.
4971 * include/bits/unordered_map.h (unordered_map, unordered_multimap):
4972 use _RequireNotAllocator and _RequireNotAllocatorOrIntegral to
4973 constrain parameters in deduction guides.
4974 * include/bits/unordered_set.h (unordered_set, unordered_multiset):
4976 * testsuite/23_containers/map/cons/deduction.cc: Test additional
4978 * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
4979 * testsuite/23_containers/set/cons/deduction.cc: Likewise.
4980 * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
4981 * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
4983 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
4985 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
4988 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Change
4989 to class template and partial specialization using void_t.
4990 (__is_copy_insertable, __is_move_insertable): Adjust base class.
4992 2019-02-24 Jonathan Wakely <jwakely@redhat.com>
4995 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
4996 copy and move members public.
4998 2019-02-23 Jonathan Wakely <jwakely@redhat.com>
5000 * include/std/type_traits (__underlying_type_impl): New helper to
5001 make underlying_type SFINAE-friendly.
5002 (underlying_type): Derive from __underlying_type_impl.
5003 * testsuite/20_util/underlying_type/requirements/typedefs-3.cc: New
5007 * include/bits/char_traits.h (__constant_char_array): Check index is
5008 in range before dereferencing.
5009 (char_traits<char>::compare, char_traits<char>::find)
5010 (char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
5011 immediately if n is zero.
5012 (char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
5013 Remove workarounds for PR 67026.
5014 * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
5016 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
5019 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
5021 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
5022 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
5024 2019-02-22 Jakub Jelinek <jakub@redhat.com>
5027 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
5028 type to std::size_t and argument to type to long double.
5030 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
5032 * configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
5033 * config/abi/post/sparc64-linux-gnu: New directory.
5034 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
5035 * config/abi/post/sparc64-linux-gnu/32: New directory.
5036 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.
5038 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
5040 * testsuite/29_atomics/headers/atomic/types_std_c++20.cc: New test.
5041 * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc: New
5044 2019-02-22 Tom Honermann <tom@honermann.net>
5046 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
5047 printers for u8string and u8string_view.
5049 2019-02-22 Tom Honermann <tom@honermann.net>
5051 * testsuite/18_support/byte/ops.cc: Validate
5052 std::to_integer<char8_t>, std::to_integer<char16_t>, and
5053 std::to_integer<char32_t>.
5054 * testsuite/18_support/numeric_limits/dr559.cc: Validate
5055 std::numeric_limits<char8_t>.
5056 * testsuite/18_support/numeric_limits/lowest.cc: Validate
5057 std::numeric_limits<char8_t>::lowest().
5058 * testsuite/18_support/numeric_limits/max_digits10.cc: Validate
5059 std::numeric_limits<char8_t>::max_digits10.
5060 * testsuite/18_support/type_info/fundamental.cc: Validate
5061 typeinfo for char8_t.
5062 * testsuite/20_util/from_chars/1_c++20_neg.cc: New test, validating
5063 std::from_chars with char8_t.
5064 * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
5065 Validate explicit instantiation of std::hash<char8_t>.
5066 * testsuite/20_util/is_integral/value.cc: Validate
5067 std::is_integral<char8_t>.
5068 * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
5069 Validate std::make_signed<char8_t>.
5070 * testsuite/21_strings/basic_string/cons/char/deduction.cc:
5071 Validate u8string construction from char8_t sources.
5072 * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Validate
5074 * testsuite/21_strings/basic_string_view/operations/compare/
5075 char/70483.cc: Validate substr operations on u8string_view.
5076 * testsuite/21_strings/basic_string_view/typedefs.cc: Validate that
5077 the u8string_view typedef is defined.
5078 * testsuite/21_strings/char_traits/requirements/
5079 constexpr_functions.cc: Validate char_traits<char8_t> constexpr
5081 * testsuite/21_strings/char_traits/requirements/
5082 constexpr_functions_c++17.cc: Validate char_traits<char8_t> C++17
5083 constexpr member functions.
5084 * testsuite/21_strings/headers/string/types_std_c++0x.cc: Validate
5085 that the u8string typedef is defined.
5086 * testsuite/22_locale/locale/cons/unicode.cc: Validate the presence
5087 of the std::codecvt<char16_t, char8_t, std::mbstate_t> and
5088 std::codecvt<char32_t, char8_t, std::mbstate_t> facets.
5089 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Update line
5091 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
5092 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
5094 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
5095 * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
5096 Validate std::atomic<char8_t>::is_always_lock_free
5097 * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
5098 Update line numbers.
5099 * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
5101 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
5103 * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
5104 Validate std::experimental::pmr::u8string.
5105 * testsuite/experimental/string_view/typedefs.cc: Validate that the
5106 u8string_view typedef is defined.
5107 * testsuite/util/testsuite_common_types.h: Add char8_t, char16_t and
5108 char32_t to the typelists.
5110 2019-02-22 Tom Honermann <tom@honermann.net>
5112 * include/ext/typelist.h: Constrain a partial specialization of
5113 typelist::detail::append_ to only match chain<T1,T2>.
5115 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
5118 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Replace
5119 class template with class. Replace move and copy member types with
5120 member alias templates, so they are only instantiated when needed.
5121 (__is_copy_insertable, __is_move_insertable): Adjust base class.
5122 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: Enable
5123 test for C++11/14/17 as well.
5124 * testsuite/23_containers/vector/modifiers/push_back/89416.cc: New
5127 2019-02-20 Jakub Jelinek <jakub@redhat.com>
5130 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
5131 _GLIBCXX_PURE to the alias declaration.
5133 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
5135 * testsuite/21_strings/basic_string/literals/types.cc
5136 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string type for u8 literal.
5137 * testsuite/21_strings/basic_string/literals/values.cc
5138 [_GLIBCXX_USE_CHAR8_T]: Likewise.
5139 * testsuite/22_locale/codecvt/char16_t.cc: Adjust for u8 literals
5140 potentially having different type.
5141 * testsuite/22_locale/codecvt/char32_t.cc: Likewise.
5142 * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Cast u8 literal
5144 * testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc: Likewise.
5145 * testsuite/22_locale/codecvt/utf8.cc: Likewise.
5146 * testsuite/22_locale/conversions/string/2.cc: Remove u8 prefix from
5147 string literals only using basic character set.
5148 * testsuite/22_locale/conversions/string/3.cc: Likewise. Cast other
5149 u8 literals to char.
5150 * testsuite/29_atomics/headers/atomic/macros.cc [_GLIBCXX_USE_CHAR8_T]:
5151 Test ATOMIC_CHAR8_T_LOCK_FREE.
5152 Add missing #error to ATOMIC_CHAR16_T_LOCK_FREE test.
5153 * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
5154 [_GLIBCXX_USE_CHAR8_T]: Check for std::atomic_char8_t.
5155 * testsuite/experimental/string_view/literals/types.cc
5156 [_GLIBCXX_USE_CHAR8_T]: Adjust expected string_view type for u8
5158 * testsuite/experimental/string_view/literals/values.cc
5159 [_GLIBCXX_USE_CHAR8_T]: Likewise.
5161 2019-02-19 Tom Honermann <tom@honermann.net>
5163 * testsuite/18_support/numeric_limits/char8_t.cc: New test cloned
5164 from char16_32_t.cc; validates numeric_limits<char8_t>.
5165 * testsuite/21_strings/basic_string/literals/types-char8_t.cc: New
5166 test cloned from types.cc; validates operator""s for char8_t
5168 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
5169 test cloned from values.cc; validates construction and comparison
5171 * testsuite/21_strings/basic_string/requirements/
5172 /explicit_instantiation/char8_t/1.cc: New test cloned from
5173 char16_t/1.cc; validates explicit instantiation of
5174 basic_string<char8_t>.
5175 * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
5176 New test cloned from types.cc; validates operator""sv for char8_t
5177 returns u8string_view.
5178 * testsuite/21_strings/basic_string_view/literals/
5179 values-char8_t.cc: New test cloned from values.cc; validates
5180 construction and comparison of u8string_view values.
5181 * testsuite/21_strings/basic_string_view/requirements/
5182 explicit_instantiation/char8_t/1.cc: New test cloned from
5183 char16_t/1.cc; validates explicit instantiation of
5184 basic_string_view<char8_t>.
5185 * testsuite/21_strings/char_traits/requirements/char8_t/65049.cc:
5186 New test cloned from char16_t/65049.cc; validates that
5187 char_traits<char8_t> is not vulnerable to the concerns in PR65049.
5188 * testsuite/21_strings/char_traits/requirements/char8_t/
5189 typedefs.cc: New test cloned from char16_t/typedefs.cc; validates
5190 that char_traits<char8_t> member typedefs are present and correct.
5191 * testsuite/21_strings/char_traits/requirements/
5192 explicit_instantiation/char8_t/1.cc: New test cloned from
5193 char16_t/1.cc; validates explicit instantiation of
5194 char_traits<char8_t>.
5195 * testsuite/22_locale/codecvt/char16_t-char8_t.cc: New test cloned
5196 from char16_t.cc: validates
5197 codecvt<char16_t, char8_t, mbstate_t>.
5198 * testsuite/22_locale/codecvt/char32_t-char8_t.cc: New test cloned
5199 from char32_t.cc: validates
5200 codecvt<char32_t, char8_t, mbstate_t>.
5201 * testsuite/22_locale/codecvt/utf8-char8_t.cc: New test cloned from
5202 utf8.cc; validates codecvt<char16_t, char8_t, std::mbstate_t> and
5203 codecvt<char32_t, char8_t, std::mbstate_t>.
5204 * testsuite/27_io/filesystem/path/native/string-char8_t.cc: New
5205 test cloned from string.cc; validates filesystem::path construction
5207 * testsuite/experimental/feat-char8_t.cc: New test; validates that
5208 the __cpp_lib_char8_t feature test macro is defined with the
5210 * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
5211 New test cloned from string.cc; validates filesystem::path
5212 construction from char8_t input.
5213 * testsuite/experimental/string_view/literals/types-char8_t.cc: New
5214 test cloned from types.cc; validates operator""sv for char8_t
5215 returns u8string_view.
5216 * testsuite/experimental/string_view/literals/values-char8_t.cc:
5217 New test cloned from values.cc; validates construction and
5218 comparison of u8string_view values.
5219 * testsuite/experimental/string_view/requirements/
5220 explicit_instantiation/char8_t/1.cc: New test cloned from
5221 char16_t/1.cc; validates explicit instantiation of
5222 basic_string_view<char8_t>.
5223 * testsuite/ext/char8_t/atomic-1.cc: New test; validates that
5224 ATOMIC_CHAR8_T_LOCK_FREE is not defined if char8_t support is not
5227 2019-02-19 Tom Honermann <tom@honermann.net>
5229 P0482R5 char8_t: Standard library support
5230 * config/abi/pre/gnu-versioned-namespace.ver (CXXABI_2.0): Add
5231 typeinfo symbols for char8_t.
5232 * config/abi/pre/gnu.ver: Add CXXABI_1.3.12.
5233 (GLIBCXX_3.4.26): Add symbols for specializations of
5234 numeric_limits and codecvt that involve char8_t.
5235 (CXXABI_1.3.12): Add typeinfo symbols for char8_t.
5236 * include/bits/atomic_base.h: Add atomic_char8_t.
5237 * include/bits/basic_string.h: Add std::hash<u8string> and
5238 operator""s(const char8_t*, size_t).
5239 * include/bits/c++config: Define _GLIBCXX_USE_CHAR8_T and
5241 * include/bits/char_traits.h: Add char_traits<char8_t>.
5242 * include/bits/codecvt.h: Add
5243 codecvt<char16_t, char8_t, mbstate_t>,
5244 codecvt<char32_t, char8_t, mbstate_t>,
5245 codecvt_byname<char16_t, char8_t, mbstate_t>, and
5246 codecvt_byname<char32_t, char8_t, mbstate_t>.
5247 * include/bits/cpp_type_traits.h: Add __is_integer<char8_t> to
5248 recognize char8_t as an integral type.
5249 * include/bits/fs_path.h: (path::__is_encoded_char): Recognize
5251 (path::u8string): Return std::u8string when char8_t support is
5253 (path::generic_u8string): Likewise.
5254 (path::_S_convert): Handle conversion from char8_t input.
5255 (path::_S_str_convert): Likewise.
5256 * include/bits/functional_hash.h: Add hash<char8_t>.
5257 * include/bits/locale_conv.h (__str_codecvt_out): Add overloads for
5259 * include/bits/locale_facets.h (_GLIBCXX_NUM_UNICODE_FACETS): Bump
5260 for new char8_t specializations.
5261 * include/bits/localefwd.h: Add missing declarations of
5262 codecvt<char16_t, char, mbstate_t> and
5263 codecvt<char32_t, char, mbstate_t>. Add char8_t declarations
5264 codecvt<char16_t, char8_t, mbstate_t> and
5265 codecvt<char32_t, char8_t, mbstate_t>.
5266 * include/bits/postypes.h: Add u8streampos
5267 * include/bits/stringfwd.h: Add declarations of
5268 char_traits<char8_t> and u8string.
5269 * include/c_global/cstddef: Add __byte_operand<char8_t>.
5270 * include/experimental/bits/fs_path.h (path::__is_encoded_char):
5272 (path::u8string): Return std::u8string when char8_t support is
5274 (path::generic_u8string): Likewise.
5275 (path::_S_convert): Handle conversion from char8_t input.
5276 (path::_S_str_convert): Likewise.
5277 * include/experimental/string: Add u8string.
5278 * include/experimental/string_view: Add u8string_view,
5279 hash<experimental::u8string_view>, and
5280 operator""sv(const char8_t*, size_t).
5281 * include/std/atomic: Add atomic<char8_t> and atomic_char8_t.
5282 * include/std/charconv (__is_int_to_chars_type): Recognize char8_t
5283 as a character type.
5284 * include/std/limits: Add numeric_limits<char8_t>.
5285 * include/std/string_view: Add u8string_view,
5286 hash<experimental::u8string_view>, and
5287 operator""sv(const char8_t*, size_t).
5288 * include/std/type_traits: Add __is_integral_helper<char8_t>,
5289 __make_unsigned<char8_t>, and __make_signed<char8_t>.
5290 * libsupc++/atomic_lockfree_defines.h: Define
5291 ATOMIC_CHAR8_T_LOCK_FREE.
5292 * src/c++11/Makefile.am: Compile with -fchar8_t when compiling
5293 codecvt.cc and limits.cc so that char8_t specializations of
5294 numeric_limits and codecvt and emitted.
5295 * src/c++11/Makefile.in: Likewise.
5296 * src/c++11/codecvt.cc: Define members of
5297 codecvt<char16_t, char8_t, mbstate_t>,
5298 codecvt<char32_t, char8_t, mbstate_t>,
5299 codecvt_byname<char16_t, char8_t, mbstate_t>, and
5300 codecvt_byname<char32_t, char8_t, mbstate_t>.
5301 * src/c++11/limits.cc: Define members of
5302 numeric_limits<char8_t>.
5303 * src/c++98/Makefile.am: Compile with -fchar8_t when compiling
5304 locale_init.cc and localename.cc.
5305 * src/c++98/Makefile.in: Likewise.
5306 * src/c++98/locale_init.cc: Add initialization for the
5307 codecvt<char16_t, char8_t, mbstate_t> and
5308 codecvt<char32_t, char8_t, mbstate_t> facets.
5309 * src/c++98/localename.cc: Likewise.
5310 * testsuite/util/testsuite_abi.cc: Validate ABI bump.
5312 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
5314 * 27_io/filesystem/operations/all.cc: Add dg-require-filesystem-ts.
5315 * 27_io/filesystem/operations/resize_file.cc: Likewise.
5316 * 27_io/filesystem/path/generation/normal2.cc: Likewise.
5318 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
5320 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
5321 * doc/html/*: Regenerate.
5323 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
5324 * doc/html/*: Regenerate.
5326 * doc/xml/manual/intro.xml: Document LWG 2586 status.
5327 * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
5328 allocator type in is_constructible checks.
5329 * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
5330 * testsuite/20_util/scoped_allocator/dr2586.cc: New test.
5331 * testsuite/20_util/tuple/cons/allocators.cc: Add test using
5332 problematic type from LWG 2586 discussion.
5333 * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
5334 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
5336 * configure.ac: Check for C11 timespec_get function.
5337 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
5339 * config.h.in: Regenerate.
5340 * configure: Regenerate.
5341 * include/c_global/ctime (timespec, timespec_get): Add to namespace
5342 std for C++17 and up.
5344 * doc/xml/manual/intro.xml: Document LWG 2537 status.
5345 * include/bits/stl_queue.h
5346 (priority_queue(const Compare&, const Container&, const Alloc&))
5347 (priority_queue(const Compare&, Container&&, const Alloc&)): Call
5349 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
5351 * doc/xml/manual/intro.xml: Document LWG 2566 status.
5352 * include/bits/stl_queue.h (queue, priority_queue): Add static
5353 assertions to enforce LWG 2566 requirement on value_type.
5354 * include/bits/stl_stack.h (stack): Likewise.
5357 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
5359 * doc/xml/manual/intro.xml: Document LWG 2735 status.
5360 * include/bits/std_abs.h: Add comment about LWG 2735.
5361 * testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
5363 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
5366 * include/std/version [__cpp_impl_destroying_delete]
5367 (__cpp_lib_destroying_delete): Only define for C++2a and later.
5368 * libsupc++/new [__cpp_impl_destroying_delete]
5369 (__cpp_lib_destroying_delete): Likewise.
5370 (destroying_delete_t, destroying_delete): Likewise, but define even
5371 when __cpp_impl_destroying_delete is not defined.
5372 * testsuite/18_support/destroying_delete.cc: New test.
5374 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
5377 * testsuite/17_intro/headers/c++2011/parallel_mode.cc: New test.
5378 * testsuite/17_intro/headers/c++2014/parallel_mode.cc: New test.
5379 * testsuite/17_intro/headers/c++2017/parallel_mode.cc: New test.
5380 * testsuite/28_regex/headers/regex/parallel_mode.cc: Remove.
5382 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
5385 * include/bits/fs_path.h (path::has_root_name)
5386 (path::has_root_directory, path::has_root_path)
5387 (path::has_relative_path, path::has_parent_path)
5388 (path::has_filename, path::has_stem, path::has_extension)
5389 (path::is_absolute, path::is_relative, path::_M_find_extension): Add
5391 * src/c++17/fs_path.cc (path::has_root_name)
5392 (path::has_root_directory, path::has_root_path)
5393 (path::has_relative_path, path::has_parent_path)
5394 (path::has_filename, path::_M_find_extension): Add noexcept.
5396 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
5398 PR libstdc++/89102 (partial)
5399 * include/std/type_traits (common_type<>): Define.
5400 (common_type<T>): Derive from common_type<T, T>.
5401 * testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
5402 Test zero-length template argument list.
5403 * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
5404 Test additional single argument cases.
5405 * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
5406 Adjust expected error.
5408 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
5411 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
5413 * include/bits/stl_stack.h (stack): Likewise.
5414 * testsuite/23_containers/priority_queue/deduction.cc: New test.
5415 * testsuite/23_containers/queue/deduction.cc: New test.
5416 * testsuite/23_containers/stack/deduction.cc: New test.
5419 * include/std/type_traits (__is_convertible_helper)
5420 (__is_convertible_helper<_From, _To, false>): Revert changes to
5421 support is_nothrow_convertible.
5422 (__is_nt_convertible_helper): New helper.
5423 (is_nothrow_convertible): Use __is_nt_convertible_helper.
5425 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
5426 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
5429 * include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
5430 __is_alloc_insertable_impl. Replace single type member with two
5431 members, one for each of copy and move insertable.
5432 (__is_move_insertable): New trait for internal use.
5433 * include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
5434 (vector::_S_nothrow_relocate(true_type)): New functions to
5435 conditionally check if __relocate_a can throw.
5436 (vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
5437 on __is_move_insertable.
5438 (vector::_S_do_relocate): New overloaded functions to conditionally
5440 (vector::_S_relocate): New function that dispatches to _S_do_relocate
5441 based on _S_use_relocate.
5442 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5443 (vector::_M_default_append): Call _S_relocate instead of __relocate_a.
5444 * testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.
5447 * include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
5448 parameter unnamed. Add message to static assertion.
5449 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5450 (vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
5453 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
5456 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
5458 (__is_bitwise_relocatable): ... to this.
5459 (__relocate_a_1): Adapt.
5460 * include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
5461 (__is_bitwise_relocatable): ... to this.
5463 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
5466 * src/c++17/fs_path.cc (path::replace_extension): Erase extension from
5467 final component as well as from _M_pathname. Append the dot using
5468 operator+= instead of only to _M_pathname.
5469 (path::_M_find_extension): Reformat slightly.
5470 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
5471 Add more test cases.
5473 2019-01-30 Ulrich Drepper <drepper@redhat.com>
5475 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
5477 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
5479 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
5480 constexpr specifiers from arg and proj.
5482 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
5483 __shared_ptr instantiations used by gcc4-compatible ABI.
5485 * include/experimental/forward_list (experimental::erase): Qualify
5487 * include/experimental/list (experimental::erase): Likewise.
5488 * include/std/forward_list (std::erase): Likewise.
5489 * include/std/list (std::erase): Likewise.
5491 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
5493 * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
5494 * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
5495 * testsuite/20_util/reference_wrapper/typedefs.cc: Likewise.
5496 * testsuite/30_threads/async/54297.cc: Suppress nodiscard warning.
5497 * testsuite/ext/array_allocator/26875.cc: Likewise.
5498 * testsuite/ext/pool_allocator/allocate_chunk.cc: Likewise.
5499 * testsuite/util/replacement_memory_operators.h: Likewise.
5500 * testsuite/util/testsuite_allocator.h: Likewise.
5502 * include/std/memory_resource (__pool_resource::_M_unpooled): Use
5503 normal mode vector, even for debug mode.
5504 * include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
5505 Define alias template for normal mode vector.
5507 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
5510 * config/locale/generic/c_locale.h (__convert_from_v)
5511 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5512 * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5513 * include/bits/locale_facets.tcc (num_put::_M_insert_float)
5514 [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF.
5516 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
5519 * include/bits/stl_vector.h (vector::__use_relocate): Replace static
5520 data member with static member function _S_use_relocate().
5521 * include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
5522 (vector::_M_default_append): Use _S_use_relocate() instead of
5525 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
5528 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
5531 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
5532 write to stderr instead of using printf.
5534 2019-01-21 Jakub Jelinek <jakub@redhat.com>
5537 * include/bits/char_traits.h (__constant_string_p,
5538 __constant_char_array_p): Use __builtin_is_constant_evaluated if
5541 2019-01-20 Ulrich Drepper <drepper@redhat.com>
5543 Implement C++20 P0600r1.
5544 * include/backward/hash_map: Add nodiscard attribute to empty.
5545 * include/backward/hash_set: Likewise.
5546 * backward/hashtable.h: Likewise.
5547 * include/bits/basic_string.h: Likewise.
5548 * include/bits/forward_list.h: Likewise.
5549 * include/bits/hashtable.h: Likewise.
5550 * include/bits/regex.h: Likewise.
5551 * include/bits/stl_deque.h: Likewise.
5552 * include/bits/stl_list.h: Likewise.
5553 * include/bits/stl_map.h: Likewise.
5554 * include/bits/stl_multimap.h: Likewise.
5555 * include/bits/stl_multiset.h: Likewise.
5556 * include/bits/stl_queue.h: Likewise.
5557 * include/bits/stl_set.h: Likewise.
5558 * include/bits/stl_stack.h: Likewise.
5559 * include/bits/stl_tree.h: Likewise.
5560 * include/bits/stl_vector.h: Likewise.
5561 * include/bits/unordered_map.h: Likewise.
5562 * include/bits/unordered_set.h: Likewise.
5563 * include/debug/array: Likewise.
5564 * include/experimental/any: Likewise.
5565 * include/experimental/bits/fs_path.h: Likewise.
5566 * include/experimental/internet: Likewise.
5567 * include/experimental/string_view: Likewise.
5568 * include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
5570 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
5572 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
5574 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
5576 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
5578 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
5580 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
5582 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
5584 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
5585 info_fn_imps.hpp: Likewise.
5586 * include/ext/pb_ds/detail/left_child_next_sibling_heap_/
5587 left_child_next_sibling_heap_.hpp: Likewise.
5588 * include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
5590 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
5592 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
5594 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
5596 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
5598 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
5600 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
5602 * include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
5603 * include/ext/pb_ds/trie_policy.hpp: Likewise.
5604 * include/ext/rope: Likewise.
5605 * include/ext/slist: Likewise.
5606 * include/ext/vstring.h: Likewise.
5607 * include/profile/array: Likewise.
5608 * include/std/array: Likewise.
5609 * include/tr1/array: Likewise.
5610 * include/tr1/hashtable.h: Likewise.
5611 * include/tr1/regex: Likewise.
5612 * include/tr2/dynamic_bitset: Likewise.
5613 * include/bits/alloc_traits.h: Add nodiscard attribute to
5615 * include/experimental/memory_resource: Likewise.
5616 * include/ext/alloc_traits.h: Likewise.
5617 * include/ext/array_allocator.h: Likewise.
5618 * include/ext/bitmap_allocator.h: Likewise.
5619 * include/ext/debug_allocator.h: Likewise.
5620 * include/ext/extptr_allocator.h: Likewise.
5621 * include/ext/mt_allocator.h: Likewise.
5622 * include/ext/new_allocator.h: Likewise.
5623 * include/ext/pool_allocator.h: Likewise.
5624 * include/ext/throw_allocator.h: Likewise.
5625 * include/std/scoped_allocator: Likewise.
5626 * libsupc++/eh_alloc.cc: Likewise.
5627 * include/std/future: Add nodiscard attribute to async.
5628 * libsupc++/new: Add nodiscard attribute to new.
5630 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
5635 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
5636 * include/bits/shared_ptr.h
5637 (shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
5638 (allocate_shared): Change to use new tag type.
5639 * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
5640 Declare new member function.
5641 (_Sp_alloc_shared_tag): Define new type.
5642 (_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
5643 (_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
5644 _Sp_make_shared_tag::_S_eq to check type_info.
5645 (__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
5646 Constrain to prevent being called with _Sp_alloc_shared_tag.
5647 (__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
5648 Replace constructor with ...
5649 (__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
5650 reference parameter so address of the new object can be returned to
5651 the caller. Obtain the allocator from the tag type.
5652 (__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
5653 constructor with ...
5654 (__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
5655 to the __shared_count constructor.
5656 (__allocate_shared): Change to use new tag type.
5657 * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.
5659 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
5661 * src/c++17/fs_ops.cc
5662 (equivalent(const path&, const path&, error_code&))
5663 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
5664 compare files instead of relying on incomplete info returned by stat.
5667 * src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
5668 if the path is already absolute.
5669 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
5670 [!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
5673 * src/c++17/fs_ops.cc (canonical(const path&, error_code&))
5674 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
5675 of filesystem::exists.
5676 (create_directories(const path&, error_code&)): Add assertions.
5677 (status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
5678 Add workaround for bug in _wstat for paths with trailing slash.
5679 * testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
5680 for expected behaviour on mingw.
5681 * testsuite/experimental/filesystem/operations/create_directories.cc:
5683 * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
5684 "TMP" instead of "TMPDIR" and clean environment before each test. Do
5685 not test permissions on mingw targets.
5687 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
5689 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
5690 constructors and open members taking wide strings. Fix patterns for
5691 filesystem::path members to match wstring_view parameters. Add
5692 exports for shared_ptr members used by directory iterators.
5693 * src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
5694 error code parameter if the file doesn't exist.
5695 * src/filesystem/ops.cc (remove(const path&, error_code&)):
5697 * testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
5698 values for mingw targets, where "/" is not an absolute path. Do not
5699 test symlinks on mingw targets.
5700 * testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
5701 * testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
5703 * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
5704 * testsuite/27_io/filesystem/operations/create_directories.cc: Check
5705 that each component of the path is created.
5706 * testsuite/experimental/filesystem/operations/create_directories.cc:
5708 * testsuite/27_io/filesystem/operations/exists.cc: Do not test
5709 permissions on mingw targets.
5710 * testsuite/experimental/filesystem/operations/exists.cc: Likewise.
5711 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
5712 * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
5713 * testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
5715 * testsuite/experimental/filesystem/operations/permissions.cc:
5717 * testsuite/27_io/filesystem/operations/remove.cc: Do not test
5718 symlinks or permissions on mingw targets.
5719 * testsuite/experimental/filesystem/operations/remove.cc: Likewise.
5720 * testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
5721 symlinks on mingw targets.
5722 * testsuite/experimental/filesystem/operations/remove_all.cc:
5724 * testsuite/27_io/filesystem/operations/status.cc: Do not test
5725 permissions on mingw targets.
5726 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
5727 test symlinks on mingw targets.
5728 * testsuite/experimental/filesystem/operations/space.cc: Fix test
5731 2019-02-14 Ulrich Drepper <drepper@redhat.com>
5734 Warn about unused comparisons of shared_ptr/unique_ptr
5735 * include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
5736 * include/bits/shared_ptr.h: Use it for operator ==, !=,
5737 <, <=, >, >= for shared_ptr.
5738 * include/bits/unique_ptr.h: Likewise for unique_ptr.
5740 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
5742 * include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
5743 as 201611L, because P0497R0 changes are supported.
5744 * include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
5746 * include/bits/erase_if.h [__cplusplus > 201703L]
5747 (__cpp_lib_erase_if): Only define for C++2a.
5748 * include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
5749 (__cpp_lib_null_iterators): Define.
5750 * include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
5751 (__cpp_lib_null_iterators): Define.
5752 [__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
5754 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
5756 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
5758 * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
5759 changes are supported.
5760 * include/std/optional (__cpp_lib_optional): Likewise.
5761 * include/std/variant (__cpp_lib_variant): Likewise.
5762 * include/std/version [!__STRICT_ANSI__]
5763 (__cpp_lib_uncaught_exceptions): Define as long integer.
5764 [__cplusplus >= 201703L] (__cpp_lib_any)
5765 (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
5766 (__cpp_lib_variant): Define for C++17.
5767 [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
5769 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
5772 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
5774 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
5778 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
5780 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
5783 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5785 * doc/xml/manual/intro.xml: Include new section.
5786 * doc/xml/manual/status_cxx2017.xml: Document more
5787 implementation-defined properties of the library.
5788 * doc/xml/manual/status_cxx2020.xml: Document C++2a status.
5789 * doc/html/*: Regenerate.
5791 * include/bits/refwrap.h [__cplusplus > 201703L]
5792 (_Refwrap_base_arg1, _Refwrap_base_arg2, _Reference_wrapper_base)
5793 (_Reference_wrapper_base_memfun): Do not define for C++2a.
5794 (reference_wrapper): Do not derive from _Reference_wrapper_base_memfun
5796 (reference_wrapper::operator()): Add static assertion.
5797 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
5799 * include/std/chrono (duration_values::zero(), duration_values::min())
5800 (duration_values::max()): Add noexcept.
5801 (duration::zero(), duration::min(), duration::max()): Likewise.
5802 (time_point::zero(), time_point::min(), time_point::max()): Likewise.
5803 * testsuite/20_util/duration/requirements/noexcept.cc: New test.
5804 * testsuite/20_util/time_point/requirements/noexcept.cc: New test.
5806 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
5808 2019-01-11 Jakub Jelinek <jakub@redhat.com>
5810 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
5811 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
5813 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5816 * include/bits/functional_hash.h (hash<nullptr_t>): Define
5817 specialization for C++17 (P0513R0, LWG 2817).
5818 * testsuite/20_util/hash/nullptr.cc: New test.
5821 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
5822 pattern for std::basic_stringbuf::str().
5824 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
5825 basic_ostream::operator<< patterns.
5827 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5829 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
5830 test failures on targets with 32-bit time_t.
5832 * include/bits/erase_if.h: Define __cpp_lib_erase_if.
5833 * include/std/deque: Likewise.
5834 * include/std/forward_list: Likewise.
5835 * include/std/list: Likewise.
5836 * include/std/string: Likewise.
5837 * include/std/vector: Likewise.
5838 * include/std/version: Likewise.
5839 * testsuite/21_strings/basic_string/erasure.cc: Test macro.
5840 * testsuite/23_containers/deque/erasure.cc: Likewise.
5841 * testsuite/23_containers/forward_list/erasure.cc: Likewise.
5842 * testsuite/23_containers/list/erasure.cc: Likewise.
5843 * testsuite/23_containers/map/erasure.cc: Likewise.
5844 * testsuite/23_containers/set/erasure.cc: Likewise.
5845 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
5846 * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
5847 * testsuite/23_containers/vector/erasure.cc: Likewise.
5849 * include/experimental/internet [AI_NUMERICSERV]
5850 (resolver_base::numeric_service): Define conditionally.
5851 * testsuite/experimental/net/internet/resolver/base.cc: Test it
5853 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
5856 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
5857 Jonathan Wakely <jwakely@redhat.com>
5860 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten patterns.
5861 (GLIBCXX_3.4.26): Add new exports.
5862 * include/Makefile.am: Add ostream-inst.cc. Move string-inst.cc to
5863 correct list of sources.
5864 * include/Makefile.in: Regenerate.
5865 * include/std/ostream (operator<<(nullptr_t)): New member function.
5866 * src/c++17/ostream-inst.cc: New file.
5867 * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New
5870 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5872 * testsuite/util/testsuite_fs.h (nonexistent_path): Include name
5873 of the source file containing the caller.
5874 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Remove
5875 directories created by test.
5876 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
5878 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
5880 * testsuite/experimental/filesystem/iterators/
5881 recursive_directory_iterator.cc: Likewise.
5883 2019-01-10 Jakub Jelinek <jakub@redhat.com>
5885 PR tree-optimization/88775
5886 * include/bits/stl_function.h (greater<_Tp*>::operator(),
5887 less<_Tp*>::operator(), greater_equal<_Tp*>::operator(),
5888 less_equal<_Tp*>::operator()): Use __builtin_is_constant_evaluated
5889 instead of __builtin_constant_p if available. Don't bother with
5890 the pointer comparison in C++11 and earlier.
5892 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
5896 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
5899 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
5901 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
5902 for filesystem::path. Give variables more distinctive names.
5904 * include/std/optional (_Optional_payload_base::_M_copy_assign): New
5905 member function to perform non-trivial assignment.
5906 (_Optional_payload_base::_M_move_assign): Likewise.
5907 (_Optional_payload<T, true, false, true>::operator=)
5908 (_Optional_payload<T, true, true, false>::operator=)
5909 (_Optional_payload<T, true, false, false>::operator=): Call
5910 _M_copy_assign and/or _M_move_assign to do non-trivial assignments.
5913 * testsuite/26_numerics/complex/operators/more_constexpr.cc: Do not
5914 test std::complex<long double> if long double format is IBM128.
5915 * testsuite/26_numerics/complex/requirements/more_constexpr.cc:
5918 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5920 * testsuite/libstdc++-prettyprinters/compat.cc: Test printer support
5921 for old std::unique_ptr layout.
5922 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix std::variant test
5923 to become valueless. Add filesystem::path tests.
5926 * include/std/optional (_Optional_payload_base): New class template
5927 for common code hoisted from _Optional_payload specializations. Use
5928 a template for the union, to allow a partial specialization for
5929 types with non-trivial destructors. Add constructors for in-place
5930 initialization to the union.
5931 (_Optional_payload(bool, const _Optional_payload&)): Use _M_construct
5932 to perform non-trivial copy construction, instead of relying on
5933 non-standard copy elision in a delegating constructor.
5934 (_Optional_payload(bool, _Optional_payload&&)): Likewise for
5935 non-trivial move construction.
5936 (_Optional_payload): Derive from _Optional_payload_base and use it
5937 for everything except the non-trivial assignment operators, which are
5939 (_Optional_payload<false, C, M>): Derive from the specialization
5940 _Optional_payload<true, false, false> and add a destructor.
5941 (_Optional_base_impl::_M_destruct, _Optional_base_impl::_M_reset):
5942 Forward to corresponding members of _Optional_payload.
5943 (_Optional_base_impl::_M_is_engaged, _Optional_base_impl::_M_get):
5944 Hoist common members from _Optional_base.
5945 (_Optional_base): Make all members and base class public.
5946 (_Optional_base::_M_get, _Optional_base::_M_is_engaged): Move to
5947 _Optional_base_impl.
5948 * python/libstdcxx/v6/printers.py (StdExpOptionalPrinter): Add
5949 support for new std::optional layout.
5950 * testsuite/libstdc++-prettyprinters/compat.cc: New test.
5953 * include/bits/locale_conv.h: Use <> for includes not "".
5954 * include/ext/random: Likewise.
5955 * include/ext/vstring.h: Likewise.
5957 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5959 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
5960 (GLIBCXX_3.4.21): Likewise.
5962 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5965 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
5966 to match the one that controls whether utimbuf and utime are declared.
5968 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
5971 * include/bits/char_traits.h (char_traits::move): Do not pass null
5972 pointers to memmove.
5973 * include/bits/locale_facets.h
5974 (ctype<char>::widen(const char*, const char*, char*)): Do not
5975 pass null pointers to memcpy.
5976 (ctype<char>::narrow(const char*, const char*, char, char*)):
5978 (ctype<char>::do_widen(const char*, const char*, char*)):
5980 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
5983 * doc/xml/manual/spine.xml: Update copyright years.
5984 * doc/xml/manual/status_cxx2017.xml: Adjust note about -lstdc++fs.
5985 * doc/xml/manual/using.xml: Remove requirement to link with -lstdc++fs
5986 for C++17 filesystem library.
5987 * doc/html/*: Regenerate.
5989 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for truncate.
5990 * config.h.in: Regenerate.
5991 * config/abi/pre/gnu.ver: Order patterns for filesystem operations
5992 alphabetically and add missing entries for copy_symlink,
5993 hard_link_count, rename, and resize_file.
5994 * configure: Regenerate.
5995 * src/c++17/fs_ops.cc (resize_file): Remove #if so posix::truncate is
5996 used unconditionally.
5997 * src/filesystem/ops-common.h (__gnu_posix::truncate)
5998 [!_GLIBCXX_HAVE_TRUNCATE]: Provide fallback definition that only
5999 supports truncating to zero length.
6000 * testsuite/27_io/filesystem/operations/all.cc: New test.
6001 * testsuite/27_io/filesystem/operations/resize_file.cc: New test.
6003 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
6006 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for utime and
6007 lstat and define _GLIBCXX_USE_UTIME and _GLIBCXX_USE_LSTAT.
6008 * config.h.in: Regenerate.
6009 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export symbols for
6010 remaining std::filesystem types and functions.
6011 * configure: Regenerate.
6012 * src/c++17/Makefile.am: Add C++17 filesystem sources.
6013 * src/c++17/Makefile.in: Regenerate.
6014 * src/c++17/cow-fs_dir.cc: Move src/filesystem/cow-std-dir.cc to
6015 here, and change name of included file.
6016 * src/c++17/cow-fs_ops.cc: Move src/filesystem/cow-std-ops.cc to
6017 here, and change name of included file.
6018 * src/c++17/fs_dir.cc: Move src/filesystem/std-dir.cc to here. Change
6019 path to dir-common.h.
6020 * src/c++17/fs_ops.cc: Move src/filesystem/std-ops.cc to here. Change
6021 path to ops-common.h. Disable -Wunused-parameter warnings.
6022 (internal_file_clock): Define unconditionally.
6023 [!_GLIBCXX_HAVE_SYS_STAT_H] (internal_file_clock::from_stat): Do not
6025 (do_copy_file, do_space): Move definitions to ops.common.h.
6026 (copy, file_size, hard_link_count, last_write_time, space): Only
6027 perform operation when _GLIBCXX_HAVE_SYS_STAT_H is defined, otherwise
6029 (last_write_time, read_symlink): Remove unused attributes from
6031 * src/filesystem/Makefile.am: Remove C++17 filesystem sources.
6032 * src/filesystem/Makefile.in: Regenerate.
6033 * src/filesystem/cow-std-dir.cc: Move to src/c++17/cow-fs_dir.cc.
6034 * src/filesystem/cow-std-ops.cc: Move to src/c++17/cow-fs_ops.cc.
6035 * src/filesystem/std-dir.cc: Move to src/c++17/fs_dir.cc.
6036 * src/filesystem/std-ops.cc: Move to src/c++17/fs_ops.cc.
6037 * src/filesystem/dir-common.h [!_GLIBCXX_HAVE_DIRENT_H]: Define
6038 dummy types and functions instead of using #error.
6039 * src/filesystem/dir.cc [!_GLIBCXX_HAVE_DIRENT_H]: Use #error.
6040 * src/filesystem/ops-common.h [!_GLIBCXX_USE_LSTAT] (lstat): Define
6042 [!_GLIBCXX_HAVE_UNISTD_H]: Define dummy types and functions.
6043 (do_copy_file, do_space): Move definitions here from std-ops.cc.
6044 * src/filesystem/ops.cc: Adjust calls to do_copy_file and do_space
6045 to account for new namespace.
6046 * testsuite/27_io/filesystem/directory_entry/86597.cc: Remove
6047 -lstdc++fs from dg-options.
6048 * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise.
6049 * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
6050 * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
6051 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
6052 * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
6054 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
6055 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
6057 * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
6058 * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
6059 * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
6060 * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
6061 * testsuite/27_io/filesystem/operations/create_directories.cc:
6063 * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise.
6064 * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise.
6065 * testsuite/27_io/filesystem/operations/current_path.cc: Likewise.
6066 * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
6067 * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
6068 * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
6069 * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
6070 * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise.
6071 * testsuite/27_io/filesystem/operations/permissions.cc: Likewise.
6072 * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
6073 * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise.
6074 * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
6075 * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
6076 * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
6077 * testsuite/27_io/filesystem/operations/space.cc: Likewise.
6078 * testsuite/27_io/filesystem/operations/status.cc: Likewise.
6079 * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
6080 * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
6082 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
6086 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Make various patterns for
6087 typeinfo and vtables less greedy.
6088 (GLIBCXX_3.4.26): Export symbols for std::filesystem::path.
6089 * src/c++17/Makefile.am: Add fs_path.cc and cow-fs_path.cc.
6090 * src/c++17/Makefile.in: Regenerate.
6091 * src/c++17/cow-fs_path.cc: Move src/filesystem/cow-std-path.cc to
6092 here, and change name of included file.
6093 * src/c++17/fs_path.cc: Move src/filesystem/std-path.cc to here.
6094 * src/filesystem/Makefile.am: Remove std-path.cc and cow-std-path.cc
6096 * src/filesystem/Makefile.in: Regenerate.
6097 * src/filesystem/cow-std-path.cc: Move to src/c++17/cow-fs_path.cc.
6098 * src/filesystem/std-path.cc: Move to src/c++17/fs_path.cc.
6099 * testsuite/27_io/filesystem/path/append/path.cc: Remove -lstdc++fs
6100 from dg-options and remove dg-require-filesystem-ts.
6101 * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
6102 * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
6103 * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
6104 * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
6105 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
6106 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
6107 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
6108 * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
6109 * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
6110 * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
6111 * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
6112 * testsuite/27_io/filesystem/path/construct/default.cc: Likewise.
6113 * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
6114 * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
6115 * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
6116 * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise.
6117 * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise.
6118 * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise.
6119 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise.
6120 * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise.
6121 * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
6123 * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise.
6124 * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise.
6125 * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
6126 * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise.
6127 * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise.
6128 * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise.
6129 * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise.
6130 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise.
6131 * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
6132 * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
6133 * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
6134 * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
6136 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
6138 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
6140 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
6142 * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
6143 * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
6144 * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
6145 * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise.
6146 * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
6147 * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise.
6148 * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise.
6149 * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise.
6150 * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise.
6151 * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
6153 * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise.
6154 * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise.
6155 * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
6156 * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise.
6157 * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
6160 * include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
6161 Check is_trivially_copyable instead of is_scalar.
6162 (variant::emplace<N, Args>(Args&&...)): If construction of the new
6163 contained value can throw and its type is trivially copyable then
6164 construct into a temporary variant and move from it, to provide the
6165 strong exception safety guarantee.
6166 (variant::emplace<N, U, Args>(initializer_list<U>, Args&&...)):
6168 * testsuite/20_util/variant/87431.cc: New test.
6169 * testsuite/20_util/variant/run.cc: Adjust test so that throwing
6170 conversion causes valueless state.
6173 * testsuite/17_intro/headers/c++1998/charset.cc: New test.
6174 * testsuite/17_intro/headers/c++2011/charset.cc: New test.
6175 * testsuite/17_intro/headers/c++2014/charset.cc: New test.
6176 * testsuite/17_intro/headers/c++2017/charset.cc: New test.
6177 * testsuite/17_intro/headers/c++2020/charset.cc: New test.
6179 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
6181 * include/bits/fs_fwd.h (__file_clock): Define new clock.
6182 (file_time_type): Redefine in terms of __file_clock.
6183 * src/filesystem/ops-common.h (file_time): Add FIXME comment about
6185 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
6187 (internal_file_lock): New helper type for accessing __file_clock.
6188 (do_copy_file): Use internal_file_lock to convert system time to
6190 (last_write_time(const path&, error_code&)): Likewise.
6191 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
6193 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
6195 * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make patterns less greedy
6196 for const member functions of std::basic_string.
6197 (GLIBCXX_3.4.26): Export member functions of std::basic_string added
6199 * include/bits/basic_string.h (basic_string(__sv_wrapper, const A&)):
6200 Make non-standard constructor private.
6201 [!_GLIBCXX_USE_CXX11_ABI] (basic_string(__sv_wrapper, const A&)):
6203 * include/bits/basic_string.tcc (std::string, std::wstring): Declare
6204 explicit instantiations for C++17 as well as earlier dialects.
6205 * src/c++17/Makefile.am: Add new source files.
6206 * src/c++17/Makefile.in: Regenerate.
6207 * src/c++17/cow-string-inst.cc: New file defining explicit
6208 instantiations for basic_string member functions added in C++17.
6209 * src/c++17/string-inst.cc: Likewise.
6211 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export allocator-extended
6212 copy/move constructors for old std::basic_string.
6213 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
6214 (basic_string::reference, basic_string::const_reference): Define
6215 as plain references for C++11 and later.
6216 (basic_string::basic_string()): Put constructor body outside
6217 preprocessor conditional groups.
6218 (basic_string::basic_string(basic_string&&)): Move _Alloc_hider
6219 instead of copying it.
6220 (basic_string::basic_string(const basic_string&, const _Alloc&)):
6222 (basic_string::basic_string(basic_string&&, const _Alloc&)):
6224 * include/bits/fs_path.h [!_GLIBCXX_USE_CXX11_ABI]: Remove special
6225 cases for old basic_string.
6226 * testsuite/21_strings/basic_string/cons/char/8.cc: Test
6227 allocator-extended constructors unconditionally. Add extra members to
6228 allocator type when using old string ABI.
6229 * testsuite/21_strings/basic_string/allocator/71964.cc: Enable test
6231 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
6233 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
6234 -fno-inline added to test flags.
6236 * testsuite/21_strings/basic_string/requirements/
6237 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
6239 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
6240 assertion failures with old std::string ABI.
6242 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
6244 (path::pop_back(), path::_M_erase_from(const_iterator)): New member
6245 functions that will only erase elements at the end.
6246 * src/filesystem/std-path.cc (path::_List::_Impl::pop_back()): Define.
6247 (path::_List::_Impl::_M_erase_from(const_iterator)): Define.
6248 (path::_List::operator=(const _List&)): Use _M_erase_from(p) instead
6250 (path::_List::pop_back()): Define.
6251 (path::_List::_M_erase_from(const_iterator)): Define.
6252 (path::operator/=(const path&)): Use pop_back to remove last component
6253 and _M_erase_from to remove multiple components.
6254 (path::_M_append(basic_string_view<value_type>)): Likewise.
6255 (path::operator+=(const path&)): Likewise.
6256 (path::_M_concat(basic_string_view<value_type>)): Likewise.
6257 (path::remove_filename()): Likewise.
6258 (path::lexically_normal()): Use _List::_Impl iterators instead of
6259 path::iterator. Use pop_back to remove components from the end. Clear
6260 trailing filename, instead of using erase(const_iterator) to remove
6261 a non-final component.
6262 * testsuite/27_io/filesystem/path/generation/normal.cc: Test
6264 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
6266 * src/filesystem/std-path.cc (path::operator+=(const path&)): Fix
6267 incorrect treatment of empty filename after trailing slash.
6268 * testsuite/27_io/filesystem/path/concat/path.cc: Test problem case.
6270 * testsuite/21_strings/basic_string/modifiers/assign/char/
6271 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
6273 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
6274 move_assign_optim.cc: Likewise.
6276 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6277 Jakub Jelinek <jakub@redhat.com>
6280 * include/experimental/memory: Replace UTF-8 quote characters.
6281 * include/std/future: Replace UTF-8 "em dash" characters.
6283 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6286 * include/bits/forward_list.h: Replace UTF-8 "ligature fi" character.
6287 * include/debug/forward_list: Likewise.
6288 * include/experimental/bits/shared_ptr.h: Remove UTF-8 "section sign"
6290 * include/experimental/chrono: Likewise.
6291 * include/experimental/functional: Likewise.
6292 * include/experimental/ratio: Likewise.
6293 * include/experimental/system_error: Likewise.
6294 * include/experimental/tuple: Likewise.
6295 * include/experimental/type_traits: Likewise.
6296 * include/parallel/workstealing.h: Replace UTF-8 "en dash" character.
6297 * include/parallel/multiseq_selection.h: Likewise.
6300 * config/abi/pre/gnu.ver: Add missing exports.
6301 * testsuite/22_locale/collate_byname/88681.cc: New test.
6302 * testsuite/22_locale/time_get/get/char/88681.cc: New test.
6303 * testsuite/22_locale/time_get/get/wchar_t/88681.cc: New test.
6305 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
6307 * testsuite/23_containers/map/cons/deduction.cc: Test deduction from
6308 initializer_list<value_type> and from input iterator ranges.
6309 * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
6311 * testsuite/experimental/string_view/element_access/char/empty.cc:
6312 Fix year range in copyright header.
6314 2019-01-02 Joel Brobecker <brobecker@adacore.com>
6316 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
6317 Fix year range in copyright header.
6319 2019-01-01 Jakub Jelinek <jakub@redhat.com>
6321 Update copyright years.
6323 Copyright (C) 2019 Free Software Foundation, Inc.
6325 Copying and distribution of this file, with or without modification,
6326 are permitted in any medium without royalty provided the copyright
6327 notice and this notice are preserved.