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