Fix some missing/incorrect feature test macros
[gcc.git] / libstdc++-v3 / ChangeLog
1 2019-10-30 Jonathan Wakely <jwakely@redhat.com>
2
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.
10
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
17 macros.
18 * include/ext/rc_string_base.h: Qualify iterator_traits.
19 * include/ext/sso_string_base.h: Qualify iterator_traits.
20
21 PR libstdc++/92272
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
31 for C++20.
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:
42 New test.
43 * testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc:
44 New test.
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
50 test.
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: ...
56 here.
57
58 * testsuite/util/testsuite_iterators.h: Fix typo in __cplusplus check.
59
60 2019-10-29 Jonathan Wakely <jwakely@redhat.com>
61
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.
69
70 * include/bits/alloc_traits.h (__cpp_lib_constexpr_dynamic_alloc):
71 Define.
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.
76
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
117 namespace.
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
121 test.
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
134 concepts.
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.
156
157 * testsuite/util/testsuite_iterators.h (BoundsContainer::size()): Add
158 new member function.
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().
163
164 PR libstdc++/92267
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.
168
169 2019-10-26 Gerald Pfeifer <gerald@pfeifer.com>
170
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.
174
175 2019-10-26 John David Anglin <danglin@gcc.gnu.org>
176
177 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
178
179 2019-10-25 Jonathan Wakely <jwakely@redhat.com>
180
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.
188
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.
192
193 * include/bits/range_cmp.h: Check __cpp_lib_concepts before defining
194 concepts. Fix comment.
195 * include/bits/allocator.h
196
197 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
198
199 * doc/xml/manual/policy_data_structures_biblio.xml: Switch
200 pubs.opengroup.org to https.
201
202 2019-10-25 Gerald Pfeifer <gerald@pfeifer.com>
203
204 * doc/xml/gnu/gpl-3.0.xml: Switch www.gnu.org to https.
205
206 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
207
208 * doc/xml/manual/status_cxx2020.xml: Add rows and update status.
209
210 2019-10-24 Jonathan Wakely <jwakely@redhat.com>
211
212 * include/bits/allocator.h (allocator<void>): Restore the explicit
213 specialization for C++20, but make its API consistent with the primary
214 template.
215 (allocator::~allocator()): Restore the destructor for C++20, but make
216 it constexpr.
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.
224
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
228 std::allocator.
229
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.
235
236 * include/bits/random.h (uniform_random_bit_generator): Define for
237 C++20.
238 * testsuite/26_numerics/random/concept.cc: New test.
239 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
240
241 2019-10-23 Jonathan Wakely <jwakely@redhat.com>
242
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.
246
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
259 specifier.
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
268 destroying arrays.
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
272 constant evaluation.
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
276 specifier for C++20.
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
289 constexpr specifier.
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
299 static_assert.
300 * testsuite/23_containers/vector/cons/destructible_neg.cc: Likewise.
301
302 * testsuite/20_util/bind/91371.cc: Fix test to compile as C++11.
303
304 * include/debug/helper_functions.h (__valid_range): Change
305 _GLIBCXX_CONSTEXPR to _GLIBCXX14_CONSTEXPR.
306
307 * include/ext/throw_allocator.h (throw_allocator_base): Qualify
308 size_t and ptrdiff_t.
309
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:
313 Likewise.
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:
319 Likewise.
320 * include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp:
321 Likewise.
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:
332 Likewise.
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:
348 Likewise.
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.
363
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
367 taking a hint.
368 * include/ext/extptr_allocator.h (_ExtPtr_allocator::allocate): Ignore
369 hint.
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:
382 Likewise.
383
384 2019-10-22 Jonathan Wakely <jwakely@redhat.com>
385
386 * testsuite/util/testsuite_abi.h: Restore use of tr1/unordered_map
387 when compiled as C++98.
388
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.
391
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
408 rebind allocator.
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
416 define for C++20.
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
423 define for C++20.
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
431 allocator.
432 * include/ext/sso_string_base.h (__sso_string_base::_M_max_size):
433 Use __alloc_traits.
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
443 C++20.
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
455 test for C++20.
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.
462
463 2019-10-22 Andreas Schwab <schwab@suse.de>
464
465 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
466
467 2019-10-18 Jonathan Wakely <jwakely@redhat.com>
468
469 PR libstdc++/92143
470 * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment
471 to at least sizeof(void*).
472
473 * include/bits/range_cmp.h (ranges::less::operator()): Inline the
474 logic from std::less::operator() to remove the dependency on it.
475
476 2019-10-17 Jonathan Wakely <jwakely@redhat.com>
477
478 * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
479
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
488 test.
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
492 test.
493
494 PR libstdc++/92124
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)):
499 Likewise.
500 * include/bits/stl_list.h (_M_move_assign(list&&, false_type)):
501 Likewise.
502 * include/bits/stl_vector.h (_M_move_assign(vector&&, false_type)):
503 Likewise.
504 * testsuite/23_containers/vector/92124.cc: New test.
505
506 2019-10-16 Jonathan Wakely <jwakely@redhat.com>
507
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
514 specialization.
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.
517
518 2019-10-16 François Dumont <fdumont@gcc.gnu.org>
519
520 * src/c++11/debug.cc (print_field): Replace constness_names <unknown>
521 entry with <unknown constness>. Replace state_names <unknown> entry with
522 <unknown state>.
523
524 2019-10-11 Jonathan Wakely <jwakely@redhat.com>
525
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
532 directory.
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
536 test.
537 * testsuite/std/concepts/concepts.callable/relation.cc: New test.
538 * testsuite/std/concepts/concepts.callable/strictweakorder.cc: New
539 test.
540 * testsuite/std/concepts/concepts.lang/concept.arithmetic/
541 floating_point.cc: New test.
542 * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
543 New test.
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
549 test.
550 * testsuite/std/concepts/concepts.lang/concept.common/1.cc: New test.
551 * testsuite/std/concepts/concepts.lang/concept.commonref/1.cc: New
552 test.
553 * testsuite/std/concepts/concepts.lang/concept.constructible/1.cc:
554 New test.
555 * testsuite/std/concepts/concepts.lang/concept.convertible/1.cc:
556 New test.
557 * testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc:
558 New test.
559 * testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
560 1.cc: New test.
561 * testsuite/std/concepts/concepts.lang/concept.derived/1.cc:
562 New test.
563 * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
564 New test.
565 * testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc:
566 New test.
567 * testsuite/std/concepts/concepts.lang/concept.same/1.cc:
568 New test.
569 * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
570 New test.
571 * testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
572 New test.
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.
579
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
583 is_same trait.
584
585 PR libstdc++/92059
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
590 shifts.
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
599 defaulted.
600 (dynamic_bitset(dynamic_bitset&&)): Clear source object after move.
601 (dynamic_bitset::operator=(const dynamic_bitset&)): Define as
602 defaulted.
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.
620
621 * include/bits/charconv.h (__to_chars_len): Avoid -Wsign-compare
622 warnings.
623
624 2019-10-10 Jonathan Wakely <jwakely@redhat.com>
625
626 PR libstdc++/91057
627 * src/c++98/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]
628 (find_ldbl_sync_facet): Fix parameter type and missing return.
629
630 2019-10-09 Marek Polacek <polacek@redhat.com>
631
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.
637
638 2019-10-09 Jonathan Wakely <jwakely@redhat.com>
639
640 PR libstdc++/91057
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.
647
648 PR libstdc++/78552
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.
652
653 2019-10-08 Jonathan Wakely <jwakely@redhat.com>
654
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.
660
661 * doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
662 * doc/html/*: Regenerate.
663
664 2019-10-06 François Dumont <fdumont@gcc.gnu.org>
665
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
670 latter.
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.
677
678 * include/bits/stl_iterator_base_types.h (__iterator_category_t): Define
679 for C++11.
680 (_RequireInputIte): Likewise and use __enable_if_t.
681 * include/std/numeric
682 (__is_random_access_iter): Use __iterator_category_t.
683
684 * include/bits/stl_algo.h (copy_n): Add __glibcxx_requires_can_increment
685 debug checks.
686 * testsuite/25_algorithms/copy_n/debug/1_neg.cc: New.
687 * testsuite/25_algorithms/copy_n/debug/2_neg.cc: New.
688
689 2019-10-04 François Dumont <fdumont@gcc.gnu.org>
690
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):
695 Likewise.
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.
703
704 2019-10-04 Jonathan Wakely <jwakely@redhat.com>
705
706 PR libstdc++/81091
707 PR libstdc++/91947
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.
721
722 * testsuite/util/testsuite_abi.h: Use std::unordered_map instead of
723 std::tr1::unordered_map.
724 * testsuite/util/testsuite_allocator.h: Likewise.
725
726 * include/tr1/hashtable.h: Add header for __gnu_cxx::__alloc_traits.
727
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.
731
732 * include/precompiled/stdc++.h: Include <span> for C++20.
733 * testsuite/17_intro/names.cc: Do not define 'e' for C++20.
734
735 2019-10-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
736
737 * include/parallel/multiway_merge.h (_RAIter3): Replace _C by _Cp.
738
739 2019-10-02 Jonathan Wakely <jwakely@redhat.com>
740
741 * config/abi/pre/gnu.ver: Tighten up greedy wildcards.
742
743 * doc/xml/manual/parallel_mode.xml: Add caveat about support for
744 recent standards.
745 * doc/html/*: Regenerate.
746
747 2019-10-01 Jonathan Wakely <jwakely@redhat.com>
748
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.
753
754 * include/parallel/algobase.h (equal, lexicographical_compare): Add
755 _GLIBCXX20_CONSTEXPR and dispatch to sequential algorithm when being
756 constant evaluated.
757 * include/parallel/algorithmfwd.h (equal, lexicographical_compare):
758 Add _GLIBCXX20_CONSTEXPR.
759
760 * testsuite/17_intro/using_namespace_std_tr1_neg.cc: Skip test for
761 parallel mode.
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:
771 Likewise.
772 * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
773 Likewise.
774 * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
775 Likewise.
776 * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
777 Likewise.
778 * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
779 Likewise.
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.
787
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.
793
794 2019-09-30 François Dumont <fdumont@gcc.gnu.org>
795
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.
801
802 2019-09-30 Andreas Tobler <andreast@gcc.gnu.org>
803
804 * include/experimental/internet: Include netinet/in.h if we have
805 _GLIBCXX_HAVE_NETINET_IN_H defined.
806
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.
828
829 2019-09-30 Jonathan Wakely <jwakely@redhat.com>
830
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.
837
838 PR libstdc++/77936
839 * include/parallel/checkers.h (__is_sorted): Remove unused variable.
840
841 2019-09-28 François Dumont <fdumont@gcc.gnu.org>
842
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,
857 use latter.
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
866 std::less.
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.
870
871 2019-09-27 Maciej W. Rozycki <macro@wdc.com>
872
873 * configure: Regenerate.
874
875 2019-09-27 Jonathan Wakely <jwakely@redhat.com>
876
877 PR libstdc++/91910
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.
882
883 2019-09-26 Jonathan Wakely <jwakely@redhat.com>
884
885 * include/debug/array (to_array): Define for debug mode.
886
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.
894
895 * include/experimental/internet (operator==, operator<): Fix loop
896 condition to avoid reading past the end of the array.
897
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.
910
911 2019-09-25 Jonathan Wakely <jwakely@redhat.com>
912
913 * include/bits/regex.h
914 (basic_regex::assign(const C*, size_t, flag_type)): Add default
915 argument (LWG 3296).
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.
918
919 2019-09-24 Jonathan Wakely <jwakely@redhat.com>
920
921 * include/std/variant (variant::index()): Remove impossible case.
922
923 PR libstdc++/91871
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.
928
929 2019-09-23 Jonathan Wakely <jwakely@redhat.com>
930
931 PR libstdc++/91788 (partial)
932 * include/std/variant (variant::index()): Improve codegen for cases
933 where conversion to size_t already works correctly.
934
935 2019-09-23 Andreas Schwab <schwab@suse.de>
936
937 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
938
939 2019-09-12 Jonathan Wakely <jwakely@redhat.com>
940
941 PR libstdc++/91748
942 * include/bits/stl_algo.h (for_each_n): Fix random access iterator
943 case.
944 * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random
945 access iterators.
946
947 2019-09-11 Jonathan Wakely <jwakely@redhat.com>
948
949 * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__):
950 Fix syntax error.
951
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
955 for C++2a and up.
956
957 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
958
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
962 for C++20.
963 * testsuite/20_util/common_reference/requirements/alias_decl.cc: New
964 test.
965 * testsuite/20_util/common_reference/requirements/
966 explicit_instantiation.cc: New test.
967 * testsuite/20_util/common_reference/requirements/typedefs.cc: New
968 test.
969
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.
976
977 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
978
979 * acinclude.m4: Handle uclinux*.
980 * configure: Regenerate.
981 * configure.host: Handle uclinux*
982
983 2019-09-10 Christophe Lyon <christophe.lyon@st.com>
984 Mickaël Guêné <mickael.guene@st.com>
985
986 * libsupc++/eh_personality.cc (get_ttype_entry): Add FDPIC
987 support.
988
989 2019-09-10 Jonathan Wakely <jwakely@redhat.com>
990
991 PR libstdc++/91711
992 * testsuite/23_containers/span/get_neg.cc: Avoid ambiguity due to
993 0ul being a valid null pointer constant.
994
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
1004 __decay_t.
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.
1009
1010 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
1011
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.
1078
1079 2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net>
1080
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.
1085
1086 2019-09-09 Antony Polukhin <antoshkka@gmail.com>
1087
1088 * include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
1089 final offsets with constants.
1090
1091 2019-09-09 Jonathan Wakely <jwakely@redhat.com>
1092
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
1099 specializations.
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>
1108 and <iterator>.
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
1112 SFINAE constraints.
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.
1124
1125 2019-09-06 Jonathan Wakely <jwakely@redhat.com>
1126
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.
1131
1132 2019-09-06 Florian Weimer <fweimer@redhat.com>
1133
1134 * configure: Regenerate.
1135
1136 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
1137
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
1142 constructor.
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.
1174
1175 2019-09-05 JeanHeyd Meneide <phdofthehouse@gmail.com>
1176
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.
1196
1197 2019-09-05 Jonathan Wakely <jwakely@redhat.com>
1198
1199 * doc/xml/manual/allocator.xml: Remove URL for bibliography entry.
1200 * doc/html/*: Regenerate.
1201
1202 2019-09-04 Mike Crowe <mac@mcrowe.com>
1203
1204 PR libstdc++/41861
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
1214 overload.
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.
1221
1222 2019-09-04 Mike Crowe <mac@mcrowe.com>
1223
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.
1229
1230 2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
1231
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.
1240
1241 2019-09-03 Chung-Lin Tang <cltang@codesourcery.com>
1242
1243 PR other/79543
1244 * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld --version
1245 scanning to conform to the GNU Coding Standards.
1246 * configure: Regenerate.
1247
1248 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1249
1250 * src/c++17/memory_resource.cc: Use __constinit keyword.
1251
1252 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1253
1254 * doc/xml/manual/abi.xml: Document 9.x library versions.
1255 * doc/html/*: Regenerate.
1256
1257 2019-09-02 Jonathan Wakely <jwakely@redhat.com>
1258
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
1263 CHAR_BIT.
1264
1265 2019-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1266
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:
1271 Likewise.
1272
1273 2019-09-01 François Dumont <fdumont@gcc.gnu.org>
1274
1275 * testsuite_files/util/testsuite_performance.h
1276 (resource_counter::start): Ignore unused malloc(0) result.
1277
1278 2019-09-01 Gerald Pfeifer <gerald@pfeifer.com>
1279
1280 * doc/xml/manual/policy_data_structures_biblio.xml (COM: Component
1281 Model Object Technologies): Adjust name and link.
1282
1283 2019-08-30 Antony Polukhin <antoshkka@gmail.com>
1284
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'.
1294
1295 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1296
1297 * testsuite/23_containers/vector/cons/89164_c++17.cc: Fix errors.
1298
1299 2019-08-30 Uros Bizjak <ubizjak@gmail.com>
1300
1301 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1302
1303 2019-08-30 Jonathan Wakely <jwakely@redhat.com>
1304
1305 PR libstdc++/89164
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:
1314 New test.
1315 * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/
1316 89164.cc: New test.
1317 * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
1318 New test.
1319 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/
1320 89164.cc: New test.
1321 * testsuite/23_containers/vector/cons/89164.cc: New test.
1322 * testsuite/23_containers/vector/cons/89164_c++17.cc: New test.
1323
1324 2019-08-29 Jonathan Wakely <jwakely@redhat.com>
1325
1326 PR libstdc++/91067
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
1330 missing symbols.
1331 * testsuite/27_io/filesystem/iterators/91067.cc: Test move
1332 constructors.
1333 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1334
1335 2019-08-29 Jakub Jelinek <jakub@redhat.com>
1336
1337 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1338 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1339
1340 2019-08-28 Jonathan Wakely <jwakely@redhat.com>
1341
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.
1349
1350 2019-08-23 Joseph Myers <joseph@codesourcery.com>
1351
1352 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
1353 (std::filesystem::__gnu_posix::lstat): Add return type.
1354
1355 2019-08-20 Jonathan Wakely <jwakely@redhat.com>
1356
1357 * doc/doxygen/user.cfg.in (INPUT): Remove profile mode headers.
1358
1359 * include/std/numeric (reduce): Fix Doxygen markup.
1360
1361 PR libstdc++/91371
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.
1370
1371 2019-08-16 Uros Bizjak <ubizjak@gmail.com>
1372
1373 * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update.
1374
1375 2019-08-15 Jonathan Wakely <jwakely@redhat.com>
1376
1377 PR libstdc++/91456
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.
1387
1388 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
1389
1390 * include/std/type_traits (__is_nullptr_t): Add deprecated attribute.
1391
1392 2019-08-14 Edward Smith-Rowland <3dw4rd@verizon.net>
1393
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):
1397 New macro.
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):
1413 Add constexpr.
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.
1432
1433 2019-08-12 Jonathan Wakely <jwakely@redhat.com>
1434
1435 PR libstdc++/90361
1436 * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
1437
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.
1443
1444 2019-08-09 Corentin Gay <gay@adacore.com>
1445
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`.
1452
1453 2019-08-09 Alexandre Oliva <oliva@adacore.com>
1454
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.
1462
1463 2019-08-08 Jonathan Wakely <jwakely@redhat.com>
1464
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.
1474
1475 2019-08-06 Jonathan Wakely <jwakely@redhat.com>
1476
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
1481 feature test macro.
1482 * testsuite/20_util/function_objects/bind_front/2.cc: New test.
1483
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.
1489
1490 2019-08-04 Gerald Pfeifer <gerald@pfeifer.com>
1491
1492 * doc/xml/manual/documentation_hacking.xml: doxygen.org is now
1493 doxygen.nl.
1494
1495 2019-08-01 Edward Smith-Rowland <3dw4rd@verizon.net>
1496
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):
1511 Mark constexpr.
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
1542 respectively;
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.
1618
1619 2019-07-31 Jonathan Wakely <jwakely@redhat.com>
1620
1621 * include/std/memory (make_obj_using_allocator): Qualify call to
1622 uses_allocator_construction_args.
1623
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.
1634
1635 * include/std/bit: Add Doxygen comments.
1636
1637 PR libstdc++/91308
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.
1644
1645 2019-07-29 Jonathan Wakely <jwakely@redhat.com>
1646
1647 PR libstdc++/51333
1648 * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define
1649 constructor inline.
1650 * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define
1651 constructor.
1652 * testsuite/18_support/51333.cc: New test.
1653
1654 2019-07-28 Gerald Pfeifer <gerald@pfeifer.com>
1655
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.
1659
1660 2019-07-26 Jonathan Wakely <jwakely@redhat.com>
1661
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.
1667
1668 2019-07-26 François Dumont <fdumont@gcc.gnu.org>
1669
1670 * testsuite/util/testsuite_iterators.h
1671 (bidirectional_iterator_wrapper): Fix type comment.
1672 (random_access_iterator_wrapper): Likewise.
1673
1674 2019-07-25 Jonathan Wakely <jwakely@redhat.com>
1675
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.
1680
1681 2019-07-25 Martin Liska <mliska@suse.cz>
1682 Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
1683
1684 PR c++/23383
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.
1690
1691 2019-07-22 Jonathan Wakely <jwakely@redhat.com>
1692
1693 * testsuite/26_numerics/bit/bitops.count/*: Rename to ...
1694 * testsuite/26_numerics/bit/bit.count/*: Here.
1695
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
1702 shifts.
1703 * testsuite/26_numerics/bit/bitops.rot/rotr.cc: Rename to ...
1704 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Here. Test negative
1705 shifts.
1706
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
1713 expressions.
1714 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: New test.
1715
1716 2019-07-19 François Dumont <fdumont@gcc.gnu.org>
1717
1718 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): Fix
1719 sized deallocation size computation.
1720
1721 2019-07-19 Andreas Schwab <schwab@linux-m68k.org>
1722
1723 * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
1724
1725 2019-07-18 François Dumont <fdumont@gcc.gnu.org>
1726
1727 * include/bits/stl_tempbuf.h (__detail::__return_temporary_buffer): New.
1728 (~_Temporary_buffer()): Use latter.
1729 (_Temporary_buffer(_FIterator, size_type)): Likewise.
1730
1731 2019-07-17 Andreas Schwab <schwab@suse.de>
1732
1733 * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
1734
1735 2019-07-16 Jason Merrill <jason@redhat.com>
1736
1737 * include/std/memory (uses_allocator_construction_args): Add parens
1738 around constraint.
1739
1740 2019-07-12 Jonathan Wakely <jwakely@redhat.com>
1741
1742 * testsuite/29_atomics/atomic_float/1.cc: Fix comment.
1743
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.
1751
1752 * doc/xml/manual/status_cxx2020.xml: Update status for atomic_ref
1753 and floating point atomics.
1754
1755 2019-07-11 Jonathan Wakely <jwakely@redhat.com>
1756
1757 * doc/xml/manual/configure.xml: Improve documentation of
1758 --enable-libstdcxx-time option.
1759
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
1763 classes.
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.
1778
1779 2019-07-06 Jonathan Wakely <jwakely@redhat.com>
1780
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.
1784
1785 2019-07-05 Jonathan Wakely <jwakely@redhat.com>
1786
1787 * include/ext/atomicity.h [_GLIBCXX_ATOMIC_BUILTINS] (__atomic_add)
1788 (__exchange_and_add): Replace static specifier with always_inline
1789 attribute.
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.
1793
1794 2019-07-03 Jonathan Wakely <jwakely@redhat.com>
1795
1796 PR libstdc++/91067
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
1800 missing symbols.
1801 * testsuite/27_io/filesystem/iterators/91067.cc: New test.
1802 * testsuite/util/testsuite_abi.cc: Add new symbol version.
1803
1804 2019-07-02 Jonathan Wakely <jwakely@redhat.com>
1805
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.
1809
1810 2019-07-02 Jim Wilson <jimw@sifive.com>
1811
1812 * configure.ac (BUILD_PDF): Also test for doxygen, dot, xsltproc,
1813 and xmllint.
1814 * configure: Regenerate.
1815
1816 2019-06-27 Jonathan Wakely <jwakely@redhat.com>
1817
1818 PR libstdc++/91012
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().
1825
1826 2019-06-26 Jonathan Wakely <jwakely@redhat.com>
1827
1828 * include/std/charconv (chars_format): Define bitmask type.
1829 * testsuite/20_util/to_chars/chars_format.cc: New test.
1830
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
1845 std::byte overload.
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.
1856
1857 2019-06-25 Jonathan Wakely <jwakely@redhat.com>
1858
1859 * include/std/numeric (midpoint(T, T)): Avoid std::abs in constexpr
1860 function.
1861
1862 2019-06-25 Jakub Jelinek <jakub@redhat.com>
1863
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+.
1868
1869 2019-06-24 Jonathan Wakely <jwakely@redhat.com>
1870
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.
1877
1878 * testsuite/18_support/headers/cfloat/values_c++17.cc: New test.
1879
1880 2019-06-20 Jonathan Wakely <jwakely@redhat.com>
1881
1882 * acinclude.m4 (GLIBCXX_ENABLE_DEBUG): Only do debug build for final
1883 stage of bootstrap.
1884 * configure: Regenerate.
1885
1886 * include/std/variant (_Variant_storage, _Extra_visit_slot_needed):
1887 Qualify calls to __never_valueless.
1888
1889 * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to
1890 C++17 working draft.
1891
1892 * testsuite/libstdc++-prettyprinters/simple.cc: Use non-palindromic
1893 vector<bool> for test.
1894 * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1895
1896 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1897
1898 * include/bits/stream_iterator.h (istream_iterator::_M_equal()): Make
1899 private.
1900 (istream_iterator::_M_read()): Do not check stream state before
1901 attempting extraction. Set stream pointer to null when extraction
1902 fails (P0738R2).
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&)):
1906 Likewise.
1907 (ostream_iterator::ostream_iterator()): Add default constructor.
1908 (ostream_iterator::ostream_iterator(ostream_type*, const C*)): Use
1909 addressof.
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:
1915 New test.
1916
1917 2019-06-19 Michael Weghorn <m.weghorn@posteo.de>
1918 Jonathan Wakely <jwakely@redhat.com>
1919
1920 PR libstdc++/90945
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.
1925
1926 2019-06-19 Jonathan Wakely <jwakely@redhat.com>
1927
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.
1932
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.
1937
1938 2019-06-18 Jonathan Wakely <jwakely@redhat.com>
1939
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
1942 P0024R2.
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
1955 member function.
1956
1957 * include/c_global/cstddef (std::byte): Perform arithmetic operations
1958 in unsigned int to avoid promotion (LWG 2950).
1959
1960 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
1961
1962 * testsuite/20_util/allocator/1.cc: Add sized delete, which fixes a
1963 failure on AIX.
1964
1965 * include/c_global/cmath (__lerp, lerp): Add noexcept (LWG 3201).
1966
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
1971 error.
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
1975 overloads.
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
1989 allocators.
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
1993 runtime conditions.
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
2018 plane.
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
2025 multilingual plane.
2026
2027 2019-06-17 François Dumont <fdumont@gcc.gnu.org>
2028 Jonathan Wakely <jwakely@redhat.com>
2029
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
2041 _Scoped_node.
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.
2045
2046 2019-06-17 Jonathan Wakely <jwakely@redhat.com>
2047
2048 * testsuite/20_util/bad_function_call/what.cc: Include <string> header
2049 for std::string.
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:
2056 Likewise.
2057 * testsuite/23_containers/deque/cons/55977.cc: Include <istream> for
2058 std::istream.
2059 * testsuite/23_containers/vector/cons/55977.cc: Likewise.
2060 * testsuite/experimental/map/erasure.cc: Include <string> for
2061 std::string.
2062 * testsuite/experimental/unordered_map/erasure.cc: Likewise.
2063
2064 2019-06-14 Jonathan Wakely <jwakely@redhat.com>
2065
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.
2070
2071 * include/std/version (__cpp_lib_bind_front): Add missing macro.
2072
2073 2019-06-12 Jonathan Wakely <jwakely@redhat.com>
2074
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.
2079
2080 * include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
2081 (variant::emplace): Change static_assert messages from "should be"
2082 to "must be".
2083 (hash<monostate>::operator()): Remove name of unused parameter.
2084
2085 * include/std/mutex (scoped_lock::~scoped_lock()): Use fold
2086 expression.
2087
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.
2109
2110 2019-06-09 Edward Smith-Rowland <3dw4rd@verizon.net>
2111
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:
2116 Ditto.
2117
2118 2019-06-08 Edward Smith-Rowland <3dw4rd@verizon.net>
2119
2120 Test for C++20 p0858 - ConstexprIterator requirements.
2121 * testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc:
2122 New test.
2123 * testsuite/23_containers/array/requirements/constexpr_iter.cc:
2124 New test.
2125
2126 2019-06-07 Thomas Rodgers <trodgers@redhat.com>
2127
2128 Rename PSTL macro's consistent with libstdc++ (and llvm upstream
2129 project) standards.
2130 * include/bits/c++config: Rename all macros of the form __PSTL* to
2131 _PSTL*.
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:
2160 Likewise.
2161 * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
2162 Likewise.
2163 * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
2164 Likewise.
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:
2170 Likewise.
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:
2176 Likewise.
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:
2182 Likewise.
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:
2186 Likewise.
2187 * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
2188 Likewise.
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:
2192 Likewise.
2193 * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
2194 Likewise.
2195 * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
2196 Likewise.
2197 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
2198 Likewise.
2199 * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
2200 Likewise.
2201 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
2202 Likewise.
2203 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
2204 Likewise.
2205 * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
2206 Likewise.
2207 * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
2208 Likewise.
2209 * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
2210 Likewise.
2211 * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
2212 Likewise.
2213 * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise.
2214
2215 Rename header guards to be consistent with upstream project's
2216 conventions.
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.
2240
2241 Synchronize libstdc++ parallel algorithms with upstream
2242 project.
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.
2259
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.
2266
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
2272
2273 2019-06-07 Jonathan Wakely <jwakely@redhat.com>
2274
2275 * testsuite/24_iterators/container_access.cc: Move dg-options before
2276 dg-do directive so the target check uses the -std option.
2277
2278 PR libstdc++/90770
2279 * configure: Regenerate.
2280 * src/Makefile.am (stamp-debug): Also test for missing makefile.
2281 * src/Makefile.in: Regenerate.
2282
2283 2019-06-06 Jonathan Wakely <jwakely@redhat.com>
2284
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>
2289 for std::isalnum.
2290 * testsuite/20_util/tuple/cons/deduction.cc: Include <memory> for
2291 std::allocator.
2292 * testsuite/23_containers/map/erasure.cc: Include <string>.
2293 * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2294
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:
2298 Likewise.
2299 * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc:
2300 Likewise.
2301 * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
2302 Likewise.
2303 * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
2304 Likewise.
2305 * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
2306 Likewise.
2307 * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
2308 Likewise.
2309 * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
2310 Likewise.
2311 * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
2312 Likewise.
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:
2318 Likewise.
2319 * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98.
2320
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.
2325
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
2336 for C++2a.
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
2373 for C++2a.
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
2378 for C++2a.
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
2383 for C++2a.
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
2388 for C++2a.
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/
2394 3.cc: Likewise.
2395
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
2399 from builtin only.
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
2405 from builtin only.
2406
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
2410 void.
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.
2417
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):
2428 New SFINAE helpers.
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
2437 constraints.
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.
2442
2443 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2444
2445 * include/bits/stl_map.h (map): Disable static assert for C++98 mode.
2446 * include/bits/stl_multimap.h (multimap): Likewise.
2447
2448 2019-06-03 François Dumont <fdumont@gcc.gnu.org>
2449
2450 Rename variables and cleanup comments.
2451 * include/bits/hashtable_policy.h
2452 * include/bits/hashtable.h
2453
2454 2019-06-03 Jonathan Wakely <jwakely@redhat.com>
2455
2456 * doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
2457 Fix bgcolor for P0340R3.
2458 * doc/html/*: Regenerate.
2459
2460 PR libstdc++/90686
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.
2466
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.
2490
2491 2019-05-31 Gerald Pfeifer <gerald@pfeifer.com>
2492
2493 * doc/xml/manual/allocator.xml: Move hoard.org back to http.
2494
2495 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2496
2497 * include/std/tuple (tuple<>): Add noexcept to allocator-extended
2498 constructors.
2499 (tuple<T1, T2>::__nothrow_default_constructible()): New helper
2500 function.
2501 (tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.
2502
2503 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2504
2505 * src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.
2506
2507 PR libstdc++/90682
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.
2517
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):
2526 Likewise.
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):
2537 Likewise.
2538 * include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
2539 (allocator, __true_type, __false_type): Likewise.
2540
2541 2019-05-31 Antony Polukhin <antoshkka@gmail.com>
2542
2543 PR libstdc++/71579
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
2565 traits.
2566 * testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
2567 * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
2568 test.
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
2576 test.
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.
2583
2584 2019-05-31 Jonathan Wakely <jwakely@redhat.com>
2585
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)):
2592 Define.
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.
2599
2600 2019-05-30 Nina Dinka Ranns <dinka.ranns@gmail.com>
2601
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.
2608
2609 2019-05-30 Jonathan Wakely <jwakely@redhat.com>
2610
2611 * doc/xml/manual/diagnostics.xml: Update list of headers that define
2612 exception classes.
2613 * doc/xml/manual/support.xml: Rewrite advice around NULL. Rewrite
2614 section about new/delete overloads. Improve section on verbose
2615 terminate handler.
2616 * doc/html/*: Regenerate.
2617
2618 * doc/xml/manual/status_cxx2020.xml: Add feature-test macro for
2619 P0811R3. Change status of P1353R0.
2620 * doc/html/*: Regenerate.
2621
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.
2628
2629 2019-05-29 Jonathan Wakely <jwakely@redhat.com>
2630
2631 PR libstdc++/85494
2632 * testsuite/26_numerics/random/random_device/cons/token.cc: Fix test
2633 that fails on mingw-w64.
2634
2635 PR libstdc++/88881
2636 * src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
2637 (status(const path&, error_code&)): Use parent_path() to remove
2638 trailing slash.
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.
2645
2646 * src/c++17/fs_path.cc (path::parent_path()): Create whole path at
2647 once instead of building it iteratively.
2648
2649 * testsuite/util/testsuite_api.h: Remove names of unused parameters.
2650
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
2688 instead of fileno.
2689 [!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
2690 * testsuite/26_numerics/random/random_device/85494.cc: New test.
2691
2692 2019-05-28 Jonathan Wakely <jwakely@redhat.com>
2693
2694 PR libstdc++/90634
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
2700 only one component.
2701 * testsuite/27_io/filesystem/path/construct/90634.cc: New test.
2702 * testsuite/experimental/filesystem/path/construct/90634.cc: New test.
2703
2704 * testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
2705 form of std::equals for C++11 compatibility.
2706
2707 2019-05-26 Gerald Pfeifer <gerald@pfeifer.com>
2708
2709 * doc/xml/manual/appendix_contributing.xml: Update pointer to
2710 C++ standard at ansi.org.
2711
2712 2019-05-24 Jonathan Wakely <jwakely@redhat.com>
2713
2714 * include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
2715 * testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
2716 to "run".
2717
2718 * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
2719 * testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
2720
2721 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2722
2723 * testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
2724 tests to ...
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".
2728
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
2743 values.
2744
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
2754 C++11 and C++14.
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.
2758
2759 2019-05-23 Hans-Peter Nilsson <hp@axis.com>
2760
2761 * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
2762 Don't run the libstdc++/83237 part on simulator targets.
2763
2764 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
2765
2766 * doc/xml/manual/status_cxx2017.xml: Add feature test macro for
2767 P0040R3.
2768 * doc/html/*: Regenerate.
2769
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.
2773
2774 PR libstdc++/90220
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
2782 and array types.
2783
2784 2019-05-22 Jonathan Wakely <jwakely@redhat.com>
2785
2786 PR libstdc++/90557
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.
2793
2794 PR libstdc++/77691
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.
2809
2810 2019-05-21 Thomas Rodgers <trodgers@redhat.com>
2811
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.
2815
2816 2019-05-21 Jonathan Wakely <jwakely@redhat.com>
2817
2818 PR libstdc++/90252
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.
2822
2823 * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants.
2824
2825 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2826
2827 PR libstdc++/90252
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.
2831
2832 2019-05-20 Thomas Rodgers <trodgers@redhat.com>
2833
2834 * testsuite/lib/libstdc++.exp (check_effective_target_tbb-backend):
2835 Add check for Thread Building Blocks 2018 or later.
2836
2837 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2838
2839 * testsuite/experimental/names.cc: Only include Networking TS headers
2840 on targets with the necessary Gthreads support.
2841
2842 2019-05-20 Marek Polacek <polacek@redhat.com>
2843
2844 CWG 2094 - volatile scalars are trivially copyable.
2845 PR c++/85679
2846 * testsuite/20_util/is_trivially_copyable/value.cc: Change the expected
2847 result for volatile int.
2848
2849 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2850
2851 * testsuite/17_intro/names.cc: Do not check 'ptr' on Solaris.
2852 * testsuite/experimental/names.cc: Include <experimental/filesystem>
2853 conditionally.
2854
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):
2858 Remove.
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:
2864 Likewise.
2865
2866 2019-05-20 Pádraig Brady <pbrady@fb.com>
2867
2868 * libstdc++-v3/include/ext/new_allocator.h (deallocate): Pass the size
2869 to the deallocator with -fsized-deallocation.
2870
2871 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
2872
2873 * testsuite/experimental/memory_resource/new_delete_resource.cc: Fix
2874 test by passing correct alignment to deallocate function.
2875
2876 2019-05-18 Jonathan Wakely <jwakely@redhat.com>
2877
2878 PR libstdc++/90520
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.
2884
2885 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2886
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
2906 implementation.
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.
2913
2914 2019-05-17 Jonathan Wakely <jwakely@redhat.com>
2915
2916 PR libstdc++/90246
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.
2923
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.
2927
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.
2936
2937 PR libstdc++/85965
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
2943 predicate to here.
2944 * include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
2945 Remove.
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
2955 expected errors.
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.
2963
2964 * include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
2965 Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
2966 in C++11.
2967
2968 * doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
2969 P1165R1 entries.
2970 * doc/html/*: Regenerate.
2971 * include/std/tuple (make_from_tuple): Use remove_reference_t instead
2972 of decay_t (P0777R1).
2973
2974 2019-05-17 François Dumont <fdumont@gcc.gnu.org>
2975
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
2984 state.
2985 * testsuite/23_containers/deque/allocator/move_assign.cc (test02):
2986 Adapt.
2987 * testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
2988 Adapt.
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):
2992 Adapt.
2993 * testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
2994 Adapt.
2995 * testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
2996 * testsuite/23_containers/unordered_map/allocator/move_assign.cc
2997 (test02): Adapt.
2998 * testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
2999 (test02): Adapt.
3000 * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
3001 (test02): Adapt.
3002 * testsuite/23_containers/unordered_set/allocator/move_assign.cc
3003 (test02): Adapt.
3004 * testsuite/23_containers/vector/allocator/move_assign.cc (test02):
3005 Adapt.
3006 * testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
3007 Adapt.
3008 * testsuite/21_strings/basic_string/allocator/char/move_assign.cc
3009 (test02): Adapt.
3010 * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
3011 (test02): Adapt.
3012
3013 2019-05-16 Jonathan Wakely <jwakely@redhat.com>
3014
3015 * src/c++17/fs_ops.cc (absolute(const path&, error_code&))
3016 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
3017
3018 * include/std/variant (__overload_set): Remove.
3019 (_Arr): New helper.
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.
3029
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.
3037
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
3041 _Equal_helper.
3042
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
3046 member function.
3047 (_Hash_code_base, _Local_iterator_base, _Hashtable_base):
3048 (_Hashtable_alloc): Adjust to use non-static members of EBO helper.
3049
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
3054 overloads.
3055 (_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
3056 helpers.
3057 (_Hashtable_base::_M_eq()): Remove non-const overload.
3058
3059 2019-05-15 Jonathan Wakely <jwakely@redhat.com>
3060
3061 * include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
3062
3063 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3064
3065 * testsuite/util/testsuite_allocator.h (NullablePointer::operator bool):
3066 Fix return value.
3067
3068 2019-05-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3069
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.
3080
3081 * libsupc++/new_opa.cc [_GLIBCXX_HAVE_MEMALIGN] [__sun]: Remove
3082 workaround.
3083
3084 * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.10
3085 xfail.
3086
3087 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3088
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
3111 lambda return void.
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
3118 same type.
3119 (visit<R>): Call __do_visit<R> with explicit result type.
3120 (__variant_hash_call_base_impl::operator()): Use __raw_visit and make
3121 lambda return void.
3122
3123 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
3124
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
3128 constructor.
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.
3141
3142 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3143
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
3153 return types.
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.
3157
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.
3162
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
3171 conversion.
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.
3176
3177 * include/std/iterator: Include <iosfwd> instead of <istream> and
3178 <ostream>.
3179
3180 * include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
3181 Remove unused, non-standard function.
3182
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.
3191
3192 PR libstdc++/69724
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.
3197
3198 2019-05-14 Nina Dinka Ranns <dinka.ranns@gmail.com>
3199
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:
3205 Add tests.
3206 * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
3207 Add tests.
3208
3209 2019-05-14 Jonathan Wakely <jwakely@redhat.com>
3210
3211 * testsuite/util/testsuite_allocator.h (memory_resource)
3212 (default_resource_mgr): Fix indentation.
3213
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
3220 for tests.
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
3224 pointer type.
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.
3229
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.
3236
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
3242 special members.
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.
3253
3254 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3255
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
3261 pointers to void.
3262 * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.
3263
3264 * doc/xml/manual/policy_data_structures.xml: Comment out stray
3265 <remark> elements. Fix formatting of bibliography references.
3266
3267 2019-05-13 Edward Smith-Rowland <3dw4rd@verizon.net>
3268
3269 * doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.
3270
3271 2019-05-13 Jonathan Wakely <jwakely@redhat.com>
3272
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
3278 mode.
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
3284 directive.
3285 * doc/xml/manual/using.xml: Remove docs for profile mode headers and
3286 macro.
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
3325 profile mode type.
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
3332 for profile mode.
3333 * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
3334 Likewise.
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:
3340 Likewise.
3341 * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
3342 Likewise.
3343 * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
3344 Likewise.
3345 * testsuite/23_containers/unordered_set/modifiers/extract.cc:
3346 Likewise.
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:
3350 Likewise.
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
3372 profile mode.
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.
3383
3384 Remove array_allocator extension, deprecated since 4.9.0
3385 * doc/xml/manual/allocator.xml: Remove documentation for
3386 array_allocator.
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.
3402
3403 2019-05-11 François Dumont <fdumont@gcc.gnu.org>
3404
3405 * include/bits/stl_bvector.h
3406 (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3407 Make hidden friend.
3408 (operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3409 Likewise.
3410 (operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3411 Likewise.
3412 (operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3413 Likewise.
3414 (operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3415 Likewise.
3416 (operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3417 Likewise.
3418 (operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
3419 Likewise.
3420 (_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
3421 copy elision.
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
3425 NRVO copy elision.
3426 (_Bit_const_iterator::operator-(difference_type)): Likewise.
3427 (operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.
3428
3429 2019-05-10 Jonathan Wakely <jwakely@redhat.com>
3430
3431 PR libstdc++/81266
3432 * testsuite/util/thread/all.h: Do not use remove_pointer for
3433 std::thread::native_handle_type.
3434
3435 PR libstdc++/90397
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
3441 __get_storage.
3442
3443 PR libstdc++/90388
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
3447 per the standard.
3448 (__uniq_ptr_hash): New base class with conditionally-disabled call
3449 operator.
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.
3453
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.
3459
3460 2019-05-09 François Dumont <fdumont@gcc.gnu.org>
3461
3462 * include/bits/stl_deque.h
3463 (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3464 Make hidden friend.
3465 (operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3466 Likewise.
3467 (operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3468 Likewise.
3469 (operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3470 Likewise.
3471 (operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3472 Likewise.
3473 (operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
3474 Likewise.
3475 (_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
3476 copy elision.
3477 (_Deque_iterator<>::operator-(difference_type)): Likewise.
3478
3479 2019-05-08 François Dumont <fdumont@gcc.gnu.org>
3480
3481 PR libstdc++/90277
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
3485 (test01): Likewise.
3486 * testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
3487 (test01): Likewise.
3488 (test02): Likewise.
3489 (test03): Likewise.
3490
3491 2019-05-08 Jonathan Wakely <jwakely@redhat.com>
3492
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.
3497
3498 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3499
3500 * include/bits/stl_pair.h: Improve docs.
3501 * include/std/tuple: Likewise.
3502
3503 * doc/doxygen/doxygroups.cc (std::literals): Add documentation for
3504 inline namespace.
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
3508 line numbers.
3509 * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
3510
3511 PR libstdc++/89102
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
3539 dg-error lineno.
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.
3543
3544 * doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
3545
3546 2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
3547
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:
3558 New.
3559 * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
3560 New.
3561
3562 2019-05-07 Jonathan Wakely <jwakely@redhat.com>
3563
3564 * include/bits/regex.h: Improve docs.
3565 * include/bits/regex.tcc: Do not document implementation details.
3566
3567 * testsuite/19_diagnostics/error_code/hash.cc: New test.
3568
3569 2019-05-06 François Dumont <fdumont@gcc.gnu.org>
3570
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
3575 regex.
3576 (gdb-test): Check for regex test even if 'whatis' test.
3577 * testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
3578 mode.
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.
3586
3587 2019-05-04 Jonathan Wakely <jwakely@redhat.com>
3588
3589 * include/std/system_error (error_category): Fix comment.
3590
3591 PR libstdc++/90299
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.
3598
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
3604 details.
3605 * libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
3606 Suppress documentation for implementation details.
3607
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
3611 value and category.
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.
3617
3618 2019-05-04 François Dumont <fdumont@gcc.gnu.org>
3619
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:
3638 Adapt.
3639
3640 2019-05-03 Jonathan Wakely <jwakely@redhat.com>
3641
3642 PR libstdc++/61761
3643 * testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
3644 std::copysign.
3645
3646 PR libstdc++/52119
3647 * include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
3648 overflow warning with -Wpedantic -Wsystem-headers.
3649
3650 2019-05-02 Jonathan Wakely <jwakely@redhat.com>
3651
3652 PR libstdc++/90314
3653 * include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Use variadic macro.
3654 * include/bits/move.h (swap): Remove extra parentheses.
3655
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
3666 compile-only test.
3667
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.
3671
3672 * include/bits/basic_string.h: Fix iterator/index confusion in
3673 Doxygen comments.
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
3679 initializer_list.
3680
3681 * doc/doxygen/user.cfg.in: Set MARKDOWN_SUPPORT=YES.
3682
3683 * include/bits/unique_lock.h: Fix/improve doxygen markup.
3684 * include/std/mutex: Likewise.
3685 * include/std/shared_mutex: Likewise.
3686
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.
3692
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.
3702
3703 * doc/doxygen/doxygroups.cc: Move description of experimental group
3704 here.
3705 * include/experimental/algorithm: Add to libfund-ts doc group.
3706 * include/experimental/any: Likewise. Do not document implementation
3707 details.
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.
3720 details.
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:
3741 Likewise.
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.
3747
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.
3754
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.
3760
3761 * include/bits/specfun.h: Improve docs.
3762 * include/tr1/cmath: Likewise. Fix nesting of preprocessor conditions
3763 and namespaces.
3764
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.
3773
3774 * include/parallel/settings.h: Fix Doxygen markup.
3775
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:
3785 Likewise.
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:
3797 Likewise.
3798 * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
3799 * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
3800 Likewise.
3801 * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
3802 Likewise.
3803
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
3807 Doxygen expands.
3808
3809 2019-05-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
3810
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:
3817 Likewise.
3818 * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
3819 * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
3820 Likewise.
3821
3822 2019-05-01 Jonathan Wakely <jwakely@redhat.com>
3823
3824 PR libstdc++/61761
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.
3831
3832 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3833
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.
3837
3838 2019-04-30 Jonathan Wakely <jwakely@redhat.com>
3839
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:
3845 Fix test for mingw.
3846
3847 2019-04-30 Jakub Jelinek <jakub@redhat.com>
3848
3849 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3850
3851 2019-04-29 Jonathan Wakely <jwakely@redhat.com>
3852
3853 * include/bits/stl_algo.h (generate_n): Adjust doxygen comment.
3854
3855 * include/bits/move.h (swap(T&, T&), swap(T (&)[N], T (&)[N])): Use
3856 _GLIBCXX_NOEXCEPT_IF to simplify declarations.
3857
3858 PR libstdc++/71312
3859 * src/c++11/shared_ptr.cc (get_mutex): Align pool mutexes to 64 bytes.
3860
3861 * include/bits/stl_bvector.h (vector<bool>::empty()): Add nodiscard
3862 attribute.
3863
3864 * include/bits/stl_iterator_base_types.h (_Iter_base): Remove unused
3865 class template and partial specialization.
3866
3867 PR libstdc++/87982
3868 * include/bits/stl_algo.h (generate_n): Convert _Size parameter to
3869 an integral type.
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.
3880
3881 2019-04-28 Nina Dinka Ranns <dinka.ranns@gmail.com>
3882
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
3897
3898 2019-04-27 Marc Glisse <marc.glisse@inria.fr>
3899
3900 PR libstdc++/87106
3901 * include/bits/stl_uninitialized.h (__relocate_object_a): Mark the
3902 arguments with __restrict.
3903
3904 2019-04-26 H.J. Lu <hongjiu.lu@intel.com>
3905
3906 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3907
3908 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
3909
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.
3913
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.
3920
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.
3928
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
3935 comment.
3936
3937 2019-04-26 Jakub Jelinek <jakub@redhat.com>
3938
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.
3943
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.
3951
3952 2019-04-25 Jonathan Wakely <jwakely@redhat.com>
3953
3954 PR libstdc++/90239
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
3961 parameter.
3962
3963 2019-04-24 Jonathan Wakely <jwakely@redhat.com>
3964
3965 * doc/xml/manual/status_cxx2017.xml: Document P0024R2 status.
3966 * doc/html/*: Regenerate.
3967
3968 * include/bits/fs_path.h (operator<, operator<=, operator>)
3969 (operator>=, operator==, operator!=): Make hidden friends, as per
3970 LWG 3065.
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.
3974
3975 * include/std/any (any::any(ValueType&&)): Use __and_v.
3976 * include/std/numeric (midpoint(T, T, T), midpoint(T*, T*, T*)):
3977 Likewise.
3978
3979 * include/std/tuple (apply): Use remove_reference_t instead of decay_t
3980 as per P0777R1.
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.
3984
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:
4013 New test.
4014 * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
4015 Check reference and pointer typedefs.
4016 * testsuite/experimental/string_view/requirements/typedefs.cc:
4017 Likewise.
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/
4021 1.cc: Likewise.
4022 * testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc:
4023 Likewise.
4024 * testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/
4025 1.cc: Likewise.
4026
4027 PR libstdc++/90220
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
4031 array types.
4032
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
4037 function types.
4038
4039 * testsuite/20_util/variant/run.cc: Catch exception by reference to
4040 prevent -Wcatch-value warning.
4041
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.
4062
4063 2019-04-23 Thomas Rodgers <trodgers@redhat.com>
4064
4065 Document PSTL linker flags
4066
4067 * doc/xml/manual/using.xml: Add PSTL linker flags to table 3.1.
4068
4069 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
4070
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
4074 P0602R4.
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.
4079
4080 PR libstdc++/90165
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.
4099
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.
4103
4104 2019-04-23 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4105 Bernd Edlinger <bernd.edlinger@hotmail.de>
4106 Jakub Jelinek <jakub@redhat.com>
4107
4108 PR target/89093
4109 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
4110 general-regs-only target attribute for ARM.
4111
4112 2019-04-23 Jonathan Wakely <jwakely@redhat.com>
4113
4114 PR libstdc++/87431
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
4123 operator.
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.
4128
4129 * include/std/variant (__detail::__variant::__ref_cast): Remove
4130 unused function.
4131 (__detail::__variant::_Uninitialized::_M_get)
4132 (__detail::__variant::__get)
4133 (__gen_vtable_impl::__element_by_index_or_cookie): Add noexcept.
4134
4135 2019-04-21 Iain Sandoe <iain@sandoe.co.uk>
4136
4137 * testsuite/17_intro/headers/c++1998/charset.cc: Skip for Darwin8
4138 to Darwin10.
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.
4143
4144 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
4145
4146 Delegate PSTL configuration to pstl/pstl_config.h
4147
4148 * include/bits/c++config: Remove explicit PSTL configuration
4149 macros and use definitions from <pstl/pstl_config.h>.
4150
4151 2019-04-20 Thomas Rodgers <trodgers@redhat.com>
4152
4153 Cleanup algorithm implementations
4154 * include/pstl/glue_algorithm_impl.h (stable_sort): Forward
4155 execution policy.
4156 (mismatch): Forward execution policy.
4157 (equal): Qualify call to std::equal().
4158 (partial_sort): Forward execution policy.
4159 (inplace_merge): Forward execution policy.
4160
4161 2019-04-19 Thomas Rodgers <trodgers@redhat.com>
4162
4163 Improve implementation of parallel equal()
4164 * include/pstl/algorithm_impl.h
4165 (__internal::__brick_equal): use "4 iterator" version of
4166 std::equal().
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().
4177
4178 2019-04-17 Jonathan Wakely <jwakely@redhat.com>
4179
4180 PR libstdc++/90105
4181 * include/bits/forward_list.h (operator==): Do not use operator!= to
4182 compare elements.
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.
4189
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.
4201
4202 * testsuite/20_util/variant/compile.cc: Remove empty string literals
4203 from static_assert declarations.
4204
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.
4210
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.
4216
4217 2019-04-12 Thomas Rodgers <trodgers@redhat.com>
4218
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.
4222
4223 2019-04-11 Thomas Rodgers <trodgers@redhat.com>
4224
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().
4234
4235 2019-04-11 Jonathan Wakely <jwakely@redhat.com>
4236
4237 PR libstdc++/90046
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.
4242
4243 2019-04-10 Jonathan Wakely <jwakely@redhat.com>
4244
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.
4250
4251 * testsuite/lib/libstdc++.exp (check_v3_target_parallel_mode): Fix
4252 typo.
4253
4254 PR libstdc++/89851
4255 * testsuite/20_util/variant/89851.cc: New test.
4256
4257 2019-04-09 Jonathan Wakely <jwakely@redhat.com>
4258
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
4262 recursion.
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.
4268
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.
4273
4274 PR libstdc++/90008
4275 * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Remove
4276 unused capture.
4277 * testsuite/20_util/variant/90008.cc: New test.
4278
4279 2019-04-09 Thomas Rodgers <trodgers@redhat.com>
4280
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>.
4288
4289 2019-04-08 Ville Voutilainen <ville.voutilainen@gmail.com>
4290
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.
4307
4308 2019-04-08 Christophe Lyon <christophe.lyon@linaro.org>
4309
4310 * testsuite/27_io/filesystem/iterators/caching.cc: Add
4311 dg-require-filesystem-ts.
4312
4313 2019-04-05 Jonathan Wakely <jwakely@redhat.com>
4314
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.
4318
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.
4323
4324 PR libstdc++/89986
4325 * config/abi/pre/gnu.ver: Add missing exports.
4326 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
4327 increment member.
4328
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
4353 type move-only.
4354
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
4358 handling here.
4359 * testsuite/27_io/filesystem/iterators/caching.cc: New test.
4360
4361 * include/bits/fs_path.h (path::operator=(path&&)): Check for self
4362 assignment.
4363 * src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
4364 * testsuite/27_io/filesystem/path/assign/copy.cc: Test self
4365 assignment.
4366
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
4373 function.
4374 * include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
4375 vector.
4376 * include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
4377 unique_ptr.
4378 * include/debug/vector (_Never_valueless_alt): Likewise for debug
4379 vector.
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.
4395
4396 2019-04-03 Jonathan Wakely <jwakely@redhat.com>
4397
4398 PR libstdc++/85184
4399 * include/std/variant (_Copy_assign_base, _Move_assign_base, variant):
4400 Remove assertions.
4401 (variant::emplace<_Tp>): Return result of emplace<N> directly.
4402
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.
4409
4410 2019-04-01 Ville Voutilainen <ville.voutilainen@gmail.com>
4411
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
4417 is used.
4418 (__variant_idx_cookie): New.
4419 (__visit_with_index): Likewise.
4420 (_Copy_assign_base::operator=): Do single-visitation with
4421 an index visitor.
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.
4426 (swap): Likewise.
4427 (__visitor_result_type): New.
4428
4429 2019-03-30 Eric Botcazou <ebotcazou@adacore.com>
4430
4431 * src/c++17/fs_ops.cc (fs::permissions): Use std::errc::not_supported.
4432
4433 2019-03-28 Ville Voutilainen <ville.voutilainen@gmail.com>
4434
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.
4442 (swap): Likewise.
4443
4444 2019-03-26 Jonathan Wakely <jwakely@redhat.com>
4445
4446 PR libstdc++/85965
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.
4461
4462 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4463
4464 PR libstdc++/89825
4465 Fix based on a suggestion by Antony Polukhin.
4466 * include/std/variant (__never_valueless): New.
4467 (_M_valid): Use it.
4468 (_Extra_visit_slot_needed): New.
4469 (_Multi_array): Use it.
4470 (_S_apply_all_alts): Likewise.
4471
4472 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4473
4474 PR libstdc++/89824
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.
4478
4479 2019-03-26 Ville Voutilainen <ville.voutilainen@gmail.com>
4480
4481 PR libstdc++/89816
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.
4485
4486 2019-03-22 Jonathan Wakely <jwakely@redhat.com>
4487
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.
4494
4495 * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to
4496 avoid -Wconversion warnings.
4497
4498 2019-03-21 Thomas Rodgers <trodgers@redhat.com>
4499
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.
4641
4642 2019-03-21 Jonathan Wakely <jwakely@redhat.com>
4643
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:
4660 Replace with ...
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:
4664 New test.
4665
4666 PR libstdc++/88066
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.
4675
4676 2019-03-19 Jonathan Wakely <jwakely@redhat.com>
4677
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.
4684
4685 2019-03-12 John David Anglin <dave.anglin@bell.net>
4686
4687 PR libstdc++/89461
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
4691 libatomic options.
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.
4696
4697 2019-03-11 Jonathan Wakely <jwakely@redhat.com>
4698
4699 PR libstdc++/89460
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.
4710
4711 * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Use
4712 const variables instead of macros.
4713
4714 PR libstdc++/89629
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.
4718
4719 2019-03-11 Jakub Jelinek <jakub@redhat.com>
4720
4721 PR libstdc++/89641
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.
4732
4733 2019-03-08 Jonathan Wakely <jwakely@redhat.com>
4734
4735 * doc/xml/manual/using.xml: Use link element instead of xref.
4736 * doc/html/*: Regenerate.
4737
4738 * include/bits/fs_path.h (path::format): Add fixed underlying type.
4739
4740 2019-03-08 François Dumont <fdumont@gcc.gnu.org>
4741
4742 PR libstdc++/89477
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.
4752
4753 PR libstdc++/89608
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.
4761
4762 2019-03-07 Andreas Schwab <schwab@suse.de>
4763
4764 * config/abi/post/riscv64-linux-gnu: New directory.
4765 * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: New file.
4766
4767 2019-03-07 Jonathan Wakely <jwakely@redhat.com>
4768
4769 * testsuite/20_util/function_objects/bind_front/1.cc: Change from
4770 compile test to run. Fix typo.
4771
4772 * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
4773 * doc/html/*: Regenerate.
4774
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.
4780
4781 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4782
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.
4787
4788 2019-03-06 Edward Smith-Rowland <3dw4rd@verizon.net>
4789
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.
4801
4802 2019-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
4803
4804 Rewrite variant.
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
4825 a __variant_cookie.
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
4837 as friends.
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.
4845
4846 2019-03-06 Jonathan Wakely <jwakely@redhat.com>
4847
4848 * include/bits/c++config.h (_cpp_lib_char8_t): Add L suffix to
4849 constant.
4850 * testsuite/experimental/feat-char8_t.cc: Likewise.
4851
4852 * include/std/type_traits [C++20] (is_bounded_array)
4853 (is_unbounded_array, is_bounded_array_v, is_unbounded_array_v):
4854 Define.
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
4858 test.
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
4863 * test.
4864 * testsuite/20_util/is_unbounded_array/value.cc: New test.
4865
4866 * include/bits/ptr_traits.h [C++20] (pointer_traits<T*>::pointer_to):
4867 Add constexpr.
4868 * testsuite/20_util/pointer_traits/pointer_to_constexpr.cc: New test.
4869
4870 2019-03-05 Jonathan Wakely <jwakely@redhat.com>
4871
4872 * include/c_compatibility/math.h [C++20] (lerp): Add using
4873 declaration.
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.
4885
4886 2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
4887
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.
4894
4895 2019-03-04 Jonathan Wakely <jwakely@redhat.com>
4896
4897 * testsuite/26_numerics/bit/bitops.rot/rotl.cc: Remove bogus dg-do
4898 directive.
4899
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
4908 C++20.
4909 * testsuite/20_util/polymorphic_allocator/allocate_object.cc: New
4910 test.
4911
4912 2019-03-03 Jonathan Wakely <jwakely@redhat.com>
4913
4914 PR libstdc++/89562
4915 * src/filesystem/ops-common.h (do_copy_file): Open files in binary
4916 mode for mingw.
4917
4918 2019-03-01 Jonathan Wakely <jwakely@redhat.com>
4919
4920 * testsuite/util/testsuite_allocator.h (__gnu_test::memory_resource)
4921 [!__cpp_sized_deallocation]: Do not pass size to operator delete.
4922
4923 * include/std/memory (uses_allocator_construction_args): New set of
4924 overloaded functions.
4925 (make_obj_using_allocator, uninitialized_construct_using_allocator):
4926 New functions.
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
4931 test.
4932 * testsuite/20_util/uses_allocator/make_obj.cc: New test.
4933
4934 2019-02-27 Jonathan Wakely <jwakely@redhat.com>
4935
4936 PR libstdc++/89466
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.
4957
4958 2019-02-26 Jonathan Wakely <jwakely@redhat.com>
4959
4960 PR libstdc++/89477
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):
4975 Likewise.
4976 * testsuite/23_containers/map/cons/deduction.cc: Test additional
4977 deduction cases.
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:
4982 Likewise.
4983 * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
4984 Likewise.
4985 * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
4986
4987 PR libstdc++/89416
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.
4991
4992 2019-02-24 Jonathan Wakely <jwakely@redhat.com>
4993
4994 PR libstdc++/89416
4995 * include/bits/alloc_traits.h (__is_alloc_insertable_impl): Make
4996 copy and move members public.
4997
4998 2019-02-23 Jonathan Wakely <jwakely@redhat.com>
4999
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
5004 test.
5005
5006 PR libstdc++/89446
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:
5015 New test.
5016 * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
5017 New test.
5018
5019 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
5020
5021 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
5022 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
5023
5024 2019-02-22 Jakub Jelinek <jakub@redhat.com>
5025
5026 PR libstdc++/89402
5027 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
5028 type to std::size_t and argument to type to long double.
5029
5030 2019-02-22 Eric Botcazou <ebotcazou@adacore.com>
5031
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.
5037
5038 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
5039
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
5042 test.
5043
5044 2019-02-22 Tom Honermann <tom@honermann.net>
5045
5046 * python/libstdcxx/v6/printers.py (register_type_printers): Add type
5047 printers for u8string and u8string_view.
5048
5049 2019-02-22 Tom Honermann <tom@honermann.net>
5050
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
5073 std::pmr::u8string.
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
5080 member functions.
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
5090 numbers.
5091 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
5092 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
5093 Likewise.
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:
5100 Likewise.
5101 * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
5102 Likewise.
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.
5109
5110 2019-02-22 Tom Honermann <tom@honermann.net>
5111
5112 * include/ext/typelist.h: Constrain a partial specialization of
5113 typelist::detail::append_ to only match chain<T1,T2>.
5114
5115 2019-02-21 Jonathan Wakely <jwakely@redhat.com>
5116
5117 PR libstdc++/89416
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
5125 test.
5126
5127 2019-02-20 Jakub Jelinek <jakub@redhat.com>
5128
5129 PR libstdc++/89402
5130 * src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Add
5131 _GLIBCXX_PURE to the alias declaration.
5132
5133 2019-02-19 Jonathan Wakely <jwakely@redhat.com>
5134
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
5143 to char.
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
5157 literal.
5158 * testsuite/experimental/string_view/literals/values.cc
5159 [_GLIBCXX_USE_CHAR8_T]: Likewise.
5160
5161 2019-02-19 Tom Honermann <tom@honermann.net>
5162
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
5167 returns u8string.
5168 * testsuite/21_strings/basic_string/literals/values-char8_t.cc: New
5169 test cloned from values.cc; validates construction and comparison
5170 of u8string values.
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
5206 from char8_t input.
5207 * testsuite/experimental/feat-char8_t.cc: New test; validates that
5208 the __cpp_lib_char8_t feature test macro is defined with the
5209 correct value.
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
5225 enabled.
5226
5227 2019-02-19 Tom Honermann <tom@honermann.net>
5228
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
5240 __cpp_lib_char8_t.
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
5250 char8_t.
5251 (path::u8string): Return std::u8string when char8_t support is
5252 enabled.
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
5258 char8_t.
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):
5271 Recognize char8_t.
5272 (path::u8string): Return std::u8string when char8_t support is
5273 enabled.
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.
5311
5312 2019-02-18 Wilco Dijkstra <wdijkstr@arm.com>
5313
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.
5317
5318 2019-02-14 Jonathan Wakely <jwakely@redhat.com>
5319
5320 * doc/xml/manual/status_cxx2020.xml: Update P0887R1 status.
5321 * doc/html/*: Regenerate.
5322
5323 * doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
5324 * doc/html/*: Regenerate.
5325
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.
5335
5336 * configure.ac: Check for C11 timespec_get function.
5337 * crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
5338 (openbsd): Likewise
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.
5343
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
5348 make_heap.
5349 * testsuite/23_containers/priority_queue/dr2537.cc: New test.
5350
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.
5355
5356 PR middle-end/89303
5357 * testsuite/20_util/enable_shared_from_this/89303.cc: New test.
5358
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.
5362
5363 2019-02-13 Jonathan Wakely <jwakely@redhat.com>
5364
5365 PR libstdc++/89345
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.
5373
5374 2019-02-11 Jonathan Wakely <jwakely@redhat.com>
5375
5376 PR libstdc++/89023
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.
5381
5382 2019-02-09 Jonathan Wakely <jwakely@redhat.com>
5383
5384 PR libstdc++/71044
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
5390 noexcept.
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.
5395
5396 2019-02-06 Jonathan Wakely <jwakely@redhat.com>
5397
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.
5407
5408 2019-02-05 Jonathan Wakely <jwakely@redhat.com>
5409
5410 PR libstdc++/89128
5411 * include/bits/stl_queue.h (queue, priority_queue): Add deduction
5412 guides.
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.
5417
5418 PR libstdc++/89194
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.
5424
5425 * testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
5426 use of CopyConsOnlyType, but also test DelAnyAssign for completeness.
5427
5428 PR libstdc++/89130
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
5439 call __relocate_a.
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.
5445
5446 PR libstdc++/89090
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
5451 in C++11 code.
5452
5453 2019-02-05 Marc Glisse <marc.glisse@inria.fr>
5454
5455 PR libstdc++/87106
5456 * include/bits/stl_uninitialized.h (__is_trivially_relocatable):
5457 Rename...
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.
5462
5463 2019-01-30 Jonathan Wakely <jwakely@redhat.com>
5464
5465 PR libstdc++/89117
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.
5472
5473 2019-01-30 Ulrich Drepper <drepper@redhat.com>
5474
5475 * doc/xml/manual/status_cxx2020.xml: Update P0600 entry.
5476
5477 2019-01-29 Jonathan Wakely <jwakely@redhat.com>
5478
5479 * testsuite/26_numerics/headers/complex/synopsis.cc: Remove incorrect
5480 constexpr specifiers from arg and proj.
5481
5482 * config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add missing exports for
5483 __shared_ptr instantiations used by gcc4-compatible ABI.
5484
5485 * include/experimental/forward_list (experimental::erase): Qualify
5486 call to erase_if.
5487 * include/experimental/list (experimental::erase): Likewise.
5488 * include/std/forward_list (std::erase): Likewise.
5489 * include/std/list (std::erase): Likewise.
5490
5491 * testsuite/20_util/reference_wrapper/result_type.cc: Disable for
5492 C++2a.
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.
5501
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.
5506
5507 2019-01-28 Jonathan Wakely <jwakely@redhat.com>
5508
5509 PR libstdc++/68737
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.
5515
5516 2019-01-24 Jonathan Wakely <jwakely@redhat.com>
5517
5518 PR libstdc++/88840
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
5523 __use_relocate.
5524
5525 * testsuite/27_io/filesystem/path/compare/strings.cc: Only compare
5526 sign of results.
5527
5528 2019-01-22 Jonathan Wakely <jwakely@redhat.com>
5529
5530 PR libstdc++/88740
5531 * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to
5532 write to stderr instead of using printf.
5533
5534 2019-01-21 Jakub Jelinek <jakub@redhat.com>
5535
5536 PR libstdc++/86590
5537 * include/bits/char_traits.h (__constant_string_p,
5538 __constant_char_array_p): Use __builtin_is_constant_evaluated if
5539 available.
5540
5541 2019-01-20 Ulrich Drepper <drepper@redhat.com>
5542
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:
5569 Likewise.
5570 * include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
5571 Likewise.
5572 * include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
5573 Likewise.
5574 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
5575 Likewise.
5576 * include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
5577 Likewise.
5578 * include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
5579 Likewise.
5580 * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
5581 Likewise.
5582 * include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
5583 Likewise.
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:
5589 Likewise.
5590 * include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
5591 Likewise.
5592 * include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
5593 Likewise.
5594 * include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
5595 Likewise.
5596 * include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
5597 Likewise.
5598 * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
5599 Likewise.
5600 * include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
5601 Likewise.
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
5614 allocate.
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.
5629
5630 2019-01-18 Jonathan Wakely <jwakely@redhat.com>
5631
5632 PR libstdc++/87514
5633 PR libstdc++/87520
5634 PR libstdc++/88782
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.
5658
5659 2019-01-17 Jonathan Wakely <jwakely@redhat.com>
5660
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.
5665
5666 PR libstdc++/88884
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.
5671
5672 PR libstdc++/88881
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:
5682 Likewise.
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.
5686
5687 2019-01-16 Jonathan Wakely <jwakely@redhat.com>
5688
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&)):
5696 Likewise.
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
5702 on mingw targets.
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:
5707 Likewise.
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
5714 mingw targets.
5715 * testsuite/experimental/filesystem/operations/permissions.cc:
5716 Likewise.
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:
5723 Likewise.
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
5729 for mingw targets.
5730
5731 2019-02-14 Ulrich Drepper <drepper@redhat.com>
5732
5733 PR libstdc++/88738
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.
5739
5740 2019-01-15 Jonathan Wakely <jwakely@redhat.com>
5741
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.
5745
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.
5753
5754 * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
5755 status.
5756 * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
5757 Define.
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
5768 as long integer.
5769 * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
5770 integer.
5771
5772 * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
5773
5774 2019-01-12 Jonathan Wakely <jwakely@redhat.com>
5775
5776 PR libstdc++/88811
5777 PR libstdc++/83306
5778 * src/filesystem/path.cc: Fix typo. If first path is empty, show []
5779 before second path.
5780 * testsuite/experimental/filesystem/filesystem_error/cons.cc: New
5781 test.
5782
5783 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5784
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.
5790
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
5795 for C++2a.
5796 (reference_wrapper::operator()): Add static assertion.
5797 * testsuite/20_util/reference_wrapper/incomplete.cc: New test.
5798
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.
5805
5806 * include/std/version (__cpp_lib_erase_if): Move to C++20 group.
5807
5808 2019-01-11 Jakub Jelinek <jakub@redhat.com>
5809
5810 * include/std/type_traits (__cpp_lib_is_constant_evaluated): Define.
5811 * include/std/version (__cpp_lib_is_constant_evaluated): Define.
5812
5813 2019-01-11 Jonathan Wakely <jwakely@redhat.com>
5814
5815 PR libstdc++/88802
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.
5819
5820 PR libstdc++/88125
5821 * config/abi/pre/gnu.ver (GLIBCXX_3.4.6): Remove unused duplicate
5822 pattern for std::basic_stringbuf::str().
5823
5824 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Correct recent changes to
5825 basic_ostream::operator<< patterns.
5826
5827 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5828
5829 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix
5830 test failures on targets with 32-bit time_t.
5831
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.
5848
5849 * include/experimental/internet [AI_NUMERICSERV]
5850 (resolver_base::numeric_service): Define conditionally.
5851 * testsuite/experimental/net/internet/resolver/base.cc: Test it
5852 conditionally.
5853 * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
5854 Likewise.
5855
5856 2019-01-10 Ville Voutilainen <ville.voutilainen@gmail.com>
5857 Jonathan Wakely <jwakely@redhat.com>
5858
5859 Implement LWG 2221
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
5868 test.
5869
5870 2019-01-10 Jonathan Wakely <jwakely@redhat.com>
5871
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:
5877 Likewise.
5878 * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
5879 Likewise.
5880 * testsuite/experimental/filesystem/iterators/
5881 recursive_directory_iterator.cc: Likewise.
5882
5883 2019-01-10 Jakub Jelinek <jakub@redhat.com>
5884
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.
5891
5892 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
5893
5894 PR other/16615
5895
5896 * include/ext/bitmap_allocator.h: Mechanically replace "can not"
5897 with "cannot".
5898
5899 2019-01-09 Jonathan Wakely <jwakely@redhat.com>
5900
5901 * testsuite/libstdc++-prettyprinters/cxx17.cc: Fix expected output
5902 for filesystem::path. Give variables more distinctive names.
5903
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.
5911
5912 PR libstdc++/88204
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:
5916 Likewise.
5917
5918 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5919
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.
5924
5925 PR libstdc++/87855
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
5938 defined as needed.
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.
5951
5952 PR libstdc++/88066
5953 * include/bits/locale_conv.h: Use <> for includes not "".
5954 * include/ext/random: Likewise.
5955 * include/ext/vstring.h: Likewise.
5956
5957 2019-01-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
5958
5959 * config/abi/pre/gnu.ver (GLIBCXX_3.4): Tighten existing patterns.
5960 (GLIBCXX_3.4.21): Likewise.
5961
5962 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5963
5964 PR libstdc++/88749
5965 * src/filesystem/ops.cc (last_write_time): Fix preprocessor condition
5966 to match the one that controls whether utimbuf and utime are declared.
5967
5968 2019-01-07 Jonathan Wakely <jwakely@redhat.com>
5969
5970 PR libstdc++/87787
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*)):
5977 Likewise.
5978 (ctype<char>::do_widen(const char*, const char*, char*)):
5979 Likewise.
5980 (ctype<char>::do_narrow(const char*, const char*, char, char*)):
5981 Likewise.
5982
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.
5988
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.
6002
6003 2019-01-06 Jonathan Wakely <jwakely@redhat.com>
6004
6005 PR libstdc++/86756
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
6024 define.
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
6028 report an error.
6029 (last_write_time, read_symlink): Remove unused attributes from
6030 parameters.
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
6041 in terms of stat.
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:
6053 Likewise.
6054 * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
6055 * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
6056 Likewise.
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:
6062 Likewise.
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:
6081 Likewise.
6082 * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise.
6083
6084
6085 PR libstdc++/86756
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
6095 from sources.
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:
6122 Likewise.
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:
6135 Likewise.
6136 * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
6137 Likewise.
6138 * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
6139 Likewise.
6140 * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
6141 Likewise.
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:
6152 Likewise.
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.
6158
6159 PR libstdc++/87431
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&&...)):
6167 Likewise.
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.
6171
6172 PR libstdc++/88607
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.
6178
6179 2019-01-05 Jonathan Wakely <jwakely@redhat.com>
6180
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
6184 overflow.
6185 * src/filesystem/std-ops.cc (is_set(perm_options, perm_options)): Give
6186 internal linkage.
6187 (internal_file_lock): New helper type for accessing __file_clock.
6188 (do_copy_file): Use internal_file_lock to convert system time to
6189 file_time_type.
6190 (last_write_time(const path&, error_code&)): Likewise.
6191 (last_write_time(const path&, file_time_type, error_code&)): Likewise.
6192
6193 2019-01-04 Jonathan Wakely <jwakely@redhat.com>
6194
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
6198 in C++17.
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&)):
6202 Likewise.
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.
6210
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&)):
6221 Define.
6222 (basic_string::basic_string(basic_string&&, const _Alloc&)):
6223 Define.
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
6230 for old string ABI.
6231 * testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
6232
6233 * testsuite/23_containers/list/61347.cc: Avoid spurious failure when
6234 -fno-inline added to test flags.
6235
6236 * testsuite/21_strings/basic_string/requirements/
6237 explicit_instantiation/debug.cc: Remove XFAIL for old ABI.
6238
6239 * testsuite/27_io/filesystem/filesystem_error/copy.cc: Fix static
6240 assertion failures with old std::string ABI.
6241
6242 * include/bits/fs_path.h (path::_List::erase): Replace both overloads
6243 with ...
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
6249 of erase(p, end()).
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
6263 additional cases.
6264 * testsuite/27_io/filesystem/path/generation/normal2.cc: New test.
6265
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.
6269
6270 * testsuite/21_strings/basic_string/modifiers/assign/char/
6271 move_assign_optim.cc: Avoid spurious failure when -fno-inline added
6272 to test flags.
6273 * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/
6274 move_assign_optim.cc: Likewise.
6275
6276 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6277 Jakub Jelinek <jakub@redhat.com>
6278
6279 PR libstdc++/88607
6280 * include/experimental/memory: Replace UTF-8 quote characters.
6281 * include/std/future: Replace UTF-8 "em dash" characters.
6282
6283 2019-01-03 Jonathan Wakely <jwakely@redhat.com>
6284
6285 PR libstdc++/88607
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"
6289 character.
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.
6298
6299 PR libstdc++/88681
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.
6304
6305 2019-01-02 Jonathan Wakely <jwakely@redhat.com>
6306
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.
6310
6311 * testsuite/experimental/string_view/element_access/char/empty.cc:
6312 Fix year range in copyright header.
6313
6314 2019-01-02 Joel Brobecker <brobecker@adacore.com>
6315
6316 * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
6317 Fix year range in copyright header.
6318
6319 2019-01-01 Jakub Jelinek <jakub@redhat.com>
6320
6321 Update copyright years.
6322 \f
6323 Copyright (C) 2019 Free Software Foundation, Inc.
6324
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.