12021-08-11  Jonathan Wakely  <jwakely@redhat.com>
2
3	Backported from master:
4	2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
5
6	PR libstdc++/101866
7	* testsuite/experimental/random/randint.cc: Loop and retry if
8	reseed() produces the same sequence.
9
102021-08-11  Jonathan Wakely  <jwakely@redhat.com>
11
12	Backported from master:
13	2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
14
15	PR libstdc++/101510
16	* src/c++17/fs_ops.cc (fs::create_directories): Use status
17	instead of symlink_status.
18	* src/filesystem/ops.cc (fs::create_directories): Likewise.
19	* testsuite/27_io/filesystem/operations/create_directories.cc:
20	Check symlink to existing directory.
21	* testsuite/27_io/filesystem/operations/create_directory.cc: Do
22	not test with symlinks on Windows.
23	* testsuite/experimental/filesystem/operations/create_directories.cc:
24	Check symlink to existing directory.
25	* testsuite/experimental/filesystem/operations/create_directory.cc:
26	Do not test with symlinks on Windows.
27
282021-08-11  Jonathan Wakely  <jwakely@redhat.com>
29
30	Backported from master:
31	2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
32
33	PR libstdc++/101510
34	* src/c++17/fs_ops.cc (create_dir): Adjust whitespace.
35	* testsuite/27_io/filesystem/operations/create_directory.cc:
36	Test creating directory with name of existing symlink to
37	directory.
38	* testsuite/experimental/filesystem/operations/create_directory.cc:
39	Likewise.
40
412021-08-11  Jonathan Wakely  <jwakely@redhat.com>
42
43	Backported from master:
44	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
45
46	PR libstdc++/101056
47	* libsupc++/compare (compare_partial_order_fallback): Add
48	constraint using reversed parameter order, as per LWG 3465.
49	* testsuite/18_support/comparisons/algorithms/fallback.cc:
50	Adjust expected result.
51
522021-08-11  Jonathan Wakely  <jwakely@redhat.com>
53
54	Backported from master:
55	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
56
57	* libsupc++/compare (__decayed_same_as): New helper concept.
58	(strong_order, weak_order, partial_order): Constrain with new
59	concept instead of using static_assert.
60	(compare_strong_order_fallback, compare_weak_order_fallback)
61	(compare_partial_order_fallback): Likewise. Do not deduce return
62	types. Remove redundant if-constexpr checks.
63	* testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
64
652021-08-10  Jonathan Wakely  <jwakely@redhat.com>
66
67	Backported from master:
68	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
69
70	PR libstdc++/100894
71	* include/std/type_traits (__common_ref_impl<X&, Y&>): Only
72	use the type if it's a reference.
73	* testsuite/20_util/common_reference/100894.cc: New test.
74
752021-07-22  Jonathan Wakely  <jwakely@redhat.com>
76
77	Backported from master:
78	2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
79
80	PR libstdc++/96657
81	* libsupc++/Makefile.am: Add atomicity.cc here.
82	* src/c++98/Makefile.am: Remove it from here.
83	* libsupc++/Makefile.in: Regenerate.
84	* src/c++98/Makefile.in: Regenerate.
85	* testsuite/18_support/exception_ptr/96657.cc: New test.
86
872021-07-22  Jonathan Wakely  <jwakely@redhat.com>
88
89	Backported from master:
90	2021-06-07  Jonathan Wakely  <jwakely@redhat.com>
91
92	PR libstdc++/98842
93	* include/std/optional (operator<=>(const optional<T>& const U&)):
94	Add missing constraint and add workaround for template
95	recursion.
96	* testsuite/20_util/optional/relops/three_way.cc: Check that
97	type without equality comparison cannot be compared when wrapped
98	in std::optional.
99
1002021-07-14  Jonathan Wakely  <jwakely@redhat.com>
101
102	Backported from master:
103	2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
104
105	PR c++/101361
106	* include/std/string_view (ends_with): Use traits_type::compare
107	directly.
108
1092021-07-14  Jonathan Wakely  <jwakely@redhat.com>
110
111	Backported from master:
112	2021-07-12  Jonathan Wakely  <jwakely@redhat.com>
113
114	PR libstdc++/101411
115	* include/std/span (as_writable_bytes): Add requires-clause.
116	* testsuite/23_containers/span/101411.cc: New test.
117
1182021-07-06  Avi Kivity  <avi@scylladb.com>
119
120	Backported from master:
121	2021-06-07  Avi Kivity  <avi@scylladb.com>
122
123	PR libstdc++/100900
124	* include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
125	Add missing typename.
126
1272021-06-18  Jonathan Wakely  <jwakely@redhat.com>
128
129	Backported from master:
130	2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
131
132	PR libstdc++/95833
133	* include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace
134	incorrect static_assert with ones matching the 'Mandates'
135	conditions in the standard.
136	* testsuite/26_numerics/reduce/95833.cc: New test.
137
1382021-06-18  Jonathan Wakely  <jwakely@redhat.com>
139
140	* include/std/variant (__same_types, __check_visitor_results):
141	Remove.
142
1432021-06-18  Jonathan Wakely  <jwakely@redhat.com>
144
145	Backported from master:
146	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
147
148	* include/std/future (promise::set_value): Check for existence
149	of shared state before dereferncing it.
150	(promise::set_exception, promise::set_value_at_thread_exit)
151	(promise::set_exception_at_thread_exit): Likewise.
152	(promise<R&>::set_value, promise<R&>::set_exception)
153	(promise<R&>::set_value_at_thread_exit)
154	(promise<R&>::set_exception_at_thread_exit): Likewise.
155	(promise<void>::set_value, promise<void>::set_exception)
156	(promise<void>::set_value_at_thread_exit)
157	(promise<void>::set_exception_at_thread_exit): Likewise.
158	* testsuite/30_threads/promise/members/at_thread_exit2.cc:
159	Remove unused variable.
160
1612021-06-18  Jonathan Wakely  <jwakely@redhat.com>
162
163	Backported from master:
164	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
165
166	* include/bits/basic_string.h (basic_string(const CharT*, const A&)):
167	Do not do arithmetic on null pointer.
168
1692021-06-18  Jonathan Wakely  <jwakely@redhat.com>
170
171	Backported from master:
172	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
173
174	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
175	(find_key_pointer(key_const_reference, false_type))
176	(find_key_pointer(key_const_reference, true_type)): Do not
177	dereference null pointer.
178
1792021-06-18  Jonathan Wakely  <jwakely@redhat.com>
180
181	Backported from master:
182	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
183
184	* testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid
185	overflow.
186	* testsuite/24_iterators/reverse_iterator/2.cc: Do not add
187	non-zero value to null pointer.
188	* testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
189	Use past-the-end iterator for result.
190	* testsuite/25_algorithms/move_backward/69478.cc: Likewise.
191	* testsuite/25_algorithms/move_backward/93872.cc: Likewise.
192
1932021-06-18  Jonathan Wakely  <jwakely@redhat.com>
194
195	Backported from master:
196	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
197
198	PR libstdc++/100384
199	* include/std/variant (__get_t): New alias template yielding the
200	return type of std::get<N> on a variant.
201	(__visit_result_t): New alias template yielding the result of
202	std::visit.
203	(__same_types): Move into namespace __detail::__variant.
204	(__check_visitor_results): Likewise. Use __invoke_result_t and
205	__get_t.
206	(__check_visitor_result): Remove.
207	(visit): Use __visit_result_t for return type.
208	* testsuite/20_util/variant/100384.cc: New test.
209
2102021-06-18  Jonathan Wakely  <jwakely@redhat.com>
211
212	Backported from master:
213	2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
214
215	PR libstdc++/99006
216	* include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
217	is not an array type.
218	* include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
219	* testsuite/20_util/shared_ptr/creation/99006.cc: New test.
220
2212021-06-18  Jonathan Wakely  <jwakely@redhat.com>
222
223	Backported from master:
224	2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
225
226	* include/bits/allocator.h (allocator<void>) [C++20]: Add
227	missing noexcept to constructor. Restore missing POCMA and
228	is_always_equal_traits.
229	* include/bits/memoryfwd.h (allocator_traits): Declare.
230	* include/ext/malloc_allocator.h (malloc_allocator::allocate):
231	Add nodiscard attribute. Add static assertion for LWG 3307.
232	* include/ext/new_allocator.h (new_allocator::allocate): Add
233	static assertion for LWG 3307.
234	* testsuite/20_util/allocator/void.cc: Check that converting
235	constructor is noexcept. Check for propagation traits and
236	size_type and difference_type. Check that pointer and
237	const_pointer are gone in C++20.
238
2392021-06-18  Jonathan Wakely  <jwakely@redhat.com>
240
241	Backported from master:
242	2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
243
244	* include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)):
245	Initialize a non-reference deleter from an rvalue, as per LWG
246	3548.
247	(__shared_ptr::_UniqCompatible): Add missing constraint.
248	* testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test.
249	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check
250	constraints.
251
2522021-06-18  Jonathan Wakely  <jwakely@redhat.com>
253
254	Backported from master:
255	2021-06-17  Jonathan Wakely  <jwakely@redhat.com>
256
257	PR libstdc++/91488
258	* include/bits/basic_string.h (__cpp_lib_constexpr_string): Only
259	define C++20 value when std::is_constant_evaluated is available.
260	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
261	Likewise.
262	(__constant_string_p, __constant_array_p): Give external
263	linkage.
264	* include/std/version (__cpp_lib_constexpr_char_traits)
265	(__cpp_lib_constexpr_string): Only define C++20 values when
266	is_constant_evaluated is available.
267
2682021-06-14  Jonathan Wakely  <jwakely@redhat.com>
269
270	Backported from master:
271	2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
272
273	* testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error
274	for additional errors in C++20.
275	* testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
276	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
277
2782021-06-14  Jonathan Wakely  <jwakely@redhat.com>
279
280	Backported from master:
281	2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
282
283	PR libstdc++/100982
284	* include/std/optional (optional::operator=(const optional<U>&)):
285	Fix value category used in is_assignable check.
286	* testsuite/20_util/optional/assignment/100982.cc: New test.
287
2882021-06-14  Jonathan Wakely  <jwakely@redhat.com>
289
290	Backported from master:
291	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
292
293	PR libstdc++/101034
294	* include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
295	(any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
296	to use lvalue.
297	* testsuite/20_util/any/cons/101034.cc: New test.
298
2992021-06-10  Patrick Palka  <ppalka@redhat.com>
300
301	Backported from master:
302	2021-06-03  Patrick Palka  <ppalka@redhat.com>
303
304	PR libstdc++/100770
305	* include/bits/ranges_algo.h (__detail::__can_reread_output):
306	Factor out this concept from ...
307	(__unique_copy_fn::operator()): ... here.  Use the concept
308	throughout.
309	* testsuite/std/ranges/range.cc: Remove now ill-formed use
310	of range_value_t on an output_range.
311	* testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
312	Define value_type, pointer and reference member types to void.
313
3142021-06-10  Patrick Palka  <ppalka@redhat.com>
315
316	Backported from master:
317	2021-05-21  Patrick Palka  <ppalka@redhat.com>
318
319	PR libstdc++/100690
320	* include/std/ranges (iota_view::_Sentinel::_M_distance_from):
321	Split out this member function from ...
322	(iota_view::_Sentinel::operator-): ... here, for sake of access
323	control.
324	* testsuite/std/ranges/iota/iota_view.cc (test05): New test.
325
3262021-06-10  Patrick Palka  <ppalka@redhat.com>
327
328	Backported from master:
329	2021-05-06  Patrick Palka  <ppalka@redhat.com>
330
331	* include/std/ranges (filter_view::_Iterator::base): Make the
332	const& overload unconstrained and return a const reference as
333	per LWG 3533.  Make unconditionally noexcept.
334	(transform_view::_Iterator::base): Likewise.
335	(elements_view::_Iterator::base): Likewise.
336
3372021-06-10  Patrick Palka  <ppalka@redhat.com>
338
339	Backported from master:
340	2021-05-06  Patrick Palka  <ppalka@redhat.com>
341
342	* include/bits/stl_iterator.h (move_iterator::base): Make the
343	const& overload unconstrained and return a const reference as
344	per LWG 3391.  Make unconditionally noexcept.
345	(counted_iterator::base): Likewise.
346	* testsuite/24_iterators/move_iterator/lwg3391.cc: New test.
347	* testsuite/24_iterators/move_iterator/move_only.cc: Adjust
348	has_member_base concept to decay-copy the result of base().
349
3502021-06-10  Patrick Palka  <ppalka@redhat.com>
351
352	Backported from master:
353	2021-05-18  Patrick Palka  <ppalka@redhat.com>
354
355	PR libstdc++/100631
356	* include/std/ranges (elements_view::_Sentinel::operator-): Use
357	_M_distance_from in the other operator- overload too.
358	* testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
359
3602021-06-10  Patrick Palka  <ppalka@redhat.com>
361
362	Backported from master:
363	2021-05-18  Patrick Palka  <ppalka@redhat.com>
364
365	PR libstdc++/100631
366	* include/std/ranges (elements_view::_Iterator): Also befriend
367	_Sentinel<!_Const>.
368	(elements_view::_Sentinel::_M_equal): Templatize.
369	(elements_view::_Sentinel::_M_distance_from): Split out from ...
370	(elements_view::_Sentinel::operator-): ... here.  Depend on
371	_Base2 instead of _Base in the return type.
372	* testsuite/std/ranges/adaptors/elements.cc (test06, test07):
373	New tests.
374
3752021-06-10  Patrick Palka  <ppalka@redhat.com>
376
377	Backported from master:
378	2021-05-20  Patrick Palka  <ppalka@redhat.com>
379
380	PR libstdc++/100639
381	* include/bits/stl_iterator.h (reverse_iterator::difference_type):
382	In C++20 mode, define in terms of iter_difference_t as per P0896R4.
383	(reverse_iterator::reference): Likewise, but with iter_reference_t.
384	(reverse_iterator::value_type): Likewise, but with iter_value_t.
385	* testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
386	* testsuite/24_iterators/reverse_iterator/100639.cc: New test.
387
3882021-06-03  Jonathan Wakely  <jwakely@redhat.com>
389
390	Backported from master:
391	2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
392
393	PR libstdc++/100833
394	* include/bits/range_access.h (ranges::advance(iter, n, sentinel)):
395	Fix return value for no-op case.
396	* testsuite/24_iterators/range_operations/advance.cc: Test
397	return values of three-argument overload.
398
3992021-06-03  Jonathan Wakely  <jwakely@redhat.com>
400
401	Backported from master:
402	2021-05-26  Jonathan Wakely  <jwakely@redhat.com>
403
404	PR libstdc++/100768
405	* include/bits/range_access.h (ranges::advance)
406	(ranges::distance, ranges::next, ranges::prev): Replace
407	function templates with function objects.
408	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
409	Adjust for changes to function objects.
410	* testsuite/std/ranges/adaptors/elements.cc: Add using
411	declarations for names from namespace ranges.
412	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
413	* testsuite/24_iterators/range_operations/100768.cc: New test.
414
4152021-06-03  Jonathan Wakely  <jwakely@redhat.com>
416
417	Backported from master:
418	2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
419
420	PR libstdc++/99453
421	* python/Makefile.am: Use archive name for printer hook if no
422	dynamic library name is available.
423	* python/Makefile.in: Regenerate.
424
4252021-06-03  Philippe Blain  <levraiphilippeblain@gmail.com>
426
427	Backported from master:
428	2021-04-21  Philippe Blain  <levraiphilippeblain@gmail.com>
429		    Jonathan Wakely  <jwakely@redhat.com>
430
431	PR libstdc++/99453
432	* python/Makefile.am: Install libstdc++*-gdb.py more robustly.
433	* python/Makefile.in: Regenerate.
434
4352021-05-17  Jonathan Wakely  <jwakely@redhat.com>
436
437	PR libstdc++/100630
438	* include/bits/fs_path.h (__is_constructible_from): Test
439	construction from a const lvalue, not an rvalue.
440	* include/experimental/bits/fs_path.h (__is_constructible_from):
441	Likewise.
442	* testsuite/27_io/filesystem/path/construct/100630.cc: New test.
443	* testsuite/experimental/filesystem/path/construct/100630.cc:
444	New test.
445
4462021-05-17  Jonathan Wakely  <jwakely@redhat.com>
447
448	Backported from master:
449	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
450
451	* python/libstdcxx/v6/printers.py (find_type): Use tag attribute
452	instead of unqualified() method.
453
4542021-05-05  Patrick Palka  <ppalka@redhat.com>
455
456	Backported from master:
457	2021-05-05  Patrick Palka  <ppalka@redhat.com>
458
459	* include/std/ranges (transform_view::_Iterator::iter_swap):
460	Remove as per LWG 3520.
461	(join_view::_Iterator::iter_swap): Add indirectly_swappable
462	constraint as per LWG 3517.
463
4642021-05-04  Patrick Palka  <ppalka@redhat.com>
465
466	Backported from master:
467	2021-04-30  Patrick Palka  <ppalka@redhat.com>
468
469	* include/std/ranges (split_view::_InnerIter::operator++):
470	Depend on _Base instead of _Vp directly, as per LWG 3532.
471
4722021-05-04  Patrick Palka  <ppalka@redhat.com>
473
474	Backported from master:
475	2021-04-20  Patrick Palka  <ppalka@redhat.com>
476
477	PR libstdc++/95983
478	* include/bits/stl_iterator.h (__detail::__move_iter_cat):
479	Define.
480	(move_iterator): Derive from the above in C++20 in order to
481	conditionally define iterator_category as per P2259.
482	(move_iterator::__base_cat): No longer used, so remove.
483	(move_iterator::iterator_category): Remove in C++20.
484	(__detail::__common_iter_use_postfix_proxy): Define.
485	(common_iterator::_Proxy): Rename to ...
486	(common_iterator:__arrow_proxy): ... this.
487	(common_iterator::__postfix_proxy): Define as per P2259.
488	(common_iterator::operator->): Adjust.
489	(common_iterator::operator++): Adjust as per P2259.
490	(iterator_traits<common_iterator>::_S_iter_cat): Define.
491	(iterator_traits<common_iterator>::iterator_category): Change as
492	per P2259.
493	(__detail::__counted_iter_value_type): Define.
494	(__detail::__counted_iter_concept): Define.
495	(__detail::__counted_iter_cat): Define.
496	(counted_iterator): Derive from the above three classes in order
497	to conditionally define value_type, iterator_concept and
498	iterator category respectively as per P2259.
499	(counted_iterator::operator->): Define as per P2259.
500	(incrementable_traits<counted_iterator>): Remove as per P2259.
501	(iterator_traits<counted_iterator>): Adjust as per P2259.
502	* include/std/ranges (__detail::__iota_view_iter_cat): Define.
503	(iota_view::_Iterator): Derive from the above in order to
504	conditionally define iterator_category as per P2259.
505	(iota_view::_S_iter_cat): Rename to ...
506	(iota_view::_S_iter_concept): ... this.
507	(iota_view::iterator_concept): Use it to apply LWG 3291 changes.
508	(iota_view::iterator_category): Remove.
509	(__detail::__filter_view_iter_cat): Define.
510	(filter_view::_Iterator): Derive from the above in order to
511	conditionally define iterator_category as per P2259.
512	(filter_view::_Iterator): Move to struct __filter_view_iter_cat.
513	(filter_view::_Iterator::iterator_category): Remove.
514	(transform_view::_Base): Define.
515	(transform_view::__iter_cat): Define.
516	(transform_view::_Iterator): Derive from the above in order to
517	conditionally define iterator_category as per P2259.
518	(transform_view::_Iterator::_Base): Just alias
519	transform_view::_Base.
520	(transform_view::_Iterator::_S_iter_cat): Move to struct
521	transform_view::__iter_cat.
522	(transform_view::_Iterator::iterator_category): Remove.
523	(transform_view::_Sentinel::_Base): Just alias
524	transform_view::_Base.
525	(join_view::_Base): Define.
526	(join_view::_Outer_iter): Define.
527	(join_view::_Inner_iter): Define.
528	(join_view::_S_ref_is_glvalue): Define.
529	(join_view::__iter_cat): Define.
530	(join_view::_Iterator): Derive from it in order to conditionally
531	define iterator_category as per P2259.
532	(join_view::_Iterator::_Base): Just alias join_view::_Base.
533	(join_view::_Iterator::_S_ref_is_glvalue): Just alias
534	join_view::_S_ref_is_glvalue.
535	(join_view::_Iterator::_S_iter_cat): Move to struct
536	transform_view::__iter_cat.
537	(join_view::_Iterator::_Outer_iter): Just alias
538	join_view::_Outer_iter.
539	(join_view::_Iterator::_Inner_iter): Just alias
540	join_view::_Inner_iter.
541	(join_view::_Iterator::iterator_category): Remove.
542	(join_view::_Sentinel::_Base): Just alias join_view::_Base.
543	(__detail::__split_view_outer_iter_cat): Define.
544	(__detail::__split_view_inner_iter_cat): Define.
545	(split_view::_Base): Define.
546	(split_view::_Outer_iter): Derive from __split_view_outer_iter_cat
547	in order to conditionally define iterator_category as per P2259.
548	(split_view::_Outer_iter::iterator_category): Remove.
549	(split_view::_Inner_iter): Derive from __split_view_inner_iter_cat
550	in order to conditionally define iterator_category as per P2259.
551	(split_view::_Inner_iter::_S_iter_cat): Move to
552	__split_view_inner_iter_cat.
553	(split_view::_Inner_iter::iterator_category): Remove.
554	(elements_view::_Base): Define.
555	(elements_view::__iter_cat): Define.
556	(elements_view::_Iterator): Derive from the above in order to
557	conditionall define iterator_category as per P2259.
558	(elements_view::_Iterator::_Base): Just alias
559	elements_view::_Base.
560	(elements_view::_Iterator::_S_iter_concept)
561	(elements_view::_Iterator::iterator_concept): Define as per
562	P2259.
563	(elements_view::_Iterator::iterator_category): Remove.
564	(elements_view::_Sentinel::_Base): Just alias
565	elements_view::_Base.
566	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
567	Adjust constraints on iterator_traits<counted_iterator>.
568	* testsuite/std/ranges/p2259.cc: New test.
569
5702021-05-03  Patrick Palka  <ppalka@redhat.com>
571
572	Backported from master:
573	2021-04-27  Patrick Palka  <ppalka@redhat.com>
574
575	PR libstdc++/100290
576	* include/std/ranges (join_view::_Iterator::operator++): Correct
577	the return type of the lambda to avoid returning a copy of
578	_M_parent->_M_inner.
579	* testsuite/std/ranges/adaptors/join.cc (test10): New test.
580
5812021-04-30  Jonathan Wakely  <jwakely@redhat.com>
582
583	Backported from master:
584	2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
585
586	* include/bits/basic_string.h (__cpp_lib_constexpr_string):
587	Only define for C++17 and later.
588
5892021-04-29  Jonathan Wakely  <jwakely@redhat.com>
590
591	Backported from master:
592	2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
593
594	PR libstdc++/100259
595	* include/experimental/internet (net::ip::make_error_code)
596	(net::ip::make_error_condition, net::ip::make_network_v4)
597	(net::ip::operator==(const udp&, const udp&)): Add 'inline'.
598
5992021-04-29  Jonathan Wakely  <jwakely@redhat.com>
600
601	Backported from master:
602	2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
603
604	* include/bits/basic_string.h (__cpp_lib_constexpr_string): Define.
605	* include/std/version (__cpp_lib_constexpr_string): Define.
606	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
607	Check for __cpp_lib_constexpr_string.
608	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
609	Likewise.
610	* testsuite/21_strings/char_traits/requirements/version.cc: New test.
611
6122021-04-21  Jonathan Wakely  <jwakely@redhat.com>
613
614	PR libstdc++/100180
615	* testsuite/experimental/net/internet/address/v6/members.cc:
616	Require gthreads.
617
6182021-04-21  Patrick Palka  <ppalka@redhat.com>
619
620	Backported from master:
621	2021-04-08  Patrick Palka  <ppalka@redhat.com>
622
623	* include/std/ranges (__detail::find): Define.
624	(split_view::_OuterIter::operator++): Apply proposed resolution
625	of LWG 3505.
626	* testsuite/std/ranges/adaptors/split.cc (test10): New test.
627
6282021-04-21  Patrick Palka  <ppalka@redhat.com>
629
630	Backported from master:
631	2021-04-08  Patrick Palka  <ppalka@redhat.com>
632
633	* include/std/ranges (__detail::find_if): Simplify.
634	(__detail::find_if_not): Likewise.
635	(__detail::min): Remove.
636	(__detail::mismatch): Simplify.
637	(take_view::size): Use std::min instead of __detail::min.
638
6392021-04-21  Patrick Palka  <ppalka@redhat.com>
640
641	Backported from master:
642	2021-04-08  Patrick Palka  <ppalka@redhat.com>
643
644	* include/std/ranges (__detail::__returnable_element): New
645	concept.
646	(elements_view): Use this concept in its constraints.  Add
647	missing private access specifier.
648	(elements_view::_S_get_element): Define as per LWG 3502.
649	(elements_view::operator*, elements_view::operator[]): Use
650	_S_get_element.
651	(elements_view::operator++): Remove unnecessary constraint
652	as per LWG 3492.
653	* testsuite/std/ranges/adaptors/elements.cc (test05): New test.
654
6552021-04-21  Patrick Palka  <ppalka@redhat.com>
656
657	Backported from master:
658	2020-10-31  Patrick Palka  <ppalka@redhat.com>
659
660	PR libstdc++/97600
661	* include/std/ranges (basic_istream_view::begin): Initialize
662	_Iterator from 'this' instead of '*this'.
663	(basic_istream_view::_Iterator::_Iterator): Adjust constructor
664	accordingly.
665	(filter_view::_Iterator::_Iterator): Take a filter_view*
666	argument instead of a filter_view& argument.
667	(filter_view::_Sentinel::_Sentinel): Likewise.
668	(filter_view::begin): Initialize _Iterator from 'this' instead
669	of '*this'.
670	(filter_view::end): Likewise.
671	(transform_view::_Iterator::_Iterator): Take a _Parent* instead
672	of a _Parent&.
673	(filter_view::_Iterator::operator+): Adjust accordingly.
674	(filter_view::_Iterator::operator-): Likewise.
675	(filter_view::begin): Initialize _Iterator from 'this' instead
676	of '*this'.
677	(filter_view::end): Likewise.
678	(join_view::_Iterator): Take a _Parent* instead of a _Parent&.
679	(join_view::_Sentinel): Likewise.
680	(join_view::begin): Initialize _Iterator from 'this' instead of
681	'*this'.
682	(join_view::end): Initialize _Sentinel from 'this' instead of
683	'*this'.
684	(split_view::_OuterIter): Take a _Parent& instead of a _Parent*.
685	(split_view::begin): Initialize _OuterIter from 'this' instead
686	of '*this'.
687	(split_view::end): Likewise.
688	* testsuite/std/ranges/97600.cc: New test.
689
6902021-04-19  François Dumont  <fdumont@gcc.gnu.org>
691
692	PR libstdc++/99402
693	* include/debug/helper_functions.h (__can_advance(_InputIterator,
694	const std::pair<_Diff, _Distance_precision>&, int)): New.
695	(__can_advance(const _Safe_iterator<>&,
696	const std::pair<_Diff, _Distance_precision>&, int)): New.
697	* include/debug/macros.h (__glibcxx_check_can_increment_dist): New,
698	use latter.
699	(__glibcxx_check_can_increment_range): Adapt to use latter.
700	(__glibcxx_check_can_decrement_range): Likewise.
701	* include/debug/safe_iterator.h
702	(_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
703	int)): New.
704	(__can_advance(const _Safe_iterator<>&,
705	const std::pair<_Diff, _Distance_precision>&, int)): New.
706	* include/debug/safe_iterator.tcc
707	(_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
708	int)): New.
709	(_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
710	std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
711	__dp_sign_max_size.
712	(__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist.
713	(__copy_move_backward_a): Likewise.
714	(__equal_aux): Likewise.
715	* include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&,
716	const std::pair<_Diff, _Distance_precision>&, int)): New.
717	(__can_advance(const std::move_iterator<>&,
718	const std::pair<_Diff, _Distance_precision>&, int)): New.
719	* testsuite/25_algorithms/copy/debug/99402.cc: New test.
720
7212021-04-19  Jonathan Wakely  <jwakely@redhat.com>
722
723	Backported from master:
724	2020-10-26  Jonathan Wakely  <jwakely@redhat.com>
725
726	PR libstdc++/97570
727	* libsupc++/new_opa.cc: Declare size_t in global namespace.
728	Remove unused header.
729
7302021-04-13  Jonathan Wakely  <jwakely@redhat.com>
731
732	Backported from master:
733	2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
734
735	PR libstdc++/100060
736	* include/std/bit: Only include <ext/numeric_traits.h> for
737	hosted build, use <limits> otherwise.
738
7392021-04-12  Jonathan Wakely  <jwakely@redhat.com>
740
741	Backported from master:
742	2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
743
744	PR libstdc++/100044
745	* include/std/ranges (__detail::__iterator_sentinel_pair):
746	Remove helper concept.
747	(subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove
748	deduction guides, as per LWG 3404.
749	* testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class
750	template argument deduction fails.
751
7522021-04-12  Jonathan Wakely  <jwakely@redhat.com>
753
754	Backported from master:
755	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
756
757	* include/bits/iterator_concepts.h (indirectly_readable): Add
758	partial specializations to resolve ambiguities (LWG 3446).
759	* testsuite/24_iterators/associated_types/readable.traits.cc:
760	Check types with both value_type and element_type.
761
7622021-04-09  Jonathan Wakely  <jwakely@redhat.com>
763
764	PR bootstrap/99983
765	* include/bits/hashtable.h (_Hashtable): Fix noexcept-speciofier
766	on definition to match the one on the declaration.
767
7682021-04-09  Jonathan Wakely  <jwakely@redhat.com>
769
770	Backported from master:
771	2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
772
773	PR libstdc++/99985
774	* include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix
775	to be a valid constexpr function in C++11.
776	* testsuite/23_containers/unordered_set/cons/99985.cc: New test.
777
7782021-04-09  Jonathan Wakely  <jwakely@redhat.com>
779
780	Backported from master:
781	2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
782
783	* include/bits/fs_fwd.h: Fix doxygen group command.
784	* include/bits/streambuf_iterator.h: Likewise.
785	* include/std/chrono: Likewise.
786	* include/std/memory: Likewise.
787	* include/std/thread: Likewise.
788	* include/tr1/complex: Likewise.
789
7902021-04-09  Jonathan Wakely  <jwakely@redhat.com>
791
792	Backported from master:
793	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
794
795	* include/bits/basic_string.h: Tweak doxygen comment.
796
7972021-04-09  Jonathan Wakely  <jwakely@redhat.com>
798
799	Backported from master:
800	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
801
802	* include/bits/random.h: Fix doxygen group commands.
803	* include/bits/regex_constants.h: Likewise.
804	* include/tr1/random.h: Likewise.
805
8062021-04-08  Jonathan Wakely  <jwakely@redhat.com>
807
808	Backported from master:
809	2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
810
811	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
812	Use allocator with the correct value type.
813	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
814	Likewise.
815
8162021-04-08  François Dumont  <fdumont@gcc.gnu.org>
817
818	Backported from master:
819	2020-07-29  François Dumont  <fdumont@gcc.gnu.org>
820
821	PR libstdc++/96029
822	* include/bits/hashtable.h
823	(_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
824	Add noexcept qualification.
825	(_Hashtable(_Hashtable&&)): Fix noexcept qualification.
826	(_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
827	qualification.
828	* include/bits/unordered_map.h
829	(unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
830	qualification.
831	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
832	Likewise.
833	* include/bits/unordered_set.h
834	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
835	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
836	Likewise.
837	* include/debug/unordered_map
838	(unordered_map(unordered_map&&, const allocator_type&)): Likewise.
839	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
840	Likewise.
841	* include/debug/unordered_set
842	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
843	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
844	Likewise.
845	* testsuite/23_containers/unordered_map/allocator/default_init.cc:
846	New test.
847	* testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
848	New test.
849	* testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
850	New test.
851	* testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
852	New test.
853	* testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
854	New test.
855	* testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
856	New test.
857	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
858	New test.
859	* testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
860	New test.
861	* testsuite/23_containers/unordered_set/allocator/default_init.cc:
862	New test.
863	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
864	New test.
865	* testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
866	New test.
867
8682021-04-08  François Dumont  <fdumont@gcc.gnu.org>
869
870	Backported from master:
871	2020-07-08  François Dumont  <fdumont@gcc.gnu.org>
872
873	PR libstdc++/96029
874	* include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
875	qualification based only on _Compare one.
876	* testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
877	static asserts.
878	* testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
879	Likewise.
880	* testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
881	Likewise.
882	* testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
883
8842021-04-08  Jonathan Wakely  <jwakely@redhat.com>
885
886	Backported from master:
887	2021-04-07  Jonathan Wakely  <jwakely@redhat.com>
888
889	PR libstdc++/99805
890	* src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call
891	non-const member on _M_pathname, to avoid copy-on-write.
892	* testsuite/27_io/filesystem/path/decompose/parent_path.cc:
893	Check construction from strings that might be shared.
894
8952021-04-08  Jonathan Wakely  <jwakely@redhat.com>
896
897	* doc/xml/manual/status_cxx2017.xml: Replace Intel parallelstl
898	link with LLVM repo for PSTL.
899	* doc/html/manual/status.html: Regenerate.
900
9012021-04-08  Jonathan Wakely  <jwakely@redhat.com>
902
903	Backported from master:
904	2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
905
906	* include/bits/alloc_traits.h: Use markdown for code font.
907	* include/bits/basic_string.h: Fix @param names.
908	* include/bits/regex.h: Fix duplicate @retval names, and rename.
909	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add
910	group open to match existing group close.
911	* include/ext/pb_ds/priority_queue.hpp: Add blank line before group
912	open.
913
9142021-04-08  Jonathan Wakely  <jwakely@redhat.com>
915
916	Backported from master:
917	2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
918
919	* include/bits/atomic_base.h: Fix doxygen group close.
920	* include/bits/basic_ios.h: Likewise.
921	* include/bits/forward_list.h: Likewise.
922	* include/bits/fs_dir.h: Likewise.
923	* include/bits/fs_ops.h: Likewise.
924	* include/bits/fs_path.h: Likewise.
925	* include/bits/functional_hash.h: Likewise.
926	* include/bits/gslice.h: Likewise.
927	* include/bits/gslice_array.h: Likewise.
928	* include/bits/hashtable_policy.h: Likewise.
929	* include/bits/indirect_array.h: Likewise.
930	* include/bits/locale_classes.h: Likewise.
931	* include/bits/locale_facets.h: Likewise.
932	* include/bits/locale_facets_nonio.h: Likewise.
933	* include/bits/mask_array.h: Likewise.
934	* include/bits/refwrap.h: Likewise.
935	* include/bits/regex.h: Likewise.
936	* include/bits/regex_automaton.h: Likewise.
937	* include/bits/regex_compiler.h: Likewise.
938	* include/bits/regex_constants.h: Likewise.
939	* include/bits/regex_error.h: Likewise.
940	* include/bits/regex_executor.h: Likewise.
941	* include/bits/regex_scanner.h: Likewise.
942	* include/bits/shared_ptr.h: Likewise.
943	* include/bits/shared_ptr_atomic.h: Likewise.
944	* include/bits/shared_ptr_base.h: Likewise.
945	* include/bits/slice_array.h: Likewise.
946	* include/bits/specfun.h: Likewise.
947	* include/bits/std_function.h: Likewise.
948	* include/bits/std_mutex.h: Likewise.
949	* include/bits/stl_deque.h: Likewise.
950	* include/bits/stl_iterator.h: Likewise.
951	* include/bits/stl_iterator_base_types.h: Likewise.
952	* include/bits/stl_map.h: Likewise.
953	* include/bits/stl_multimap.h: Likewise.
954	* include/bits/stl_multiset.h: Likewise.
955	* include/bits/stl_numeric.h: Likewise.
956	* include/bits/stl_pair.h: Likewise.
957	* include/bits/stl_set.h: Likewise.
958	* include/bits/stl_uninitialized.h: Likewise.
959	* include/bits/stream_iterator.h: Likewise.
960	* include/bits/streambuf_iterator.h: Likewise.
961	* include/bits/unique_ptr.h: Likewise.
962	* include/bits/unordered_map.h: Likewise.
963	* include/bits/unordered_set.h: Likewise.
964	* include/decimal/decimal: Likewise.
965	* include/experimental/any: Likewise.
966	* include/experimental/array: Likewise.
967	* include/experimental/bits/fs_dir.h: Likewise.
968	* include/experimental/bits/fs_fwd.h: Likewise.
969	* include/experimental/bits/fs_ops.h: Likewise.
970	* include/experimental/bits/fs_path.h: Likewise.
971	* include/experimental/buffer: Likewise.
972	* include/experimental/internet: Likewise.
973	* include/experimental/optional: Likewise.
974	* include/experimental/propagate_const: Likewise.
975	* include/experimental/socket: Likewise.
976	* include/ext/pb_ds/assoc_container.hpp: Likewise.
977	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
978	Likewise.
979	* include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise.
980	* include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise.
981	* include/ext/pb_ds/detail/types_traits.hpp: Likewise.
982	* include/ext/pb_ds/exception.hpp: Likewise.
983	* include/ext/pb_ds/priority_queue.hpp: Likewise.
984	* include/ext/pb_ds/tag_and_trait.hpp: Likewise.
985	* include/ext/random: Likewise.
986	* include/std/any: Likewise.
987	* include/std/atomic: Likewise.
988	* include/std/bitset: Likewise.
989	* include/std/chrono: Likewise.
990	* include/std/complex: Likewise.
991	* include/std/condition_variable: Likewise.
992	* include/std/fstream: Likewise.
993	* include/std/future: Likewise.
994	* include/std/istream: Likewise.
995	* include/std/iostream: Likewise.
996	* include/std/mutex: Likewise.
997	* include/std/numeric: Likewise.
998	* include/std/ostream: Likewise.
999	* include/std/ratio: Likewise.
1000	* include/std/shared_mutex: Likewise.
1001	* include/std/stdexcept: Likewise.
1002	* include/std/streambuf: Likewise.
1003	* include/std/system_error: Likewise.
1004	* include/std/valarray: Likewise.
1005	* include/std/variant: Likewise.
1006	* include/tr1/cmath: Likewise.
1007	* include/tr1/regex: Likewise.
1008	* include/tr2/dynamic_bitset: Likewise.
1009	* libsupc++/atomic_lockfree_defines.h: Likewise.
1010	* libsupc++/exception: Likewise.
1011	* libsupc++/exception.h: Likewise.
1012	* libsupc++/exception_ptr.h: Likewise.
1013	* libsupc++/nested_exception.h: Likewise.
1014
10152021-04-08  Jonathan Wakely  <jwakely@redhat.com>
1016
1017	Backported from master:
1018	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
1019
1020	* include/std/string_view: Adjust Doxygen @file comment.
1021
10222021-04-08  Release Manager
1023
1024	* GCC 10.3.0 released.
1025
10262021-04-01  Jonathan Wakely  <jwakely@redhat.com>
1027
1028	Backported from master:
1029	2021-02-14  Jonathan Wakely  <jwakely@redhat.com>
1030
1031	PR libstdc++/99096
1032	* testsuite/util/testsuite_fs.h: Always include <unistd.h>.
1033
10342021-04-01  Jonathan Wakely  <jwakely@redhat.com>
1035
1036	Backported from master:
1037	2020-12-17  Jonathan Wakely  <jwakely@redhat.com>
1038
1039	* config.h.in: Regenerate.
1040	* config/os/djgpp/error_constants.h: Test POSIX errno macros
1041	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
1042	* config/os/mingw32-w64/error_constants.h: Likewise.
1043	* config/os/mingw32/error_constants.h: Likewise.
1044	* configure: Regenerate.
1045
10462021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1047
1048	Backported from master:
1049	2020-11-30  Jonathan Wakely  <jwakely@redhat.com>
1050
1051	* testsuite/20_util/specialized_algorithms/pstl/*: Add
1052	dg-timeout-factor.
1053	* testsuite/25_algorithms/pstl/*: Likewise.
1054	* testsuite/26_numerics/pstl/*: Likewise.
1055	* testsuite/28_regex/*: Likewise.
1056
10572021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1058
1059	Backported from master:
1060	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
1061
1062	* testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc:
1063	Add dg-timeout-factor directive.
1064	* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
1065	Likewise.
1066	* testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc:
1067	Likewise.
1068	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc:
1069	Likewise.
1070	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
1071	Likewise.
1072	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc:
1073	Likewise.
1074	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc:
1075	Likewise.
1076	* testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
1077	Likewise.
1078	* testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise.
1079	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc:
1080	Likewise.
1081	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc:
1082	Likewise.
1083	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
1084
10852021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1086
1087	Backported from master:
1088	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
1089
1090	* include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
1091	#ifdef instead of #if.
1092	(stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
1093	using __gthread_yield.
1094
10952021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1096
1097	Backported from master:
1098	2020-06-19  Jonathan Wakely  <jwakely@redhat.com>
1099
1100	PR libstdc++/95765
1101	* include/bits/stl_algobase.h (__size_to_integer(float))
1102	(__size_to_integer(double), __size_to_integer(long double))
1103	(__size_to_integer(__float128)): Cast return type explicitly.
1104
11052021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1106
1107	Backported from master:
1108	2020-11-25  Jonathan Wakely  <jwakely@redhat.com>
1109
1110	* testsuite/17_intro/names.cc: Do not test 'v' on AIX.
1111
11122021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1113
1114	Backported from master:
1115	2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
1116
1117	* include/bits/basic_string.h (size_type, difference_type):
1118	Use allocator_traits to obtain the allocator's size_type and
1119	difference_type.
1120
11212021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1122
1123	Backported from master:
1124	2020-09-01  Jonathan Wakely  <jwakely@redhat.com>
1125
1126	* include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
1127	New helper function for finding GCD of two positive intmax_t
1128	values.
1129	(duration::__divide): New helper alias for dividing one period
1130	by another.
1131	(duration::__is_harmonic): Use __divide not ratio_divide.
1132	(duration(const duration<R2, P2>&)): Require the duration rep
1133	types to be convertible.
1134	* testsuite/20_util/duration/cons/dr2094.cc: New test.
1135	* testsuite/20_util/duration/requirements/reduced_period.cc:
1136	Fix definition of unused member functions in test type.
1137	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1138	Adjust expected errors.
1139
11402021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1141
1142	Backported from master:
1143	2020-08-27  Jonathan Wakely  <jwakely@redhat.com>
1144
1145	* include/std/chrono (__duration_common_type): Ensure the
1146	reduced ratio is used. Remove unused partial specialization
1147	using __failure_type.
1148	(common_type): Pass reduced ratios to __duration_common_type.
1149	Add partial specializations for simple cases involving a single
1150	duration or time_point type.
1151	(duration::period): Use reduced ratio.
1152	(duration::operator+(), duration::operator-()): Return duration
1153	type using the reduced ratio.
1154	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1155	Adjust expected errors.
1156	* testsuite/20_util/duration/requirements/reduced_period.cc: New test.
1157
11582021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1159
1160	Backported from master:
1161	2020-09-03  Jonathan Wakely  <jwakely@redhat.com>
1162
1163	PR libstdc++/96592
1164	* include/std/tuple (_TupleConstraints<true, T...>): Use
1165	alternative is_constructible instead of std::is_constructible.
1166	* testsuite/20_util/tuple/cons/96592.cc: New test.
1167
11682021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1169
1170	Backported from master:
1171	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
1172
1173	* testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
1174	definition of aggregates in C++20.
1175	* testsuite/20_util/optional/requirements.cc: Adjust for
1176	defaulted comparisons in C++20.
1177
11782021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1179
1180	Backported from master:
1181	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
1182
1183	* testsuite/20_util/tuple/78939.cc: Suppress warnings about
1184	deprecation of volatile-qualified structured bindings in C++20.
1185	* testsuite/20_util/variable_templates_for_traits.cc: Likewise
1186	for deprecation of is_pod in C++20
1187
11882021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1189
1190	Backported from master:
1191	2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
1192
1193	* include/std/optional (bad_optional_access): Define default
1194	constructor and destructor as defaulted.
1195	* testsuite/20_util/optional/bad_access.cc: New test.
1196
11972021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1198
1199	Backported from master:
1200	2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
1201
1202	* include/bits/ranges_algobase.h (__copy_n_fn): Only call
1203	ranges::copy for positive values.
1204	* include/bits/stl_algo.h (copy_n): Convert Size argument to an
1205	integral type and only call __copy_n for positive values.
1206	* testsuite/util/testsuite_iterators.h
1207	(random_access_iterator_wrapper::operator+=): Fix range check for
1208	negative values.
1209	(output_container, input_container, forward_container)
1210	(bidirectional_container, random_access_container): New alias
1211	templates.
1212	* testsuite/25_algorithms/copy_n/5.cc: New test.
1213
12142021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1215
1216	Backported from master:
1217	2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
1218
1219	* include/std/atomic (atomic): Add static assertions.
1220	* testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
1221
12222021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1223
1224	Backported from master:
1225	2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
1226
1227	* include/bits/stl_iterator.h (move_iterator::operator=): Define.
1228	* testsuite/24_iterators/move_iterator/dr3265.cc: New test.
1229
12302021-03-29  Paul Keir  <paul.keir@uws.ac.uk>
1231
1232	Backported from master:
1233	2020-06-15  Paul Keir  <paul.keir@uws.ac.uk>
1234
1235	* include/bits/char_traits.h (char_traits::move): constexpr move with
1236	overlap was using copy_backward incorrectly.
1237	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
1238	New test.
1239
12402021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1241
1242	Backported from master:
1243	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
1244
1245	* testsuite/20_util/time_point_cast/rounding.cc: Remove
1246	duplicate dg-do directive and add c++17 effective target.
1247
12482021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1249
1250	Backported from master:
1251	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
1252
1253	* testsuite/30_threads/thread/cons/84535.cc: Use a custom
1254	namespace.
1255	* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
1256
12572021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1258
1259	Backported from master:
1260	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
1261
1262	* testsuite/lib/libstdc++.exp (libstdc++_init): Only set
1263	tool_timeout if it hasn't been set by the user already.
1264
12652021-03-29  Moritz Sichert  <sichert@in.tum.de>
1266
1267	Backported from master:
1268	2021-03-23  Moritz Sichert  <sichert@in.tum.de>
1269
1270	* include/std/ranges (reverse_view::begin, reverse_view::end):
1271	Qualify make_reverse_iterator calls to avoid ADL.
1272	* testsuite/std/ranges/adaptors/reverse.cc: Test that
1273	views::reverse works when make_reverse_iterator is defined
1274	in an associated namespace.
1275
12762021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1277
1278	Backported from master:
1279	2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
1280
1281	* include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])):
1282	Add missing 'noexcept' as per LWG 2280.
1283	(rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>))
1284	(rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537.
1285	* testsuite/24_iterators/range_access/range_access.cc: Check for
1286	expected noexcept specifiers. Check result types of generic
1287	std::begin and std::end overloads.
1288	* testsuite/24_iterators/range_access/range_access_cpp14.cc:
1289	Check for expected noexcept specifiers.
1290	* testsuite/24_iterators/range_access/range_access_cpp17.cc:
1291	Likewise.
1292
12932021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1294
1295	Backported from master:
1296	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
1297
1298	PR libstdc++/99537
1299	* include/std/stop_token (_Stop_state_t::_M_release_ownership):
1300	Use acq_rel memory ordering.
1301
13022021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1303
1304	Backported from master:
1305	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
1306
1307	PR libstdc++/99533
1308	* src/c++17/fs_dir.cc (recursive_directory_iterator): Use new
1309	helper function to check for permission denied errors.
1310	* src/filesystem/dir.cc (recursive_directory_iterator):
1311	Likewise.
1312	* src/filesystem/dir-common.h (is_permission_denied_error): New
1313	helper function.
1314
13152021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1316
1317	Backported from master:
1318	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
1319
1320	PR libstdc++/99536
1321	* include/bits/random.h (normal_distribution): Use
1322	default-initializer for _M_saved and _M_saved_available.
1323
13242021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1325
1326	Backported from master:
1327	2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
1328
1329	* include/bits/range_cmp.h (__eq_builtin_ptr_cmp): Remove.
1330	(ranges::equal_to, ranges::not_equal_to): Do not constrain
1331	with __eq_builtin_ptr_cmp.
1332	(ranges::less, ranges::greater, ranges::less_equal)
1333	(ranges::greater_equal): Do not constrain with
1334	__less_builtin_ptr_cmp.
1335	* libsupc++/compare (compare_three_way): Do not constrain with
1336	__3way_builtin_ptr_cmp.
1337	* testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to...
1338	* testsuite/18_support/comparisons/object/lwg3530.cc: ...here.
1339	* testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test.
1340
13412021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1342
1343	Backported from master:
1344	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1345
1346	* doc/xml/manual/status_cxx2014.xml: Document implementation
1347	specific properties of std::experimental::filesystem::rename.
1348	* doc/xml/manual/status_cxx2017.xml: Document implementation
1349	specific properties of std::filesystem::rename.
1350	* doc/html/*: Regenerate.
1351	* src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour
1352	for directories on Windows.
1353	* src/filesystem/ops-common.h (__gnu_posix::rename): Use
1354	MoveFileExW on Windows.
1355	* testsuite/27_io/filesystem/operations/rename.cc: New test.
1356	* testsuite/experimental/filesystem/operations/rename.cc: New test.
1357
13582021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1359
1360	Backported from master:
1361	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1362
1363	* testsuite/util/testsuite_fs.h (nonexistent_path): Add
1364	random number to the path.
1365
13662021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1367
1368	Backported from master:
1369	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1370
1371	* include/experimental/internet (address_v6::to_string): Include
1372	scope ID in string.
1373	(address_v6::loopback): Fix to be constexpr in C++14.
1374	* testsuite/experimental/net/internet/address/v6/members.cc:
1375	Test to_string() results.
1376
13772021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1378
1379	Backported from master:
1380	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1381
1382	* include/experimental/internet (address_v6::any): Avoid using
1383	memcpy in constexpr function.
1384	(address_v6::loopback): Likewise.
1385	(make_address_v6): Fix missing return statements on error paths.
1386	* include/experimental/io_context: Avoid -Wdangling-else
1387	warning.
1388	* testsuite/experimental/net/internet/address/v4/members.cc:
1389	Remove unused variables.
1390	* testsuite/experimental/net/internet/address/v6/members.cc:
1391	New test.
1392
13932021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1394
1395	Backported from master:
1396	2020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1397
1398	* testsuite/25_algorithms/all_of/constexpr.cc: Check result of
1399	the algorithm.
1400	* testsuite/25_algorithms/any_of/constexpr.cc: Likewise.
1401	* testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
1402	* testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise.
1403	* testsuite/25_algorithms/count/constexpr.cc: Likewise.
1404	* testsuite/25_algorithms/equal/constexpr.cc: Likewise.
1405	* testsuite/25_algorithms/equal_range/constexpr.cc: Likewise.
1406	* testsuite/25_algorithms/fill/constexpr.cc: Likewise.
1407	* testsuite/25_algorithms/find_end/constexpr.cc: Likewise.
1408	* testsuite/25_algorithms/find_if/constexpr.cc: Likewise.
1409	* testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise.
1410	* testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise.
1411	* testsuite/25_algorithms/is_sorted_until/constexpr.cc:
1412	Likewise.
1413	* testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
1414	Likewise.
1415	* testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise.
1416	* testsuite/25_algorithms/merge/constexpr.cc: Likewise.
1417	* testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
1418	* testsuite/25_algorithms/none_of/constexpr.cc: Likewise.
1419	* testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise.
1420	* testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise.
1421	* testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise.
1422	* testsuite/25_algorithms/remove_if/constexpr.cc: Likewise.
1423	* testsuite/25_algorithms/replace_if/constexpr.cc: Likewise.
1424	* testsuite/25_algorithms/reverse/constexpr.cc: Likewise.
1425	* testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise.
1426	* testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise.
1427	* testsuite/25_algorithms/search/constexpr.cc: Likewise.
1428	* testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
1429	* testsuite/25_algorithms/set_intersection/constexpr.cc:
1430	Likewise.
1431	* testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
1432	Likewise.
1433	* testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
1434	* testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
1435	* testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
1436
14372021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1438
1439	Backported from master:
1440	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1441
1442	PR libstdc++/99077
1443	* src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)):
1444	Change int parameter to error_code, to match std::ios_failure.
1445	(__throw_ios_failure(const char*, int)): Construct error_code
1446	from int parameter.
1447
14482021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1449
1450	Backported from master:
1451	2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
1452
1453	PR libstdc++/99058
1454	* doc/xml/manual/status_cxx2011.xml: Document when support
1455	became stable.
1456	* doc/xml/manual/status_cxx2014.xml: Likewise.
1457	* doc/xml/manual/status_cxx2017.xml: Likewise.
1458	* doc/html/manual/status.html: Regenerate.
1459
14602021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1461
1462	Backported from master:
1463	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
1464
1465	PR libstdc++/88881
1466	* src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
1467
14682021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1469
1470	Backported from master:
1471	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
1472
1473	PR libstdc++/88881
1474	* src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
1475
14762021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1477
1478	Backported from master:
1479	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
1480
1481	* src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
1482	(fs::remove): Use std::system_category() for error codes from
1483	GetLastError().
1484	* src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
1485	Likewise.
1486
14872021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1488
1489	Backported from master:
1490	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
1491
1492	* testsuite/27_io/filesystem/operations/proximate.cc: Fix typo
1493	in __MINGW32__ macro name.
1494	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
1495	* testsuite/27_io/filesystem/path/generation/proximate.cc:
1496	Likewise.
1497	* testsuite/27_io/filesystem/path/generation/relative.cc:
1498	Likewise.
1499	* testsuite/util/testsuite_fs.h: Likewise.
1500
15012021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1502
1503	Backported from master:
1504	2021-02-03  Jonathan Wakely  <jwakely@redhat.com>
1505
1506	* testsuite/19_diagnostics/error_code/operators/not_equal.cc:
1507	Add comparison with same category and different values.
1508	* testsuite/19_diagnostics/error_code/operators/less.cc:
1509	Likewise. Fix comparison involving different categories.
1510	* testsuite/19_diagnostics/error_code/operators/three_way.cc:
1511	Likewise.
1512	* testsuite/19_diagnostics/error_condition/operators/less.cc:
1513	Add comment.
1514	* testsuite/19_diagnostics/error_condition/operators/three_way.cc:
1515	Likewise.
1516
15172021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1518
1519	Backported from master:
1520	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
1521
1522	PR libstdc++/98319
1523	* include/experimental/random: Only define contents for C++14
1524	and later.
1525	* include/experimental/source_location: Likewise.
1526	* include/experimental/utility: Likewise.
1527	* testsuite/experimental/feat-lib-fund.cc: Include all LFTS
1528	headers that are present. Allow test to run for all modes.
1529
15302021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1531
1532	Backported from master:
1533	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
1534
1535	PR libstdc++/93151
1536	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove.
1537	* configure.ac: Regenerate.
1538	* config/os/generic/error_constants.h: Test POSIX errno macros
1539	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
1540	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
1541	Likewise.
1542	* testsuite/19_diagnostics/headers/system_error/93151.cc: New
1543	test.
1544
15452021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1546
1547	Backported from master:
1548	2020-12-10  Jonathan Wakely  <jwakely@redhat.com>
1549
1550	PR libstdc++/98226
1551	* include/std/bit (__countl_one, __countr_one): Remove redundant
1552	branches.
1553
15542021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1555
1556	Backported from master:
1557	2020-11-09  Jonathan Wakely  <jwakely@redhat.com>
1558
1559	* include/std/bit (__popcount): Remove redundant check for zero.
1560
15612021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1562
1563	Backported from master:
1564	2020-10-30  Jonathan Wakely  <jwakely@redhat.com>
1565
1566	* include/std/ranges (enable_borrowed_view<take_view<T>>)
1567	(enable_borrowed_view<drop_view<T>>)
1568	(enable_borrowed_view<drop_while_view<T>>)
1569	(enable_borrowed_view<reverse_view<T>>)
1570	(enable_borrowed_view<common_view<T>>)
1571	(enable_borrowed_view<elements_view<T>>): Add partial
1572	specializations as per P2017R1.
1573	* testsuite/std/ranges/adaptors/conditionally_borrowed.cc:
1574	New test.
1575
15762021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1577
1578	Backported from master:
1579	2020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1580
1581	* include/std/ranges (subrange::subrange(R&&)): Use
1582	direct-initialization instead of list-initialization, so a
1583	potential narrowing conversion from ranges::size(r) to the
1584	stored size isn't ill-formed.
1585
15862021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1587
1588	Backported from master:
1589	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
1590
1591	PR libstdc++/82584
1592	* include/bits/random.tcc
1593	(discrete_distribution::param_type::_M_initialize)
1594	(piecewise_constant_distribution::param_type::_M_initialize)
1595	(piecewise_linear_distribution::param_type::_M_initialize):
1596	Add assertions for positive sums..
1597	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1598	line.
1599
16002021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1601
1602	Backported from master:
1603	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
1604
1605	* include/bits/random.h (__detail::_Mod): Revert last change.
1606	(__detail::__mod): Do not use _Mod for a==0 case.
1607	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
1608	Check other cases with a==0. Also check runtime results.
1609	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1610	line.
1611
16122021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1613
1614	Backported from master:
1615	2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
1616
1617	* include/bits/random.h (__detail::_Mod): Avoid divide by zero.
1618	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
1619	New test.
1620
16212021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1622
1623	Backported from master:
1624	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1625
1626	* include/std/ranges (drop_view::begin()): Adjust constraints
1627	to match the correct condition for O(1) ranges::next (LWG 3482).
1628	* testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
1629	cached for non-sized_range.
1630
16312021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1632
1633	Backported from master:
1634	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1635
1636	* include/std/ranges (transform_view, elements_view): Relax
1637	constraints on operator- for iterators, as per LWG 3483.
1638	* testsuite/std/ranges/adaptors/elements.cc: Check that we
1639	can take the difference of two iterators from a non-random
1640	access range.
1641	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
1642
16432021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1644
1645	Backported from master:
1646	2020-10-28  Jonathan Wakely  <jwakely@redhat.com>
1647
1648	PR libstdc++/95592
1649	* include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR)
1650	(_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION):
1651	Use elaborated-type-specifier and qualified-id to avoid
1652	ambiguities with QNX system headers.
1653	* testsuite/26_numerics/valarray/95592.cc: New test.
1654
16552021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1656
1657	Backported from master:
1658	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
1659
1660	* include/bits/locale_conv.h (__str_codecvt_out_all):
1661	Add cast to compare operands of the same signedness.
1662	* include/bits/locale_facets_nonio.tcc
1663	(time_get::_M_extract_wday_or_month): Likewise.
1664	* include/bits/sstream.tcc (basic_stringbuf::overflow):
1665	Likewise.
1666	* include/tr1/legendre_function.tcc (__sph_legendre): Use
1667	unsigned for loop variable.
1668
16692021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1670
1671	Backported from master:
1672	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1673
1674	* include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
1675	Add casts to compare types of the same signedness.
1676
16772021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1678
1679	Backported from master:
1680	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1681
1682	* include/bits/ranges_algobase.h (__equal_fn): Remove unused
1683	typedef.
1684
16852021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1686
1687	Backported from master:
1688	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1689
1690	* include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
1691	(operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
1692	warnings for uses of std::auto_ptr.
1693	* include/experimental/type_traits (is_literal_type_v):
1694	Likewise, for use of std::is_literal_type.
1695	* include/std/condition_variable (condition_variable_any::_Unlock):
1696	Likewise, for use of std::uncaught_exception.
1697
16982021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1699
1700	Backported from master:
1701	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1702
1703	* include/bits/fs_path.h (path::_List::type()): Avoid narrowing
1704	conversion.
1705
17062021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1707
1708	Backported from master:
1709	2020-09-07  Jonathan Wakely  <jwakely@redhat.com>
1710
1711	* include/std/ranges (__box): Simplify constraints as per LWG 3477.
1712
17132021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1714
1715	Backported from master:
1716	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1717
1718	* include/std/ranges (ranges::iota_view::size()): Perform all
1719	calculations in the right unsigned types.
1720	* testsuite/std/ranges/iota/size.cc: New test.
1721
17222021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1723
1724	Backported from master:
1725	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
1726
1727	* include/experimental/executor (system_context::_M_run()):
1728	Fix predicate.
1729	(system_context::join()): Do not join unless joinable.
1730	* testsuite/experimental/net/system_context/1.cc: New test.
1731
17322021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1733
1734	Backported from master:
1735	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1736
1737	* include/bits/stl_iterator.h (inserter): Do not deduce
1738	iterator type (LWG 561).
1739	* testsuite/24_iterators/insert_iterator/dr561.cc: New test.
1740
17412021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1742
1743	Backported from master:
1744	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
1745
1746	* include/bits/fs_path.h (path::_List::begin, path::_List::end):
1747	Add noexcept to match definitions in src/c++17/fs_path.cc.
1748
17492021-03-29  Jonathan Wakely  <jwakely@redhat.com>
1750
1751	Backported from master:
1752	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
1753
1754	* src/c++17/fs_dir.cc (fs::directory_iterator::operator*):
1755	Add noexcept. Do not throw on precondition violation.
1756
17572021-03-19  Jakub Jelinek  <jakub@redhat.com>
1758
1759	Backported from master:
1760	2021-02-23  Jakub Jelinek  <jakub@redhat.com>
1761
1762	PR libstdc++/99181
1763	* testsuite/21_strings/char_traits/requirements/char/99181.cc: New
1764	test.
1765
17662021-03-19  Jakub Jelinek  <jakub@redhat.com>
1767
1768	Backported from master:
1769	2021-02-23  Jakub Jelinek  <jakub@redhat.com>
1770
1771	PR libstdc++/99181
1772	* include/bits/char_traits.h (char_traits<char>::compare): For
1773	constexpr evaluation don't call
1774	__gnu_cxx::char_traits<char_type>::compare but do the comparison loop
1775	directly.
1776
17772021-02-09  Jonathan Wakely  <jwakely@redhat.com>
1778
1779	Backported from master:
1780	2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
1781
1782	PR libstdc++/99021
1783	* include/std/coroutine (coroutine_handle<P>::from_address): Add
1784	noexcept.
1785
17862021-01-13  Jonathan Wakely  <jwakely@redhat.com>
1787
1788	PR libstdc++/98605
1789	* include/std/mutex (call_once): Use NOLINT to suppress clang
1790	analyzer warnings.
1791
17922021-01-11  Jonathan Wakely  <jwakely@redhat.com>
1793
1794	Backported from master:
1795	2020-12-02  Jonathan Wakely  <jwakely@redhat.com>
1796
1797	* python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the
1798	name of the type and pass it to the iterator.
1799	(StdPathPrinter): Likewise.
1800	* testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test.
1801
18022021-01-11  Jonathan Wakely  <jwakely@redhat.com>
1803
1804	Backported from master:
1805	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
1806
1807	PR libstdc++/96083
1808	* include/ext/throw_allocator.h: Use __has_builtin to check for
1809	__builtin_sprintf support, and use std::sprintf if necessary.
1810
18112021-01-11  Jonathan Wakely  <jwakely@redhat.com>
1812
1813	Backported from master:
1814	2020-12-02  Jonathan Wakely  <jwakely@redhat.com>
1815
1816	PR libstdc++/65480
1817	PR libstdc++/68735
1818	* python/libstdcxx/v6/printers.py (function_pointer_to_name):
1819	New helper function to get the name of a function from its
1820	address.
1821	(StdExpAnyPrinter.__init__): Use it.
1822
18232021-01-11  Jonathan Wakely  <jwakely@redhat.com>
1824
1825	Backported from master:
1826	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
1827
1828	* testsuite/experimental/filesystem/filesystem_error/cons.cc:
1829	Remove -std=gnu++17 option.
1830
18312021-01-08  Iain Sandoe  <iain@sandoe.co.uk>
1832
1833	Backported from master:
1834	2020-07-17  Iain Sandoe  <iain@sandoe.co.uk>
1835
1836	* include/std/coroutine: Mark the methods of the
1837	trivial awaitables as constexpr.
1838
18392021-01-03  Iain Sandoe  <iain@sandoe.co.uk>
1840	    Jakub Jelinek   <jakub@redhat.com>
1841
1842	PR target/97865
1843	* configure: Regenerate.
1844
18452020-12-03  Jonathan Wakely  <jwakely@redhat.com>
1846
1847	Backported from master:
1848	2020-12-03  Jonathan Wakely  <jwakely@redhat.com>
1849
1850	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt:
1851	Update.
1852	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
1853	Update.
1854
18552020-12-01  Patrick Palka  <ppalka@redhat.com>
1856
1857	Backported from master:
1858	2020-10-12  Patrick Palka  <ppalka@redhat.com>
1859
1860	PR libstdc++/95322
1861	* include/std/ranges (take_view::_CI): Define this alias
1862	template as per LWG 3449 and remove ...
1863	(take_view::_Sentinel::_CI): ... this type alias.
1864	(take_view::_Sentinel::operator==): Adjust use of _CI
1865	accordingly.  Define a second overload that accepts an iterator
1866	of the opposite constness as per LWG 3449.
1867	(take_while_view::_Sentinel::operator==): Likewise.
1868	* testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
1869
18702020-11-26  Jonathan Wakely  <jwakely@redhat.com>
1871
1872	Backported from master:
1873	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
1874
1875	PR libstdc++/98001
1876	* testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid
1877	FILE* to constructor.
1878
18792020-11-25  Jonathan Wakely  <jwakely@redhat.com>
1880
1881	Backported from master:
1882	2020-11-25  Jonathan Wakely  <jwakely@redhat.com>
1883
1884	PR libstdc++/97935
1885	* include/bits/iterator_concepts.h (__detail::__iter_without_category):
1886	New helper concept.
1887	(__iterator_traits::__cat): Use __detail::__iter_without_category.
1888	* testsuite/24_iterators/associated_types/iterator.traits.cc: New test.
1889
18902020-11-25  Jonathan Wakely  <jwakely@redhat.com>
1891
1892	Backported from master:
1893	2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
1894
1895	* include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
1896	(__detail::__cat, __detail::__diff): Move to class scope in the
1897	relevant __iterator_traits specializations.
1898	(__iterator_traits<>): Use nested class templates instead of ones from
1899	namespace __detail.
1900	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
1901	class scope in iterator_traits<common_iterator<I, S>>.
1902	(iterator_traits<common_iterator<I, S>>): Use nested class template
1903	instead of __detail::__common_iter_ptr.
1904
19052020-11-24  Jonathan Wakely  <jwakely@redhat.com>
1906
1907	Backported from master:
1908	2020-10-02  Jonathan Wakely  <jwakely@redhat.com>
1909
1910	* testsuite/29_atomics/atomic_float/value_init.cc: Use float
1911	instead of double so that __atomic_load_8 isn't needed.
1912
19132020-11-20  Jonathan Wakely  <jwakely@redhat.com>
1914
1915	Backported from master:
1916	2020-11-20  Jonathan Wakely  <jwakely@redhat.com>
1917
1918	PR libstdc++/92546
1919	* include/std/regex (pmr::smatch, pmr::wsmatch): Declare using
1920	underlying __normal_iterator type, not nested typedef
1921	basic_string::const_iterator.
1922
19232020-11-20  Jonathan Wakely  <jwakely@redhat.com>
1924
1925	PR libstdc++/97876
1926	* include/std/stop_token (_Stop_state_t): Define default
1927	constructor as user-provided not defaulted.
1928
19292020-11-20  Jonathan Wakely  <jwakely@redhat.com>
1930
1931	Backported from master:
1932	2020-11-19  Jonathan Wakely  <jwakely@redhat.com>
1933
1934	PR libstdc++/95989
1935	* config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID):
1936	Define new macro to get reliable thread ID.
1937	* include/std/stop_token (_Stop_state_t::_M_request_stop):
1938	Use new macro if it's defined.
1939	(_Stop_state_t::_M_remove_callback): Likewise.
1940	* include/std/thread (this_thread::get_id): Likewise.
1941	* testsuite/30_threads/jthread/95989.cc: New test.
1942	* testsuite/30_threads/this_thread/95989.cc: New test.
1943
19442020-11-18  Patrick Palka  <ppalka@redhat.com>
1945
1946	Backported from master:
1947	2020-11-18  Patrick Palka  <ppalka@redhat.com>
1948
1949	* include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify
1950	local variable inner.
1951	(join_view::_Iterator::operator->): Use _Inner_iter instead of
1952	_Outer_iter in the function signature as per LWG 3500.
1953	* testsuite/std/ranges/adaptors/join.cc (test08): Test it.
1954
19552020-11-18  Jonathan Wakely  <jwakely@redhat.com>
1956
1957	Backported from master:
1958	2020-10-06  Jonathan Wakely  <jwakely@redhat.com>
1959
1960	* include/std/ranges (join_view): Remove deduction guide.
1961	(views::join): Add explicit template argument list to prevent
1962	deducing the wrong type.
1963	* testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
1964	here, from ...
1965	* testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
1966
19672020-11-18  Jonathan Wakely  <jwakely@redhat.com>
1968
1969	Backported from master:
1970	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1971
1972	* include/std/ranges (join_view): Add deduction guide (LWG 3474).
1973	* testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
1974
19752020-11-18  Jonathan Wakely  <jwakely@redhat.com>
1976
1977	Backported from master:
1978	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1979
1980	* include/std/version (__cpp_lib_array_constexpr)
1981	(__cpp_lib_constexpr_char_traits): Only define C++17 value when
1982	compiling C++17.
1983
19842020-11-18  Jonathan Wakely  <jwakely@redhat.com>
1985
1986	Backported from master:
1987	2020-06-15  Jonathan Wakely  <jwakely@redhat.com>
1988
1989	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
1990	Update value for C++20.
1991	* include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
1992	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
1993	Update expected value.
1994
19952020-11-18  Jonathan Wakely  <jwakely@redhat.com>
1996
1997	Backported from master:
1998	2020-11-17  Jonathan Wakely  <jwakely@redhat.com>
1999
2000	PR libstdc++/97869
2001	* include/precompiled/stdc++.h: Include <coroutine>.
2002	* include/std/version (__cpp_lib_span): Check __cpp_lib_concepts
2003	before defining.
2004
20052020-11-17  Patrick Palka  <ppalka@redhat.com>
2006
2007	Backported from master:
2008	2020-11-17  Patrick Palka  <ppalka@redhat.com>
2009
2010	PR libstdc++/97828
2011	* include/bits/ranges_algo.h (__search_n_fn::operator()): Check
2012	random_access_iterator before using the backtracking
2013	implementation.  When the backwards scan fails prematurely,
2014	reset __remainder appropriately.
2015	* testsuite/25_algorithms/search_n/97828.cc: New test.
2016
20172020-11-16  Jonathan Wakely  <jwakely@redhat.com>
2018
2019	Backported from master:
2020	2020-11-13  Jonathan Wakely  <jwakely@redhat.com>
2021
2022	PR libstdc++/93456
2023	* src/c++11/futex.cc (relative_timespec): Remove redundant check
2024	negative values.
2025	* testsuite/30_threads/future/members/93456.cc: New.
2026
20272020-11-16  Jonathan Wakely  <jwakely@redhat.com>
2028
2029	Backported from master:
2030	2020-11-16  Jonathan Wakely  <jwakely@redhat.com>
2031
2032	* src/c++11/futex.cc (relative_timespec): New function to
2033	create relative time from two absolute times.
2034	(__atomic_futex_unsigned_base::_M_futex_wait_until): Use
2035	relative_timespec.
2036
20372020-11-16  Jonathan Wakely  <jwakely@redhat.com>
2038
2039	Backported from master:
2040	2020-11-12  Jonathan Wakely  <jwakely@redhat.com>
2041
2042	* include/std/future (future::wait_for): Do not wait for
2043	durations less than or equal to zero.
2044	* testsuite/30_threads/future/members/poll.cc: New test.
2045
20462020-11-13  Jonathan Wakely  <jwakely@redhat.com>
2047
2048	Backported from master:
2049	2020-11-13  Jonathan Wakely  <jwakely@redhat.com>
2050
2051	PR libstdc++/97798
2052	* include/ext/numeric_traits.h (__glibcxx_signed)
2053	(__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove
2054	macros.
2055	(__is_integer_nonstrict::__width): Define new constant.
2056	(__numeric_traits_integer): Define constants in terms of each
2057	other and __is_integer_nonstrict::__width, rather than the
2058	removed macros.
2059	(_GLIBCXX_INT_N_TRAITS): Macro to define explicit
2060	specializations for non-standard integer types.
2061
20622020-11-13  Jonathan Wakely  <jwakely@redhat.com>
2063
2064	PR libstdc++/96042
2065	* testsuite/std/ranges/iota/96042.cc: Only assert that the
2066	difference type is wider than long long if __int128 is
2067	supported.
2068
20692020-11-12  Jonathan Wakely  <jwakely@redhat.com>
2070
2071	Backported from master:
2072	2020-08-20  Jonathan Wakely  <jwakely@redhat.com>
2073
2074	* include/bits/iterator_concepts.h [__STRICT_ANSI__]
2075	(incrementable_traits<__int128>): Define specialization.
2076	(incrementable_traits<unsigned __int128>): Likewise.
2077	* testsuite/std/ranges/iota/96042.cc: Test iota_view with
2078	__int128.
2079
20802020-11-12  Jonathan Wakely  <jwakely@redhat.com>
2081
2082	Backported from master:
2083	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
2084		    Patrick Palka  <ppalka@redhat.com>
2085
2086	PR libstdc++/96042
2087	* include/bits/range_access.h (__detail::__to_unsigned_like):
2088	Do not use make_unsigned_t<T> in the return type, as it can
2089	result in an error before the integral<T> constraint is checked.
2090	[__STRICT_ANSI__]: Add overloads for 128-bit integer types.
2091	(__detail::__make_unsigned_like_t): Define as the return type
2092	of __to_unsigned_like.
2093	* testsuite/std/ranges/subrange/96042.cc: New test.
2094
20952020-11-12  Jonathan Wakely  <jwakely@redhat.com>
2096
2097	Backported from master:
2098	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
2099
2100	PR libstdc++/96042
2101	* include/ext/numeric_traits.h (__is_integer_nonstrict): New
2102	trait which is true for 128-bit integers even in strict modes.
2103	(__numeric_traits_integer, __numeric_traits): Use
2104	__is_integer_nonstrict instead of __is_integer.
2105	* include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
2106	(numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
2107	Define.
2108	* testsuite/std/ranges/iota/96042.cc: New test.
2109
21102020-11-11  Paul Scharnofske  <asynts@gmail.com>
2111
2112	Backported from master:
2113	2020-11-11  Paul Scharnofske  <asynts@gmail.com>
2114
2115	* include/std/thread (jthread::operator=(jthread&&)): Transfer
2116	any existing state to a temporary that will request a stop and
2117	then join.
2118	* testsuite/30_threads/jthread/jthread.cc: Test move assignment.
2119
21202020-11-05  Jonathan Wakely  <jwakely@redhat.com>
2121
2122	Backported from master:
2123	2020-11-05  Jonathan Wakely  <jwakely@redhat.com>
2124
2125	PR libstdc++/96269
2126	* include/std/optional (operator==, operator!=, operator<)
2127	(operator>, operator<=, operator>=): Fix types used in
2128	SFINAE constraints.
2129	* testsuite/20_util/optional/relops/96269.cc: New test.
2130
21312020-11-05  Jonathan Wakely  <jwakely@redhat.com>
2132
2133	Backported from master:
2134	2020-11-05  Jonathan Wakely  <jwakely@redhat.com>
2135
2136	PR libstdc++/97731
2137	* src/filesystem/dir.cc (recursive_directory_iterator): Call the
2138	right overload of _Dir::advance.
2139	* testsuite/experimental/filesystem/iterators/97731.cc: New test.
2140
21412020-11-05  Jonathan Wakely  <jwakely@redhat.com>
2142
2143	Backported from master:
2144	2020-10-10  Jonathan Wakely  <jwakely@redhat.com>
2145
2146	PR libstdc++/97362
2147	* doc/html/manual/source_code_style.html: Regenerate.
2148	* doc/xml/manual/appendix_contributing.xml: Add __deref to
2149	BADNAMES.
2150	* include/debug/functions.h (_Irreflexive_checker::__deref):
2151	Rename to __ref.
2152	* testsuite/17_intro/badnames.cc: Check __deref.
2153
21542020-11-04  Jonathan Wakely  <jwakely@redhat.com>
2155
2156	Backported from master:
2157	2020-11-04  Jonathan Wakely  <jwakely@redhat.com>
2158
2159	PR libstdc++/92285
2160	* doc/xml/manual/evolution.xml: Document change to base class.
2161	* doc/html/manual/api.html: Regenerate.
2162
21632020-11-04  Jonathan Wakely  <jwakely@redhat.com>
2164
2165	* doc/xml/manual/evolution.xml: Document new C++20 headers.
2166	* doc/html/*: Regenerate.
2167
21682020-11-04  Jonathan Wakely  <jwakely@redhat.com>
2169
2170	Backported from master:
2171	2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
2172
2173	* doc/xml/manual/evolution.xml: Document deprecation of
2174	__is_nullptr_t and removal of std::allocator members.
2175	* doc/html/manual/api.html: Regenerate.
2176
21772020-11-04  Jonathan Wakely  <jwakely@redhat.com>
2178
2179	Backported from master:
2180	2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
2181
2182	* doc/xml/manual/containers.xml: Replace <xref> with <link>.
2183	* doc/xml/manual/evolution.xml: Likewise.
2184	* doc/html/manual/api.html: Regenerate.
2185	* doc/html/manual/containers.html: Regenerate.
2186
21872020-10-29  Patrick Palka  <ppalka@redhat.com>
2188
2189	Backported from master:
2190	2020-10-29  Patrick Palka  <ppalka@redhat.com>
2191
2192	* testsuite/25_algorithms/lexicographical_compare/constrained.cc:
2193	(test03): Fix initializing the vector vy with the array y of size 4.
2194
21952020-10-28  Patrick Palka  <ppalka@redhat.com>
2196
2197	Backported from master:
2198	2020-10-23  Patrick Palka  <ppalka@redhat.com>
2199
2200	* include/std/ranges (single_view::single_view): Mark the
2201	in place constructor explicit as per LWG 3428.
2202	(take_view): Remove the constraint on the deduction guide's
2203	template parameter as per LWG 3447.
2204
22052020-10-21  Patrick Palka  <ppalka@redhat.com>
2206
2207	Backported from master:
2208	2020-09-22  Patrick Palka  <ppalka@redhat.com>
2209
2210	* include/std/span (span::front): Remove static_assert.
2211	(span::back): Likewise.
2212	(span::operator[]): Likewise.
2213	* testsuite/23_containers/span/back_neg.cc: Rewrite to verify
2214	that we check the preconditions of back() only when it's called.
2215	* testsuite/23_containers/span/front_neg.cc: Likewise for
2216	front().
2217	* testsuite/23_containers/span/index_op_neg.cc: Likewise for
2218	operator[].
2219
22202020-10-21  Patrick Palka  <ppalka@redhat.com>
2221
2222	Backported from master:
2223	2020-10-12  Patrick Palka  <ppalka@redhat.com>
2224
2225	* include/std/ranges (take_while_view::begin): Constrain the
2226	const overload further as per LWG 3450.
2227	(take_while_view::end): Likewise.
2228	* testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
2229	3450.
2230
22312020-10-21  Patrick Palka  <ppalka@redhat.com>
2232
2233	Backported from master:
2234	2020-09-22  Patrick Palka  <ppalka@redhat.com>
2235
2236	* include/bits/stl_algo.h (__sample): Exit early when the
2237	input range is empty.
2238	* testsuite/25_algorithms/sample/3.cc: New test.
2239
22402020-10-21  Patrick Palka  <ppalka@redhat.com>
2241
2242	Backported from master:
2243	2020-09-22  Patrick Palka  <ppalka@redhat.com>
2244
2245	* include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
2246	(search): Likewise for the overload that takes a searcher.
2247	* testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
2248	std::for_each_n.
2249	* testsuite/25_algorithms/search/constexpr.cc: Test constexpr
2250	std::search overload that takes a searcher.
2251
22522020-10-21  Patrick Palka  <ppalka@redhat.com>
2253
2254	Backported from master:
2255	2020-08-27  Patrick Palka  <ppalka@redhat.com>
2256
2257	PR libstdc++/95322
2258	* include/std/ranges (transform_view::sentinel::__distance_from):
2259	Give this a deduced return type.
2260	(transform_view::sentinel::operator-): Adjust the return type so
2261	that it's based on the constness of the iterator rather than
2262	that of the sentinel.
2263	* testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
2264
22652020-10-21  Patrick Palka  <ppalka@redhat.com>
2266
2267	Backported from master:
2268	2020-08-27  Patrick Palka  <ppalka@redhat.com>
2269
2270	* include/std/ranges (elements_view::begin): Adjust constraints.
2271	(elements_view::end): Likewise.
2272	(elements_view::_Sentinel::operator==): Templatize to take both
2273	_Iterator<true> and _Iterator<false>.
2274	(elements_view::_Sentinel::operator-): Likewise.
2275	* testsuite/std/ranges/adaptors/elements.cc: Add testcase for
2276	the example from P1994R1.
2277	* testsuite/std/ranges/adaptors/lwg3406.cc: New test.
2278
22792020-10-21  Patrick Palka  <ppalka@redhat.com>
2280
2281	Backported from master:
2282	2020-08-27  Patrick Palka  <ppalka@redhat.com>
2283
2284	* include/std/ranges (elements_view::end): Replace these two
2285	overloads with four new overloads.
2286	(elements_view::_Iterator::operator==): Remove.
2287	(elements_view::_Iterator::operator-): Likewise.
2288	(elements_view::_Sentinel): Define.
2289
22902020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2291
2292	Backported from master:
2293	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2294
2295	* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
2296	Use gdb.Type.strip_typedefs().
2297	* testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
2298	the emulated old type.
2299
23002020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2301
2302	Backported from master:
2303	2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2304
2305	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2306	(basic_string(const _CharT*, const _Alloc&)): Constrain to
2307	require an allocator-like type to fix CTAD ambiguity (LWG 3706).
2308	Define inline.
2309	* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
2310	(basic_string(const _CharT*, const _Alloc&)): Remove non-inline
2311	definition.
2312	* testsuite/21_strings/basic_string/cons/char/deduction.cc:
2313	Remove dg-skip-if.
2314	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2315	Likewise.
2316
23172020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2318
2319	Backported from master:
2320	2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2321
2322	* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
2323	Do not require cxx11-abi effective target.
2324	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
2325	Likewise.
2326	* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
2327
23282020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2329
2330	Backported from master:
2331	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
2332
2333	* include/bits/ios_base.h (ios_base::failure): Add constructors
2334	takeing error_code argument. Add code() member function.
2335	* testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
2336	run for the old ABI but do not check for derivation from
2337	std::system_error.
2338	* testsuite/27_io/ios_base/failure/error_code.cc: New test.
2339
23402020-10-20  Nuno Lopes  <nuno.lopes@ist.utl.pt>
2341
2342	Backported from master:
2343	2020-10-13  Nuno Lopes  <nuno.lopes@ist.utl.pt>
2344
2345	* include/bits/stl_algo.h (any_of): Fix incorrect description
2346	in comment.
2347
23482020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2349
2350	Backported from master:
2351	2020-10-12  Jonathan Wakely  <jwakely@redhat.com>
2352
2353	* include/bits/stl_algobase.h (copy, move, copy_backward)
2354	(move_backward): Fix documentation for returned iterator.
2355
23562020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2357
2358	Backported from master:
2359	2020-09-24  Jonathan Wakely  <jwakely@redhat.com>
2360
2361	* doc/xml/manual/configure.xml: Correct name of option.
2362	* doc/html/*: Regenerate.
2363
23642020-10-19  Jonathan Wakely  <jwakely@redhat.com>
2365
2366	Backported from master:
2367	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
2368
2369	PR libstdc++/97132
2370	* include/std/memory (assume_aligned): Do not use
2371	__builtin_assume_aligned during constant evaluation.
2372	* testsuite/20_util/assume_aligned/1.cc: Improve test.
2373	* testsuite/20_util/assume_aligned/97132.cc: New test.
2374
23752020-10-15  Jonathan Wakely  <jwakely@redhat.com>
2376
2377	Backported from master:
2378	2020-10-15  Jonathan Wakely  <jwakely@redhat.com>
2379
2380	* include/std/concepts: Fix typos in copyright notice.
2381	* include/std/ranges: Likewise.
2382
23832020-10-15  Jonathan Wakely  <jwakely@redhat.com>
2384
2385	* doc/xml/manual/status_cxx2020.xml: Remove red background for
2386	completed feature.
2387	* doc/html/manual/status.html: Regenerate.
2388
23892020-10-13  Patrick Palka  <ppalka@redhat.com>
2390
2391	Backported from master:
2392	2020-10-08  Patrick Palka  <ppalka@redhat.com>
2393
2394	PR libstdc++/95788
2395	* include/bits/ranges_uninitialized.h:
2396	(__construct_at_fn::operator()): Rewrite in terms of
2397	std::construct_at.  Declare it conditionally noexcept.  Qualify
2398	calls to declval in its requires-clause.
2399	* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
2400	New test.
2401
24022020-10-08  Jonathan Wakely  <jwakely@redhat.com>
2403
2404	Backported from master:
2405	2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
2406
2407	* include/bits/random.h (seed_seq(initializer_list<T>)): Rename
2408	parameter to use reserved name.
2409	* include/bits/ranges_algo.h (shift_left, shift_right): Rename
2410	template parameters to use reserved name.
2411	* testsuite/17_intro/names.cc: Check "il". Do not check "d" and
2412	"y" in C++20 mode.
2413
24142020-10-06  Patrick Palka  <ppalka@redhat.com>
2415
2416	Backported from master:
2417	2020-10-02  Patrick Palka  <ppalka@redhat.com>
2418
2419	* include/bits/stl_iterator.h (reverse_iterator::iter_move):
2420	Define for C++20 as per P0896.
2421	(reverse_iterator::iter_swap): Likewise.
2422	(move_iterator::operator*): Apply P0896 changes for C++20.
2423	(move_iterator::operator[]): Likewise.
2424	* testsuite/24_iterators/reverse_iterator/cust.cc: New test.
2425
24262020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2427
2428	Backported from master:
2429	2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2430
2431	PR libstdc++/97167
2432	* src/c++17/fs_path.cc (path::_Parser::root_path()): Check
2433	for empty string before inspecting the first character.
2434	* testsuite/27_io/filesystem/path/append/source.cc: Append
2435	empty string_view to path.
2436
24372020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2438
2439	Backported from master:
2440	2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2441
2442	PR libstdc++/96803
2443	* include/std/tuple
2444	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
2445	Use correct value category in __use_alloc call.
2446	* testsuite/20_util/tuple/cons/96803.cc: Check with constructors
2447	that require correct value category to be used.
2448
24492020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2450
2451	Backported from master:
2452	2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
2453
2454	PR libstdc++/96803
2455	* include/std/tuple
2456	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
2457	Replace parameter pack with a type parameter and a pack and pass
2458	the first type to __use_alloc.
2459	* testsuite/20_util/tuple/cons/96803.cc: New test.
2460
24612020-09-21  Jonathan Wakely  <jwakely@redhat.com>
2462
2463	Backported from master:
2464	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2465
2466	PR libstdc++/94681
2467	* src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
2468	of calling ::lstat directly.
2469	* src/filesystem/ops.cc (read_symlink): Likewise.
2470
24712020-09-21  Jonathan Wakely  <jwakely@redhat.com>
2472
2473	Backported from master:
2474	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2475
2476	PR libstdc++/94681
2477	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
2478	$enable_libstdcxx_filesystem_ts.
2479	* configure: Regenerate.
2480
24812020-09-21  Jonathan Wakely  <jwakely@redhat.com>
2482
2483	Backported from master:
2484	2020-09-20  Jonathan Wakely  <jwakely@redhat.com>
2485
2486	PR libstdc++/97101
2487	* include/std/functional (bind_front): Fix order of parameters
2488	in is_nothrow_constructible_v specialization.
2489	* testsuite/20_util/function_objects/bind_front/97101.cc: New test.
2490
24912020-09-21  Jonathan Wakely  <jwakely@redhat.com>
2492
2493	Backported from master:
2494	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
2495
2496	PR libstdc++/94160
2497	* src/c++17/memory_resource.cc (munge_options): Round
2498	max_blocks_per_chunk to a multiple of four.
2499	(__pool_resource::_M_alloc_pools()): Simplify slightly.
2500	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
2501	Check that valid pointers are returned when small values are
2502	used for max_blocks_per_chunk.
2503
25042020-09-03  Jonathan Wakely  <jwakely@redhat.com>
2505
2506	Backported from master:
2507	2020-07-07  Jonathan Wakely  <jwakely@redhat.com>
2508
2509	* include/Makefile.am: Remove bits/int_limits.h.
2510	* include/Makefile.in: Regenerate.
2511	* include/bits/int_limits.h: Removed.
2512	* include/bits/parse_numbers.h (_Select_int_base): Replace
2513	__int_limits with __int_traits.
2514	* include/bits/range_access.h (_SSize::operator()): Likewise.
2515	* include/ext/numeric_traits.h (__numeric_traits_integer): Add
2516	static assertion.
2517	(__int_traits): New alias template.
2518	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
2519	(__countr_zero, __countr_one, __popcount, __bit_ceil)
2520	(__bit_floor, __bit_width) Replace __int_limits with
2521	__int_traits.
2522	* include/std/charconv (__to_chars_8, __from_chars_binary)
2523	(__from_chars_alpha_to_num, from_chars): Likewise.
2524	* include/std/memory_resource (polymorphic_allocator::allocate)
2525	(polymorphic_allocator::allocate_object): Likewise.
2526	* include/std/string_view (basic_string_view::_S_compare):
2527	Likewise.
2528	* include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
2529
25302020-09-02  Jonathan Wakely  <jwakely@redhat.com>
2531
2532	Backported from master:
2533	2020-08-28  Jonathan Wakely  <jwakely@redhat.com>
2534
2535	PR libstdc++/92978
2536	* include/std/numeric (__abs_integral): Replace with ...
2537	(__detail::__absu): New function template that returns an
2538	unsigned type, guaranteeing it can represent the most
2539	negative signed value.
2540	(__detail::__gcd, __detail::__lcm): Require arguments to
2541	be unsigned and therefore already non-negative.
2542	(gcd, lcm): Convert arguments to absolute value as unsigned
2543	type before calling __detail::__gcd or __detail::__lcm.
2544	* include/experimental/numeric (gcd, lcm): Likewise.
2545	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
2546	errors.
2547	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
2548	* testsuite/26_numerics/gcd/92978.cc: New test.
2549	* testsuite/26_numerics/lcm/92978.cc: New test.
2550	* testsuite/experimental/numeric/92978.cc: New test.
2551
25522020-09-02  Jonathan Wakely  <jwakely@redhat.com>
2553
2554	Backported from master:
2555	2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
2556
2557	PR libstdc++/96851
2558	* include/bits/cpp_type_traits.h (__is_memcmp_ordered):
2559	New trait that says if memcmp can be used for ordering.
2560	(__is_memcmp_ordered_with): Likewise, for two types.
2561	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
2562	Use new traits instead of __is_byte and __numeric_traits.
2563	* include/bits/stl_algobase.h (__lexicographical_compare_aux1)
2564	(__is_byte_iter): Likewise.
2565	* include/std/array (operator<=>): Likewise. Only use memcmp
2566	when std::is_constant_evaluated() is false.
2567	* testsuite/23_containers/array/comparison_operators/96851.cc:
2568	New test.
2569	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
2570	Adjust dg-error line numbers.
2571
25722020-09-02  Jonathan Wakely  <jwakely@redhat.com>
2573
2574	* include/bits/stl_iterator.h (counted_iterator::operator++(int)):
2575	Use __throw_exception_again macro.
2576
25772020-08-26  Jonathan Wakely  <jwakely@redhat.com>
2578
2579	Backported from master:
2580	2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
2581
2582	PR libstdc++/71960
2583	* include/experimental/string_view (basic_string_view):
2584	Enable debug assertions.
2585	* include/std/string_view (basic_string_view):
2586	Likewise.
2587
25882020-08-26  Jonathan Wakely  <jwakely@redhat.com>
2589
2590	Backported from master:
2591	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
2592
2593	PR libstdc++/96766
2594	* include/std/variant (_Variant_storage): Replace implicit
2595	conversions from size_t to __index_type with explicit casts.
2596
25972020-08-21  Jonathan Wakely  <jwakely@redhat.com>
2598
2599	Backported from master:
2600	2020-08-21  Jonathan Wakely  <jwakely@redhat.com>
2601
2602	PR libstdc++/96718
2603	* testsuite/25_algorithms/pstl/feature_test-2.cc: Require
2604	tbb-backend effective target.
2605	* testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
2606	* testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
2607	* testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
2608
26092020-08-19  Jonathan Wakely  <jwakely@redhat.com>
2610
2611	Backported from master:
2612	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
2613
2614	* include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New
2615	macro for "use 'foo' instead" message in deprecated warnings.
2616	* include/bits/ios_base.h (io_state, open_mode, seek_dir)
2617	(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
2618	* include/std/streambuf (stossc): Replace C++11 attribute
2619	with _GLIBCXX_DEPRECATED_SUGGEST.
2620	* include/std/type_traits (__is_nullptr_t): Use
2621	_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
2622	* testsuite/27_io/types/1.cc: Check for deprecated warnings.
2623	Also check for io_state, open_mode and seek_dir typedefs.
2624
26252020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2626
2627	PR libstdc++/89760
2628	* testsuite/experimental/net/execution_context/make_service.cc:
2629	Add dg-require-gthreads.
2630	* testsuite/experimental/net/executor/1.cc: Likewise.
2631	* testsuite/experimental/net/headers.cc: Likewise.
2632	* testsuite/experimental/net/internet/address/v4/comparisons.cc:
2633	Likewise.
2634	* testsuite/experimental/net/internet/address/v4/cons.cc:
2635	Likewise.
2636	* testsuite/experimental/net/internet/address/v4/creation.cc:
2637	Likewise.
2638	* testsuite/experimental/net/internet/address/v4/members.cc:
2639	Likewise.
2640	* testsuite/experimental/net/internet/resolver/base.cc:
2641	Likewise.
2642	* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2643	Likewise.
2644	* testsuite/experimental/net/internet/resolver/ops/reverse.cc:
2645	Likewise.
2646	* testsuite/experimental/net/socket/basic_socket.cc: Likewise.
2647	* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
2648	* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
2649	* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
2650
26512020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2652
2653	Backported from master:
2654	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2655
2656	PR libstdc++/95749
2657	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
2658	(stat_type): Change to __stat64.
2659	(stat): Use _wstat64.
2660
26612020-08-07  Jonathan Wakely  <jwakely@redhat.com>
2662
2663	Backported from master:
2664	2020-08-07  Jonathan Wakely  <jwakely@redhat.com>
2665
2666	PR libstdc++/96303
2667	* include/debug/bitset (bitset::operator==): Call _M_base() on
2668	right operand.
2669	(bitset::operator!=): Likewise, but don't define it at all when
2670	default comparisons are supported by the compiler.
2671	* testsuite/23_containers/bitset/operations/96303.cc: New test.
2672
26732020-08-06  Jonathan Wakely  <jwakely@redhat.com>
2674
2675	Backported from master:
2676	2020-08-06  Jonathan Wakely  <jwakely@redhat.com>
2677
2678	PR libstdc++/96484
2679	* src/c++17/fs_ops.cc (fs::read_symlink): Return an error
2680	immediately for non-symlinks.
2681	* src/filesystem/ops.cc (fs::read_symlink): Likewise.
2682
26832020-07-23  Release Manager
2684
2685	* GCC 10.2.0 released.
2686
26872020-07-09  Jonathan Wakely  <jwakely@redhat.com>
2688
2689	Backported from master:
2690	2020-06-08  Jonathan Wakely  <jwakely@redhat.com>
2691
2692	* include/bits/unique_ptr.h (operator<<): Define for C++20.
2693	* testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
2694	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
2695	line number.
2696	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
2697
26982020-07-09  Jonathan Wakely  <jwakely@redhat.com>
2699
2700	Backported from master:
2701	2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
2702
2703	PR libstdc++/95322
2704	* include/std/ranges (transform_view::_Sentinel): Allow hidden
2705	friends to work with _Iterator<true> and _Iterator<false>.
2706	(join_view::_Sentinel): Likewise.
2707	* testsuite/std/ranges/adaptors/95322.cc: New test.
2708
27092020-07-09  Jonathan Wakely  <jwakely@redhat.com>
2710
2711	Backported from master:
2712	2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
2713
2714	PR libstdc++/94936
2715	* src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
2716	Add comment about single-threaded behaviour.
2717	(synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
2718	class member access out of loop.
2719	(synchronized_pool_resource::synchronized_pool_resource())
2720	(synchronized_pool_resource::~synchronized_pool_resource())
2721	(synchronized_pool_resource::release()): Check __gthread_active_p
2722	before creating and/or deleting the thread-specific data key.
2723	(synchronized_pool_resource::_M_thread_specific_pools()): Adjust
2724	assertions.
2725	(synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
2726	path for single-threaded case.
2727	(synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
2728	Likewise. Return if unable to find a pool that owns the allocation.
2729	* testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
2730	New test.
2731	* testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
2732	test.
2733	* testsuite/20_util/synchronized_pool_resource/release_single.cc: New
2734	test.
2735
27362020-07-09  Jonathan Wakely  <jwakely@redhat.com>
2737
2738	Backported from master:
2739	2020-05-19  Jonathan Wakely  <jwakely@redhat.com>
2740
2741	PR libstdc++/94087
2742	* src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
2743	passed in.
2744	(__x86_rdseed_rdrand): New function that uses rdseed with rdrand
2745	fallback.
2746	(random_device::_M_init): Use __x86_rdseed_rdrand when both
2747	instructions are available.
2748	* testsuite/26_numerics/random/random_device/94087.cc: New test.
2749
27502020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
2751
2752	Backported from master:
2753	2020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
2754
2755	PR libstdc++/91807
2756	* include/std/variant
2757	(_Copy_assign_base::operator=(const _Copy_assign_base&):
2758	Do the move-assignment from a temporary so that the temporary
2759	is constructed with an explicit index.
2760	* testsuite/20_util/variant/91807.cc: New.
2761
27622020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
2763
2764	Backported from master:
2765	2020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
2766
2767	PR libstdc++/91153
2768	PR target/93224
2769	* testsuite/29_atomics/atomic_float/1.cc: Use different values
2770	for tests.
2771	* testsuite/29_atomics/atomic_ref/float.cc: Likewise.
2772
27732020-07-01  Jonathan Wakely  <jwakely@redhat.com>
2774
2775	Backported from master:
2776	2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
2777
2778	PR libstdc++/95282
2779	* include/bits/atomic_base.h (__atomic_impl::load): Add
2780	const-qualifier to parameter so that _Tp is deduced as the
2781	non-const type, and use _Val to get the unqualified type.
2782	(__atomic_impl::exchange): Use the _Val alias to remove
2783	volatile from the reinterpret_cast result type.
2784	* testsuite/29_atomics/atomic_float/95282.cc: New test.
2785
27862020-07-01  Jonathan Wakely  <jwakely@redhat.com>
2787
2788	Backported from master:
2789	2020-07-01  Jonathan Wakely  <jwakely@redhat.com>
2790
2791	PR libstdc++/94627
2792	* include/bits/regex.h (operator==, operator!=): Remove noexcept
2793	equality comparisons for match_results.
2794	* testsuite/28_regex/match_results/94627.cc: New test.
2795
27962020-06-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
2797
2798	Backported from master:
2799	2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
2800
2801	PR libstdc++/95915
2802	* include/std/variant (_Uninitialized):
2803	Adjust the condition and the comment.
2804	* testsuite/20_util/variant/95915.cc: New.
2805	* testsuite/20_util/variant/compile.cc: Add new test.
2806
28072020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2808
2809	Backported from master:
2810	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2811
2812	* include/std/charconv (__from_chars_binary): Ignore leading zeros.
2813	* testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
2814	not just 10 and 16.
2815	* testsuite/20_util/from_chars/3.cc: New test.
2816
28172020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2818
2819	Backported from master:
2820	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2821
2822	* include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
2823	* include/std/charconv (__detail::__to_chars): Avoid
2824	-Wsign-compare warning.
2825
28262020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2827
2828	Backported from master:
2829	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
2830
2831	PR libstdc++/95851
2832	* include/std/charconv (__to_chars_i): Check for zero-sized
2833	buffer unconditionally.
2834	* testsuite/20_util/to_chars/95851.cc: New test.
2835
28362020-06-22  Jason Merrill  <jason@redhat.com>
2837
2838	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
2839	Remove greedy_ops tests.
2840	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
2841	Remove greedy_ops tests.
2842
28432020-06-11  Patrick Palka  <ppalka@redhat.com>
2844
2845	PR libstdc++/95578
2846	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
2847	Also check that the iterator and sentinel have the same type before
2848	applying the unwrapping optimization for __normal_iterator.
2849	Split the check into two, one for the first iterator/sentinel
2850	pair and another for second iterator/sentinel pair.  Remove uses
2851	of __niter_base, and remove uses of std::move on a
2852	__normal_iterator.
2853	* include/bits/ranges_algobase.h (__equal_fn): Likewise.
2854	(__copy_or_move): Likewise.  Perform similar adjustments for
2855	the reverse_iterator and move_iterator optimizations.  Inline
2856	the checks into the if-constexprs, and use using-declarations to
2857	make them less visually noisy.  Remove uses of __niter_wrap.
2858	(__copy_or_move_backward): Likewise.
2859	* testsuite/25_algorithms/copy/95578.cc: New test.
2860	* testsuite/25_algorithms/copy_backward/95578.cc: New test.
2861	* testsuite/25_algorithms/equal/95578.cc: New test.
2862	* testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
2863	* testsuite/25_algorithms/move/95578.cc: New test.
2864	* testsuite/25_algorithms/move_backward/95578.cc: New test.
2865
28662020-05-28  Patrick Palka  <ppalka@redhat.com>
2867
2868	PR libstdc++/95322
2869	* include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
2870	Remove and instead define it ...
2871	(common_iterator::_Proxy): ... here.
2872	(common_iterator::operator->): Use it.
2873	* testsuite/24_iterators/common_iterator/2.cc: New test.
2874	* testsuite/std/ranges/adaptors/95322.cc: New test.
2875
28762020-05-26  Alexandre Oliva  <oliva@adacore.com>
2877
2878	PR libstdc++/77691
2879	* include/experimental/memory_resource
2880	(__resource_adaptor_imp::do_allocate): Handle max_align_t on
2881	x86-vxworks as on x86-solaris.
2882	(__resource_adaptor_imp::do_deallocate): Likewise.
2883	* testsuite/experimental/memory_resource/new_delete_resource.cc:
2884	Drop xfail.
2885	(BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
2886	(test03): Drop max-align test for char-aligned alloc.
2887
28882020-05-23  Jonathan Wakely  <jwakely@redhat.com>
2889
2890	Backport from mainline
2891	2020-05-23  Jonathan Wakely  <jwakely@redhat.com>
2892
2893	* include/bits/fs_path.h (__detail::_S_range_begin)
2894	(__detail::_S_range_end): Remove unintentional static specifiers.
2895	* include/experimental/bits/fs_path.h (__detail::_S_range_begin)
2896	(__detail::_S_range_end): Likewise.
2897
28982020-05-23  Jonathan Wakely  <jwakely@redhat.com>
2899
2900	Backport from mainline
2901	2020-05-23  Jonathan Wakely  <jwakely@redhat.com>
2902
2903	PR libstdc++/95289
2904	* include/debug/helper_functions.h (__get_distance): Only declare
2905	as a constexpr function for C++14 and up.
2906	* testsuite/25_algorithms/copy/debug/95289.cc: New test.
2907
29082020-05-21  Jonathan Wakely  <jwakely@redhat.com>
2909
2910	Backport from mainline
2911	2020-05-21  Jonathan Wakely  <jwakely@redhat.com>
2912
2913	* include/experimental/executor (use_future_t::use_future_t()): Fix
2914	incorrect noexcept-specifier.
2915	* include/experimental/internet (basic_resolver_results): Adjust
2916	whitespace.
2917	* include/experimental/socket (__basic_socket_impl::release): Add
2918	member function.
2919	(basic_socket(io_context&, const endpoint_type&)): Fix argument to
2920	target constructor.
2921	(basic_socket::release(), basic_socket::release(error_code&)): Add
2922	missing member functions.
2923	(basic_socket::is_open()): Add nodiscard attribute.
2924	(basic_socket::close(error_code&)): Pass argument to base function.
2925	(basic_socket_acceptor::release())
2926	(basic_socket_acceptor::release(error_code&)): Add missing member
2927	functions.
2928	(basic_socket_acceptor::is_open()): Add nodiscard attribute.
2929	(basic_socket_streambuf::error()): Add noexcept.
2930	(basic_socket_iostream::error()): Likewise.
2931	* testsuite/experimental/net/socket/basic_socket.cc: New test.
2932
29332020-05-21  Jonathan Wakely  <jwakely@redhat.com>
2934
2935	Backport from mainline
2936	2020-05-21  Jonathan Wakely  <jwakely@redhat.com>
2937
2938	PR libstdc++/93983
2939	* include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
2940	Reorder constraints to avoid recursion when constructors use
2941	iterator_traits (LWG 3420).
2942	* testsuite/24_iterators/customization_points/lwg3420.cc: New test.
2943
29442020-05-12  Jonathan Wakely  <jwakely@redhat.com>
2945
2946	Backport from mainline
2947	2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
2948
2949	PR libstdc++/94906
2950	* src/c++17/memory_resource.cc
2951	(monotonic_buffer_resource::_Chunk::release): Use size_t for shift
2952	operands.
2953
2954	Backport from mainline
2955	2020-05-03  Jonathan Wakely  <jwakely@redhat.com>
2956
2957	PR libstdc++/94933
2958	* include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
2959	usable in constant expressions.
2960	* testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
2961	non-scalars.
2962
29632020-05-07  Jonathan Wakely  <jwakely@redhat.com>
2964
2965	Backport from mainline
2966	2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
2967		    Patrick Palka  <ppalka@redhat.com>
2968
2969	PR libstdc++/92894
2970	* include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
2971	Add trait to determine return type and an alias for it.
2972	(ranges::__cust_imove::_IMove::operator()): Use __result instead of
2973	deduced return type.
2974	* testsuite/24_iterators/customization_points/92894.cc: New test.
2975	* testsuite/24_iterators/indirect_callable/92894.cc: New test.
2976
29772020-05-07  Release Manager
2978
2979	* GCC 10.1.0 released.
2980
29812020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2982
2983	* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
2984	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
2985
29862020-05-06  H.J. Lu  <hongjiu.lu@intel.com>
2987
2988	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2989
29902020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2991
2992	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
2993	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
2994	Likewise.
2995	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
2996	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
2997	Likewise.
2998
29992020-05-06  Jonathan Wakely  <jwakely@redhat.com>
3000
3001	* doc/xml/manual/abi.xml (abi.versioning.history): Document library
3002	versions for GCC 9.[123] and 10.1 releases.
3003	* doc/html/*: Regenerate.
3004
30052020-05-06  Jakub Jelinek  <jakub@redhat.com>
3006
3007	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3008	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3009	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
3010	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3011	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3012	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3013	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3014
30152020-05-04  Jonathan Wakely  <jwakely@redhat.com>
3016
3017	* doc/xml/faq.xml: Use working link for SGI STL FAQ.
3018	* doc/html/*: Regenerate.
3019
30202020-05-01  Jonathan Wakely  <jwakely@redhat.com>
3021
3022	Backport from mainline
3023	2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
3024
3025	PR libstdc++/94901
3026	* include/std/type_traits (__is_complete_or_unbounded): Replace
3027	BADNAME _T with _Tp.
3028	* testsuite/17_intro/badnames.cc: New test.
3029
30302020-04-30  Jonathan Wakely  <jwakely@redhat.com>
3031
3032	PR libstdc++/89510
3033	* include/bits/alloc_traits.h (allocator_traits::_S_construct)
3034	(allocator_traits::_S_destroy)
3035	(allocator_traits<allocator<T>>::construct): Use traits in
3036	noexcept-specifiers.
3037	* include/bits/allocator.h (allocator<void>::construct)
3038	(allocator<void>::destroy): Likewise.
3039	* include/ext/malloc_allocator.h (malloc_allocator::construct)
3040	(malloc_allocator::destroy): Likewise.
3041	* include/ext/new_allocator.h (new_allocator::construct)
3042	(new_allocator::destroy): Likewise.
3043	* testsuite/20_util/allocator/89510.cc: New test.
3044	* testsuite/ext/malloc_allocator/89510.cc: New test.
3045	* testsuite/ext/new_allocator/89510.cc: New test.
3046
30472020-04-29  Jonathan Wakely  <jwakely@redhat.com>
3048
3049	PR libstdc++/94854
3050	* include/bits/basic_string.tcc: Update comment about explicit
3051	instantiations.
3052
30532020-04-28  Jonathan Wakely  <jwakely@redhat.com>
3054
3055	PR libstdc++/91480
3056	* include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
3057	Remove non-standard macro.
3058	* include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
3059	to indicate P1032R1 support.
3060	* include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
3061	* include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
3062	* include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
3063	* include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
3064	(__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
3065	(__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
3066	* testsuite/20_util/function_objects/constexpr_searcher.cc: Check
3067	feature test macro.
3068	* testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
3069	* testsuite/21_strings/basic_string_view/operations/copy/char/
3070	constexpr.cc: Likewise.
3071	* testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
3072
3073	PR libstdc++/94831
3074	* include/bits/alloc_traits.h (_S_construct): Restore placement
3075	new-expression for C++11/14/17 and call std::construct_at directly
3076	for C++20.
3077	* include/bits/stl_construct.h (_Construct): Revert to non-constexpr
3078	function returning void.
3079	* testsuite/20_util/specialized_algorithms/
3080	uninitialized_value_construct/94831.cc: New test.
3081	* testsuite/23_containers/vector/cons/94831.cc: New test.
3082
30832020-04-28  Patrick Palka  <ppalka@redhat.com>
3084
3085	LWG 3433 subrange::advance(n) has UB when n < 0
3086	* include/std/ranges (subrange::prev): Fix typo.
3087	(subrange::advance): Handle a negative argument as per the proposed
3088	resolution of LWG 3433.
3089	* testsuite/std/ranges/subrange/lwg3433.cc: New test.
3090
30912020-04-28  Jonathan Wakely  <jwakely@redhat.com>
3092	    Iain Sandoe  <iain@sandoe.co.uk>
3093
3094	PR c++/94759
3095	* include/std/coroutine: Implement handing for non-
3096	class coroutine return types.
3097
30982020-04-24  Jonathan Wakely  <jwakely@redhat.com>
3099
3100	* include/experimental/executor (service_already_exists): Make default
3101	constructor public (LWG 3414).
3102	* testsuite/experimental/net/execution_context/make_service.cc: Check
3103	the service_already_exists can be default constructed.
3104
31052020-04-24  Kamlesh Kumar  <kamleshbhalui@gmail.com>
3106	    Jonathan Wakely  <jwakely@redhat.com>
3107
3108	PR libstdc++/90415
3109	PR libstdc++/92156
3110	* include/std/any (any): Rename template parameters for consistency
3111	with the standard.
3112	(any::_Decay): Rename to _Decay_if_not_any.
3113	(any::any(T&&):: Remove is_constructible from constraints. Remove
3114	non-standard overload.
3115	(any::any(in_place_type_t<T>, Args&&...))
3116	(any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
3117	(any::emplace(Args&&...))
3118	(any::emplace(initializer_list<U>, Args&&...)):
3119	Use decay_t instead of _Decay.
3120	* testsuite/20_util/any/cons/90415.cc: New test.
3121	* testsuite/20_util/any/cons/92156.cc: New Test.
3122	* testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
3123	more robust.
3124	* testsuite/20_util/any/modifiers/92156.cc: New test.
3125
31262020-04-23  Jonathan Wakely  <jwakely@redhat.com>
3127
3128	* doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
3129	* doc/html/*: Regenerate.
3130
3131	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
3132	value for C++17 to 201803L because P0858R0 is supported for C++17.
3133	* include/std/version (__cpp_lib_array_constexpr): Likewise.
3134	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
3135	Check for value corresponding to P0031R0 features being tested.
3136	* testsuite/23_containers/array/requirements/constexpr_iter.cc:
3137	Check for value corresponding to P0858R0 features being tested.
3138
3139	* include/std/version (__cpp_lib_three_way_comparison): Define for
3140	freestanding builds.
3141
31422020-04-23  Thomas Rodgers  <rodgert@appliantology.com>
3143
3144	* include/experimental/net/executor (system_context): Mark
3145	system_context::system_context() = delete.
3146	* testsuite/experimental/net/executor/1.cc: Add new
3147	test to check system_context is not default constructible.
3148
31492020-04-23  Iain Sandoe  <iain@sandoe.co.uk>
3150
3151	* include/std/coroutine: Update the inline namespace to __n4861.
3152	Add the __cpp_lib_coroutine define, set to 201902L.
3153	* include/std/version: Add __cpp_lib_coroutine, set to 201902L.
3154
31552020-04-22  Jonathan Wakely  <jwakely@redhat.com>
3156
3157	* include/std/execution (__cpp_lib_execution): Define to indicate
3158	support for P0024R2 and P1001R2.
3159	* include/std/version (__cpp_lib_execution): Define.
3160	* testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
3161	defined by <algorithm>, move other tests to new tests ...
3162	* testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
3163	* testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
3164	* testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
3165	* testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
3166
3167	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
3168	different values for C++17 and C++20, to indicate different feature
3169	sets. Update value for C++20 to indicate P1032R1 support.
3170	* include/std/version (__cpp_lib_array_constexpr): Likewise.
3171	* testsuite/23_containers/array/comparison_operators/constexpr.cc:
3172	Check feature test macro.
3173	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
3174	New test.
3175	* testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
3176	feature test macro.
3177	* testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
3178	in C++17 mode and check feature test macro.
3179
3180	* include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
3181	here.
3182	* testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
3183	defined by <utility>.
3184
3185	* include/std/functional (__cpp_lib_concepts): Update macro value to
3186	indicate P1964R2 support.
3187	* include/std/version (__cpp_lib_concepts): Likewise.
3188	* testsuite/std/concepts/1.cc: Adjust expected value.
3189	* testsuite/std/concepts/2.cc: Likewise.
3190
3191	* include/std/functional (__cpp_lib_constexpr_invoke): Rename to
3192	__cpp_lib_constexpr_functional.
3193	* include/std/version (__cpp_lib_constexpr_invoke): Likewise.
3194	* testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
3195
3196	* include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
3197	indicate P1006R1 support.
3198	(__cpp_lib_to_address): Define to indicate P0653R2 support.
3199	* include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
3200	P1227R2 support.
3201	* include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
3202	P0769R2 support.
3203	* include/std/atomic (__cpp_lib_atomic_float): Define to indicate
3204	P0020R6 support.
3205	* include/std/memory (__cpp_lib_assume_aligned): Define to indicate
3206	P1007R3 support.
3207	* include/std/memory_resource (__cpp_lib_polymorphic_allocator):
3208	Define to indicate P0339R6 support.
3209	* include/std/string_view (__cpp_lib_starts_ends_with): Define to
3210	indicate P0457R2 support.
3211	* include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
3212	to indicate P0758R1 support.
3213	(__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
3214	(__cpp_lib_type_identity): Define to indicate P0887R1 support.
3215	* include/std/version (__cpp_lib_atomic_float)
3216	(__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
3217	(__cpp_lib_type_identity, __cpp_lib_assume_aligned)
3218	(__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
3219	(__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
3220	(__cpp_lib_to_address): Define.
3221	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
3222
3223	* include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
3224	macro.
3225	* include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
3226	Likewise.
3227	* include/std/version (__cpp_lib_map_insertion)
3228	(__cpp_lib_unordered_map_insertion): Remove.
3229
3230	* include/std/condition_variable (__cpp_lib_jthread): Remove
3231	redundant definition.
3232	* include/std/stop_token (__cpp_lib_jthread): Update macro value to
3233	indicate P1869R1 support.
3234	* include/std/version (__cpp_lib_jthread): Update value.
3235	* testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
3236	for updated macro value.
3237	* testsuite/30_threads/condition_variable_any/stop_token/2.cc:
3238	Likewise.
3239	* testsuite/30_threads/jthread/1.cc: Likewise.
3240	* testsuite/30_threads/jthread/2.cc: Likewise.
3241	* testsuite/30_threads/stop_token/1.cc: Likewise.
3242	* testsuite/30_threads/stop_token/2.cc: Likewise.
3243
3244	* testsuite/21_strings/basic_string/erasure.cc: Check for
3245	__cpp_lib_erase_if macro.
3246	* testsuite/23_containers/deque/erasure.cc: Add header name to #error
3247	messages.
3248	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
3249	* testsuite/23_containers/list/erasure.cc: Likewise.
3250	* testsuite/23_containers/map/erasure.cc: Likewise.
3251	* testsuite/23_containers/set/erasure.cc: Likewise.
3252	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
3253	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
3254	* testsuite/23_containers/vector/erasure.cc: Likewise.
3255
32562020-04-21  Jonathan Wakely  <jwakely@redhat.com>
3257
3258	* include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
3259	to define operator<=>.
3260	* testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
3261
3262	* doc/Makefile.am (xml_sources_manual): Add missing XML files.
3263	* doc/Makefile.in: Regenerate.
3264	* doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
3265	of "this page".
3266	* doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
3267	to the C++11 status table.
3268	* doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
3269	proposals with table matching contents of the C++14 standard.
3270	* doc/xml/manual/status_cxx2017.xml: Add table matching contents of
3271	the C++17 standard.
3272	* doc/html/*: Regenerate.
3273
3274	PR c++/94149
3275	* include/std/type_traits (__is_nt_constructible_impl): Add partial
3276	specializations for bounded arrays with non-empty initializers.
3277	* testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
3278
32792020-04-20  Thomas Rodgers  <trodgers@redhat.com>
3280
3281	* testsuite/lib/libstdc++.exp: Add additional_flags=
3282	-DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
3283	compiling with a newer Thread Building Blocks.
3284
32852020-04-20  Jonathan Wakely  <jwakely@redhat.com>
3286
3287	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
3288
3289	* testsuite/20_util/is_constructible/51185.cc: Make test class a
3290	non-aggregate so that the test verifies the same thing in all -std
3291	modes.
3292	* testsuite/20_util/is_constructible/value-2.cc: Adjust expected
3293	results for some types when paren-init for aggregates is supported.
3294
3295	* include/std/version (__cpp_lib_three_way_comparison): Update value.
3296	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
3297	(__detail::__synth3way): Add noexcept-specifier.
3298
3299	* include/bits/stl_map.h (map): Define operator<=> and remove
3300	operator< for C++20.
3301	* include/bits/stl_multimap.h (multimap): Likewise.
3302	* include/bits/stl_multiset.h (multiset): Likewise.
3303	* include/bits/stl_set.h (set): Likewise.
3304	* include/bits/stl_tree.h (_Rb_tree): Likewise.
3305	(_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
3306	operator!= for C++20.
3307	* include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
3308	* include/debug/multimap.h (__gnu_debug::multimap): Likewise.
3309	* include/debug/multiset.h (__gnu_debug::multiset): Likewise.
3310	* include/debug/set.h (__gnu_debug::set): Likewise.
3311	* testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
3312	* testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
3313	* testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
3314	* testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
3315
33162020-04-20  Matthias Kretz  <kretz@kde.org>
3317
3318	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
3319
33202020-04-19  Jonathan Wakely  <jwakely@redhat.com>
3321
3322	* include/bits/stl_queue.h (queue): Define operator<=> for C++20.
3323	* include/bits/stl_stack.h (stack): Likewise.
3324	* testsuite/23_containers/queue/cmp_c++20.cc: New test.
3325	* testsuite/23_containers/stack/cmp_c++20.cc: New test.
3326
3327	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
3328	Remove redundant operator!= for C++20.
3329	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
3330	Likewise.
3331	* include/debug/unordered_map (unordered_map, unordered_multimap):
3332	Likewise.
3333	* include/debug/unordered_set (unordered_set, unordered_multiset):
3334	Likewise.
3335
3336	PR other/94629
3337	* include/debug/formatter.h (_Error_formatter::_Parameter): Fix
3338	redundant assignment in constructor.
3339
33402020-04-18  Jonathan Wakely  <jwakely@redhat.com>
3341
3342	* include/std/chrono (duration, time_point): Define operator<=> and
3343	remove redundant operator!= for C++20.
3344	* testsuite/20_util/duration/comparison_operators/three_way.cc: New
3345	test.
3346	* testsuite/20_util/time_point/comparison_operators/three_way.cc: New
3347	test.
3348
3349	* testsuite/util/native_type/native_priority_queue.hpp: Use
3350	allocator_traits to rebind allocator.
3351
33522020-04-17  Jonathan Wakely  <jwakely@redhat.com>
3353
3354	* include/bits/forward_list.h (forward_list): Define operator<=> and
3355	remove redundant comparison operators for C++20.
3356	* include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
3357	* include/bits/stl_deque.h (deque): Likewise.
3358	* include/bits/stl_iterator.h (__normal_iterator): Likewise.
3359	* include/bits/stl_list.h (list): Likewise.
3360	* include/bits/stl_vector.h (vector): Likewise.
3361	* include/debug/deque (__gnu_debug::deque): Likewise.
3362	* include/debug/forward_list (__gnu_debug::forward_list): Likewise.
3363	* include/debug/list (__gnu_debug::list): Likewise.
3364	* include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
3365	Likewise.
3366	* include/debug/vector (__gnu_debug::vector): Likewise.
3367	* include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
3368	operator<=> for C++20.
3369	* testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
3370	* testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
3371	* testsuite/23_containers/list/cmp_c++20.cc: New test.
3372	* testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
3373	* testsuite/23_containers/vector/cmp_c++20.cc: New test.
3374
3375	* include/bits/basic_string.h (basic_string): Define operator<=> and
3376	remove redundant comparison operators for C++20.
3377	* include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
3378	Add comparison_category members.
3379	(__detail::__char_traits_cmp_cat): New helper to get comparison
3380	category from char traits class.
3381	* include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
3382	define for C++20.
3383	(sub_match): Define operator<=> and remove redundant comparison
3384	operators for C++20.
3385	(match_results): Remove redundant operator!= for C++20.
3386	* include/std/string_view (basic_string_view): Define operator<=> and
3387	remove redundant comparison operators for C++20.
3388	* testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
3389	test.
3390	* testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
3391	New test.
3392	* testsuite/21_strings/basic_string_view/operations/copy/char/
3393	constexpr.cc: Initialize variable.
3394	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
3395	constexpr.cc: Likewise.
3396	* testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
3397	dg-do directive and remove comments showing incorrect signatures.
3398	* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
3399	Likewise.
3400	* testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
3401	New test.
3402	* testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
3403	New test.
3404	* testsuite/28_regex/sub_match/compare_c++20.cc: New test.
3405
34062020-04-16  Jonathan Wakely  <jwakely@redhat.com>
3407
3408	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
3409	name of unused parameter.
3410
34112020-04-15  Jonathan Wakely  <jwakely@redhat.com>
3412
3413	* include/bits/fs_dir.h (file_status): Define operator== for C++20.
3414	(directory_entry): Define operator<=> and remove redundant comparison
3415	operators for C++20.
3416	* include/bits/fs_fwd.h (space_info): Define operator== for C++20.
3417	* include/bits/fs_path.h (path): Define operator<=> and remove
3418	redundant comparison operators for C++20.
3419	* testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
3420	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
3421	* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
3422	* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
3423
3424	* include/bits/allocator.h (operator!=): Do not define for C++20.
3425	* include/bits/locale_classes.h (operator!=): Likewise.
3426	* include/bits/std_function.h (operator==(nullptr_t, const function&))
3427	(operator!=(const function&, nullptr_t))
3428	(operator!=(nullptr_t, const function&)): Likewise.
3429	* include/ext/bitmap_allocator.h (operator!=): Likewise.
3430	* include/ext/debug_allocator.h (operator!=): Likewise.
3431	* include/ext/extptr_allocator.h (operator!=): Likewise.
3432	* include/ext/malloc_allocator.h (operator!=): Likewise.
3433	* include/ext/mt_allocator.h (operator!=): Likewise.
3434	* include/ext/new_allocator.h (operator!=): Likewise.
3435	* include/ext/pool_allocator.h (operator!=): Likewise.
3436	* include/ext/throw_allocator.h (operator!=): Likewise.
3437	* include/std/bitset (bitset::operator!=): Likewise.
3438	* include/std/memory_resource (operator!=): Likewise.
3439	* include/std/scoped_allocator (operator!=): Likewise.
3440
3441	* include/std/typeindex (operator<=>): Define for C++20.
3442	* testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
3443
34442020-04-14  Jonathan Wakely  <jwakely@redhat.com>
3445
3446	* libsupc++/compare (compare_three_way): Fix constraint so that
3447	BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
3448	* testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
3449	New test.
3450
3451	PR libstdc++/94562
3452	* include/bits/shared_ptr.h (operator<=>): Define for C++20.
3453	* include/bits/shared_ptr_base.h (operator<=>): Likewise.
3454	* include/bits/unique_ptr.h (operator<=>): Add inline specifier.
3455	* testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
3456	* testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
3457	std::less<A*> to be used when comparing std::shared_ptr<A> objects in
3458	C++20.
3459
3460	PR libstdc++/94565
3461	* libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
3462	* testsuite/18_support/comparisons/categories/94565.cc: New test.
3463
34642020-04-13  Iain Sandoe  <iain@sandoe.co.uk>
3465
3466	* include/std/coroutine: Update coroutines builtin define,
3467	per n4861.
3468
34692020-04-09  Jonathan Wakely  <jwakely@redhat.com>
3470
3471	* libsupc++/compare (compare_three_way): Fix noexcept-specifier.
3472	(strong_order, weak_order, partial_order): Replace uses of <=> with
3473	compare_three_way function object (LWG 3324).
3474	* testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
3475	equality operator so that X satisfies three_way_comparable.
3476	* testsuite/18_support/comparisons/algorithms/strong_order.cc:
3477	Likewise.
3478	* testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
3479
3480	* include/bits/unique_ptr.h (operator<=>): Define for C++20.
3481	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
3482	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
3483	* testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
3484	* testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
3485
34862020-04-08  Jonathan Wakely  <jwakely@redhat.com>
3487
3488	* include/bits/slice_array.h (operator==(const slice&, const slice&)):
3489	Define for C++20.
3490	* include/std/complex (operator==(const T&, const complex<T>&))
3491	(operator!=(const complex<T>&, const complex<T>&))
3492	(operator!=(const complex<T>&, const T&))
3493	(operator!=(const T&, const complex<T>&)): Do not declare for C++20.
3494	* testsuite/26_numerics/slice/compare.cc: New test.
3495
3496	* include/std/charconv (to_chars_result, from_chars_result): Add
3497	defaulted equality comparisons for C++20.
3498	* testsuite/20_util/from_chars/compare.cc: New test.
3499	* testsuite/20_util/to_chars/compare.cc: New test.
3500
35012020-04-07  Jonathan Wakely  <jwakely@redhat.com>
3502
3503	PR libstdc++/94520
3504	* include/std/charconv (__integer_to_chars_result_type)
3505	(__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
3506	allow use in C++14.
3507	* testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
3508	use of std::string_view with std::string.
3509	* testsuite/20_util/from_chars/2.cc: Likewise.
3510	* testsuite/20_util/to_chars/1.cc: Likewise.
3511	* testsuite/20_util/to_chars/2.cc: Likewise.
3512
35132020-04-06  Jonathan Wakely  <jwakely@redhat.com>
3514
3515	PR libstdc++/94498
3516	* include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
3517	usable in constant expressions for C++20.
3518	(__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
3519	_GLIBCXX20_CONSTEXPR.
3520	(std::char_traits<char>, std::char_traits<wchar_t>)
3521	(std::char_traits<char8_t>): Make move, copy and assign usable in
3522	constant expressions for C++20.
3523	(std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
3524	and copy usable in constant expressions for C++20.
3525	* include/std/string_view (basic_string_view::copy): Add
3526	_GLIBCXX20_CONSTEXPR.
3527	* testsuite/21_strings/basic_string_view/operations/copy/char/
3528	constexpr.cc: New test.
3529	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
3530	constexpr.cc: New test.
3531
35322020-04-05  Gerald Pfeifer  <gerald@pfeifer.com>
3533
3534	* doc/xml/manual/appendix_contributing.xml: Refer to Git
3535	documentation instead of Subversion.  Switch to https.
3536	* doc/html/manual/appendix_contributing.html: Regenerate.
3537
35382020-04-03  Jonathan Wakely  <jwakely@redhat.com>
3539
3540	PR libstdc++/93960
3541	* include/bits/ptr_traits.h (__to_address): Add special case for debug
3542	iterators, to avoid dereferenceable check.
3543	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
3544	* testsuite/20_util/to_address/debug.cc: New test.
3545
35462020-04-01  Andrea Corallo  <andrea.corallo@arm.com>
3547
3548	* testsuite/experimental/net/execution_context/use_service.cc:
3549	Require pthread and gthreads.
3550
35512020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>
3552
3553	* doc/xml/manual/appendix_free.xml: Move "free books" list from
3554	fsf.org to gnu.org.
3555	* doc/html/manual/appendix_free.html: Regenerate.
3556
35572020-03-31  Ville Voutilainen  <ville.voutilainen@gmail.com>
3558
3559	Library-side tests for parenthesized aggregate init
3560
3561	PR c++/92878
3562	PR c++/92947
3563
3564	* testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
3565	* testsuite/20_util/any/assign/92878_92947.cc: Likewise.
3566	* testsuite/20_util/any/cons/92878_92947.cc: Likewise.
3567	* testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
3568	* testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
3569	* testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
3570	* testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
3571	* testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
3572	* testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
3573	Likewise.
3574	* testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
3575	* testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
3576	* testsuite/20_util/variant/92878_92947.cc: Likewise.
3577	* testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
3578	Likewise.
3579	* testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
3580	Likewise.
3581	* testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
3582	Likewise.
3583	* testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
3584	Likewise.
3585	* testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
3586	Likewise.
3587	* testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
3588	Likewise.
3589	* testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
3590	* testsuite/23_containers/queue/92878_92947.cc: Likewise.
3591	* testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
3592	Likewise.
3593	* testsuite/23_containers/stack/92878_92947.cc: Likewise.
3594	* testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
3595	Likewise.
3596	* testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
3597	Likewise.
3598	* testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
3599	Likewise.
3600	* testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
3601	Likewise.
3602	* testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
3603	Likewise.
3604
36052020-03-28  Jonathan Wakely  <jwakely@redhat.com>
3606
3607	* testsuite/20_util/is_constructible/value-2.cc: Fix test to account
3608	for changes due to parenthesized aggregate-initialization in C++20.
3609	* testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
3610	with std::chrono::sys_time in C++20.
3611
3612	* include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
3613	to constrain C++20 versions of comparison operators. Fix backwards
3614	logic of relational operators.
3615	(move_iterator): Use requires-clause to constrain comparison operators
3616	in C++20. Do not declare non-standard same-type overloads for C++20.
3617	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
3618	of comparisons and check using greedy_ops type.
3619	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
3620	* testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
3621	main function from compile-only test.
3622	* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
3623
36242020-03-27  Jonathan Wakely  <jwakely@redhat.com>
3625
3626	* include/bits/range_cmp.h (__cpp_lib_ranges): Define.
3627	* include/bits/stl_iterator.h: Check value of __cpp_concepts so that
3628	C++20 concepts are required.
3629	* include/bits/stl_iterator_base_types.h: Likewise.
3630	* include/std/concepts: Likewise.
3631	* include/std/version: Likewise.
3632	* testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
3633	macro.
3634
3635	* include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
3636	(reverse_iterator::iterator_category): Define for C++20.
3637	(reverse_iterator): Define comparison operators correctly for C++20.
3638	(__normal_iterator): Add constraints to comparison operators for C++20.
3639	(move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
3640	overload for input iterators.
3641	(move_iterator): Add constraints to comparison operators for C++20.
3642	Define operator<=> for C++20.
3643	* testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
3644	* testsuite/24_iterators/move_iterator/move_only.cc: New test.
3645	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
3646	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
3647
3648	* include/bits/iterator_concepts.h (__detail::__decay_copy)
3649	(__detail::__member_begin, __detail::__adl_begin): Move here from
3650	<bits/range_access.h>.
3651	(__detail::__ranges_begin, __detail::__range_iter_t): Define.
3652	* bits/range_access.h (__cust_access::__decay_copy)
3653	(__cust_access::__member_begin, __cust_access::__adl_begin): Move to
3654	<bits/iterator_concepts.h>.
3655	(ranges::iterator_t): Use __detail::__range_iter_t.
3656	* include/bits/stl_iterator.h (back_insert_iterator): Simplify
3657	conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
3658	(front_insert_iterator): Likewise.
3659	(insert_iterator): Implement changes from P0896R4 for C++20.
3660	* testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
3661	* testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
3662	* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
3663	for inclusion in synopsis_c++20.cc which expects different signatures
3664	for some function templates.
3665	* testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
3666
3667	* include/std/type_traits (__is_array_convertible): Move definition
3668	to immediately after is_convertible.
3669
36702020-03-26  Jonathan Wakely  <jwakely@redhat.com>
3671
3672	* include/std/chrono (chrono::days, chrono::weeks, chrono::years)
3673	(chrono::months, chrono::sys_days, chrono::local_t)
3674	(chrono::local_time, chrono::local_seconds, chrono::local_days):
3675	Define for C++20.
3676	(chrono::time_point): Add missing static assert.
3677	* testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
3678	* testsuite/std/time/clock/file/overview.cc: New test.
3679	* testsuite/std/time/clock/file/members.cc: New test.
3680	* testsuite/std/time/syn_c++20.cc: New test.
3681
36822020-03-25  Mike Crowe  <mac@mcrowe.com>
3683
3684	* testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
3685	test.
3686	* testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
3687	test.
3688
36892020-03-25  Jonathan Wakely  <jwakely@redhat.com>
3690
3691	* include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
3692	* include/std/chrono (filesystem::__file_clock): Here.
3693	(filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
3694	Define public member functions for C++20.
3695	(is_clock, is_clock_v): Define traits for C++20.
3696	* include/std/condition_variable (condition_variable::wait_until): Add
3697	check for valid clock.
3698	* include/std/future (_State_baseV2::wait_until): Likewise.
3699	* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
3700	* include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
3701	Likewise.
3702	* include/std/thread (this_thread::sleep_until): Likewise.
3703	* testsuite/30_threads/condition_variable/members/2.cc: Qualify
3704	slow_clock with new namespace.
3705	* testsuite/30_threads/condition_variable/members/clock_neg.cc: New
3706	test.
3707	* testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
3708	New test.
3709	* testsuite/30_threads/future/members/clock_neg.cc: New test.
3710	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
3711	Qualify slow_clock with new namespace.
3712	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/
3713	clock_neg.cc: New test.
3714	* testsuite/30_threads/shared_future/members/clock_neg.cc: New
3715	test.
3716	* testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
3717	* testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
3718	New test.
3719	* testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
3720	slow_clock with new namespace.
3721	* testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
3722	* testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
3723	test.
3724	* testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
3725	* testsuite/std/time/traits/is_clock.cc: New test.
3726	* testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
3727	namespace.
3728
37292020-03-21  Jonathan Wakely  <jwakely@redhat.com>
3730
3731	PR libstdc++/93245
3732	* include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
3733	* testsuite/experimental/filesystem/path/generic/generic_string.cc:
3734	Improve test coverage.
3735
3736	PR libstdc++/94242
3737	* include/bits/fs_path.h (path::_S_str_convert): Replace first
3738	parameter with basic_string_view so that strings with different
3739	allocators can be accepted.
3740	(path::generic_string<C,T,A>()): Use basic_string object that uses the
3741	right allocator type.
3742	* testsuite/27_io/filesystem/path/generic/94242.cc: New test.
3743	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
3744	test coverage.
3745
37462020-03-18  Jonathan Wakely  <jwakely@redhat.com>
3747
3748	PR libstdc++/94033
3749	* include/std/type_traits (__is_nt_default_constructible_atom): Remove.
3750	(__is_nt_default_constructible_impl): Remove.
3751	(__is_nothrow_default_constructible_impl): Remove.
3752	(__is_nt_constructible_impl): Add bool template parameter. Adjust
3753	partial specializations.
3754	(__is_nothrow_constructible_impl): Replace class template with alias
3755	template.
3756	(is_nothrow_default_constructible): Derive from alias template
3757	__is_nothrow_constructible_impl instead of
3758	__is_nothrow_default_constructible_impl.
3759	* testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
3760
3761	* include/std/stop_token (stop_token::_Stop_state_ref): Define
3762	comparison operators explicitly if the compiler won't synthesize them.
3763
3764	* include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
3765	__cpp_lib_concepts before using iter_reference_t.
3766	* include/bits/stream_iterator.h (istream_iterator): Check
3767	__cpp_lib_concepts before using default_sentinel_t.
3768	* include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
3769
3770	PR libstdc++/94203
3771	* include/experimental/executor (executor::executor(Executor)): Call
3772	make_shared directly instead of _M_create. Create _Tgt1 object.
3773	(executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
3774	Call allocate_shared directly instead of _M_create. Create _Tgt2
3775	object.
3776	(executor::target_type): Add cast needed for new _Tgt interface.
3777	(executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
3778	(executor::_Tgt): Define the same interface whether RTTI is enabled or
3779	not.
3780	(executor::_Tgt::target_type, executor::_Tgt::target): Do not use
3781	std::type_info in the interface.
3782	(executor::_Tgt::_M_func): Add data member.
3783	(executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
3784	(executor::_Tgt1::_S_func): Define function to access target without
3785	depending on RTTI.
3786	(executor::_M_create): Remove.
3787	(operator==, operator!=): Simplify comparisons for executor.
3788	* include/experimental/socket (is_error_code_enum<socket_errc>):
3789	Define specialization before use.
3790	* testsuite/experimental/net/executor/1.cc: New test.
3791
37922020-03-16  Jonathan Wakely  <jwakely@redhat.com>
3793
3794	PR libstdc++/94199
3795	* include/experimental/executor (service_already_exists): Add default
3796	constructor. Declare make_service to be a friend.
3797	* testsuite/experimental/net/execution_context/make_service.cc: New
3798	test.
3799
38002020-03-12  Jonathan Wakely  <jwakely@redhat.com>
3801
3802	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
3803	a null pointer to functions with nonnull(1) attribute.
3804
38052020-03-11  Patrick Palka  <ppalka@redhat.com>
3806
3807	* include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
3808	'address' -> 'std::__addressof'.
3809	* testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
3810	a non-forward input_range.
3811	* testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
3812	default constructor protected instead of deleted, like with
3813	input_iterator_wrapper.
3814	(test_range::iterator): Add comment explaining that this type is used
3815	only when the underlying wrapper is input_iterator_wrapper or
3816	output_iterator_wrapper.  Remove delegating defaulted constructor so
3817	that the inherited default constructor is used instead.
3818
3819	LWG 3286 ranges::size is not required to be valid after a call to
3820	ranges::begin on an input range
3821	* include/std/ranges (subrange::subrange): Split single-argument
3822	constructor into two, one constrained by _S_store_size and another by
3823	!_S_store_size.
3824	(take_view::begin): Call size() before calling ranges::begin(_M_base).
3825	* testsuite/std/ranges/adaptors/lwg3286.cc: New test.
3826	* testsuite/std/ranges/subrange/lwg3286.cc: New test.
3827
38282020-03-10  Jonathan Wakely  <jwakely@redhat.com>
3829
3830	* include/std/ranges (split_view::_OuterIter::__at_end): Use __current
3831	instead of _M_current.
3832	(split_view::_OuterIter::operator++): Likewise.
3833
3834	* include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
3835	(transform_view::_Iterator::operator*): Add noexcept-specifier.
3836	(transform_view::_Iterator::iter_move): Inline __iter_move body here.
3837	(split_view::_OuterIter::__current): Add noexcept.
3838	(split_view::_InnerIter::__iter_swap): Remove.
3839	(split_view::_InnerIter::__iter_move): Remove.
3840	(split_view::_InnerIter::_M_i_current): New accessors.
3841	(split_view::_InnerIter::__at_end): Use _M_i_current().
3842	(split_view::_InnerIter::operator*): Likewise.
3843	(split_view::_InnerIter::operator++): Likewise.
3844	(iter_move(const _InnerIter&)): Likewise.
3845	(iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
3846	* testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
3847	for iter_move and iter_swap on split_view's inner iterator.
3848
3849	PR c++/94117
3850	* include/std/ranges (ranges::transform_view::_Iterator::iter_move):
3851	Change expression in noexcept-specifier to match function body.
3852
3853	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
3854	comment explaining multiple dg-do directives.
3855	* testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
3856	so test is run as well as compiled.
3857
38582020-03-09  Jonathan Wakely  <jwakely@redhat.com>
3859
3860	PR libstdc++/94063
3861	* src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
3862	handle concatenations that change the type of the first component.
3863	(path::operator+=(basic_string_view<value_type>)): Likewise.
3864	* testsuite/27_io/filesystem/path/concat/94063.cc: New test.
3865
38662020-03-06  Patrick Palka  <ppalka@redhat.com>
3867
3868	* include/std/ranges (join_view::_Sentinel<_Const>): Befriend
3869	join_view::_Sentinel<!_Const>.
3870	* testsuite/std/ranges/adaptors/join.cc: Augment test.
3871
3872	PR libstdc++/93978
3873	* include/bits/range_access.h (__cust_access::_Empty::operator()):
3874	Declare return type to be bool instead of auto.
3875	* testsuite/std/ranges/adaptors/93978.cc: New test.
3876
38772020-03-06  Jonathan Wakely  <jwakely@redhat.com>
3878
3879	PR libstdc++/94069
3880	* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
3881	(__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
3882	second argument to __glibcxx_rwlock_init.
3883	* testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
3884
3885	PR libstdc++/93244
3886	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
3887	test to not fail due to PR 94063.
3888	* testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
3889	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
3890
38912020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
3892
3893	* src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
3894	would match ENOSYS.
3895
38962020-03-05  Jonathan Wakely  <jwakely@redhat.com>
3897
3898	* testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
3899	* testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
3900	* testsuite/experimental/filesystem/operations/copy.cc: Likewise.
3901	* testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
3902	for return value, and in comparison.
3903	* testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
3904
3905	PR libstdc++/94051
3906	* include/std/string_view: Include <bits/ostream_insert.h>.
3907	* testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
3908
39092020-03-04  Jonathan Wakely  <jwakely@redhat.com>
3910
3911	* include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
3912
39132020-03-04  Patrick Palka  <ppalka@redhat.com>
3914
3915	PR libstdc++/94017
3916	* include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
3917	condition for when to use memset, making sure to additionally check that
3918	the output pointer's value type is a non-volatile byte type.  Instead of
3919	requiring that the fill type is a byte type, just require that it's an
3920	integral type.
3921	* testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
3922	New test.
3923	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
3924	New test.
3925	* testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
3926	blocked by PR 94017.
3927	* testsuite/25_algorithms/fill/94017.cc: New test.
3928	* testsuite/25_algorithms/fill_n/94017.cc: New test.
3929
3930	LWG 3355 The memory algorithms should support move-only input iterators
3931	introduced by P1207
3932	* include/bits/ranges_uninitialized.h
3933	(__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
3934	to copy __ifirst, which could be a move-only input iterator.  Use
3935	operator- instead of ranges::distance to compute distance from a sized
3936	sentinel.
3937	(__uninitialized_copy_n_fn::operator()): Likewise.
3938	(__uninitialized_move_fn::operator()): Likewise.
3939	(__uninitialized_move_n_fn::operator()): Likewise.
3940	(__uninitialized_destroy_fn::operator()): Use std::move to avoid
3941	attempting to copy __first.
3942	(__uninitialized_destroy_n_fn::operator()): Likewise.
3943	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
3944	Augment test.
3945	* .../specialized_algorithms/uninitialized_copy/constrained.cc:
3946	Likewise.
3947	* .../specialized_algorithms/uninitialized_move/constrained.cc:
3948	Likewise.
3949
3950	* testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
3951	protected instead of private.
3952	(test_sized_range_sized_sent): New.
3953
3954	* testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
3955	New testsuite iterator.
3956	* testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
3957	* testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
3958
3959	* include/bits/ranges_uninitialized.h
3960	(uninitialized_copy_fn::operator()): Pass a reference type as the first
3961	argument to is_nothrow_assignable_v.
3962	(uninitialized_copy_fn::operator()): Likewise.
3963	(uninitialized_move_fn::operator()): Likewise.  Return an in_out_result
3964	with the input iterator stripped of its move_iterator.
3965	(uninitialized_move_n_fn::operator()): Likewise.
3966	(uninitialized_fill_fn::operator()): Pass a reference type as the first
3967	argument to is_nothrow_assignable_v.
3968	(uninitialized_fill_n_fn::operator()): Likewise.
3969
39702020-03-03  Jonathan Wakely  <jwakely@redhat.com>
3971
3972	PR libstdc++/94013
3973	* include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
3974	traits to control when to use memmove and memcmp optimizations.
3975	(__is_nonvolatile_trivially_copyable): New helper trait.
3976	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
3977	use memcmp optimization with volatile data.
3978	* include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
3979	(__copy_or_move, __copy_or_move_backward): Use __memcpyable.
3980	* include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
3981	(__copy_move_backward_a2): Likewise.
3982	(__equal_aux1): Use __memcmpable.
3983	(__lexicographical_compare_aux): Do not use memcmp optimization with
3984	volatile data.
3985	* testsuite/25_algorithms/copy/94013.cc: New test.
3986	* testsuite/25_algorithms/copy_backward/94013.cc: New test.
3987	* testsuite/25_algorithms/equal/94013.cc: New test.
3988	* testsuite/25_algorithms/fill/94013.cc: New test.
3989	* testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
3990	* testsuite/25_algorithms/move/94013.cc: New test.
3991	* testsuite/25_algorithms/move_backward/94013.cc: New test.
3992
3993	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
3994	Avoid redundant iterator comparisons (LWG 3410).
3995
39962020-03-02  Jonathan Wakely  <jwakely@redhat.com>
3997
3998	PR libstdc++/93972
3999	* include/bits/stl_algobase.h (__memcmp): Allow pointer types to
4000	differ.
4001	* testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
4002
4003	* include/std/ranges (__detail::__maybe_empty_t): Rename to
4004	__maybe_present_t.
4005	(__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
4006
4007	* include/bits/ranges_algo.h (shift_right): Add 'typename' to
4008	dependent type.
4009
40102020-03-01  H.J. Lu  <hongjiu.lu@intel.com>
4011
4012	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
4013
40142020-02-29  John David Anglin  <danglin@gcc.gnu.org>
4015
4016	* testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
4017	* testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
4018	* testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
4019	* testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
4020	* testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
4021
4022	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
4023	Add libatomic option.
4024	* testsuite/30_threads/jthread/jthread.cc: Likewise.
4025
40262020-02-29  François Dumont  <fdumont@gcc.gnu.org>
4027
4028	* include/bits/stl_algo.h
4029	(__find_if, __count_if, __is_permutation, std::is_permutation): Move...
4030	* include/bits/stl_algobase.h: ...here.
4031	* include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
4032
40332020-02-29  John David Anglin  <danglin@gcc.gnu.org>
4034
4035	* testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
4036	option.
4037	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
4038	Likewise.
4039	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
4040	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
4041	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
4042	* testsuite/30_threads/stop_token/stop_source.cc: Likewise.
4043	* testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
4044	* testsuite/30_threads/stop_token/stop_token.cc: Likewise.
4045	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
4046	Likewise.
4047
4048	PR libstdc++/92906
4049	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
4050
40512020-02-28  Patrick Palka  <ppalka@redhat.com>
4052
4053	PR libstdc++/93972
4054	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
4055	Fix condition for when to use memcmp, making it consistent with the
4056	corresponding condition used in std::lexicographical_compare.
4057	* testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
4058
4059	* testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
4060	functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
4061	existing signatures for C++2a.
4062
40632020-02-28  Jonathan Wakely  <jwakely@redhat.com>
4064
4065	* testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
4066	test instead of just compiling it.
4067
40682020-02-28  Patrick Palka  <ppalka@redhat.com>
4069
4070	* include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
4071	whenever the underlying range models common_range.
4072
4073	* include/std/ranges (__detail::_CachedPosition): New struct.
4074	(views::filter_view::_S_needs_cached_begin): New member variable.
4075	(views::filter_view::_M_cached_begin): New member variable.
4076	(views::filter_view::begin): Use _M_cached_begin to cache its
4077	result.
4078	(views::drop_view::_S_needs_cached_begin): New static member variable.
4079	(views::drop_view::_M_cached_begin): New member variable.
4080	(views::drop_view::begin): Use _M_cached_begin to cache its result
4081	when _S_needs_cached_begin.
4082	(views::drop_while_view::_M_cached_begin): New member variable.
4083	(views::drop_while_view::begin): Use _M_cached_begin to cache its
4084	result.
4085	(views::reverse_view::_S_needs_cached_begin): New static member
4086	variable.
4087	(views::reverse_view::_M_cached_begin): New member variable.
4088	(views::reverse_view::begin): Use _M_cached_begin to cache its result
4089	when _S_needs_cached_begin.
4090	* testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
4091	drop_view::begin caches its result.
4092	* testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
4093	that drop_while_view::begin caches its result.
4094	* testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
4095	filter_view::begin caches its result.
4096	* testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
4097	reverse_view::begin caches its result.
4098
40992020-02-28  Jonathan Wakely  <jwakely@redhat.com>
4100
4101	* testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
4102	filesystems that silently truncate timestamps.
4103	* testsuite/experimental/filesystem/operations/last_write_time.cc:
4104	Likewise.
4105
4106	* testsuite/21_strings/basic_string/cons/char/1.cc: Disable
4107	-Wstringop-overflow warnings.
4108
41092020-02-27  Jonathan Wakely  <jwakely@redhat.com>
4110
4111	* testsuite/lib/libstdc++.exp (v3_target_compile): Add
4112	-fdiagnostics-urls=never to options.
4113
41142020-02-27  Patrick Palka  <ppalka@redhat.com>
4115
4116	* include/std/ranges (transform_view::_Iterator<_Const>): Befriend
4117	_Iterator<!_Const>.
4118	(transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
4119	(take_view::_Sentinel<_Const>): Likewise.
4120	(take_while_view::_Sentinel<_Const>): Likewise.
4121	(split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
4122	* testsuite/std/ranges/adaptors/split.cc: Augment test.
4123	* testsuite/std/ranges/adaptors/take.cc: Augment test.
4124	* testsuite/std/ranges/adaptors/take_while.cc: Augment test.
4125	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
4126
4127	* testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
4128	base() of a vector<>::iterator is a pointer.
4129	* testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
4130	* testsuite/25_algorithms/move/constrained.cc: Likewise.
4131	* testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
4132	* testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
4133	instead of &foo[0].
4134	* testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
4135	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
4136	* testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
4137	* testsuite/25_algorithms/sort/constrained.cc: Likewise.
4138	* testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
4139
41402020-02-27  Jonathan Wakely  <jwakely@redhat.com>
4141
4142	* include/debug/array (operator<=>): Define for C++20.
4143	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
4144	Adjust dg-error line numbers.
4145	* testsuite/23_containers/array/tuple_interface/
4146	tuple_element_debug_neg.cc: Likewise.
4147
4148	* testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
4149	defining _GLIBCXX_ASSERTIONS.
4150	* testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
4151	* testsuite/23_containers/span/first_assert_neg.cc: Likewise.
4152	* testsuite/23_containers/span/front_assert_neg.cc: Likewise.
4153	* testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
4154	* testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
4155	* testsuite/23_containers/span/last_assert_neg.cc: Likewise.
4156	* testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
4157	* testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
4158	* testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
4159	* testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
4160	* testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
4161	* testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
4162
4163	* include/debug/string (__gnu_debug::basic_string::insert): Fix for
4164	C++98 where the member function of the base class returns void.
4165
4166	* testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
4167	equality comparisons that support value-initialized iterators.
4168
4169	* include/bits/boost_concept_check.h (__function_requires): Add
4170	_GLIBCXX14_CONSTEXPR.
4171	* testsuite/25_algorithms/min/concept_checks.cc: New test.
4172
41732020-02-26  Patrick Palka  <ppalka@redhat.com>
4174
4175	PR libstdc++/93936
4176	* include/std/ranges (split_view::_InnerIter::operator==): Compare
4177	the operands' _M_i rather than their _M_i.current().
4178	* testsuite/std/ranges/adaptors/split.cc: Augment test.
4179
4180	P1645R1 constexpr for <numeric> algorithms
4181	* include/bits/stl_numeric.h (iota, accumulate, inner_product,
4182	partial_sum, adjacent_difference): Make conditionally constexpr for
4183	C++20.
4184	* include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
4185	test macro.
4186	(reduce, transform_reduce, exclusive_scan, inclusive_scan,
4187	transform_exclusive_scan, transform_inclusive_scan): Make conditionally
4188	constexpr for C++20.
4189	* include/std/version (__cpp_lib_constexpr_numeric): Define.
4190	* testsuite/26_numerics/accumulate/constexpr.cc: New test.
4191	* testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
4192	* testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
4193	* testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
4194	* testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
4195	* testsuite/26_numerics/iota/constexpr.cc: Likewise.
4196	* testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
4197	* testsuite/26_numerics/reduce/constexpr.cc: Likewise.
4198	* testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
4199	* testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
4200	* testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
4201
42022020-02-26  Jonathan Wakely  <jwakely@redhat.com>
4203
4204	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
4205	variables in smaller scope and avoid calling ranges::distance when we
4206	know they are pointers. Remove statically-unreachable use of
4207	__builtin_unreachable().
4208	* include/bits/stl_algobase.h (__lexicographical_compare::__lc):
4209	Define inline.
4210
4211	* include/std/ranges (__detail::__maybe_empty_t): Define new helper
4212	alias.
4213	(__detail::__maybe_const_t): Likewise.
4214	(__adaptor::_RangeAdaptor): Use __maybe_empty_t.
4215	(transform_view, take_view, take_while_view, elements_view): Use
4216	__maybe_const_t.
4217	(join_view, split_view): Use both.
4218
42192020-02-25  Patrick Palka  <ppalka@redhat.com>
4220
4221	LWG 3397 basic_istream_view::iterator should not provide
4222	iterator_category
4223	* include/std/ranges (basic_istream_view:_Iterator::iterator_category):
4224	Rename to ...
4225	(basic_istream_view:_Iterator::iterator_concept): ... this.
4226	* testsuite/std/ranges/istream_view.cc: Augment test.
4227
4228	LWG 3325 Constrain return type of transformation function for
4229	transform_view
4230	* include/std/ranges (transform_view): Constrain the return type of the
4231	transformation function as per LWG 3325.
4232	* testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
4233
4234	LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
4235	* include/std/ranges (join_view::_Iterator::operator--): Require that
4236	range_reference_t<_Base> models common_range.
4237	* testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
4238
4239	LWG 3301 transform_view::_Iterator has incorrect iterator_category
4240	* include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
4241	determination of iterator_category as per LWG 3301.
4242	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
4243
4244	LWG 3292 iota_view is under-constrained
4245	* include/std/ranges (iota_view): Require that _Winc models semiregular
4246	  as per LWG 3292.
4247	* testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
4248
42492020-02-25  Jonathan Wakely  <jwakely@redhat.com>
4250
4251	* include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
4252	during constant evaluation. Call __builtin_memmove directly instead of
4253	__memmove.
4254	(__copy_or_move_backward): Likewise.
4255	* include/bits/stl_algobase.h (__memmove): Remove.
4256	(__copy_move<M, true, random_access_iterator_tag>::__copy_m)
4257	(__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
4258	Use __builtin_memmove directly instead of __memmove.
4259	(__copy_move_a2): Do not use memmove during constant evaluation.
4260	(__copy_move_backward_a2): Use _IsMove constant to select correct
4261	__copy_move_backward specialization.
4262	* testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
4263	begin turned into moves during constant evaluation.
4264
4265	* testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
4266	previous commit.
4267
4268	PR libstdc++/93872
4269	* include/bits/stl_algobase.h (__memmove): Cast away const before
4270	doing move assignment.
4271	* testsuite/25_algorithms/move/93872.cc: New test.
4272	* testsuite/25_algorithms/move_backward/93872.cc: New test.
4273
42742020-02-24  Patrick Palka  <ppalka@redhat.com>
4275
4276	PR libstdc++/93884
4277	* include/bits/ranges_algobase.h (__copy_or_move,
4278	__copy_or_move_backward): Don't inspect the iter_value_t of the output
4279	iterator, instead inspect its iterator_traits directly.
4280	* include/bits/stl_iterator.h (back_insert_iterator::container):
4281	Conditionally initialize.
4282	(back_insert_iterator::difference_type): Conditionally define.
4283	(back_insert_iterator::back_insert_iterator): Conditionally define this
4284	default constructor.
4285	(front_insert_iterator::container): Conditionally initialize.
4286	(front_insert_iterator::difference_type): Conditionally define.
4287	(front_insert_iterator::front_insert_iterator): Conditionally define
4288	this default constructor.
4289	* 24_iterators/back_insert_iterator/pr93884.cc: New test.
4290	* 24_iterators/front_insert_iterator/pr93884.cc: New test.
4291
4292	P0769R2 Add shift to <algorithm>
4293	* include/bits/ranges_algo.h (shift_left, shift_right): New.
4294	* testsuite/25_algorithms/shift_left/1.cc: New test.
4295	* testsuite/25_algorithms/shift_right/1.cc: New test.
4296
42972020-02-24  Jonathan Wakely  <jwakely@redhat.com>
4298
4299	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
4300	Make noexcept-specifier conditional.
4301	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
4302	noexcept-specifier.
4303
4304	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
4305	Add constructor.
4306	(operator==(istream_iterator, default_sentinel_t)): Add operator.
4307	(ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
4308	* include/bits/streambuf_iterator.h
4309	(istreambuf_iterator(default_sentinel_t)): Add constructor.
4310	(operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
4311	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
4312	New test.
4313	* testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
4314	* testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
4315	New test.
4316	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
4317
4318	* include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
4319	(ranges::enable_view): Simplify (LWG 3326).
4320	* include/bits/range_access.h (ranges::enable_view): Declare.
4321	* include/bits/regex.h (__enable_view_impl): Remove partial
4322	specialization.
4323	* include/bits/stl_multiset.h (__enable_view_impl): Likewise.
4324	* include/bits/stl_set.h (__enable_view_impl): Likewise.
4325	* include/bits/unordered_set.h (__enable_view_impl): Likewise.
4326	* include/debug/multiset.h (__enable_view_impl): Likewise.
4327	* include/debug/set.h (__enable_view_impl): Likewise.
4328	* include/debug/unordered_set (__enable_view_impl): Likewise.
4329	* include/experimental/string_view (ranges::enable_view): Define
4330	partial specialization.
4331	* include/std/span (ranges::enable_view): Likewise.
4332	* include/std/string_view (ranges::enable_view): Likewise.
4333	* testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
4334
43352020-02-21  Jonathan Wakely  <jwakely@redhat.com>
4336
4337	* include/std/optional (operator<=>(optional<T>, optional<U>))
4338	(operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
4339	Define for C++20.
4340	* include/std/tuple (__tuple_cmp): New helper function for <=>.
4341	(operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
4342	* include/std/variant (operator<=>(variant<T...>, variant<T...>))
4343	(operator<=>(monostate, monostate)): Define for C++20.
4344	* testsuite/20_util/optional/relops/three_way.cc: New test.
4345	* testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
4346	* testsuite/20_util/variant/89851.cc: Move to ...
4347	* testsuite/20_util/variant/relops/89851.cc: ... here.
4348	* testsuite/20_util/variant/90008.cc: Move to ...
4349	* testsuite/20_util/variant/relops/90008.cc: ... here.
4350	* testsuite/20_util/variant/relops/three_way.cc: New test.
4351
43522020-02-20  Patrick Palka  <ppalka@redhat.com>
4353
4354	* include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
4355	function.
4356	(views::__adaptor::_RangeAdaptor::operator()): Add comments.  Use
4357	__maybe_refwrap to capture lvalue references by reference, and then use
4358	unwrap_reference_t to forward the by-reference captures as references.
4359	* testsuite/std/ranges/adaptors/split.cc: Augment test.
4360	* testsuite/std/ranges/adaptors/split_neg.cc: New test.
4361
4362	* include/std/ranges (iota_view): Forward declare _Sentinel.
4363	(iota_view::_Iterator): Befriend _Sentinel.
4364	(iota_view::_Sentinel::_M_equal): New member function.
4365	(iota_view::_Sentinel::operator==): Use it.
4366	(views::_Iota::operator()): Forward __f using the correct type.
4367	* testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
4368	with integers of different signedness, to appease iota_view's deduction
4369	guide.
4370	* testsuite/std/ranges/iota/iota_view.cc: Augment test.
4371
43722020-02-20  Jonathan Wakely  <jwakely@redhat.com>
4373
4374	* include/bits/range_access.h (ranges::begin): Reject array of
4375	incomplete type.
4376	(ranges::end, ranges::size): Require arrays to be bounded.
4377	(ranges::data): Require lvalue or borrowed_range.
4378	(ranges::iterator_t): Remove constraint.
4379	* testsuite/std/ranges/access/begin.cc: Do not check array of
4380	incomplete type.
4381	* testsuite/std/ranges/access/begin_neg.cc: New test.
4382	* testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
4383	* testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
4384	* testsuite/std/ranges/access/ssize.cc: Do not check array of
4385	incomplete type.
4386
4387	* include/std/system_error (error_category::operator<=>)
4388	(operator<=>(const error_code&, const error_code&))
4389	(operator<=>(const error_condition&, const error_condition&)): Define
4390	for C++20.
4391	* testsuite/19_diagnostics/error_category/operators/less.cc: New test.
4392	* testsuite/19_diagnostics/error_category/operators/three_way.cc: New
4393	test.
4394	* testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
4395	incorrect comment.
4396	* testsuite/19_diagnostics/error_code/operators/less.cc: New test.
4397	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
4398	incorrect comment.
4399	* testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
4400	* testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
4401	incorrect comment.
4402	* testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
4403	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
4404	Remove incorrect comment.
4405	* testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
4406	test.
4407
4408	* libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
4409
4410	* include/std/thread (thread::id::operator<=>): Define for C++20.
4411	* testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
4412	functions in namespace std.
4413	* testsuite/30_threads/thread/id/operators_c++20.cc: New test.
4414
44152020-02-19  Patrick Palka  <ppalka@redhat.com>
4416
4417	* testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
4418	null terminator of the underlying string as part of the test_range.
4419	(main): Call test03.
4420
44212020-02-19  Jonathan Wakely  <jwakely@redhat.com>
4422
4423	* include/bits/stl_iterator.h (common_iterator): Add copyable<I>
4424	requirement (LWG 3385).
4425	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
4426	expected declaration.
4427
4428	* include/std/ranges (take_while_view, drop_view, drop_while_view)
4429	(elements_view:_Iterator): Initialize data members (LWG 3364).
4430
4431	* libsupc++/compare (three_way_comparable): Remove always-false check
4432	that should have been removed with weak_equality (P1959R0).
4433	(three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
4434
4435	* include/std/concepts (__detail::__partially_ordered_with): Move here
4436	from <compare>.
4437	(totally_ordered, totally_ordered_with): Use __partially_ordered_with
4438	to simplify definition (LWG 3331).
4439	* libsupc++/compare (__detail::__partially_ordered_with): Move to
4440	<concepts>.
4441
4442	* include/std/concepts (totally_ordered_with): Remove redundant
4443	requirement (LWG 3329).
4444
4445	* include/std/ranges (__detail::__convertible_to_non_slicing): New
4446	helper concept.
4447	(__detail::__pair_like_convertible_to): Remove.
4448	(__detail::__pair_like_convertible_from): Add requirements for
4449	non-slicing conversions.
4450	(subrange): Constrain constructors with __convertible_to_non_slicing.
4451	Remove constructors from pair-like types. Add new deduction guide.
4452	* testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
4453
4454	* include/bits/iterator_concepts.h (iter_move): Add declaration to
4455	prevent unqualified lookup finding a suitable declaration (LWG 3247).
4456
4457	* include/std/memory_resource (polymorphic_allocator::allocate)
4458	(polymorphic_allocator::allocate_object): Change type of exception to
4459	bad_array_new_length (LWG 3237).
4460	* testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
4461
4462	* include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
4463	* include/std/version (__cpp_lib_unwrap_ref): Likewise.
4464	* testsuite/20_util/unwrap_reference/1.cc: Check macro.
4465	* testsuite/20_util/unwrap_reference/3.cc: New test.
4466
4467	* include/std/numeric (midpoint(T8, T*)): Do not check for complete
4468	type during overload resolution, use static assert instead (LWG 3200).
4469	* testsuite/26_numerics/midpoint/pointer.cc: Do not test with
4470	incomplete type.
4471	* testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
4472
4473	* include/std/span (span(T (&)[N])): Use non-deduced context to
4474	prevent first parameter from interfering with class template argument
4475	deduction (LWG 3369).
4476	* testsuite/23_containers/span/deduction.cc: Add missing 'const'.
4477	* testsuite/23_containers/span/lwg3255.cc: Check for construction from
4478	rvalues.
4479
4480	* include/std/span (span::const_iterator, span::const_reverse_iterator)
4481	(span::cbegin(), span::cend(), span::crbegin(), span::crend()):
4482	Remove (LWG 3320).
4483	* testsuite/23_containers/span/everything.cc: Replace uses of cbegin
4484	and cend.
4485	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
4486	Likewise.
4487	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
4488	constrained.cc: Likewise.
4489	* testsuite/20_util/specialized_algorithms/
4490	uninitialized_default_construct/constrained.cc: Likewise.
4491	* testsuite/20_util/specialized_algorithms/uninitialized_fill/
4492	constrained.cc: Likewise.
4493	* testsuite/20_util/specialized_algorithms/uninitialized_move/
4494	constrained.cc: Likewise.
4495	* testsuite/20_util/specialized_algorithms/
4496	uninitialized_value_construct/constrained.cc: Likewise.
4497
4498	* include/bits/range_access.h (range_size_t): Define alias template.
4499	* include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
4500	* testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
4501
4502	* include/std/ranges (filter_view, transform_view, take_view)
4503	(join_view, split_view, reverse_view): Remove commented-out converting
4504	constructors (LWG 3280).
4505
4506	* include/std/memory (uninitialized_construct_using_allocator): Use
4507	std::construct_at (LWG 3321).
4508
4509	* include/std/memory_resource (polymorphic_allocator::allocate_bytes)
4510	(polymorphic_allocator::allocate_object)
4511	(polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
4512
4513	LWG 3379. "safe" in several library names is misleading
4514	* include/bits/range_access.h (enable_safe_range): Rename to
4515	enable_borrowed_range.
4516	(__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
4517	(safe_range): Rename to borrowed_range.
4518	* include/bits/ranges_algo.h: Adjust to use new names.
4519	* include/bits/ranges_algobase.h: Likewise.
4520	* include/bits/ranges_uninitialized.h: Likewise.
4521	* include/std/ranges: Likewise.
4522	(safe_iterator_t): Rename to borrowed_iterator_t.
4523	(safe_subrange_t): Rename to borrowed_subrange_t.
4524	* include/std/span: Adjust to use new names.
4525	* include/std/string_view: Likewise.
4526	* include/experimental/string_view: Likewise.
4527	* testsuite/std/ranges/access/begin.cc: Likewise.
4528	* testsuite/std/ranges/access/cbegin.cc: Likewise.
4529	* testsuite/std/ranges/access/cdata.cc: Likewise.
4530	* testsuite/std/ranges/access/cend.cc: Likewise.
4531	* testsuite/std/ranges/access/crbegin.cc: Likewise.
4532	* testsuite/std/ranges/access/crend.cc: Likewise.
4533	* testsuite/std/ranges/access/data.cc: Likewise.
4534	* testsuite/std/ranges/access/end.cc: Likewise.
4535	* testsuite/std/ranges/access/rbegin.cc: Likewise.
4536	* testsuite/std/ranges/access/rend.cc: Likewise.
4537	* testsuite/std/ranges/safe_range.cc: Likewise.
4538	* testsuite/std/ranges/safe_range_types.cc: Likewise.
4539	* testsuite/util/testsuite_iterators.h: Likewise.
4540
4541	* include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
4542	(tuple_element<1, const subrange<I, S, K>>): Add partial
4543	specializations (LWG 3398).
4544	* testsuite/std/ranges/subrange/tuple_like.cc: New test.
4545
4546	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
4547	(__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
4548	(__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
4549
45502020-02-18  Patrick Palka  <ppalka@redhat.com>
4551
4552	P1983R0 Wording for GB301, US296, US292, US291, and US283
4553	* include/std/ranges (filter_view::pred): New member function.
4554	(join_view::_Iterator::_Iterator): Remove now-redundant comment since
4555	P1983R0 fixes the highlighted issue in the same way.
4556	(join_view::_Iterator<_Const>): Add friend
4557	join_view::_Iterator<!_Const>.
4558	(join_view::_M_inner): Remove mutable specifier, effectively reverting
4559	the proposed wording changes of P3278.
4560	(join_view::begin): Refine the condition for when to return a const
4561	iterator.
4562	(split_view::_OuterIter::_OuterIter): Adjust constraints.
4563	* testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
4564	exists and works.
4565
45662020-02-18  Jonathan Wakely  <jwakely@redhat.com>
4567
4568	PR libstdc++/93818
4569	* include/std/ranges (_RangeAdaptor): Add deduction guide.
4570	(filter_view::_Iterator): Add alias _Vp_iter and use in place of
4571	iterator_t<_Vp>.
4572	(filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
4573	(transform_view::_Iterator): Add alias _Base_iter and use in place of
4574	iterator_t<_Base>.
4575	(transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
4576	(join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
4577	(join_view::_Iterator::_S_iter_cat()): Add 'typename'.
4578	(split_view::_InnerIter::_S_iter_cat()): Likewise.
4579
4580	* testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
4581	assumption that long is wider than int.
4582	* testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
4583	* testsuite/20_util/integer_comparisons/less.cc: Likewise.
4584	* testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
4585	* testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
4586
4587	P1976R2 Fixed-size span construction from dynamic range
4588	* include/std/span (__cpp_lib_span): Update value.
4589	(span(It, size_type), span(It, End)): Make conditionally explicit. Add
4590	assertion.
4591	(span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
4592	constraints.
4593	(span::first<Count>(), span::last<Count>()): Use explicit type in
4594	return statement.
4595	(as_bytes, as_writable_bytes): Likewise.
4596	* include/std/version (__cpp_lib_span): Update value.
4597	* testsuite/23_containers/span/1.cc: Check new value.
4598	* testsuite/23_containers/span/2.cc: Check new value.
4599	* testsuite/23_containers/span/explicit.cc: New test.
4600
4601	* include/std/span (span::__is_compatible_array): Simplify alias
4602	template by using requires-clause.
4603	(span::__is_compatible_ref): New alias template for constraining
4604	constructors.
4605	(span::__is_compatible_iterator, span::__is_compatible_range): Remove.
4606	(span(It, size_type), span(It, End)): Use __is_compatible_ref.
4607	(span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
4608	redundant parentheses.
4609	(span(R&&)): Add missing constraints.
4610
4611	* include/std/span (span): Reorder members and rename template
4612	parameters to match declarations in the C++2a working paper.
4613
4614	P2116R0 Remove tuple-like protocol support from fixed-extent span
4615	* include/std/span (get, tuple_size, tuple_element): Remove.
4616	* testsuite/23_containers/span/everything.cc: Remove checks for
4617	tuple-like API.
4618	* testsuite/23_containers/span/get_neg.cc: Remove.
4619	* testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
4620	* testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
4621	* testsuite/23_containers/span/tuple_size_neg.cc: Remove.
4622
46232020-02-17  Patrick Palka  <ppalka@redhat.com>
4624
4625	P2106R0 Alternative wording for GB315 and GB316
4626	* include/bits/ranges_algo.h (in_fun_result): New.
4627	(for_each_result, for_each_n_result): Change into an alias of
4628	in_fun_result.
4629	(in_in_result): New.
4630	(mismatch_result): Change into an alias of in_in_result.
4631	(copy_if_result): Change into an alias of in_out_result.
4632	(swap_ranges_result): Change into an alias of in_in_result.
4633	(unary_transform_result): Change into an alias of in_out_result.
4634	(in_in_out_result): New.
4635	(binary_transform_result): Change into an alias of in_in_out_result.
4636	(replace_copy_result, replace_copy_if_result, remove_copy_if_result,
4637	remove_copy_result, unique_copy_result, reverse_copy_result,
4638	rotate_copy_result, partial_sort_copy_result): Change into an alias of
4639	in_out_result.
4640	(in_out_out_result): New.
4641	(partition_copy_result, merge_result): Change into an alias of
4642	in_out_out_result.
4643	(set_union_result, set_intersection_result): Change into an alias of
4644	in_in_out_result.
4645	(set_difference_result): Change into an alias of in_out_result.
4646	(set_symmetric_difference): Change into an alias of in_in_out_result.
4647	(min_max_result): New.
4648	(minmax_result, minmax_element_result): Change into an alias of
4649	min_max_result.
4650	(in_found_result): New.
4651	(next_permutation_result, prev_permutation_result): Change into an alias
4652	of in_found_result.
4653	(__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
4654	Adjust following changes to next_permutation_result and
4655	prev_permutation_result.
4656	* include/bits/ranges_algobase.h (in_out_result): New.
4657	(copy_result, move_result, move_backward_result, copy_backward_result,
4658	copy_n_result): Change into an alias of in_out_result.
4659	* include/bits/ranges_uninitialized.h (uninitialized_copy_result,
4660	uninitialized_copy_n_result, uninitialized_move_result,
4661	uninitialized_move_n_result): Likewise.
4662	* testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
4663	structured bindings.
4664	* testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
4665
4666	P1243R4 Rangify new algorithms
4667	* include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
4668	for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
4669	* testsuite/25_algorithms/clamp/constrained.cc: New test.
4670	* testsuite/25_algorithms/for_each/constrained.cc: Augment test.
4671	* testsuite/25_algorithms/sample/constrained.cc: New test.
4672
46732020-02-17  Jonathan Wakely  <jwakely@redhat.com>
4674
4675	P1964R2 Wording for boolean-testable
4676	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
4677	(__adjacent_find_fn): Cast result of predicate to bool.
4678	* include/std/concepts (__boolean): Remove.
4679	(__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
4680	new helper concepts.
4681	(__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
4682	(predicate): Use __boolean_testable instead of boolean.
4683	* libsupc++/compare (__detail::__partially_ordered, _Synth3way):
4684	Likewise.
4685
4686	P1970R2 Consistency for size() functions: Add ranges::ssize
4687	* include/bits/range_access.h (_SSize, ssize): Define for C++20.
4688	* testsuite/std/ranges/access/ssize.cc: New test.
4689
4690	P1956R1 On the names of low-level bit manipulation functions
4691	* include/bits/hashtable_policy.h: Update comment.
4692	* include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
4693	(ispow2, ceil2, floor2, log2p1): Likewise.
4694	(__cpp_lib_int_pow2): Add feature test macro.
4695	* include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
4696	* include/std/memory (assume_aligned): Adjust use of ispow2.
4697	* include/std/version (__cpp_lib_int_pow2): Add.
4698	* libsupc++/new_opa.cc: Adjust use of __ispow2.
4699	* src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
4700	* testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
4701	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
4702	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
4703	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
4704	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
4705	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
4706	* testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
4707	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
4708	* testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
4709	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
4710	* testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
4711
4712	* include/std/charconv: Add comment.
4713
4714	PR libstdc++/92546 (partial)
4715	* include/bits/random.h (uniform_random_bit_generator): Move definition
4716	to <bits/uniform_int_dist.h>.
4717	* include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
4718	of <bits/random.h>.
4719	* include/bits/ranges_algobase.h: Do not include <cmath>.
4720	* include/bits/uniform_int_dist.h (uniform_random_bit_generator):
4721	Move here.
4722	* include/std/ranges: Do not include <limits>.
4723	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
4724
4725	PR libstdc++/92546 (partial)
4726	* include/Makefile.am: Add new header.
4727	* include/Makefile.in: Regenerate.
4728	* include/bits/int_limits.h: New header.
4729	* include/bits/parse_numbers.h (__select_int::_Select_int): Replace
4730	numeric_limits with __detail::__int_limits.
4731	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
4732	(__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
4733	Likewise.
4734	* include/std/charconv (__to_chars_8, __from_chars_binary)
4735	(__from_chars_alpha_to_num, from_chars): Likewise.
4736	* include/std/memory_resource (polymorphic_allocator::allocate)
4737	(polymorphic_allocator::allocate_object): Likewise.
4738	* include/std/string_view (basic_string_view::_S_compare): Likewise.
4739	* include/std/utility (in_range): Likewise.
4740	* testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
4741	extra error about incomplete type __int_limits<bool>.
4742	* testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
4743	* testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
4744	* testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
4745	* testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
4746	* testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
4747	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
4748	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
4749	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
4750	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
4751	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
4752	* testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
4753	* testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
4754
4755	* python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
4756	value for partial_ordering::unordered.
4757
4758	* include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
4759	const-qualified expression variations.
4760	* include/std/concepts (copyable): Likewise.
4761
4762	* include/std/type_traits (__is_standard_integer): New helper trait.
4763	* include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
4764	(cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
4765	* include/std/version (__cpp_lib_integer_comparison_functions): Define.
4766	* testsuite/20_util/integer_comparisons/1.cc: New test.
4767	* testsuite/20_util/integer_comparisons/2.cc: New test.
4768	* testsuite/20_util/integer_comparisons/equal.cc: New test.
4769	* testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
4770	* testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
4771	* testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
4772	* testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
4773	* testsuite/20_util/integer_comparisons/in_range.cc: New test.
4774	* testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
4775	* testsuite/20_util/integer_comparisons/less.cc: New test.
4776	* testsuite/20_util/integer_comparisons/less_equal.cc: New test.
4777	* testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
4778	* testsuite/20_util/integer_comparisons/less_neg.cc: New test.
4779	* testsuite/20_util/integer_comparisons/not_equal.cc: New test.
4780	* testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
4781
47822020-02-16  Patrick Palka  <ppalka@redhat.com>
4783
4784	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
4785	Move code after an early exit constexpr if to under an else branch.
4786	* include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
4787
47882020-02-15  Patrick Palka  <ppalka@redhat.com>
4789
4790	* include/bits/ranges_algo.h: Adjust whitespace and formatting.
4791	* include/bits/ranges_algobase.h: Likewise.
4792	* include/bits/ranges_uninitialized.h: Likewise.
4793
4794	* include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
4795	binary_search, copy_if, count, count_if, equal_range, find, find_end,
4796	find_first_of, find_if, find_if_not, for_each, generate, generate_n,
4797	includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
4798	is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
4799	lower_bound, make_heap, max, max_element, merge, min, min_element,
4800	minmax, minmax_element, mismatch, next_permutation, none_of,
4801	nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
4802	partition_point, pop_heap, prev_permutation, push_heap, remove,
4803	remove_copy, remove_copy_if, remove_if, replace, replace_copy,
4804	replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
4805	search, search_n, set_difference, set_intersection,
4806	set_symmetric_difference, set_union, shuffle, sort, sort_heap,
4807	stable_partition, stable_sort, swap_ranges, transform, unique,
4808	unique_copy, upper_bound): Convert into function objects.
4809	* include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
4810	fill, move_backward, copy_backward): Likewise.
4811	* include/bits/ranges_uninitialized.h (uninitialized_default_construct,
4812	uninitialized_default_construct_n, uninitialized_value_construct,
4813	uninitialized_value_construct_n, uninitialized_copy,
4814	uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
4815	uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
4816	destroy, destroy_n): Likewise.
4817
4818	* include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
4819	(ranges::find_end): ... here.
4820	(ranges::__lexicographical_compare): Fold into ...
4821	(ranges::lexicographical_compare): ... here.
4822	* include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
4823	(ranges::equal): ... here.
4824
48252020-02-15  Jonathan Wakely  <jwakely@redhat.com>
4826
4827	* include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
4828	* include/std/deque: Likewise.
4829	* include/std/forward_list: Likewise.
4830	* include/std/list: Likewise.
4831	* include/std/string: Likewise.
4832	* include/std/vector: Likewise.
4833	* include/std/version: Likewise.
4834	* testsuite/23_containers/deque/erasure.cc: Test for new value.
4835	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
4836	* testsuite/23_containers/list/erasure.cc: Likewise.
4837	* testsuite/23_containers/map/erasure.cc: Likewise.
4838	* testsuite/23_containers/set/erasure.cc: Likewise.
4839	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
4840	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
4841	* testsuite/23_containers/vector/erasure.cc: Likewise.
4842
48432020-02-15  Jonathan Wakely  <jwakely@redhat.com>
4844
4845	* include/bits/random.h (uniform_random_bit_generator): Require min()
4846	and max() to be constant expressions and min() to be less than max().
4847	* testsuite/26_numerics/random/concept.cc: Check additional cases.
4848	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
4849
48502020-02-13  Patrick Palka  <ppalka@redhat.com>
4851
4852	* include/Makefile.am: Add <bits/ranges_uninitialized.h>.
4853	* include/Makefile.in: Regenerate.
4854	* include/bits/ranges_uninitialized.h: New header.
4855	* include/std/memory: Include it.
4856	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
4857	test.
4858	* .../uninitialized_copy/constrained.cc: New test.
4859	* .../uninitialized_default_construct/constrained.cc: New test.
4860	* .../uninitialized_fill/constrained.cc: New test.
4861	* .../uninitialized_move/constrained.cc: New test.
4862	* .../uninitialized_value_construct/constrained.cc: New test.
4863
4864	* include/Makefile.am: Add bits/ranges_algobase.h
4865	* include/Makefile.in: Regenerate.
4866	* bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
4867	existing #includes.
4868	(__detail::__is_normal_iterator, __detail::is_reverse_iterator,
4869	__detail::__is_move_iterator, copy_result, move_result,
4870	__equal, equal, copy_result, move_result, move_backward_result,
4871	copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
4872	move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
4873	fill): Split out into ...
4874	* bits/range_algobase.h: ... this new header.
4875
48762020-02-12  Patrick Palka  <ppalka@redhat.com>
4877
4878	LWG 3389 and LWG 3390
4879	* include/bits/stl_iterator.h (move_move_iterator): Use std::move when
4880	constructing the move_iterator with __i.
4881	(counted_iterator::counted_iterator): Use std::move when initializing
4882	M_current with __i.
4883	* testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
4884	* testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
4885
48862020-02-12  Sandra Loosemore  <sandra@codesourcery.com>
4887
4888	PR libstdc++/79193
4889	PR libstdc++/88999
4890
4891	* configure: Regenerated.
4892
48932020-02-12  François Dumont  <fdumont@gcc.gnu.org>
4894
4895	* include/bits/hashtable.h
4896	(_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
4897	missing std namespace qualification to forward call.
4898
48992020-02-09  Jonathan Wakely  <jwakely@redhat.com>
4900
4901	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
4902	comment.
4903	* testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
4904
4905	* include/std/ranges: Fix non-ASCII characters in comment.
4906
4907	* include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
4908	equality comparison to be valid and return bool.
4909	(__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
4910	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
4911	type with ambiguous conversion to fundamental types.
4912	* testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
4913
49142020-02-07  Jonathan Wakely  <jwakely@redhat.com>
4915
4916	* include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
4917	Use remove_cvref_t.
4918	(readable_traits): Rename to indirectly_readable_traits.
4919	(readable): Rename to indirectly_readable.
4920	(writable): Rename to indirectly_writable.
4921	(__detail::__iter_exchange_move): Do not use remove_reference_t.
4922	(indirectly_swappable): Adjust requires expression parameter types.
4923	expression.
4924	* include/bits/ranges_algo.h (ranges::transform, ranges::replace)
4925	(ranges::replace_if, ranges::generate_n, ranges::generate)
4926	(ranges::remove): Use new name for writable.
4927	* include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
4928	Use new name for readable.
4929	* include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
4930	new name for readable_traits.
4931	* testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
4932	* testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
4933	new definition of indirectly_readable.
4934
4935	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
4936	to take parameters of common_iterator, instead of the common_iterator
4937	type itself. Fix argument for __common_iter_has_arrow constraint.
4938	(iterator_traits<common_iterator<I, S>>::pointer): Adjust.
4939
49402020-02-07  Jonathan Wakely  <jwakely@redhat.com>
4941
4942	* include/std/ranges (iota_view): Add braces to prevent -Wempty-body
4943	warning.
4944	(basic_istream_view::_Iterator::operator++()): Add missing return.
4945
49462020-02-07  Patrick Palka  <ppalka@redhat.com>
4947
4948	* include/bits/ranges_algo.h: Remove extraneous &&.
4949
4950	* include/std/ranges (ranges::__detail::__stream_extractable,
4951	ranges::basic_istream_view, ranges::istream_view): Define.
4952	* testsuite/std/ranges/istream_view: New test.
4953
4954	Implement C++20 range adaptors
4955	* include/std/ranges: Include <bits/refwrap.h> and <tuple>.
4956	(subrange::_S_store_size): Mark as const instead of constexpr to
4957	avoid what seems to be a bug in GCC.
4958	(__detail::__box): Give it defaulted copy and move constructors.
4959	(ranges::views::_Single::operator()): Mark constexpr.
4960	(ranges::views::_Iota::operator()): Mark constexpr.
4961	(__detail::Empty): Define.
4962	(ranges::views::__closure::_RangeAdaptor,
4963	ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
4964	ranges::views::all, ranges::__detail::find_if,
4965	ranges::__detail::find_if_not, ranges::__detail::mismatch,
4966	ranges::detail::min, filter_view, ranges::views::filter, transform_view,
4967	ranges::views::transform, take_view, ranges::views::take,
4968	take_while_view, ranges::views::take_while, drop_view,
4969	ranges::views::drop, join_view, ranges::views::join,
4970	__detail::require_constant, __detail::tiny_range, split_view,
4971	ranges::views::split, ranges::views::_Counted, ranges::views::counted,
4972	common_view, ranges::views::common, reverse_view,
4973	ranges::views::reverse,
4974	ranges::views::__detail::__is_reversible_subrange,
4975	ranges::views::__detail::__is_reverse_view, reverse_view,
4976	ranges::views::reverse, __detail::__has_tuple_element, elements_view,
4977	ranges::views::elements, ranges::views::keys, ranges::views::values):
4978	Define.
4979	(views): Alias for ranges::views.
4980	(tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
4981	tuple_element<1, ranges::subrange>): New partial specializations.
4982	* testsuite/std/ranges/adaptors/all.cc: New test.
4983	* testsuite/std/ranges/adaptors/common.cc: Likewise.
4984	* testsuite/std/ranges/adaptors/counted.cc: Likewise.
4985	* testsuite/std/ranges/adaptors/drop.cc: Likewise.
4986	* testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
4987	* testsuite/std/ranges/adaptors/elements.cc: Likewise.
4988	* testsuite/std/ranges/adaptors/filter.cc: Likewise.
4989	* testsuite/std/ranges/adaptors/join.cc: Likewise.
4990	* testsuite/std/ranges/adaptors/reverse.cc: Likewise.
4991	* testsuite/std/ranges/adaptors/split.cc: Likewise.
4992	* testsuite/std/ranges/adaptors/take.cc: Likewise.
4993	* testsuite/std/ranges/adaptors/take_while.cc: Likewise.
4994	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
4995
49962020-02-07  Jonathan Wakely  <jwakely@redhat.com>
4997
4998	* libsupc++/compare (__cmp_cat::type): Define typedef for underlying
4999	type of enumerations and comparison category types.
5000	(__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
5001	(__cmp_cat::_Ncmp::unordered): Change value to 2.
5002	(partial_ordering::_M_value, weak_ordering::_M_value)
5003	(strong_ordering::_M_value): Change type to __cmp_cat::type.
5004	(partial_ordering::_M_is_ordered): Remove data member.
5005	(partial_ordering): Use second bit of _M_value for unordered. Adjust
5006	comparison operators.
5007	(weak_ordering::operator partial_ordering): Simplify to remove
5008	branches.
5009	(operator<=>(unspecified, weak_ordering)): Likewise.
5010	(strong_ordering::operator partial_ordering): Likewise.
5011	(strong_ordering::operator weak_ordering): Likewise.
5012	(operator<=>(unspecified, strong_ordering)): Likewise.
5013	* testsuite/18_support/comparisons/categories/partialord.cc: New test.
5014	* testsuite/18_support/comparisons/categories/strongord.cc: New test.
5015	* testsuite/18_support/comparisons/categories/weakord.cc: New test.
5016
5017	* include/std/ranges (iota_view::_Iterator): Fix typo in name of
5018	__cpp_lib_three_way_comparison macro and use deduced return type for
5019	operator<=>.
5020	* testsuite/std/ranges/iota/iterator.cc: New test.
5021
50222020-02-07  Patrick Palka  <ppalka@redhat.com>
5023	    Jonathan Wakely  <jwakely@redhat.com>
5024
5025	Implement C++20 constrained algorithms
5026	* include/Makefile.am: Add new header.
5027	* include/Makefile.in: Regenerate.
5028	* include/std/algorithm: Include <bits/ranges_algo.h>.
5029	* include/bits/ranges_algo.h: New file.
5030	* testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
5031	* testsuite/25_algorithms/all_of/constrained.cc: New test.
5032	* testsuite/25_algorithms/any_of/constrained.cc: New test.
5033	* testsuite/25_algorithms/binary_search/constrained.cc: New test.
5034	* testsuite/25_algorithms/copy/constrained.cc: New test.
5035	* testsuite/25_algorithms/copy_backward/constrained.cc: New test.
5036	* testsuite/25_algorithms/copy_if/constrained.cc: New test.
5037	* testsuite/25_algorithms/copy_n/constrained.cc: New test.
5038	* testsuite/25_algorithms/count/constrained.cc: New test.
5039	* testsuite/25_algorithms/count_if/constrained.cc: New test.
5040	* testsuite/25_algorithms/equal/constrained.cc: New test.
5041	* testsuite/25_algorithms/equal_range/constrained.cc: New test.
5042	* testsuite/25_algorithms/fill/constrained.cc: New test.
5043	* testsuite/25_algorithms/fill_n/constrained.cc: New test.
5044	* testsuite/25_algorithms/find/constrained.cc: New test.
5045	* testsuite/25_algorithms/find_end/constrained.cc: New test.
5046	* testsuite/25_algorithms/find_first_of/constrained.cc: New test.
5047	* testsuite/25_algorithms/find_if/constrained.cc: New test.
5048	* testsuite/25_algorithms/find_if_not/constrained.cc: New test.
5049	* testsuite/25_algorithms/for_each/constrained.cc: New test.
5050	* testsuite/25_algorithms/generate/constrained.cc: New test.
5051	* testsuite/25_algorithms/generate_n/constrained.cc: New test.
5052	* testsuite/25_algorithms/heap/constrained.cc: New test.
5053	* testsuite/25_algorithms/includes/constrained.cc: New test.
5054	* testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
5055	* testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
5056	* testsuite/25_algorithms/is_permutation/constrained.cc: New test.
5057	* testsuite/25_algorithms/is_sorted/constrained.cc: New test.
5058	* testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
5059	* testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
5060	test.
5061	* testsuite/25_algorithms/lower_bound/constrained.cc: New test.
5062	* testsuite/25_algorithms/max/constrained.cc: New test.
5063	* testsuite/25_algorithms/max_element/constrained.cc: New test.
5064	* testsuite/25_algorithms/merge/constrained.cc: New test.
5065	* testsuite/25_algorithms/min/constrained.cc: New test.
5066	* testsuite/25_algorithms/min_element/constrained.cc: New test.
5067	* testsuite/25_algorithms/minmax/constrained.cc: New test.
5068	* testsuite/25_algorithms/minmax_element/constrained.cc: New test.
5069	* testsuite/25_algorithms/mismatch/constrained.cc: New test.
5070	* testsuite/25_algorithms/move/constrained.cc: New test.
5071	* testsuite/25_algorithms/move_backward/constrained.cc: New test.
5072	* testsuite/25_algorithms/next_permutation/constrained.cc: New test.
5073	* testsuite/25_algorithms/none_of/constrained.cc: New test.
5074	* testsuite/25_algorithms/nth_element/constrained.cc: New test.
5075	* testsuite/25_algorithms/partial_sort/constrained.cc: New test.
5076	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
5077	* testsuite/25_algorithms/partition/constrained.cc: New test.
5078	* testsuite/25_algorithms/partition_copy/constrained.cc: New test.
5079	* testsuite/25_algorithms/partition_point/constrained.cc: New test.
5080	* testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
5081	* testsuite/25_algorithms/remove/constrained.cc: New test.
5082	* testsuite/25_algorithms/remove_copy/constrained.cc: New test.
5083	* testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
5084	* testsuite/25_algorithms/remove_if/constrained.cc: New test.
5085	* testsuite/25_algorithms/replace/constrained.cc: New test.
5086	* testsuite/25_algorithms/replace_copy/constrained.cc: New test.
5087	* testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
5088	* testsuite/25_algorithms/replace_if/constrained.cc: New test.
5089	* testsuite/25_algorithms/reverse/constrained.cc: New test.
5090	* testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
5091	* testsuite/25_algorithms/rotate/constrained.cc: New test.
5092	* testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
5093	* testsuite/25_algorithms/search/constrained.cc: New test.
5094	* testsuite/25_algorithms/search_n/constrained.cc: New test.
5095	* testsuite/25_algorithms/set_difference/constrained.cc: New test.
5096	* testsuite/25_algorithms/set_intersection/constrained.cc: New test.
5097	* testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
5098	test.
5099	* testsuite/25_algorithms/set_union/constrained.cc: New test.
5100	* testsuite/25_algorithms/shuffle/constrained.cc: New test.
5101	* testsuite/25_algorithms/sort/constrained.cc: New test.
5102	* testsuite/25_algorithms/stable_partition/constrained.cc: New test.
5103	* testsuite/25_algorithms/stable_sort/constrained.cc: New test.
5104	* testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
5105	* testsuite/25_algorithms/transform/constrained.cc: New test.
5106	* testsuite/25_algorithms/unique/constrained.cc: New test.
5107	* testsuite/25_algorithms/unique_copy/constrained.cc: New test.
5108	* testsuite/25_algorithms/upper_bound/constrained.cc: New test.
5109
51102020-02-06  Jonathan Wakely  <jwakely@redhat.com>
5111
5112	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
5113	number in comment. Fix indentation.
5114
5115	* include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
5116	redundant _GLIBCXX20_CONSTEXPR.
5117
5118	* include/std/ranges (viewable_range): Replace decay_t with
5119	remove_cvref_t (LWG 3375).
5120
51212020-02-05  Jonathan Wakely  <jwakely@redhat.com>
5122
5123	* include/bits/iterator_concepts.h (iter_reference_t)
5124	(iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
5125	Remove workarounds for PR c++/67704.
5126	* testsuite/24_iterators/aliases.cc: New test.
5127
51282020-02-05  Patrick Palka  <ppalka@redhat.com>
5129
5130	* include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
5131	when initializing _M_current.
5132	(move_iterator::base): Split into two overloads differing in
5133	ref-qualifiers as in P1207R4 for C++20.
5134
51352020-02-04  Jonathan Wakely  <jwakely@redhat.com>
5136
5137	* include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
5138	use.
5139
5140	PR libstdc++/93562
5141	* include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
5142	(unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
5143	* testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
5144
51452020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
5146
5147	* configure: Regenerate.
5148
51492020-01-31  Patrick Palka  <ppalka@redhat.com>
5150
5151	* testsuite/24_iterators/range_operations/distance.cc: Do not assume
5152	test_range::end() returns the same type as test_range::begin().
5153	* testsuite/24_iterators/range_operations/next.cc: Likewise.
5154	* testsuite/24_iterators/range_operations/prev.cc: Likewise.
5155	* testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
5156	Always return a sentinel<I>.
5157
51582020-01-29  Jonathan Wakely  <jwakely@redhat.com>
5159
5160	PR libstdc++/92895
5161	* include/std/stop_token (stop_token::stop_possible()): Call new
5162	_M_stop_possible() function.
5163	(stop_token::stop_requested()): Do not use stop_possible().
5164	(stop_token::binary_semaphore): New class, as temporary stand-in for
5165	std::binary_semaphore.
5166	(stop_token::_Stop_cb::_M_callback): Add noexcept to type.
5167	(stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
5168	New data members for symchronization with stop_callback destruction.
5169	(stop_token::_Stop_cb::_Stop_cb): Make non-template.
5170	(stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
5171	Remove.
5172	(stop_token::_Stop_cb::_M_run): New member function.
5173	(stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
5174	Remove.
5175	(stop_token::_Stop_state::_M_owners): New data member to track
5176	reference count for ownership.
5177	(stop_token::_Stop_state::_M_value): New data member combining a
5178	spinlock, the stop requested flag, and the reference count for
5179	associated stop_source objects.
5180	(stop_token::_Stop_state::_M_requester): New data member for
5181	synchronization with stop_callback destruction.
5182	(stop_token::_Stop_state::_M_stop_possible()): New member function.
5183	(stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
5184	of _M_value.
5185	(stop_token::_Stop_state::_M_add_owner)
5186	(stop_token::_Stop_state::_M_release_ownership)
5187	(stop_token::_Stop_state::_M_add_ssrc)
5188	(stop_token::_Stop_state::_M_sub_ssrc): New member functions for
5189	updating reference counts.
5190	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
5191	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
5192	(stop_token::_Stop_state::_M_try_lock)
5193	(stop_token::_Stop_state::_M_try_lock_and_stop)
5194	(stop_token::_Stop_state::_M_do_try_lock): New member functions for
5195	managing spinlock.
5196	(stop_token::_Stop_state::_M_request_stop): Use atomic operations to
5197	read and update state. Release lock while running callbacks. Use new
5198	data members to synchronize with callback destruction.
5199	(stop_token::_Stop_state::_M_remove_callback): Likewise.
5200	(stop_token::_Stop_state::_M_register_callback): Use atomic operations
5201	to read and update state.
5202	(stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
5203	replacing shared_ptr.
5204	(stop_source::stop_source(const stop_source&)): Update reference count.
5205	(stop_source::operator=(const stop_source&)): Likewise.
5206	(stop_source::~stop_source()): Likewise.
5207	(stop_source::stop_source(stop_source&&)): Define as defaulted.
5208	(stop_source::operator=(stop_source&&)): Establish postcondition on
5209	parameter.
5210	(stop_callback): Enforce preconditions on template parameter. Replace
5211	base class with data member of new _Cb_impl type.
5212	(stop_callback::stop_callback(const stop_token&, Cb&&))
5213	(stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
5214	(stop_callback::_Cb_impl): New type wrapping _Callback member and
5215	defining the _S_execute member function.
5216	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
5217	test.
5218	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
5219	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
5220	* testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
5221	New test.
5222	* testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
5223	test.
5224	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
5225	* testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
5226	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
5227	test.
5228
5229	* libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
5230	three_way_comparable_with.
5231	(__detail::__3way_cmp_with): Remove workaround for fixed bug.
5232	(compare_three_way::operator()): Remove redundant constraint from
5233	requires-clause.
5234	(__detail::_Synth3way::operator()): Use three_way_comparable_with
5235	instead of workaround.
5236	* testsuite/18_support/comparisons/object/93479.cc: Prune extra
5237	output due to simplified constraints on compare_three_way::operator().
5238
5239	PR libstdc++/93479
5240	* libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
5241	* testsuite/18_support/comparisons/object/93479.cc: New test.
5242
5243	* testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
5244	returns the same type as test_range::begin(). Add comments.
5245	* testsuite/std/ranges/access/rbegin.cc: Likewise.
5246	* testsuite/std/ranges/access/rend.cc: Likewise.
5247	* testsuite/std/ranges/range.cc: Do not assume the sentinel for
5248	test_range is the same as its iterator type.
5249	* testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
5250	operator- overloads to satisfy sized_sentinel_for when the iterator
5251	satisfies random_access_iterator.
5252
52532020-01-28  Jonathan Wakely  <jwakely@redhat.com>
5254
5255	PR libstdc++/93470
5256	* include/bits/refwrap.h (reference_wrapper::operator()): Restrict
5257	static assertion to object types.
5258
5259	PR libstdc++/93325
5260	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
5261	clock_gettime instead of explicit glibc version check.
5262	* configure: Regenerate.
5263
52642020-01-28  Martin Liska  <mliska@suse.cz>
5265
5266	PR libstdc++/93478
5267	* include/std/atomic: Fix typo.
5268	* include/std/optional: Likewise.
5269
52702020-01-27  Andrew Burgess  <andrew.burgess@embecosm.com>
5271
5272	* configure: Regenerate.
5273
52742020-01-27  Jonathan Wakely  <jwakely@redhat.com>
5275
5276	PR libstdc++/93426
5277	* include/std/span (span): Fix deduction guide.
5278	* testsuite/23_containers/span/deduction.cc: New test.
5279
52802020-01-24  Jonathan Wakely  <jwakely@redhat.com>
5281
5282	* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
5283	(__cmp_cat::_Ord::equivalent): Add enumerator.
5284	(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
5285	and greater.
5286	(partial_ordering, weak_ordering, strong_ordering): Remove
5287	constructors taking __cmp_cat::_Eq parameters. Use renamed
5288	enumerators.
5289
52902020-01-24  Maciej W. Rozycki  <macro@wdc.com>
5291
5292	* acinclude.m4: Handle `--with-toolexeclibdir='.
5293	* Makefile.in: Regenerate.
5294	* aclocal.m4: Regenerate.
5295	* configure: Regenerate.
5296	* doc/Makefile.in: Regenerate.
5297	* include/Makefile.in: Regenerate.
5298	* libsupc++/Makefile.in: Regenerate.
5299	* po/Makefile.in: Regenerate.
5300	* python/Makefile.in: Regenerate.
5301	* src/Makefile.in: Regenerate.
5302	* src/c++11/Makefile.in: Regenerate.
5303	* src/c++17/Makefile.in: Regenerate.
5304	* src/c++98/Makefile.in: Regenerate.
5305	* src/filesystem/Makefile.in: Regenerate.
5306	* testsuite/Makefile.in: Regenerate.
5307
53082020-01-23  Alexandre Oliva <oliva@adacore.com>
5309
5310	* crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
5311	* configure: Rebuild.
5312
5313	* testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
5314
53152020-01-23  Jonathan Wakely  <jwakely@redhat.com>
5316
5317	PR libstdc++/91947
5318	* include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
5319	rule.
5320	* include/Makefile.in: Regenerate.
5321
53222020-01-20  Jonathan Wakely  <jwakely@redhat.com>
5323
5324	* doc/xml/faq.xml: Fix grammar.
5325	* doc/xml/manual/appendix_contributing.xml: Improve instructions.
5326	* doc/xml/manual/spine.xml: Update copyright years.
5327	* doc/html/*: Regenerate.
5328
53292020-01-19  Eric S. Raymond <esr@thyrsus.com>
5330
5331	* doc/xml/faq.xml: Update for SVN -> Git transition.
5332	* doc/xml/manual/appendix_contributing.xml: Likewise.
5333	* doc/xml/manual/status_cxx1998.xml: Likewise.
5334	* doc/xml/manual/status_cxx2011.xml: Likewise.
5335	* doc/xml/manual/status_cxx2014.xml: Likewise.
5336	* doc/xml/manual/status_cxx2017.xml: Likewise.
5337	* doc/xml/manual/status_cxx2020.xml: Likewise.
5338	* doc/xml/manual/status_cxxtr1.xml: Likewise.
5339	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
5340
53412020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
5342
5343	* include/Makefile.am: Add coroutine to the std set.
5344	* include/Makefile.in: Regenerated.
5345	* include/std/coroutine: New file.
5346
53472020-01-17  Jonathan Wakely  <jwakely@redhat.com>
5348
5349	PR libstdc++/92376
5350	* include/bits/c++config: Only do PSTL config when the header is
5351	present, to fix freestanding.
5352	* libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
5353	functions if they were detected by configure.
5354
53552020-01-16  Kai-Uwe Eckhardt  <kuehro@gmx.de>
5356	    Matthew Bauer  <mjbauer95@gmail.com>
5357	    Jonathan Wakely  <jwakely@redhat.com>
5358
5359	PR bootstrap/64271 (partial)
5360	* config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
5361	to unsigned short.
5362	(ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
5363	(ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
5364	definitions with NetBSD upstream.
5365	(ctype_base::blank): Use _CTYPE_BL.
5366	* config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
5367	Declaration.
5368	(ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
5369	(ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
5370	parameters to unsigned char.
5371	* config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
5372
53732020-01-16  François Dumont  <fdumont@gcc.gnu.org>
5374
5375	PR libstdc++/91263
5376	* include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
5377	* include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
5378	(_Equality_base): Remove.
5379	(_Equality<>::_M_equal): Review implementation. Use
5380	std::is_permutation.
5381	* testsuite/23_containers/unordered_multiset/operators/1.cc
5382	(Hash, Equal, test02, test03): New.
5383	* testsuite/23_containers/unordered_set/operators/1.cc
5384	(Hash, Equal, test02, test03): New.
5385
53862020-01-15  Jonathan Wakely  <jwakely@redhat.com>
5387
5388	PR libstdc++/93267
5389	* include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
5390	Move here from <bits/range_access.h> and define using __int128 when
5391	available.
5392	(__is_integer_like, __is_signed_integer_like): Move here from
5393	<bits/range_access.h>.
5394	(weakly_incrementable): Use __is_signed_integer_like.
5395	* include/bits/range_access.h (__max_diff_type, __max_size_type)
5396	(__is_integer_like, __is_signed_integer_like): Move to
5397	<bits/iterator_concepts.h>.
5398	(__make_unsigned_like_t): Move here from <ranges>.
5399	* include/std/ranges (__make_unsigned_like_t): Move to
5400	<bits/range_access.h>.
5401	(iota_view): Replace using-directive with using-declarations.
5402	* testsuite/std/ranges/iota/93267.cc: New test.
5403	* testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
5404
54052020-01-13  Jonathan Wakely  <jwakely@redhat.com>
5406
5407	PR libstdc++/93244
5408	* include/bits/fs_path.h (path::generic_string<C,A>)
5409	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
5410	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
5411	root-dir is converted to forward slash in generic pathname.
5412	* testsuite/27_io/filesystem/path/generic/utf.cc: New test.
5413	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
5414
5415	PR libstdc++/58605
5416	* include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
5417	Define.
5418	(__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
5419	(__atomic_float): Add default member initializer for C++20.
5420	* include/std/atomic (atomic): Likewise.
5421	(atomic::atomic()): Remove noexcept-specifier on default constructor.
5422	* include/std/version (__cpp_lib_atomic_value_initialization): Define.
5423	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
5424	number.
5425	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
5426	* testsuite/29_atomics/atomic/cons/value_init.cc: New test.
5427	* testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
5428	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
5429	expected result for is_trivially_default_constructible.
5430	* testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
5431	* testsuite/29_atomics/atomic_float/value_init.cc: New test.
5432	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
5433	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
5434	* testsuite/29_atomics/atomic_integral/cons/value_init.cc
5435	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
5436	expected results for is_trivially_default_constructible.
5437	* testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
5438	new test generator.
5439
54402020-01-10  Jonathan Wakely  <jwakely@redhat.com>
5441
5442	* testsuite/util/testsuite_iterators.h: Improve comment.
5443
5444	* testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
5445	initialization syntax.
5446
5447	PR libstdc++/92285
5448	* include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
5449	of base class independent of __cplusplus value.
5450	[__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
5451	type defined in the base class
5452	* testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
5453	* testsuite/24_iterators/istreambuf_iterator/requirements/
5454	base_classes.cc: Adjust expected base class for C++98.
5455
54562020-01-09  Olivier Hainque  <hainque@adacore.com>
5457
5458	* doc/xml/manual/appendix_contributing.xml: Document _C2
5459	as a reserved identifier, by VxWorks.
5460	* include/bits/stl_map.h: Rename _C2 template typenames	as _Cmp2.
5461	* include/bits/stl_multimap.h: Likewise.
5462
54632020-01-09  Jonathan Wakely  <jwakely@redhat.com>
5464
5465	* include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
5466	(_ExtPtr_allocator::operator!=): Add missing const qualifiers.
5467	* include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
5468	partial specialization to disambiguate the two constrained
5469	specializations.
5470
5471	* include/experimental/type_traits (experimental::is_pod_v): Disable
5472	-Wdeprecated-declarations warnings around reference to std::is_pod.
5473	* include/std/type_traits (is_pod_v): Likewise.
5474	* testsuite/18_support/max_align_t/requirements/2.cc: Also check
5475	is_standard_layout and is_trivial. Do not check is_pod for C++20.
5476	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
5477	Add -Wno-deprecated for C++20.
5478	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
5479	* testsuite/20_util/is_pod/value.cc: Likewise.
5480	* testsuite/experimental/type_traits/value.cc: Likewise.
5481
54822020-01-09  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
5483
5484	* include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
5485	* include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
5486	* testuite/20_util/is_pod/deprecated-2a.cc: New test.
5487
54882020-01-09  Jonathan Wakely  <jwakely@redhat.com>
5489
5490	PR libstdc++/93205
5491	* include/bits/random.h (operator>>): Check stream operation succeeds.
5492	* include/bits/random.tcc (operator<<): Remove redundant __ostream_type
5493	typedefs.
5494	(operator>>): Remove redundant __istream_type typedefs. Check stream
5495	operations succeed.
5496	(__extract_params): New function to fill a vector from a stream.
5497	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
5498
5499	PR libstdc++/93208
5500	* config/abi/pre/gnu.ver: Add new exports.
5501	* include/std/memory_resource (memory_resource::~memory_resource()):
5502	Do not define inline.
5503	(monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
5504	* src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
5505	Define.
5506	(monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
5507	* testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
5508
55092020-01-09  François Dumont  <fdumont@gcc.gnu.org>
5510
5511	PR libstdc++/92124
5512	* include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
5513	template alias.
5514	(_Hashtable<>::__fwd_value_for): New.
5515	(_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
5516	parameter.
5517	(_Hashtable<>::_M_assign<>): Add _Ht template parameter.
5518	(_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
5519	(_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
5520	with std::move.
5521	(_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
5522	(_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
5523	Adapt.
5524	(_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
5525	Adapt.
5526	* testsuite/23_containers/unordered_set/92124.cc: New.
5527
55282020-01-08  Jonathan Wakely  <jwakely@redhat.com>
5529
5530	PR libstdc++/93201
5531	* src/c++17/fs_ops.cc (do_remove_all): New function implementing more
5532	detailed error reporting for remove_all. Check result of recursive
5533	call before incrementing iterator.
5534	(remove_all(const path&), remove_all(const path&, error_code&)): Use
5535	do_remove_all.
5536	* src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
5537	result of recursive call before incrementing iterator.
5538	* testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
5539	are reported correctly.
5540	* testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
5541
55422020-01-07  Thomas Rodgers  <trodgers@redhat.com>
5543
5544	* include/std/condition_variable
5545	(condition_variable_any::wait_on): Rename to match current draft
5546	standard.
5547	(condition_variable_any::wait_on_until): Likewise.
5548	(condition_variable_any::wait_on_for): Likewise.
5549	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
5550	Adjust tests to account for renamed methods.
5551
55522020-01-07  François Dumont  <fdumont@gcc.gnu.org>
5553
5554	PR libstdc++/92124
5555	* include/bits/stl_tree.h
5556	(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
5557	std::move_if_noexcept by std::move.
5558	* testsuite/23_containers/map/92124.cc: New.
5559	* testsuite/23_containers/set/92124.cc: New.
5560
55612020-01-06  Jonathan Wakely  <jwakely@redhat.com>
5562
5563	* include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
5564	(stop_source): Likewise (LWG 3362).
5565	* testsuite/30_threads/stop_token/stop_source.cc: Test equality
5566	comparisons.
5567
5568	* include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
5569	(lexicographical_compare_three_way): Do not depend on
5570	__cpp_lib_concepts.
5571	* include/std/version (__cpp_lib_three_way_comparison): Only define
5572	when __cpp_lib_concepts is defined.
5573	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
5574
55752020-01-03  Jonathan Wakely  <jwakely@redhat.com>
5576
5577	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
5578	Only define four-argument overload when __cpp_lib_concepts is defined.
5579
55802020-01-01  John David Anglin  <danglin@gcc.gnu.org>
5581
5582	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
5583
55842020-01-01  Jakub Jelinek  <jakub@redhat.com>
5585
5586	Update copyright years.
5587
5588Copyright (C) 2020 Free Software Foundation, Inc.
5589
5590Copying and distribution of this file, with or without modification,
5591are permitted in any medium without royalty provided the copyright
5592notice and this notice are preserved.
5593