xref: /netbsd-src/external/gpl3/gcc/dist/libstdc++-v3/ChangeLog (revision 9fb66d812c00ebfb445c0b47dea128f32aa6fe96)
12021-04-08  Release Manager
2
3	* GCC 10.3.0 released.
4
52021-04-01  Jonathan Wakely  <jwakely@redhat.com>
6
7	Backported from master:
8	2021-02-14  Jonathan Wakely  <jwakely@redhat.com>
9
10	PR libstdc++/99096
11	* testsuite/util/testsuite_fs.h: Always include <unistd.h>.
12
132021-04-01  Jonathan Wakely  <jwakely@redhat.com>
14
15	Backported from master:
16	2020-12-17  Jonathan Wakely  <jwakely@redhat.com>
17
18	* config.h.in: Regenerate.
19	* config/os/djgpp/error_constants.h: Test POSIX errno macros
20	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
21	* config/os/mingw32-w64/error_constants.h: Likewise.
22	* config/os/mingw32/error_constants.h: Likewise.
23	* configure: Regenerate.
24
252021-03-29  Jonathan Wakely  <jwakely@redhat.com>
26
27	Backported from master:
28	2020-11-30  Jonathan Wakely  <jwakely@redhat.com>
29
30	* testsuite/20_util/specialized_algorithms/pstl/*: Add
31	dg-timeout-factor.
32	* testsuite/25_algorithms/pstl/*: Likewise.
33	* testsuite/26_numerics/pstl/*: Likewise.
34	* testsuite/28_regex/*: Likewise.
35
362021-03-29  Jonathan Wakely  <jwakely@redhat.com>
37
38	Backported from master:
39	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
40
41	* testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc:
42	Add dg-timeout-factor directive.
43	* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
44	Likewise.
45	* testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc:
46	Likewise.
47	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc:
48	Likewise.
49	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
50	Likewise.
51	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc:
52	Likewise.
53	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc:
54	Likewise.
55	* testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
56	Likewise.
57	* testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise.
58	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc:
59	Likewise.
60	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc:
61	Likewise.
62	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
63
642021-03-29  Jonathan Wakely  <jwakely@redhat.com>
65
66	Backported from master:
67	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
68
69	* include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
70	#ifdef instead of #if.
71	(stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
72	using __gthread_yield.
73
742021-03-29  Jonathan Wakely  <jwakely@redhat.com>
75
76	Backported from master:
77	2020-06-19  Jonathan Wakely  <jwakely@redhat.com>
78
79	PR libstdc++/95765
80	* include/bits/stl_algobase.h (__size_to_integer(float))
81	(__size_to_integer(double), __size_to_integer(long double))
82	(__size_to_integer(__float128)): Cast return type explicitly.
83
842021-03-29  Jonathan Wakely  <jwakely@redhat.com>
85
86	Backported from master:
87	2020-11-25  Jonathan Wakely  <jwakely@redhat.com>
88
89	* testsuite/17_intro/names.cc: Do not test 'v' on AIX.
90
912021-03-29  Jonathan Wakely  <jwakely@redhat.com>
92
93	Backported from master:
94	2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
95
96	* include/bits/basic_string.h (size_type, difference_type):
97	Use allocator_traits to obtain the allocator's size_type and
98	difference_type.
99
1002021-03-29  Jonathan Wakely  <jwakely@redhat.com>
101
102	Backported from master:
103	2020-09-01  Jonathan Wakely  <jwakely@redhat.com>
104
105	* include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
106	New helper function for finding GCD of two positive intmax_t
107	values.
108	(duration::__divide): New helper alias for dividing one period
109	by another.
110	(duration::__is_harmonic): Use __divide not ratio_divide.
111	(duration(const duration<R2, P2>&)): Require the duration rep
112	types to be convertible.
113	* testsuite/20_util/duration/cons/dr2094.cc: New test.
114	* testsuite/20_util/duration/requirements/reduced_period.cc:
115	Fix definition of unused member functions in test type.
116	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
117	Adjust expected errors.
118
1192021-03-29  Jonathan Wakely  <jwakely@redhat.com>
120
121	Backported from master:
122	2020-08-27  Jonathan Wakely  <jwakely@redhat.com>
123
124	* include/std/chrono (__duration_common_type): Ensure the
125	reduced ratio is used. Remove unused partial specialization
126	using __failure_type.
127	(common_type): Pass reduced ratios to __duration_common_type.
128	Add partial specializations for simple cases involving a single
129	duration or time_point type.
130	(duration::period): Use reduced ratio.
131	(duration::operator+(), duration::operator-()): Return duration
132	type using the reduced ratio.
133	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
134	Adjust expected errors.
135	* testsuite/20_util/duration/requirements/reduced_period.cc: New test.
136
1372021-03-29  Jonathan Wakely  <jwakely@redhat.com>
138
139	Backported from master:
140	2020-09-03  Jonathan Wakely  <jwakely@redhat.com>
141
142	PR libstdc++/96592
143	* include/std/tuple (_TupleConstraints<true, T...>): Use
144	alternative is_constructible instead of std::is_constructible.
145	* testsuite/20_util/tuple/cons/96592.cc: New test.
146
1472021-03-29  Jonathan Wakely  <jwakely@redhat.com>
148
149	Backported from master:
150	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
151
152	* testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
153	definition of aggregates in C++20.
154	* testsuite/20_util/optional/requirements.cc: Adjust for
155	defaulted comparisons in C++20.
156
1572021-03-29  Jonathan Wakely  <jwakely@redhat.com>
158
159	Backported from master:
160	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
161
162	* testsuite/20_util/tuple/78939.cc: Suppress warnings about
163	deprecation of volatile-qualified structured bindings in C++20.
164	* testsuite/20_util/variable_templates_for_traits.cc: Likewise
165	for deprecation of is_pod in C++20
166
1672021-03-29  Jonathan Wakely  <jwakely@redhat.com>
168
169	Backported from master:
170	2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
171
172	* include/std/optional (bad_optional_access): Define default
173	constructor and destructor as defaulted.
174	* testsuite/20_util/optional/bad_access.cc: New test.
175
1762021-03-29  Jonathan Wakely  <jwakely@redhat.com>
177
178	Backported from master:
179	2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
180
181	* include/bits/ranges_algobase.h (__copy_n_fn): Only call
182	ranges::copy for positive values.
183	* include/bits/stl_algo.h (copy_n): Convert Size argument to an
184	integral type and only call __copy_n for positive values.
185	* testsuite/util/testsuite_iterators.h
186	(random_access_iterator_wrapper::operator+=): Fix range check for
187	negative values.
188	(output_container, input_container, forward_container)
189	(bidirectional_container, random_access_container): New alias
190	templates.
191	* testsuite/25_algorithms/copy_n/5.cc: New test.
192
1932021-03-29  Jonathan Wakely  <jwakely@redhat.com>
194
195	Backported from master:
196	2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
197
198	* include/std/atomic (atomic): Add static assertions.
199	* testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
200
2012021-03-29  Jonathan Wakely  <jwakely@redhat.com>
202
203	Backported from master:
204	2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
205
206	* include/bits/stl_iterator.h (move_iterator::operator=): Define.
207	* testsuite/24_iterators/move_iterator/dr3265.cc: New test.
208
2092021-03-29  Paul Keir  <paul.keir@uws.ac.uk>
210
211	Backported from master:
212	2020-06-15  Paul Keir  <paul.keir@uws.ac.uk>
213
214	* include/bits/char_traits.h (char_traits::move): constexpr move with
215	overlap was using copy_backward incorrectly.
216	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
217	New test.
218
2192021-03-29  Jonathan Wakely  <jwakely@redhat.com>
220
221	Backported from master:
222	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
223
224	* testsuite/20_util/time_point_cast/rounding.cc: Remove
225	duplicate dg-do directive and add c++17 effective target.
226
2272021-03-29  Jonathan Wakely  <jwakely@redhat.com>
228
229	Backported from master:
230	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
231
232	* testsuite/30_threads/thread/cons/84535.cc: Use a custom
233	namespace.
234	* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
235
2362021-03-29  Jonathan Wakely  <jwakely@redhat.com>
237
238	Backported from master:
239	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
240
241	* testsuite/lib/libstdc++.exp (libstdc++_init): Only set
242	tool_timeout if it hasn't been set by the user already.
243
2442021-03-29  Moritz Sichert  <sichert@in.tum.de>
245
246	Backported from master:
247	2021-03-23  Moritz Sichert  <sichert@in.tum.de>
248
249	* include/std/ranges (reverse_view::begin, reverse_view::end):
250	Qualify make_reverse_iterator calls to avoid ADL.
251	* testsuite/std/ranges/adaptors/reverse.cc: Test that
252	views::reverse works when make_reverse_iterator is defined
253	in an associated namespace.
254
2552021-03-29  Jonathan Wakely  <jwakely@redhat.com>
256
257	Backported from master:
258	2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
259
260	* include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])):
261	Add missing 'noexcept' as per LWG 2280.
262	(rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>))
263	(rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537.
264	* testsuite/24_iterators/range_access/range_access.cc: Check for
265	expected noexcept specifiers. Check result types of generic
266	std::begin and std::end overloads.
267	* testsuite/24_iterators/range_access/range_access_cpp14.cc:
268	Check for expected noexcept specifiers.
269	* testsuite/24_iterators/range_access/range_access_cpp17.cc:
270	Likewise.
271
2722021-03-29  Jonathan Wakely  <jwakely@redhat.com>
273
274	Backported from master:
275	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
276
277	PR libstdc++/99537
278	* include/std/stop_token (_Stop_state_t::_M_release_ownership):
279	Use acq_rel memory ordering.
280
2812021-03-29  Jonathan Wakely  <jwakely@redhat.com>
282
283	Backported from master:
284	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
285
286	PR libstdc++/99533
287	* src/c++17/fs_dir.cc (recursive_directory_iterator): Use new
288	helper function to check for permission denied errors.
289	* src/filesystem/dir.cc (recursive_directory_iterator):
290	Likewise.
291	* src/filesystem/dir-common.h (is_permission_denied_error): New
292	helper function.
293
2942021-03-29  Jonathan Wakely  <jwakely@redhat.com>
295
296	Backported from master:
297	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
298
299	PR libstdc++/99536
300	* include/bits/random.h (normal_distribution): Use
301	default-initializer for _M_saved and _M_saved_available.
302
3032021-03-29  Jonathan Wakely  <jwakely@redhat.com>
304
305	Backported from master:
306	2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
307
308	* include/bits/range_cmp.h (__eq_builtin_ptr_cmp): Remove.
309	(ranges::equal_to, ranges::not_equal_to): Do not constrain
310	with __eq_builtin_ptr_cmp.
311	(ranges::less, ranges::greater, ranges::less_equal)
312	(ranges::greater_equal): Do not constrain with
313	__less_builtin_ptr_cmp.
314	* libsupc++/compare (compare_three_way): Do not constrain with
315	__3way_builtin_ptr_cmp.
316	* testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to...
317	* testsuite/18_support/comparisons/object/lwg3530.cc: ...here.
318	* testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test.
319
3202021-03-29  Jonathan Wakely  <jwakely@redhat.com>
321
322	Backported from master:
323	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
324
325	* doc/xml/manual/status_cxx2014.xml: Document implementation
326	specific properties of std::experimental::filesystem::rename.
327	* doc/xml/manual/status_cxx2017.xml: Document implementation
328	specific properties of std::filesystem::rename.
329	* doc/html/*: Regenerate.
330	* src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour
331	for directories on Windows.
332	* src/filesystem/ops-common.h (__gnu_posix::rename): Use
333	MoveFileExW on Windows.
334	* testsuite/27_io/filesystem/operations/rename.cc: New test.
335	* testsuite/experimental/filesystem/operations/rename.cc: New test.
336
3372021-03-29  Jonathan Wakely  <jwakely@redhat.com>
338
339	Backported from master:
340	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
341
342	* testsuite/util/testsuite_fs.h (nonexistent_path): Add
343	random number to the path.
344
3452021-03-29  Jonathan Wakely  <jwakely@redhat.com>
346
347	Backported from master:
348	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
349
350	* include/experimental/internet (address_v6::to_string): Include
351	scope ID in string.
352	(address_v6::loopback): Fix to be constexpr in C++14.
353	* testsuite/experimental/net/internet/address/v6/members.cc:
354	Test to_string() results.
355
3562021-03-29  Jonathan Wakely  <jwakely@redhat.com>
357
358	Backported from master:
359	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
360
361	* include/experimental/internet (address_v6::any): Avoid using
362	memcpy in constexpr function.
363	(address_v6::loopback): Likewise.
364	(make_address_v6): Fix missing return statements on error paths.
365	* include/experimental/io_context: Avoid -Wdangling-else
366	warning.
367	* testsuite/experimental/net/internet/address/v4/members.cc:
368	Remove unused variables.
369	* testsuite/experimental/net/internet/address/v6/members.cc:
370	New test.
371
3722021-03-29  Jonathan Wakely  <jwakely@redhat.com>
373
374	Backported from master:
375	2020-10-29  Jonathan Wakely  <jwakely@redhat.com>
376
377	* testsuite/25_algorithms/all_of/constexpr.cc: Check result of
378	the algorithm.
379	* testsuite/25_algorithms/any_of/constexpr.cc: Likewise.
380	* testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
381	* testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise.
382	* testsuite/25_algorithms/count/constexpr.cc: Likewise.
383	* testsuite/25_algorithms/equal/constexpr.cc: Likewise.
384	* testsuite/25_algorithms/equal_range/constexpr.cc: Likewise.
385	* testsuite/25_algorithms/fill/constexpr.cc: Likewise.
386	* testsuite/25_algorithms/find_end/constexpr.cc: Likewise.
387	* testsuite/25_algorithms/find_if/constexpr.cc: Likewise.
388	* testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise.
389	* testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise.
390	* testsuite/25_algorithms/is_sorted_until/constexpr.cc:
391	Likewise.
392	* testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
393	Likewise.
394	* testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise.
395	* testsuite/25_algorithms/merge/constexpr.cc: Likewise.
396	* testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
397	* testsuite/25_algorithms/none_of/constexpr.cc: Likewise.
398	* testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise.
399	* testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise.
400	* testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise.
401	* testsuite/25_algorithms/remove_if/constexpr.cc: Likewise.
402	* testsuite/25_algorithms/replace_if/constexpr.cc: Likewise.
403	* testsuite/25_algorithms/reverse/constexpr.cc: Likewise.
404	* testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise.
405	* testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise.
406	* testsuite/25_algorithms/search/constexpr.cc: Likewise.
407	* testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
408	* testsuite/25_algorithms/set_intersection/constexpr.cc:
409	Likewise.
410	* testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
411	Likewise.
412	* testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
413	* testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
414	* testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
415
4162021-03-29  Jonathan Wakely  <jwakely@redhat.com>
417
418	Backported from master:
419	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
420
421	PR libstdc++/99077
422	* src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)):
423	Change int parameter to error_code, to match std::ios_failure.
424	(__throw_ios_failure(const char*, int)): Construct error_code
425	from int parameter.
426
4272021-03-29  Jonathan Wakely  <jwakely@redhat.com>
428
429	Backported from master:
430	2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
431
432	PR libstdc++/99058
433	* doc/xml/manual/status_cxx2011.xml: Document when support
434	became stable.
435	* doc/xml/manual/status_cxx2014.xml: Likewise.
436	* doc/xml/manual/status_cxx2017.xml: Likewise.
437	* doc/html/manual/status.html: Regenerate.
438
4392021-03-29  Jonathan Wakely  <jwakely@redhat.com>
440
441	Backported from master:
442	2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
443
444	PR libstdc++/88881
445	* src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
446
4472021-03-29  Jonathan Wakely  <jwakely@redhat.com>
448
449	Backported from master:
450	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
451
452	PR libstdc++/88881
453	* src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
454
4552021-03-29  Jonathan Wakely  <jwakely@redhat.com>
456
457	Backported from master:
458	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
459
460	* src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
461	(fs::remove): Use std::system_category() for error codes from
462	GetLastError().
463	* src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
464	Likewise.
465
4662021-03-29  Jonathan Wakely  <jwakely@redhat.com>
467
468	Backported from master:
469	2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
470
471	* testsuite/27_io/filesystem/operations/proximate.cc: Fix typo
472	in __MINGW32__ macro name.
473	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
474	* testsuite/27_io/filesystem/path/generation/proximate.cc:
475	Likewise.
476	* testsuite/27_io/filesystem/path/generation/relative.cc:
477	Likewise.
478	* testsuite/util/testsuite_fs.h: Likewise.
479
4802021-03-29  Jonathan Wakely  <jwakely@redhat.com>
481
482	Backported from master:
483	2021-02-03  Jonathan Wakely  <jwakely@redhat.com>
484
485	* testsuite/19_diagnostics/error_code/operators/not_equal.cc:
486	Add comparison with same category and different values.
487	* testsuite/19_diagnostics/error_code/operators/less.cc:
488	Likewise. Fix comparison involving different categories.
489	* testsuite/19_diagnostics/error_code/operators/three_way.cc:
490	Likewise.
491	* testsuite/19_diagnostics/error_condition/operators/less.cc:
492	Add comment.
493	* testsuite/19_diagnostics/error_condition/operators/three_way.cc:
494	Likewise.
495
4962021-03-29  Jonathan Wakely  <jwakely@redhat.com>
497
498	Backported from master:
499	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
500
501	PR libstdc++/98319
502	* include/experimental/random: Only define contents for C++14
503	and later.
504	* include/experimental/source_location: Likewise.
505	* include/experimental/utility: Likewise.
506	* testsuite/experimental/feat-lib-fund.cc: Include all LFTS
507	headers that are present. Allow test to run for all modes.
508
5092021-03-29  Jonathan Wakely  <jwakely@redhat.com>
510
511	Backported from master:
512	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
513
514	PR libstdc++/93151
515	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove.
516	* configure.ac: Regenerate.
517	* config/os/generic/error_constants.h: Test POSIX errno macros
518	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
519	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
520	Likewise.
521	* testsuite/19_diagnostics/headers/system_error/93151.cc: New
522	test.
523
5242021-03-29  Jonathan Wakely  <jwakely@redhat.com>
525
526	Backported from master:
527	2020-12-10  Jonathan Wakely  <jwakely@redhat.com>
528
529	PR libstdc++/98226
530	* include/std/bit (__countl_one, __countr_one): Remove redundant
531	branches.
532
5332021-03-29  Jonathan Wakely  <jwakely@redhat.com>
534
535	Backported from master:
536	2020-11-09  Jonathan Wakely  <jwakely@redhat.com>
537
538	* include/std/bit (__popcount): Remove redundant check for zero.
539
5402021-03-29  Jonathan Wakely  <jwakely@redhat.com>
541
542	Backported from master:
543	2020-10-30  Jonathan Wakely  <jwakely@redhat.com>
544
545	* include/std/ranges (enable_borrowed_view<take_view<T>>)
546	(enable_borrowed_view<drop_view<T>>)
547	(enable_borrowed_view<drop_while_view<T>>)
548	(enable_borrowed_view<reverse_view<T>>)
549	(enable_borrowed_view<common_view<T>>)
550	(enable_borrowed_view<elements_view<T>>): Add partial
551	specializations as per P2017R1.
552	* testsuite/std/ranges/adaptors/conditionally_borrowed.cc:
553	New test.
554
5552021-03-29  Jonathan Wakely  <jwakely@redhat.com>
556
557	Backported from master:
558	2020-10-29  Jonathan Wakely  <jwakely@redhat.com>
559
560	* include/std/ranges (subrange::subrange(R&&)): Use
561	direct-initialization instead of list-initialization, so a
562	potential narrowing conversion from ranges::size(r) to the
563	stored size isn't ill-formed.
564
5652021-03-29  Jonathan Wakely  <jwakely@redhat.com>
566
567	Backported from master:
568	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
569
570	PR libstdc++/82584
571	* include/bits/random.tcc
572	(discrete_distribution::param_type::_M_initialize)
573	(piecewise_constant_distribution::param_type::_M_initialize)
574	(piecewise_linear_distribution::param_type::_M_initialize):
575	Add assertions for positive sums..
576	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
577	line.
578
5792021-03-29  Jonathan Wakely  <jwakely@redhat.com>
580
581	Backported from master:
582	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
583
584	* include/bits/random.h (__detail::_Mod): Revert last change.
585	(__detail::__mod): Do not use _Mod for a==0 case.
586	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
587	Check other cases with a==0. Also check runtime results.
588	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
589	line.
590
5912021-03-29  Jonathan Wakely  <jwakely@redhat.com>
592
593	Backported from master:
594	2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
595
596	* include/bits/random.h (__detail::_Mod): Avoid divide by zero.
597	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
598	New test.
599
6002021-03-29  Jonathan Wakely  <jwakely@redhat.com>
601
602	Backported from master:
603	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
604
605	* include/std/ranges (drop_view::begin()): Adjust constraints
606	to match the correct condition for O(1) ranges::next (LWG 3482).
607	* testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
608	cached for non-sized_range.
609
6102021-03-29  Jonathan Wakely  <jwakely@redhat.com>
611
612	Backported from master:
613	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
614
615	* include/std/ranges (transform_view, elements_view): Relax
616	constraints on operator- for iterators, as per LWG 3483.
617	* testsuite/std/ranges/adaptors/elements.cc: Check that we
618	can take the difference of two iterators from a non-random
619	access range.
620	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
621
6222021-03-29  Jonathan Wakely  <jwakely@redhat.com>
623
624	Backported from master:
625	2020-10-28  Jonathan Wakely  <jwakely@redhat.com>
626
627	PR libstdc++/95592
628	* include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR)
629	(_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION):
630	Use elaborated-type-specifier and qualified-id to avoid
631	ambiguities with QNX system headers.
632	* testsuite/26_numerics/valarray/95592.cc: New test.
633
6342021-03-29  Jonathan Wakely  <jwakely@redhat.com>
635
636	Backported from master:
637	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
638
639	* include/bits/locale_conv.h (__str_codecvt_out_all):
640	Add cast to compare operands of the same signedness.
641	* include/bits/locale_facets_nonio.tcc
642	(time_get::_M_extract_wday_or_month): Likewise.
643	* include/bits/sstream.tcc (basic_stringbuf::overflow):
644	Likewise.
645	* include/tr1/legendre_function.tcc (__sph_legendre): Use
646	unsigned for loop variable.
647
6482021-03-29  Jonathan Wakely  <jwakely@redhat.com>
649
650	Backported from master:
651	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
652
653	* include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
654	Add casts to compare types of the same signedness.
655
6562021-03-29  Jonathan Wakely  <jwakely@redhat.com>
657
658	Backported from master:
659	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
660
661	* include/bits/ranges_algobase.h (__equal_fn): Remove unused
662	typedef.
663
6642021-03-29  Jonathan Wakely  <jwakely@redhat.com>
665
666	Backported from master:
667	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
668
669	* include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
670	(operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
671	warnings for uses of std::auto_ptr.
672	* include/experimental/type_traits (is_literal_type_v):
673	Likewise, for use of std::is_literal_type.
674	* include/std/condition_variable (condition_variable_any::_Unlock):
675	Likewise, for use of std::uncaught_exception.
676
6772021-03-29  Jonathan Wakely  <jwakely@redhat.com>
678
679	Backported from master:
680	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
681
682	* include/bits/fs_path.h (path::_List::type()): Avoid narrowing
683	conversion.
684
6852021-03-29  Jonathan Wakely  <jwakely@redhat.com>
686
687	Backported from master:
688	2020-09-07  Jonathan Wakely  <jwakely@redhat.com>
689
690	* include/std/ranges (__box): Simplify constraints as per LWG 3477.
691
6922021-03-29  Jonathan Wakely  <jwakely@redhat.com>
693
694	Backported from master:
695	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
696
697	* include/std/ranges (ranges::iota_view::size()): Perform all
698	calculations in the right unsigned types.
699	* testsuite/std/ranges/iota/size.cc: New test.
700
7012021-03-29  Jonathan Wakely  <jwakely@redhat.com>
702
703	Backported from master:
704	2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
705
706	* include/experimental/executor (system_context::_M_run()):
707	Fix predicate.
708	(system_context::join()): Do not join unless joinable.
709	* testsuite/experimental/net/system_context/1.cc: New test.
710
7112021-03-29  Jonathan Wakely  <jwakely@redhat.com>
712
713	Backported from master:
714	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
715
716	* include/bits/stl_iterator.h (inserter): Do not deduce
717	iterator type (LWG 561).
718	* testsuite/24_iterators/insert_iterator/dr561.cc: New test.
719
7202021-03-29  Jonathan Wakely  <jwakely@redhat.com>
721
722	Backported from master:
723	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
724
725	* include/bits/fs_path.h (path::_List::begin, path::_List::end):
726	Add noexcept to match definitions in src/c++17/fs_path.cc.
727
7282021-03-29  Jonathan Wakely  <jwakely@redhat.com>
729
730	Backported from master:
731	2020-10-27  Jonathan Wakely  <jwakely@redhat.com>
732
733	* src/c++17/fs_dir.cc (fs::directory_iterator::operator*):
734	Add noexcept. Do not throw on precondition violation.
735
7362021-03-19  Jakub Jelinek  <jakub@redhat.com>
737
738	Backported from master:
739	2021-02-23  Jakub Jelinek  <jakub@redhat.com>
740
741	PR libstdc++/99181
742	* testsuite/21_strings/char_traits/requirements/char/99181.cc: New
743	test.
744
7452021-03-19  Jakub Jelinek  <jakub@redhat.com>
746
747	Backported from master:
748	2021-02-23  Jakub Jelinek  <jakub@redhat.com>
749
750	PR libstdc++/99181
751	* include/bits/char_traits.h (char_traits<char>::compare): For
752	constexpr evaluation don't call
753	__gnu_cxx::char_traits<char_type>::compare but do the comparison loop
754	directly.
755
7562021-02-09  Jonathan Wakely  <jwakely@redhat.com>
757
758	Backported from master:
759	2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
760
761	PR libstdc++/99021
762	* include/std/coroutine (coroutine_handle<P>::from_address): Add
763	noexcept.
764
7652021-01-13  Jonathan Wakely  <jwakely@redhat.com>
766
767	PR libstdc++/98605
768	* include/std/mutex (call_once): Use NOLINT to suppress clang
769	analyzer warnings.
770
7712021-01-11  Jonathan Wakely  <jwakely@redhat.com>
772
773	Backported from master:
774	2020-12-02  Jonathan Wakely  <jwakely@redhat.com>
775
776	* python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the
777	name of the type and pass it to the iterator.
778	(StdPathPrinter): Likewise.
779	* testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test.
780
7812021-01-11  Jonathan Wakely  <jwakely@redhat.com>
782
783	Backported from master:
784	2020-12-16  Jonathan Wakely  <jwakely@redhat.com>
785
786	PR libstdc++/96083
787	* include/ext/throw_allocator.h: Use __has_builtin to check for
788	__builtin_sprintf support, and use std::sprintf if necessary.
789
7902021-01-11  Jonathan Wakely  <jwakely@redhat.com>
791
792	Backported from master:
793	2020-12-02  Jonathan Wakely  <jwakely@redhat.com>
794
795	PR libstdc++/65480
796	PR libstdc++/68735
797	* python/libstdcxx/v6/printers.py (function_pointer_to_name):
798	New helper function to get the name of a function from its
799	address.
800	(StdExpAnyPrinter.__init__): Use it.
801
8022021-01-11  Jonathan Wakely  <jwakely@redhat.com>
803
804	Backported from master:
805	2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
806
807	* testsuite/experimental/filesystem/filesystem_error/cons.cc:
808	Remove -std=gnu++17 option.
809
8102021-01-08  Iain Sandoe  <iain@sandoe.co.uk>
811
812	Backported from master:
813	2020-07-17  Iain Sandoe  <iain@sandoe.co.uk>
814
815	* include/std/coroutine: Mark the methods of the
816	trivial awaitables as constexpr.
817
8182021-01-03  Iain Sandoe  <iain@sandoe.co.uk>
819	    Jakub Jelinek   <jakub@redhat.com>
820
821	PR target/97865
822	* configure: Regenerate.
823
8242020-12-03  Jonathan Wakely  <jwakely@redhat.com>
825
826	Backported from master:
827	2020-12-03  Jonathan Wakely  <jwakely@redhat.com>
828
829	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt:
830	Update.
831	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
832	Update.
833
8342020-12-01  Patrick Palka  <ppalka@redhat.com>
835
836	Backported from master:
837	2020-10-12  Patrick Palka  <ppalka@redhat.com>
838
839	PR libstdc++/95322
840	* include/std/ranges (take_view::_CI): Define this alias
841	template as per LWG 3449 and remove ...
842	(take_view::_Sentinel::_CI): ... this type alias.
843	(take_view::_Sentinel::operator==): Adjust use of _CI
844	accordingly.  Define a second overload that accepts an iterator
845	of the opposite constness as per LWG 3449.
846	(take_while_view::_Sentinel::operator==): Likewise.
847	* testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
848
8492020-11-26  Jonathan Wakely  <jwakely@redhat.com>
850
851	Backported from master:
852	2020-11-26  Jonathan Wakely  <jwakely@redhat.com>
853
854	PR libstdc++/98001
855	* testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid
856	FILE* to constructor.
857
8582020-11-25  Jonathan Wakely  <jwakely@redhat.com>
859
860	Backported from master:
861	2020-11-25  Jonathan Wakely  <jwakely@redhat.com>
862
863	PR libstdc++/97935
864	* include/bits/iterator_concepts.h (__detail::__iter_without_category):
865	New helper concept.
866	(__iterator_traits::__cat): Use __detail::__iter_without_category.
867	* testsuite/24_iterators/associated_types/iterator.traits.cc: New test.
868
8692020-11-25  Jonathan Wakely  <jwakely@redhat.com>
870
871	Backported from master:
872	2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
873
874	* include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
875	(__detail::__cat, __detail::__diff): Move to class scope in the
876	relevant __iterator_traits specializations.
877	(__iterator_traits<>): Use nested class templates instead of ones from
878	namespace __detail.
879	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
880	class scope in iterator_traits<common_iterator<I, S>>.
881	(iterator_traits<common_iterator<I, S>>): Use nested class template
882	instead of __detail::__common_iter_ptr.
883
8842020-11-24  Jonathan Wakely  <jwakely@redhat.com>
885
886	Backported from master:
887	2020-10-02  Jonathan Wakely  <jwakely@redhat.com>
888
889	* testsuite/29_atomics/atomic_float/value_init.cc: Use float
890	instead of double so that __atomic_load_8 isn't needed.
891
8922020-11-20  Jonathan Wakely  <jwakely@redhat.com>
893
894	Backported from master:
895	2020-11-20  Jonathan Wakely  <jwakely@redhat.com>
896
897	PR libstdc++/92546
898	* include/std/regex (pmr::smatch, pmr::wsmatch): Declare using
899	underlying __normal_iterator type, not nested typedef
900	basic_string::const_iterator.
901
9022020-11-20  Jonathan Wakely  <jwakely@redhat.com>
903
904	PR libstdc++/97876
905	* include/std/stop_token (_Stop_state_t): Define default
906	constructor as user-provided not defaulted.
907
9082020-11-20  Jonathan Wakely  <jwakely@redhat.com>
909
910	Backported from master:
911	2020-11-19  Jonathan Wakely  <jwakely@redhat.com>
912
913	PR libstdc++/95989
914	* config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID):
915	Define new macro to get reliable thread ID.
916	* include/std/stop_token (_Stop_state_t::_M_request_stop):
917	Use new macro if it's defined.
918	(_Stop_state_t::_M_remove_callback): Likewise.
919	* include/std/thread (this_thread::get_id): Likewise.
920	* testsuite/30_threads/jthread/95989.cc: New test.
921	* testsuite/30_threads/this_thread/95989.cc: New test.
922
9232020-11-18  Patrick Palka  <ppalka@redhat.com>
924
925	Backported from master:
926	2020-11-18  Patrick Palka  <ppalka@redhat.com>
927
928	* include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify
929	local variable inner.
930	(join_view::_Iterator::operator->): Use _Inner_iter instead of
931	_Outer_iter in the function signature as per LWG 3500.
932	* testsuite/std/ranges/adaptors/join.cc (test08): Test it.
933
9342020-11-18  Jonathan Wakely  <jwakely@redhat.com>
935
936	Backported from master:
937	2020-10-06  Jonathan Wakely  <jwakely@redhat.com>
938
939	* include/std/ranges (join_view): Remove deduction guide.
940	(views::join): Add explicit template argument list to prevent
941	deducing the wrong type.
942	* testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
943	here, from ...
944	* testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
945
9462020-11-18  Jonathan Wakely  <jwakely@redhat.com>
947
948	Backported from master:
949	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
950
951	* include/std/ranges (join_view): Add deduction guide (LWG 3474).
952	* testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
953
9542020-11-18  Jonathan Wakely  <jwakely@redhat.com>
955
956	Backported from master:
957	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
958
959	* include/std/version (__cpp_lib_array_constexpr)
960	(__cpp_lib_constexpr_char_traits): Only define C++17 value when
961	compiling C++17.
962
9632020-11-18  Jonathan Wakely  <jwakely@redhat.com>
964
965	Backported from master:
966	2020-06-15  Jonathan Wakely  <jwakely@redhat.com>
967
968	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
969	Update value for C++20.
970	* include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
971	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
972	Update expected value.
973
9742020-11-18  Jonathan Wakely  <jwakely@redhat.com>
975
976	Backported from master:
977	2020-11-17  Jonathan Wakely  <jwakely@redhat.com>
978
979	PR libstdc++/97869
980	* include/precompiled/stdc++.h: Include <coroutine>.
981	* include/std/version (__cpp_lib_span): Check __cpp_lib_concepts
982	before defining.
983
9842020-11-17  Patrick Palka  <ppalka@redhat.com>
985
986	Backported from master:
987	2020-11-17  Patrick Palka  <ppalka@redhat.com>
988
989	PR libstdc++/97828
990	* include/bits/ranges_algo.h (__search_n_fn::operator()): Check
991	random_access_iterator before using the backtracking
992	implementation.  When the backwards scan fails prematurely,
993	reset __remainder appropriately.
994	* testsuite/25_algorithms/search_n/97828.cc: New test.
995
9962020-11-16  Jonathan Wakely  <jwakely@redhat.com>
997
998	Backported from master:
999	2020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1000
1001	PR libstdc++/93456
1002	* src/c++11/futex.cc (relative_timespec): Remove redundant check
1003	negative values.
1004	* testsuite/30_threads/future/members/93456.cc: New.
1005
10062020-11-16  Jonathan Wakely  <jwakely@redhat.com>
1007
1008	Backported from master:
1009	2020-11-16  Jonathan Wakely  <jwakely@redhat.com>
1010
1011	* src/c++11/futex.cc (relative_timespec): New function to
1012	create relative time from two absolute times.
1013	(__atomic_futex_unsigned_base::_M_futex_wait_until): Use
1014	relative_timespec.
1015
10162020-11-16  Jonathan Wakely  <jwakely@redhat.com>
1017
1018	Backported from master:
1019	2020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1020
1021	* include/std/future (future::wait_for): Do not wait for
1022	durations less than or equal to zero.
1023	* testsuite/30_threads/future/members/poll.cc: New test.
1024
10252020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1026
1027	Backported from master:
1028	2020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1029
1030	PR libstdc++/97798
1031	* include/ext/numeric_traits.h (__glibcxx_signed)
1032	(__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove
1033	macros.
1034	(__is_integer_nonstrict::__width): Define new constant.
1035	(__numeric_traits_integer): Define constants in terms of each
1036	other and __is_integer_nonstrict::__width, rather than the
1037	removed macros.
1038	(_GLIBCXX_INT_N_TRAITS): Macro to define explicit
1039	specializations for non-standard integer types.
1040
10412020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1042
1043	PR libstdc++/96042
1044	* testsuite/std/ranges/iota/96042.cc: Only assert that the
1045	difference type is wider than long long if __int128 is
1046	supported.
1047
10482020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1049
1050	Backported from master:
1051	2020-08-20  Jonathan Wakely  <jwakely@redhat.com>
1052
1053	* include/bits/iterator_concepts.h [__STRICT_ANSI__]
1054	(incrementable_traits<__int128>): Define specialization.
1055	(incrementable_traits<unsigned __int128>): Likewise.
1056	* testsuite/std/ranges/iota/96042.cc: Test iota_view with
1057	__int128.
1058
10592020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1060
1061	Backported from master:
1062	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1063		    Patrick Palka  <ppalka@redhat.com>
1064
1065	PR libstdc++/96042
1066	* include/bits/range_access.h (__detail::__to_unsigned_like):
1067	Do not use make_unsigned_t<T> in the return type, as it can
1068	result in an error before the integral<T> constraint is checked.
1069	[__STRICT_ANSI__]: Add overloads for 128-bit integer types.
1070	(__detail::__make_unsigned_like_t): Define as the return type
1071	of __to_unsigned_like.
1072	* testsuite/std/ranges/subrange/96042.cc: New test.
1073
10742020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1075
1076	Backported from master:
1077	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1078
1079	PR libstdc++/96042
1080	* include/ext/numeric_traits.h (__is_integer_nonstrict): New
1081	trait which is true for 128-bit integers even in strict modes.
1082	(__numeric_traits_integer, __numeric_traits): Use
1083	__is_integer_nonstrict instead of __is_integer.
1084	* include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
1085	(numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
1086	Define.
1087	* testsuite/std/ranges/iota/96042.cc: New test.
1088
10892020-11-11  Paul Scharnofske  <asynts@gmail.com>
1090
1091	Backported from master:
1092	2020-11-11  Paul Scharnofske  <asynts@gmail.com>
1093
1094	* include/std/thread (jthread::operator=(jthread&&)): Transfer
1095	any existing state to a temporary that will request a stop and
1096	then join.
1097	* testsuite/30_threads/jthread/jthread.cc: Test move assignment.
1098
10992020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1100
1101	Backported from master:
1102	2020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1103
1104	PR libstdc++/96269
1105	* include/std/optional (operator==, operator!=, operator<)
1106	(operator>, operator<=, operator>=): Fix types used in
1107	SFINAE constraints.
1108	* testsuite/20_util/optional/relops/96269.cc: New test.
1109
11102020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1111
1112	Backported from master:
1113	2020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1114
1115	PR libstdc++/97731
1116	* src/filesystem/dir.cc (recursive_directory_iterator): Call the
1117	right overload of _Dir::advance.
1118	* testsuite/experimental/filesystem/iterators/97731.cc: New test.
1119
11202020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1121
1122	Backported from master:
1123	2020-10-10  Jonathan Wakely  <jwakely@redhat.com>
1124
1125	PR libstdc++/97362
1126	* doc/html/manual/source_code_style.html: Regenerate.
1127	* doc/xml/manual/appendix_contributing.xml: Add __deref to
1128	BADNAMES.
1129	* include/debug/functions.h (_Irreflexive_checker::__deref):
1130	Rename to __ref.
1131	* testsuite/17_intro/badnames.cc: Check __deref.
1132
11332020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1134
1135	Backported from master:
1136	2020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1137
1138	PR libstdc++/92285
1139	* doc/xml/manual/evolution.xml: Document change to base class.
1140	* doc/html/manual/api.html: Regenerate.
1141
11422020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1143
1144	* doc/xml/manual/evolution.xml: Document new C++20 headers.
1145	* doc/html/*: Regenerate.
1146
11472020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1148
1149	Backported from master:
1150	2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
1151
1152	* doc/xml/manual/evolution.xml: Document deprecation of
1153	__is_nullptr_t and removal of std::allocator members.
1154	* doc/html/manual/api.html: Regenerate.
1155
11562020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1157
1158	Backported from master:
1159	2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
1160
1161	* doc/xml/manual/containers.xml: Replace <xref> with <link>.
1162	* doc/xml/manual/evolution.xml: Likewise.
1163	* doc/html/manual/api.html: Regenerate.
1164	* doc/html/manual/containers.html: Regenerate.
1165
11662020-10-29  Patrick Palka  <ppalka@redhat.com>
1167
1168	Backported from master:
1169	2020-10-29  Patrick Palka  <ppalka@redhat.com>
1170
1171	* testsuite/25_algorithms/lexicographical_compare/constrained.cc:
1172	(test03): Fix initializing the vector vy with the array y of size 4.
1173
11742020-10-28  Patrick Palka  <ppalka@redhat.com>
1175
1176	Backported from master:
1177	2020-10-23  Patrick Palka  <ppalka@redhat.com>
1178
1179	* include/std/ranges (single_view::single_view): Mark the
1180	in place constructor explicit as per LWG 3428.
1181	(take_view): Remove the constraint on the deduction guide's
1182	template parameter as per LWG 3447.
1183
11842020-10-21  Patrick Palka  <ppalka@redhat.com>
1185
1186	Backported from master:
1187	2020-09-22  Patrick Palka  <ppalka@redhat.com>
1188
1189	* include/std/span (span::front): Remove static_assert.
1190	(span::back): Likewise.
1191	(span::operator[]): Likewise.
1192	* testsuite/23_containers/span/back_neg.cc: Rewrite to verify
1193	that we check the preconditions of back() only when it's called.
1194	* testsuite/23_containers/span/front_neg.cc: Likewise for
1195	front().
1196	* testsuite/23_containers/span/index_op_neg.cc: Likewise for
1197	operator[].
1198
11992020-10-21  Patrick Palka  <ppalka@redhat.com>
1200
1201	Backported from master:
1202	2020-10-12  Patrick Palka  <ppalka@redhat.com>
1203
1204	* include/std/ranges (take_while_view::begin): Constrain the
1205	const overload further as per LWG 3450.
1206	(take_while_view::end): Likewise.
1207	* testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
1208	3450.
1209
12102020-10-21  Patrick Palka  <ppalka@redhat.com>
1211
1212	Backported from master:
1213	2020-09-22  Patrick Palka  <ppalka@redhat.com>
1214
1215	* include/bits/stl_algo.h (__sample): Exit early when the
1216	input range is empty.
1217	* testsuite/25_algorithms/sample/3.cc: New test.
1218
12192020-10-21  Patrick Palka  <ppalka@redhat.com>
1220
1221	Backported from master:
1222	2020-09-22  Patrick Palka  <ppalka@redhat.com>
1223
1224	* include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
1225	(search): Likewise for the overload that takes a searcher.
1226	* testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
1227	std::for_each_n.
1228	* testsuite/25_algorithms/search/constexpr.cc: Test constexpr
1229	std::search overload that takes a searcher.
1230
12312020-10-21  Patrick Palka  <ppalka@redhat.com>
1232
1233	Backported from master:
1234	2020-08-27  Patrick Palka  <ppalka@redhat.com>
1235
1236	PR libstdc++/95322
1237	* include/std/ranges (transform_view::sentinel::__distance_from):
1238	Give this a deduced return type.
1239	(transform_view::sentinel::operator-): Adjust the return type so
1240	that it's based on the constness of the iterator rather than
1241	that of the sentinel.
1242	* testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
1243
12442020-10-21  Patrick Palka  <ppalka@redhat.com>
1245
1246	Backported from master:
1247	2020-08-27  Patrick Palka  <ppalka@redhat.com>
1248
1249	* include/std/ranges (elements_view::begin): Adjust constraints.
1250	(elements_view::end): Likewise.
1251	(elements_view::_Sentinel::operator==): Templatize to take both
1252	_Iterator<true> and _Iterator<false>.
1253	(elements_view::_Sentinel::operator-): Likewise.
1254	* testsuite/std/ranges/adaptors/elements.cc: Add testcase for
1255	the example from P1994R1.
1256	* testsuite/std/ranges/adaptors/lwg3406.cc: New test.
1257
12582020-10-21  Patrick Palka  <ppalka@redhat.com>
1259
1260	Backported from master:
1261	2020-08-27  Patrick Palka  <ppalka@redhat.com>
1262
1263	* include/std/ranges (elements_view::end): Replace these two
1264	overloads with four new overloads.
1265	(elements_view::_Iterator::operator==): Remove.
1266	(elements_view::_Iterator::operator-): Likewise.
1267	(elements_view::_Sentinel): Define.
1268
12692020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1270
1271	Backported from master:
1272	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1273
1274	* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
1275	Use gdb.Type.strip_typedefs().
1276	* testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
1277	the emulated old type.
1278
12792020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1280
1281	Backported from master:
1282	2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
1283
1284	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
1285	(basic_string(const _CharT*, const _Alloc&)): Constrain to
1286	require an allocator-like type to fix CTAD ambiguity (LWG 3706).
1287	Define inline.
1288	* include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI]
1289	(basic_string(const _CharT*, const _Alloc&)): Remove non-inline
1290	definition.
1291	* testsuite/21_strings/basic_string/cons/char/deduction.cc:
1292	Remove dg-skip-if.
1293	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
1294	Likewise.
1295
12962020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1297
1298	Backported from master:
1299	2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
1300
1301	* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
1302	Do not require cxx11-abi effective target.
1303	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
1304	Likewise.
1305	* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
1306
13072020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1308
1309	Backported from master:
1310	2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
1311
1312	* include/bits/ios_base.h (ios_base::failure): Add constructors
1313	takeing error_code argument. Add code() member function.
1314	* testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
1315	run for the old ABI but do not check for derivation from
1316	std::system_error.
1317	* testsuite/27_io/ios_base/failure/error_code.cc: New test.
1318
13192020-10-20  Nuno Lopes  <nuno.lopes@ist.utl.pt>
1320
1321	Backported from master:
1322	2020-10-13  Nuno Lopes  <nuno.lopes@ist.utl.pt>
1323
1324	* include/bits/stl_algo.h (any_of): Fix incorrect description
1325	in comment.
1326
13272020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1328
1329	Backported from master:
1330	2020-10-12  Jonathan Wakely  <jwakely@redhat.com>
1331
1332	* include/bits/stl_algobase.h (copy, move, copy_backward)
1333	(move_backward): Fix documentation for returned iterator.
1334
13352020-10-20  Jonathan Wakely  <jwakely@redhat.com>
1336
1337	Backported from master:
1338	2020-09-24  Jonathan Wakely  <jwakely@redhat.com>
1339
1340	* doc/xml/manual/configure.xml: Correct name of option.
1341	* doc/html/*: Regenerate.
1342
13432020-10-19  Jonathan Wakely  <jwakely@redhat.com>
1344
1345	Backported from master:
1346	2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1347
1348	PR libstdc++/97132
1349	* include/std/memory (assume_aligned): Do not use
1350	__builtin_assume_aligned during constant evaluation.
1351	* testsuite/20_util/assume_aligned/1.cc: Improve test.
1352	* testsuite/20_util/assume_aligned/97132.cc: New test.
1353
13542020-10-15  Jonathan Wakely  <jwakely@redhat.com>
1355
1356	Backported from master:
1357	2020-10-15  Jonathan Wakely  <jwakely@redhat.com>
1358
1359	* include/std/concepts: Fix typos in copyright notice.
1360	* include/std/ranges: Likewise.
1361
13622020-10-15  Jonathan Wakely  <jwakely@redhat.com>
1363
1364	* doc/xml/manual/status_cxx2020.xml: Remove red background for
1365	completed feature.
1366	* doc/html/manual/status.html: Regenerate.
1367
13682020-10-13  Patrick Palka  <ppalka@redhat.com>
1369
1370	Backported from master:
1371	2020-10-08  Patrick Palka  <ppalka@redhat.com>
1372
1373	PR libstdc++/95788
1374	* include/bits/ranges_uninitialized.h:
1375	(__construct_at_fn::operator()): Rewrite in terms of
1376	std::construct_at.  Declare it conditionally noexcept.  Qualify
1377	calls to declval in its requires-clause.
1378	* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
1379	New test.
1380
13812020-10-08  Jonathan Wakely  <jwakely@redhat.com>
1382
1383	Backported from master:
1384	2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
1385
1386	* include/bits/random.h (seed_seq(initializer_list<T>)): Rename
1387	parameter to use reserved name.
1388	* include/bits/ranges_algo.h (shift_left, shift_right): Rename
1389	template parameters to use reserved name.
1390	* testsuite/17_intro/names.cc: Check "il". Do not check "d" and
1391	"y" in C++20 mode.
1392
13932020-10-06  Patrick Palka  <ppalka@redhat.com>
1394
1395	Backported from master:
1396	2020-10-02  Patrick Palka  <ppalka@redhat.com>
1397
1398	* include/bits/stl_iterator.h (reverse_iterator::iter_move):
1399	Define for C++20 as per P0896.
1400	(reverse_iterator::iter_swap): Likewise.
1401	(move_iterator::operator*): Apply P0896 changes for C++20.
1402	(move_iterator::operator[]): Likewise.
1403	* testsuite/24_iterators/reverse_iterator/cust.cc: New test.
1404
14052020-09-22  Jonathan Wakely  <jwakely@redhat.com>
1406
1407	Backported from master:
1408	2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
1409
1410	PR libstdc++/97167
1411	* src/c++17/fs_path.cc (path::_Parser::root_path()): Check
1412	for empty string before inspecting the first character.
1413	* testsuite/27_io/filesystem/path/append/source.cc: Append
1414	empty string_view to path.
1415
14162020-09-22  Jonathan Wakely  <jwakely@redhat.com>
1417
1418	Backported from master:
1419	2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
1420
1421	PR libstdc++/96803
1422	* include/std/tuple
1423	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
1424	Use correct value category in __use_alloc call.
1425	* testsuite/20_util/tuple/cons/96803.cc: Check with constructors
1426	that require correct value category to be used.
1427
14282020-09-22  Jonathan Wakely  <jwakely@redhat.com>
1429
1430	Backported from master:
1431	2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1432
1433	PR libstdc++/96803
1434	* include/std/tuple
1435	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
1436	Replace parameter pack with a type parameter and a pack and pass
1437	the first type to __use_alloc.
1438	* testsuite/20_util/tuple/cons/96803.cc: New test.
1439
14402020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1441
1442	Backported from master:
1443	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1444
1445	PR libstdc++/94681
1446	* src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
1447	of calling ::lstat directly.
1448	* src/filesystem/ops.cc (read_symlink): Likewise.
1449
14502020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1451
1452	Backported from master:
1453	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1454
1455	PR libstdc++/94681
1456	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
1457	$enable_libstdcxx_filesystem_ts.
1458	* configure: Regenerate.
1459
14602020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1461
1462	Backported from master:
1463	2020-09-20  Jonathan Wakely  <jwakely@redhat.com>
1464
1465	PR libstdc++/97101
1466	* include/std/functional (bind_front): Fix order of parameters
1467	in is_nothrow_constructible_v specialization.
1468	* testsuite/20_util/function_objects/bind_front/97101.cc: New test.
1469
14702020-09-21  Jonathan Wakely  <jwakely@redhat.com>
1471
1472	Backported from master:
1473	2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1474
1475	PR libstdc++/94160
1476	* src/c++17/memory_resource.cc (munge_options): Round
1477	max_blocks_per_chunk to a multiple of four.
1478	(__pool_resource::_M_alloc_pools()): Simplify slightly.
1479	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
1480	Check that valid pointers are returned when small values are
1481	used for max_blocks_per_chunk.
1482
14832020-09-03  Jonathan Wakely  <jwakely@redhat.com>
1484
1485	Backported from master:
1486	2020-07-07  Jonathan Wakely  <jwakely@redhat.com>
1487
1488	* include/Makefile.am: Remove bits/int_limits.h.
1489	* include/Makefile.in: Regenerate.
1490	* include/bits/int_limits.h: Removed.
1491	* include/bits/parse_numbers.h (_Select_int_base): Replace
1492	__int_limits with __int_traits.
1493	* include/bits/range_access.h (_SSize::operator()): Likewise.
1494	* include/ext/numeric_traits.h (__numeric_traits_integer): Add
1495	static assertion.
1496	(__int_traits): New alias template.
1497	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1498	(__countr_zero, __countr_one, __popcount, __bit_ceil)
1499	(__bit_floor, __bit_width) Replace __int_limits with
1500	__int_traits.
1501	* include/std/charconv (__to_chars_8, __from_chars_binary)
1502	(__from_chars_alpha_to_num, from_chars): Likewise.
1503	* include/std/memory_resource (polymorphic_allocator::allocate)
1504	(polymorphic_allocator::allocate_object): Likewise.
1505	* include/std/string_view (basic_string_view::_S_compare):
1506	Likewise.
1507	* include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
1508
15092020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1510
1511	Backported from master:
1512	2020-08-28  Jonathan Wakely  <jwakely@redhat.com>
1513
1514	PR libstdc++/92978
1515	* include/std/numeric (__abs_integral): Replace with ...
1516	(__detail::__absu): New function template that returns an
1517	unsigned type, guaranteeing it can represent the most
1518	negative signed value.
1519	(__detail::__gcd, __detail::__lcm): Require arguments to
1520	be unsigned and therefore already non-negative.
1521	(gcd, lcm): Convert arguments to absolute value as unsigned
1522	type before calling __detail::__gcd or __detail::__lcm.
1523	* include/experimental/numeric (gcd, lcm): Likewise.
1524	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
1525	errors.
1526	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1527	* testsuite/26_numerics/gcd/92978.cc: New test.
1528	* testsuite/26_numerics/lcm/92978.cc: New test.
1529	* testsuite/experimental/numeric/92978.cc: New test.
1530
15312020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1532
1533	Backported from master:
1534	2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1535
1536	PR libstdc++/96851
1537	* include/bits/cpp_type_traits.h (__is_memcmp_ordered):
1538	New trait that says if memcmp can be used for ordering.
1539	(__is_memcmp_ordered_with): Likewise, for two types.
1540	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
1541	Use new traits instead of __is_byte and __numeric_traits.
1542	* include/bits/stl_algobase.h (__lexicographical_compare_aux1)
1543	(__is_byte_iter): Likewise.
1544	* include/std/array (operator<=>): Likewise. Only use memcmp
1545	when std::is_constant_evaluated() is false.
1546	* testsuite/23_containers/array/comparison_operators/96851.cc:
1547	New test.
1548	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
1549	Adjust dg-error line numbers.
1550
15512020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1552
1553	* include/bits/stl_iterator.h (counted_iterator::operator++(int)):
1554	Use __throw_exception_again macro.
1555
15562020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1557
1558	Backported from master:
1559	2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1560
1561	PR libstdc++/71960
1562	* include/experimental/string_view (basic_string_view):
1563	Enable debug assertions.
1564	* include/std/string_view (basic_string_view):
1565	Likewise.
1566
15672020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1568
1569	Backported from master:
1570	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1571
1572	PR libstdc++/96766
1573	* include/std/variant (_Variant_storage): Replace implicit
1574	conversions from size_t to __index_type with explicit casts.
1575
15762020-08-21  Jonathan Wakely  <jwakely@redhat.com>
1577
1578	Backported from master:
1579	2020-08-21  Jonathan Wakely  <jwakely@redhat.com>
1580
1581	PR libstdc++/96718
1582	* testsuite/25_algorithms/pstl/feature_test-2.cc: Require
1583	tbb-backend effective target.
1584	* testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
1585	* testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
1586	* testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
1587
15882020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1589
1590	Backported from master:
1591	2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1592
1593	* include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New
1594	macro for "use 'foo' instead" message in deprecated warnings.
1595	* include/bits/ios_base.h (io_state, open_mode, seek_dir)
1596	(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
1597	* include/std/streambuf (stossc): Replace C++11 attribute
1598	with _GLIBCXX_DEPRECATED_SUGGEST.
1599	* include/std/type_traits (__is_nullptr_t): Use
1600	_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
1601	* testsuite/27_io/types/1.cc: Check for deprecated warnings.
1602	Also check for io_state, open_mode and seek_dir typedefs.
1603
16042020-08-11  Jonathan Wakely  <jwakely@redhat.com>
1605
1606	PR libstdc++/89760
1607	* testsuite/experimental/net/execution_context/make_service.cc:
1608	Add dg-require-gthreads.
1609	* testsuite/experimental/net/executor/1.cc: Likewise.
1610	* testsuite/experimental/net/headers.cc: Likewise.
1611	* testsuite/experimental/net/internet/address/v4/comparisons.cc:
1612	Likewise.
1613	* testsuite/experimental/net/internet/address/v4/cons.cc:
1614	Likewise.
1615	* testsuite/experimental/net/internet/address/v4/creation.cc:
1616	Likewise.
1617	* testsuite/experimental/net/internet/address/v4/members.cc:
1618	Likewise.
1619	* testsuite/experimental/net/internet/resolver/base.cc:
1620	Likewise.
1621	* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
1622	Likewise.
1623	* testsuite/experimental/net/internet/resolver/ops/reverse.cc:
1624	Likewise.
1625	* testsuite/experimental/net/socket/basic_socket.cc: Likewise.
1626	* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
1627	* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
1628	* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
1629
16302020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1631
1632	Backported from master:
1633	2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
1634
1635	PR libstdc++/95749
1636	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
1637	(stat_type): Change to __stat64.
1638	(stat): Use _wstat64.
1639
16402020-08-07  Jonathan Wakely  <jwakely@redhat.com>
1641
1642	Backported from master:
1643	2020-08-07  Jonathan Wakely  <jwakely@redhat.com>
1644
1645	PR libstdc++/96303
1646	* include/debug/bitset (bitset::operator==): Call _M_base() on
1647	right operand.
1648	(bitset::operator!=): Likewise, but don't define it at all when
1649	default comparisons are supported by the compiler.
1650	* testsuite/23_containers/bitset/operations/96303.cc: New test.
1651
16522020-08-06  Jonathan Wakely  <jwakely@redhat.com>
1653
1654	Backported from master:
1655	2020-08-06  Jonathan Wakely  <jwakely@redhat.com>
1656
1657	PR libstdc++/96484
1658	* src/c++17/fs_ops.cc (fs::read_symlink): Return an error
1659	immediately for non-symlinks.
1660	* src/filesystem/ops.cc (fs::read_symlink): Likewise.
1661
16622020-07-23  Release Manager
1663
1664	* GCC 10.2.0 released.
1665
16662020-07-09  Jonathan Wakely  <jwakely@redhat.com>
1667
1668	Backported from master:
1669	2020-06-08  Jonathan Wakely  <jwakely@redhat.com>
1670
1671	* include/bits/unique_ptr.h (operator<<): Define for C++20.
1672	* testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
1673	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
1674	line number.
1675	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
1676
16772020-07-09  Jonathan Wakely  <jwakely@redhat.com>
1678
1679	Backported from master:
1680	2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
1681
1682	PR libstdc++/95322
1683	* include/std/ranges (transform_view::_Sentinel): Allow hidden
1684	friends to work with _Iterator<true> and _Iterator<false>.
1685	(join_view::_Sentinel): Likewise.
1686	* testsuite/std/ranges/adaptors/95322.cc: New test.
1687
16882020-07-09  Jonathan Wakely  <jwakely@redhat.com>
1689
1690	Backported from master:
1691	2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
1692
1693	PR libstdc++/94936
1694	* src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
1695	Add comment about single-threaded behaviour.
1696	(synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
1697	class member access out of loop.
1698	(synchronized_pool_resource::synchronized_pool_resource())
1699	(synchronized_pool_resource::~synchronized_pool_resource())
1700	(synchronized_pool_resource::release()): Check __gthread_active_p
1701	before creating and/or deleting the thread-specific data key.
1702	(synchronized_pool_resource::_M_thread_specific_pools()): Adjust
1703	assertions.
1704	(synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
1705	path for single-threaded case.
1706	(synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
1707	Likewise. Return if unable to find a pool that owns the allocation.
1708	* testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
1709	New test.
1710	* testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
1711	test.
1712	* testsuite/20_util/synchronized_pool_resource/release_single.cc: New
1713	test.
1714
17152020-07-09  Jonathan Wakely  <jwakely@redhat.com>
1716
1717	Backported from master:
1718	2020-05-19  Jonathan Wakely  <jwakely@redhat.com>
1719
1720	PR libstdc++/94087
1721	* src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
1722	passed in.
1723	(__x86_rdseed_rdrand): New function that uses rdseed with rdrand
1724	fallback.
1725	(random_device::_M_init): Use __x86_rdseed_rdrand when both
1726	instructions are available.
1727	* testsuite/26_numerics/random/random_device/94087.cc: New test.
1728
17292020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
1730
1731	Backported from master:
1732	2020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
1733
1734	PR libstdc++/91807
1735	* include/std/variant
1736	(_Copy_assign_base::operator=(const _Copy_assign_base&):
1737	Do the move-assignment from a temporary so that the temporary
1738	is constructed with an explicit index.
1739	* testsuite/20_util/variant/91807.cc: New.
1740
17412020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
1742
1743	Backported from master:
1744	2020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
1745
1746	PR libstdc++/91153
1747	PR target/93224
1748	* testsuite/29_atomics/atomic_float/1.cc: Use different values
1749	for tests.
1750	* testsuite/29_atomics/atomic_ref/float.cc: Likewise.
1751
17522020-07-01  Jonathan Wakely  <jwakely@redhat.com>
1753
1754	Backported from master:
1755	2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
1756
1757	PR libstdc++/95282
1758	* include/bits/atomic_base.h (__atomic_impl::load): Add
1759	const-qualifier to parameter so that _Tp is deduced as the
1760	non-const type, and use _Val to get the unqualified type.
1761	(__atomic_impl::exchange): Use the _Val alias to remove
1762	volatile from the reinterpret_cast result type.
1763	* testsuite/29_atomics/atomic_float/95282.cc: New test.
1764
17652020-07-01  Jonathan Wakely  <jwakely@redhat.com>
1766
1767	Backported from master:
1768	2020-07-01  Jonathan Wakely  <jwakely@redhat.com>
1769
1770	PR libstdc++/94627
1771	* include/bits/regex.h (operator==, operator!=): Remove noexcept
1772	equality comparisons for match_results.
1773	* testsuite/28_regex/match_results/94627.cc: New test.
1774
17752020-06-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
1776
1777	Backported from master:
1778	2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
1779
1780	PR libstdc++/95915
1781	* include/std/variant (_Uninitialized):
1782	Adjust the condition and the comment.
1783	* testsuite/20_util/variant/95915.cc: New.
1784	* testsuite/20_util/variant/compile.cc: Add new test.
1785
17862020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1787
1788	Backported from master:
1789	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1790
1791	* include/std/charconv (__from_chars_binary): Ignore leading zeros.
1792	* testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
1793	not just 10 and 16.
1794	* testsuite/20_util/from_chars/3.cc: New test.
1795
17962020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1797
1798	Backported from master:
1799	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1800
1801	* include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
1802	* include/std/charconv (__detail::__to_chars): Avoid
1803	-Wsign-compare warning.
1804
18052020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1806
1807	Backported from master:
1808	2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
1809
1810	PR libstdc++/95851
1811	* include/std/charconv (__to_chars_i): Check for zero-sized
1812	buffer unconditionally.
1813	* testsuite/20_util/to_chars/95851.cc: New test.
1814
18152020-06-22  Jason Merrill  <jason@redhat.com>
1816
1817	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
1818	Remove greedy_ops tests.
1819	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
1820	Remove greedy_ops tests.
1821
18222020-06-11  Patrick Palka  <ppalka@redhat.com>
1823
1824	PR libstdc++/95578
1825	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
1826	Also check that the iterator and sentinel have the same type before
1827	applying the unwrapping optimization for __normal_iterator.
1828	Split the check into two, one for the first iterator/sentinel
1829	pair and another for second iterator/sentinel pair.  Remove uses
1830	of __niter_base, and remove uses of std::move on a
1831	__normal_iterator.
1832	* include/bits/ranges_algobase.h (__equal_fn): Likewise.
1833	(__copy_or_move): Likewise.  Perform similar adjustments for
1834	the reverse_iterator and move_iterator optimizations.  Inline
1835	the checks into the if-constexprs, and use using-declarations to
1836	make them less visually noisy.  Remove uses of __niter_wrap.
1837	(__copy_or_move_backward): Likewise.
1838	* testsuite/25_algorithms/copy/95578.cc: New test.
1839	* testsuite/25_algorithms/copy_backward/95578.cc: New test.
1840	* testsuite/25_algorithms/equal/95578.cc: New test.
1841	* testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
1842	* testsuite/25_algorithms/move/95578.cc: New test.
1843	* testsuite/25_algorithms/move_backward/95578.cc: New test.
1844
18452020-05-28  Patrick Palka  <ppalka@redhat.com>
1846
1847	PR libstdc++/95322
1848	* include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
1849	Remove and instead define it ...
1850	(common_iterator::_Proxy): ... here.
1851	(common_iterator::operator->): Use it.
1852	* testsuite/24_iterators/common_iterator/2.cc: New test.
1853	* testsuite/std/ranges/adaptors/95322.cc: New test.
1854
18552020-05-26  Alexandre Oliva  <oliva@adacore.com>
1856
1857	PR libstdc++/77691
1858	* include/experimental/memory_resource
1859	(__resource_adaptor_imp::do_allocate): Handle max_align_t on
1860	x86-vxworks as on x86-solaris.
1861	(__resource_adaptor_imp::do_deallocate): Likewise.
1862	* testsuite/experimental/memory_resource/new_delete_resource.cc:
1863	Drop xfail.
1864	(BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
1865	(test03): Drop max-align test for char-aligned alloc.
1866
18672020-05-23  Jonathan Wakely  <jwakely@redhat.com>
1868
1869	Backport from mainline
1870	2020-05-23  Jonathan Wakely  <jwakely@redhat.com>
1871
1872	* include/bits/fs_path.h (__detail::_S_range_begin)
1873	(__detail::_S_range_end): Remove unintentional static specifiers.
1874	* include/experimental/bits/fs_path.h (__detail::_S_range_begin)
1875	(__detail::_S_range_end): Likewise.
1876
18772020-05-23  Jonathan Wakely  <jwakely@redhat.com>
1878
1879	Backport from mainline
1880	2020-05-23  Jonathan Wakely  <jwakely@redhat.com>
1881
1882	PR libstdc++/95289
1883	* include/debug/helper_functions.h (__get_distance): Only declare
1884	as a constexpr function for C++14 and up.
1885	* testsuite/25_algorithms/copy/debug/95289.cc: New test.
1886
18872020-05-21  Jonathan Wakely  <jwakely@redhat.com>
1888
1889	Backport from mainline
1890	2020-05-21  Jonathan Wakely  <jwakely@redhat.com>
1891
1892	* include/experimental/executor (use_future_t::use_future_t()): Fix
1893	incorrect noexcept-specifier.
1894	* include/experimental/internet (basic_resolver_results): Adjust
1895	whitespace.
1896	* include/experimental/socket (__basic_socket_impl::release): Add
1897	member function.
1898	(basic_socket(io_context&, const endpoint_type&)): Fix argument to
1899	target constructor.
1900	(basic_socket::release(), basic_socket::release(error_code&)): Add
1901	missing member functions.
1902	(basic_socket::is_open()): Add nodiscard attribute.
1903	(basic_socket::close(error_code&)): Pass argument to base function.
1904	(basic_socket_acceptor::release())
1905	(basic_socket_acceptor::release(error_code&)): Add missing member
1906	functions.
1907	(basic_socket_acceptor::is_open()): Add nodiscard attribute.
1908	(basic_socket_streambuf::error()): Add noexcept.
1909	(basic_socket_iostream::error()): Likewise.
1910	* testsuite/experimental/net/socket/basic_socket.cc: New test.
1911
19122020-05-21  Jonathan Wakely  <jwakely@redhat.com>
1913
1914	Backport from mainline
1915	2020-05-21  Jonathan Wakely  <jwakely@redhat.com>
1916
1917	PR libstdc++/93983
1918	* include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
1919	Reorder constraints to avoid recursion when constructors use
1920	iterator_traits (LWG 3420).
1921	* testsuite/24_iterators/customization_points/lwg3420.cc: New test.
1922
19232020-05-12  Jonathan Wakely  <jwakely@redhat.com>
1924
1925	Backport from mainline
1926	2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
1927
1928	PR libstdc++/94906
1929	* src/c++17/memory_resource.cc
1930	(monotonic_buffer_resource::_Chunk::release): Use size_t for shift
1931	operands.
1932
1933	Backport from mainline
1934	2020-05-03  Jonathan Wakely  <jwakely@redhat.com>
1935
1936	PR libstdc++/94933
1937	* include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
1938	usable in constant expressions.
1939	* testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
1940	non-scalars.
1941
19422020-05-07  Jonathan Wakely  <jwakely@redhat.com>
1943
1944	Backport from mainline
1945	2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
1946		    Patrick Palka  <ppalka@redhat.com>
1947
1948	PR libstdc++/92894
1949	* include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
1950	Add trait to determine return type and an alias for it.
1951	(ranges::__cust_imove::_IMove::operator()): Use __result instead of
1952	deduced return type.
1953	* testsuite/24_iterators/customization_points/92894.cc: New test.
1954	* testsuite/24_iterators/indirect_callable/92894.cc: New test.
1955
19562020-05-07  Release Manager
1957
1958	* GCC 10.1.0 released.
1959
19602020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
1961
1962	* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
1963	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
1964
19652020-05-06  H.J. Lu  <hongjiu.lu@intel.com>
1966
1967	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
1968
19692020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1970
1971	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
1972	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
1973	Likewise.
1974	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
1975	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
1976	Likewise.
1977
19782020-05-06  Jonathan Wakely  <jwakely@redhat.com>
1979
1980	* doc/xml/manual/abi.xml (abi.versioning.history): Document library
1981	versions for GCC 9.[123] and 10.1 releases.
1982	* doc/html/*: Regenerate.
1983
19842020-05-06  Jakub Jelinek  <jakub@redhat.com>
1985
1986	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
1987	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
1988	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
1989	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
1990	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
1991	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
1992	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
1993
19942020-05-04  Jonathan Wakely  <jwakely@redhat.com>
1995
1996	* doc/xml/faq.xml: Use working link for SGI STL FAQ.
1997	* doc/html/*: Regenerate.
1998
19992020-05-01  Jonathan Wakely  <jwakely@redhat.com>
2000
2001	Backport from mainline
2002	2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
2003
2004	PR libstdc++/94901
2005	* include/std/type_traits (__is_complete_or_unbounded): Replace
2006	BADNAME _T with _Tp.
2007	* testsuite/17_intro/badnames.cc: New test.
2008
20092020-04-30  Jonathan Wakely  <jwakely@redhat.com>
2010
2011	PR libstdc++/89510
2012	* include/bits/alloc_traits.h (allocator_traits::_S_construct)
2013	(allocator_traits::_S_destroy)
2014	(allocator_traits<allocator<T>>::construct): Use traits in
2015	noexcept-specifiers.
2016	* include/bits/allocator.h (allocator<void>::construct)
2017	(allocator<void>::destroy): Likewise.
2018	* include/ext/malloc_allocator.h (malloc_allocator::construct)
2019	(malloc_allocator::destroy): Likewise.
2020	* include/ext/new_allocator.h (new_allocator::construct)
2021	(new_allocator::destroy): Likewise.
2022	* testsuite/20_util/allocator/89510.cc: New test.
2023	* testsuite/ext/malloc_allocator/89510.cc: New test.
2024	* testsuite/ext/new_allocator/89510.cc: New test.
2025
20262020-04-29  Jonathan Wakely  <jwakely@redhat.com>
2027
2028	PR libstdc++/94854
2029	* include/bits/basic_string.tcc: Update comment about explicit
2030	instantiations.
2031
20322020-04-28  Jonathan Wakely  <jwakely@redhat.com>
2033
2034	PR libstdc++/91480
2035	* include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
2036	Remove non-standard macro.
2037	* include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
2038	to indicate P1032R1 support.
2039	* include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
2040	* include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
2041	* include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
2042	* include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
2043	(__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
2044	(__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
2045	* testsuite/20_util/function_objects/constexpr_searcher.cc: Check
2046	feature test macro.
2047	* testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
2048	* testsuite/21_strings/basic_string_view/operations/copy/char/
2049	constexpr.cc: Likewise.
2050	* testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
2051
2052	PR libstdc++/94831
2053	* include/bits/alloc_traits.h (_S_construct): Restore placement
2054	new-expression for C++11/14/17 and call std::construct_at directly
2055	for C++20.
2056	* include/bits/stl_construct.h (_Construct): Revert to non-constexpr
2057	function returning void.
2058	* testsuite/20_util/specialized_algorithms/
2059	uninitialized_value_construct/94831.cc: New test.
2060	* testsuite/23_containers/vector/cons/94831.cc: New test.
2061
20622020-04-28  Patrick Palka  <ppalka@redhat.com>
2063
2064	LWG 3433 subrange::advance(n) has UB when n < 0
2065	* include/std/ranges (subrange::prev): Fix typo.
2066	(subrange::advance): Handle a negative argument as per the proposed
2067	resolution of LWG 3433.
2068	* testsuite/std/ranges/subrange/lwg3433.cc: New test.
2069
20702020-04-28  Jonathan Wakely  <jwakely@redhat.com>
2071	    Iain Sandoe  <iain@sandoe.co.uk>
2072
2073	PR c++/94759
2074	* include/std/coroutine: Implement handing for non-
2075	class coroutine return types.
2076
20772020-04-24  Jonathan Wakely  <jwakely@redhat.com>
2078
2079	* include/experimental/executor (service_already_exists): Make default
2080	constructor public (LWG 3414).
2081	* testsuite/experimental/net/execution_context/make_service.cc: Check
2082	the service_already_exists can be default constructed.
2083
20842020-04-24  Kamlesh Kumar  <kamleshbhalui@gmail.com>
2085	    Jonathan Wakely  <jwakely@redhat.com>
2086
2087	PR libstdc++/90415
2088	PR libstdc++/92156
2089	* include/std/any (any): Rename template parameters for consistency
2090	with the standard.
2091	(any::_Decay): Rename to _Decay_if_not_any.
2092	(any::any(T&&):: Remove is_constructible from constraints. Remove
2093	non-standard overload.
2094	(any::any(in_place_type_t<T>, Args&&...))
2095	(any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
2096	(any::emplace(Args&&...))
2097	(any::emplace(initializer_list<U>, Args&&...)):
2098	Use decay_t instead of _Decay.
2099	* testsuite/20_util/any/cons/90415.cc: New test.
2100	* testsuite/20_util/any/cons/92156.cc: New Test.
2101	* testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
2102	more robust.
2103	* testsuite/20_util/any/modifiers/92156.cc: New test.
2104
21052020-04-23  Jonathan Wakely  <jwakely@redhat.com>
2106
2107	* doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
2108	* doc/html/*: Regenerate.
2109
2110	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
2111	value for C++17 to 201803L because P0858R0 is supported for C++17.
2112	* include/std/version (__cpp_lib_array_constexpr): Likewise.
2113	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
2114	Check for value corresponding to P0031R0 features being tested.
2115	* testsuite/23_containers/array/requirements/constexpr_iter.cc:
2116	Check for value corresponding to P0858R0 features being tested.
2117
2118	* include/std/version (__cpp_lib_three_way_comparison): Define for
2119	freestanding builds.
2120
21212020-04-23  Thomas Rodgers  <rodgert@appliantology.com>
2122
2123	* include/experimental/net/executor (system_context): Mark
2124	system_context::system_context() = delete.
2125	* testsuite/experimental/net/executor/1.cc: Add new
2126	test to check system_context is not default constructible.
2127
21282020-04-23  Iain Sandoe  <iain@sandoe.co.uk>
2129
2130	* include/std/coroutine: Update the inline namespace to __n4861.
2131	Add the __cpp_lib_coroutine define, set to 201902L.
2132	* include/std/version: Add __cpp_lib_coroutine, set to 201902L.
2133
21342020-04-22  Jonathan Wakely  <jwakely@redhat.com>
2135
2136	* include/std/execution (__cpp_lib_execution): Define to indicate
2137	support for P0024R2 and P1001R2.
2138	* include/std/version (__cpp_lib_execution): Define.
2139	* testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
2140	defined by <algorithm>, move other tests to new tests ...
2141	* testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
2142	* testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
2143	* testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
2144	* testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
2145
2146	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
2147	different values for C++17 and C++20, to indicate different feature
2148	sets. Update value for C++20 to indicate P1032R1 support.
2149	* include/std/version (__cpp_lib_array_constexpr): Likewise.
2150	* testsuite/23_containers/array/comparison_operators/constexpr.cc:
2151	Check feature test macro.
2152	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
2153	New test.
2154	* testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
2155	feature test macro.
2156	* testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
2157	in C++17 mode and check feature test macro.
2158
2159	* include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
2160	here.
2161	* testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
2162	defined by <utility>.
2163
2164	* include/std/functional (__cpp_lib_concepts): Update macro value to
2165	indicate P1964R2 support.
2166	* include/std/version (__cpp_lib_concepts): Likewise.
2167	* testsuite/std/concepts/1.cc: Adjust expected value.
2168	* testsuite/std/concepts/2.cc: Likewise.
2169
2170	* include/std/functional (__cpp_lib_constexpr_invoke): Rename to
2171	__cpp_lib_constexpr_functional.
2172	* include/std/version (__cpp_lib_constexpr_invoke): Likewise.
2173	* testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
2174
2175	* include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
2176	indicate P1006R1 support.
2177	(__cpp_lib_to_address): Define to indicate P0653R2 support.
2178	* include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
2179	P1227R2 support.
2180	* include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
2181	P0769R2 support.
2182	* include/std/atomic (__cpp_lib_atomic_float): Define to indicate
2183	P0020R6 support.
2184	* include/std/memory (__cpp_lib_assume_aligned): Define to indicate
2185	P1007R3 support.
2186	* include/std/memory_resource (__cpp_lib_polymorphic_allocator):
2187	Define to indicate P0339R6 support.
2188	* include/std/string_view (__cpp_lib_starts_ends_with): Define to
2189	indicate P0457R2 support.
2190	* include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
2191	to indicate P0758R1 support.
2192	(__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
2193	(__cpp_lib_type_identity): Define to indicate P0887R1 support.
2194	* include/std/version (__cpp_lib_atomic_float)
2195	(__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
2196	(__cpp_lib_type_identity, __cpp_lib_assume_aligned)
2197	(__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
2198	(__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
2199	(__cpp_lib_to_address): Define.
2200	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
2201
2202	* include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
2203	macro.
2204	* include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
2205	Likewise.
2206	* include/std/version (__cpp_lib_map_insertion)
2207	(__cpp_lib_unordered_map_insertion): Remove.
2208
2209	* include/std/condition_variable (__cpp_lib_jthread): Remove
2210	redundant definition.
2211	* include/std/stop_token (__cpp_lib_jthread): Update macro value to
2212	indicate P1869R1 support.
2213	* include/std/version (__cpp_lib_jthread): Update value.
2214	* testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
2215	for updated macro value.
2216	* testsuite/30_threads/condition_variable_any/stop_token/2.cc:
2217	Likewise.
2218	* testsuite/30_threads/jthread/1.cc: Likewise.
2219	* testsuite/30_threads/jthread/2.cc: Likewise.
2220	* testsuite/30_threads/stop_token/1.cc: Likewise.
2221	* testsuite/30_threads/stop_token/2.cc: Likewise.
2222
2223	* testsuite/21_strings/basic_string/erasure.cc: Check for
2224	__cpp_lib_erase_if macro.
2225	* testsuite/23_containers/deque/erasure.cc: Add header name to #error
2226	messages.
2227	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
2228	* testsuite/23_containers/list/erasure.cc: Likewise.
2229	* testsuite/23_containers/map/erasure.cc: Likewise.
2230	* testsuite/23_containers/set/erasure.cc: Likewise.
2231	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
2232	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
2233	* testsuite/23_containers/vector/erasure.cc: Likewise.
2234
22352020-04-21  Jonathan Wakely  <jwakely@redhat.com>
2236
2237	* include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
2238	to define operator<=>.
2239	* testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
2240
2241	* doc/Makefile.am (xml_sources_manual): Add missing XML files.
2242	* doc/Makefile.in: Regenerate.
2243	* doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
2244	of "this page".
2245	* doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
2246	to the C++11 status table.
2247	* doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
2248	proposals with table matching contents of the C++14 standard.
2249	* doc/xml/manual/status_cxx2017.xml: Add table matching contents of
2250	the C++17 standard.
2251	* doc/html/*: Regenerate.
2252
2253	PR c++/94149
2254	* include/std/type_traits (__is_nt_constructible_impl): Add partial
2255	specializations for bounded arrays with non-empty initializers.
2256	* testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
2257
22582020-04-20  Thomas Rodgers  <trodgers@redhat.com>
2259
2260	* testsuite/lib/libstdc++.exp: Add additional_flags=
2261	-DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
2262	compiling with a newer Thread Building Blocks.
2263
22642020-04-20  Jonathan Wakely  <jwakely@redhat.com>
2265
2266	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
2267
2268	* testsuite/20_util/is_constructible/51185.cc: Make test class a
2269	non-aggregate so that the test verifies the same thing in all -std
2270	modes.
2271	* testsuite/20_util/is_constructible/value-2.cc: Adjust expected
2272	results for some types when paren-init for aggregates is supported.
2273
2274	* include/std/version (__cpp_lib_three_way_comparison): Update value.
2275	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2276	(__detail::__synth3way): Add noexcept-specifier.
2277
2278	* include/bits/stl_map.h (map): Define operator<=> and remove
2279	operator< for C++20.
2280	* include/bits/stl_multimap.h (multimap): Likewise.
2281	* include/bits/stl_multiset.h (multiset): Likewise.
2282	* include/bits/stl_set.h (set): Likewise.
2283	* include/bits/stl_tree.h (_Rb_tree): Likewise.
2284	(_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
2285	operator!= for C++20.
2286	* include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
2287	* include/debug/multimap.h (__gnu_debug::multimap): Likewise.
2288	* include/debug/multiset.h (__gnu_debug::multiset): Likewise.
2289	* include/debug/set.h (__gnu_debug::set): Likewise.
2290	* testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
2291	* testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
2292	* testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
2293	* testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
2294
22952020-04-20  Matthias Kretz  <kretz@kde.org>
2296
2297	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
2298
22992020-04-19  Jonathan Wakely  <jwakely@redhat.com>
2300
2301	* include/bits/stl_queue.h (queue): Define operator<=> for C++20.
2302	* include/bits/stl_stack.h (stack): Likewise.
2303	* testsuite/23_containers/queue/cmp_c++20.cc: New test.
2304	* testsuite/23_containers/stack/cmp_c++20.cc: New test.
2305
2306	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
2307	Remove redundant operator!= for C++20.
2308	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
2309	Likewise.
2310	* include/debug/unordered_map (unordered_map, unordered_multimap):
2311	Likewise.
2312	* include/debug/unordered_set (unordered_set, unordered_multiset):
2313	Likewise.
2314
2315	PR other/94629
2316	* include/debug/formatter.h (_Error_formatter::_Parameter): Fix
2317	redundant assignment in constructor.
2318
23192020-04-18  Jonathan Wakely  <jwakely@redhat.com>
2320
2321	* include/std/chrono (duration, time_point): Define operator<=> and
2322	remove redundant operator!= for C++20.
2323	* testsuite/20_util/duration/comparison_operators/three_way.cc: New
2324	test.
2325	* testsuite/20_util/time_point/comparison_operators/three_way.cc: New
2326	test.
2327
2328	* testsuite/util/native_type/native_priority_queue.hpp: Use
2329	allocator_traits to rebind allocator.
2330
23312020-04-17  Jonathan Wakely  <jwakely@redhat.com>
2332
2333	* include/bits/forward_list.h (forward_list): Define operator<=> and
2334	remove redundant comparison operators for C++20.
2335	* include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
2336	* include/bits/stl_deque.h (deque): Likewise.
2337	* include/bits/stl_iterator.h (__normal_iterator): Likewise.
2338	* include/bits/stl_list.h (list): Likewise.
2339	* include/bits/stl_vector.h (vector): Likewise.
2340	* include/debug/deque (__gnu_debug::deque): Likewise.
2341	* include/debug/forward_list (__gnu_debug::forward_list): Likewise.
2342	* include/debug/list (__gnu_debug::list): Likewise.
2343	* include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
2344	Likewise.
2345	* include/debug/vector (__gnu_debug::vector): Likewise.
2346	* include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
2347	operator<=> for C++20.
2348	* testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
2349	* testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
2350	* testsuite/23_containers/list/cmp_c++20.cc: New test.
2351	* testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
2352	* testsuite/23_containers/vector/cmp_c++20.cc: New test.
2353
2354	* include/bits/basic_string.h (basic_string): Define operator<=> and
2355	remove redundant comparison operators for C++20.
2356	* include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
2357	Add comparison_category members.
2358	(__detail::__char_traits_cmp_cat): New helper to get comparison
2359	category from char traits class.
2360	* include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
2361	define for C++20.
2362	(sub_match): Define operator<=> and remove redundant comparison
2363	operators for C++20.
2364	(match_results): Remove redundant operator!= for C++20.
2365	* include/std/string_view (basic_string_view): Define operator<=> and
2366	remove redundant comparison operators for C++20.
2367	* testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
2368	test.
2369	* testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
2370	New test.
2371	* testsuite/21_strings/basic_string_view/operations/copy/char/
2372	constexpr.cc: Initialize variable.
2373	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
2374	constexpr.cc: Likewise.
2375	* testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
2376	dg-do directive and remove comments showing incorrect signatures.
2377	* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
2378	Likewise.
2379	* testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
2380	New test.
2381	* testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
2382	New test.
2383	* testsuite/28_regex/sub_match/compare_c++20.cc: New test.
2384
23852020-04-16  Jonathan Wakely  <jwakely@redhat.com>
2386
2387	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
2388	name of unused parameter.
2389
23902020-04-15  Jonathan Wakely  <jwakely@redhat.com>
2391
2392	* include/bits/fs_dir.h (file_status): Define operator== for C++20.
2393	(directory_entry): Define operator<=> and remove redundant comparison
2394	operators for C++20.
2395	* include/bits/fs_fwd.h (space_info): Define operator== for C++20.
2396	* include/bits/fs_path.h (path): Define operator<=> and remove
2397	redundant comparison operators for C++20.
2398	* testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
2399	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
2400	* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
2401	* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
2402
2403	* include/bits/allocator.h (operator!=): Do not define for C++20.
2404	* include/bits/locale_classes.h (operator!=): Likewise.
2405	* include/bits/std_function.h (operator==(nullptr_t, const function&))
2406	(operator!=(const function&, nullptr_t))
2407	(operator!=(nullptr_t, const function&)): Likewise.
2408	* include/ext/bitmap_allocator.h (operator!=): Likewise.
2409	* include/ext/debug_allocator.h (operator!=): Likewise.
2410	* include/ext/extptr_allocator.h (operator!=): Likewise.
2411	* include/ext/malloc_allocator.h (operator!=): Likewise.
2412	* include/ext/mt_allocator.h (operator!=): Likewise.
2413	* include/ext/new_allocator.h (operator!=): Likewise.
2414	* include/ext/pool_allocator.h (operator!=): Likewise.
2415	* include/ext/throw_allocator.h (operator!=): Likewise.
2416	* include/std/bitset (bitset::operator!=): Likewise.
2417	* include/std/memory_resource (operator!=): Likewise.
2418	* include/std/scoped_allocator (operator!=): Likewise.
2419
2420	* include/std/typeindex (operator<=>): Define for C++20.
2421	* testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
2422
24232020-04-14  Jonathan Wakely  <jwakely@redhat.com>
2424
2425	* libsupc++/compare (compare_three_way): Fix constraint so that
2426	BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
2427	* testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
2428	New test.
2429
2430	PR libstdc++/94562
2431	* include/bits/shared_ptr.h (operator<=>): Define for C++20.
2432	* include/bits/shared_ptr_base.h (operator<=>): Likewise.
2433	* include/bits/unique_ptr.h (operator<=>): Add inline specifier.
2434	* testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
2435	* testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
2436	std::less<A*> to be used when comparing std::shared_ptr<A> objects in
2437	C++20.
2438
2439	PR libstdc++/94565
2440	* libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
2441	* testsuite/18_support/comparisons/categories/94565.cc: New test.
2442
24432020-04-13  Iain Sandoe  <iain@sandoe.co.uk>
2444
2445	* include/std/coroutine: Update coroutines builtin define,
2446	per n4861.
2447
24482020-04-09  Jonathan Wakely  <jwakely@redhat.com>
2449
2450	* libsupc++/compare (compare_three_way): Fix noexcept-specifier.
2451	(strong_order, weak_order, partial_order): Replace uses of <=> with
2452	compare_three_way function object (LWG 3324).
2453	* testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
2454	equality operator so that X satisfies three_way_comparable.
2455	* testsuite/18_support/comparisons/algorithms/strong_order.cc:
2456	Likewise.
2457	* testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
2458
2459	* include/bits/unique_ptr.h (operator<=>): Define for C++20.
2460	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
2461	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
2462	* testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
2463	* testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
2464
24652020-04-08  Jonathan Wakely  <jwakely@redhat.com>
2466
2467	* include/bits/slice_array.h (operator==(const slice&, const slice&)):
2468	Define for C++20.
2469	* include/std/complex (operator==(const T&, const complex<T>&))
2470	(operator!=(const complex<T>&, const complex<T>&))
2471	(operator!=(const complex<T>&, const T&))
2472	(operator!=(const T&, const complex<T>&)): Do not declare for C++20.
2473	* testsuite/26_numerics/slice/compare.cc: New test.
2474
2475	* include/std/charconv (to_chars_result, from_chars_result): Add
2476	defaulted equality comparisons for C++20.
2477	* testsuite/20_util/from_chars/compare.cc: New test.
2478	* testsuite/20_util/to_chars/compare.cc: New test.
2479
24802020-04-07  Jonathan Wakely  <jwakely@redhat.com>
2481
2482	PR libstdc++/94520
2483	* include/std/charconv (__integer_to_chars_result_type)
2484	(__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
2485	allow use in C++14.
2486	* testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
2487	use of std::string_view with std::string.
2488	* testsuite/20_util/from_chars/2.cc: Likewise.
2489	* testsuite/20_util/to_chars/1.cc: Likewise.
2490	* testsuite/20_util/to_chars/2.cc: Likewise.
2491
24922020-04-06  Jonathan Wakely  <jwakely@redhat.com>
2493
2494	PR libstdc++/94498
2495	* include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
2496	usable in constant expressions for C++20.
2497	(__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
2498	_GLIBCXX20_CONSTEXPR.
2499	(std::char_traits<char>, std::char_traits<wchar_t>)
2500	(std::char_traits<char8_t>): Make move, copy and assign usable in
2501	constant expressions for C++20.
2502	(std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
2503	and copy usable in constant expressions for C++20.
2504	* include/std/string_view (basic_string_view::copy): Add
2505	_GLIBCXX20_CONSTEXPR.
2506	* testsuite/21_strings/basic_string_view/operations/copy/char/
2507	constexpr.cc: New test.
2508	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
2509	constexpr.cc: New test.
2510
25112020-04-05  Gerald Pfeifer  <gerald@pfeifer.com>
2512
2513	* doc/xml/manual/appendix_contributing.xml: Refer to Git
2514	documentation instead of Subversion.  Switch to https.
2515	* doc/html/manual/appendix_contributing.html: Regenerate.
2516
25172020-04-03  Jonathan Wakely  <jwakely@redhat.com>
2518
2519	PR libstdc++/93960
2520	* include/bits/ptr_traits.h (__to_address): Add special case for debug
2521	iterators, to avoid dereferenceable check.
2522	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
2523	* testsuite/20_util/to_address/debug.cc: New test.
2524
25252020-04-01  Andrea Corallo  <andrea.corallo@arm.com>
2526
2527	* testsuite/experimental/net/execution_context/use_service.cc:
2528	Require pthread and gthreads.
2529
25302020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>
2531
2532	* doc/xml/manual/appendix_free.xml: Move "free books" list from
2533	fsf.org to gnu.org.
2534	* doc/html/manual/appendix_free.html: Regenerate.
2535
25362020-03-31  Ville Voutilainen  <ville.voutilainen@gmail.com>
2537
2538	Library-side tests for parenthesized aggregate init
2539
2540	PR c++/92878
2541	PR c++/92947
2542
2543	* testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
2544	* testsuite/20_util/any/assign/92878_92947.cc: Likewise.
2545	* testsuite/20_util/any/cons/92878_92947.cc: Likewise.
2546	* testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
2547	* testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
2548	* testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
2549	* testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
2550	* testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
2551	* testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
2552	Likewise.
2553	* testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
2554	* testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
2555	* testsuite/20_util/variant/92878_92947.cc: Likewise.
2556	* testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
2557	Likewise.
2558	* testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
2559	Likewise.
2560	* testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
2561	Likewise.
2562	* testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
2563	Likewise.
2564	* testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
2565	Likewise.
2566	* testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
2567	Likewise.
2568	* testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
2569	* testsuite/23_containers/queue/92878_92947.cc: Likewise.
2570	* testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
2571	Likewise.
2572	* testsuite/23_containers/stack/92878_92947.cc: Likewise.
2573	* testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
2574	Likewise.
2575	* testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
2576	Likewise.
2577	* testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
2578	Likewise.
2579	* testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
2580	Likewise.
2581	* testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
2582	Likewise.
2583
25842020-03-28  Jonathan Wakely  <jwakely@redhat.com>
2585
2586	* testsuite/20_util/is_constructible/value-2.cc: Fix test to account
2587	for changes due to parenthesized aggregate-initialization in C++20.
2588	* testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
2589	with std::chrono::sys_time in C++20.
2590
2591	* include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
2592	to constrain C++20 versions of comparison operators. Fix backwards
2593	logic of relational operators.
2594	(move_iterator): Use requires-clause to constrain comparison operators
2595	in C++20. Do not declare non-standard same-type overloads for C++20.
2596	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
2597	of comparisons and check using greedy_ops type.
2598	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
2599	* testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
2600	main function from compile-only test.
2601	* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
2602
26032020-03-27  Jonathan Wakely  <jwakely@redhat.com>
2604
2605	* include/bits/range_cmp.h (__cpp_lib_ranges): Define.
2606	* include/bits/stl_iterator.h: Check value of __cpp_concepts so that
2607	C++20 concepts are required.
2608	* include/bits/stl_iterator_base_types.h: Likewise.
2609	* include/std/concepts: Likewise.
2610	* include/std/version: Likewise.
2611	* testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
2612	macro.
2613
2614	* include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
2615	(reverse_iterator::iterator_category): Define for C++20.
2616	(reverse_iterator): Define comparison operators correctly for C++20.
2617	(__normal_iterator): Add constraints to comparison operators for C++20.
2618	(move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
2619	overload for input iterators.
2620	(move_iterator): Add constraints to comparison operators for C++20.
2621	Define operator<=> for C++20.
2622	* testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
2623	* testsuite/24_iterators/move_iterator/move_only.cc: New test.
2624	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
2625	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
2626
2627	* include/bits/iterator_concepts.h (__detail::__decay_copy)
2628	(__detail::__member_begin, __detail::__adl_begin): Move here from
2629	<bits/range_access.h>.
2630	(__detail::__ranges_begin, __detail::__range_iter_t): Define.
2631	* bits/range_access.h (__cust_access::__decay_copy)
2632	(__cust_access::__member_begin, __cust_access::__adl_begin): Move to
2633	<bits/iterator_concepts.h>.
2634	(ranges::iterator_t): Use __detail::__range_iter_t.
2635	* include/bits/stl_iterator.h (back_insert_iterator): Simplify
2636	conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
2637	(front_insert_iterator): Likewise.
2638	(insert_iterator): Implement changes from P0896R4 for C++20.
2639	* testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
2640	* testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
2641	* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
2642	for inclusion in synopsis_c++20.cc which expects different signatures
2643	for some function templates.
2644	* testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
2645
2646	* include/std/type_traits (__is_array_convertible): Move definition
2647	to immediately after is_convertible.
2648
26492020-03-26  Jonathan Wakely  <jwakely@redhat.com>
2650
2651	* include/std/chrono (chrono::days, chrono::weeks, chrono::years)
2652	(chrono::months, chrono::sys_days, chrono::local_t)
2653	(chrono::local_time, chrono::local_seconds, chrono::local_days):
2654	Define for C++20.
2655	(chrono::time_point): Add missing static assert.
2656	* testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
2657	* testsuite/std/time/clock/file/overview.cc: New test.
2658	* testsuite/std/time/clock/file/members.cc: New test.
2659	* testsuite/std/time/syn_c++20.cc: New test.
2660
26612020-03-25  Mike Crowe  <mac@mcrowe.com>
2662
2663	* testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
2664	test.
2665	* testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
2666	test.
2667
26682020-03-25  Jonathan Wakely  <jwakely@redhat.com>
2669
2670	* include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
2671	* include/std/chrono (filesystem::__file_clock): Here.
2672	(filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
2673	Define public member functions for C++20.
2674	(is_clock, is_clock_v): Define traits for C++20.
2675	* include/std/condition_variable (condition_variable::wait_until): Add
2676	check for valid clock.
2677	* include/std/future (_State_baseV2::wait_until): Likewise.
2678	* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
2679	* include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
2680	Likewise.
2681	* include/std/thread (this_thread::sleep_until): Likewise.
2682	* testsuite/30_threads/condition_variable/members/2.cc: Qualify
2683	slow_clock with new namespace.
2684	* testsuite/30_threads/condition_variable/members/clock_neg.cc: New
2685	test.
2686	* testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
2687	New test.
2688	* testsuite/30_threads/future/members/clock_neg.cc: New test.
2689	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
2690	Qualify slow_clock with new namespace.
2691	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/
2692	clock_neg.cc: New test.
2693	* testsuite/30_threads/shared_future/members/clock_neg.cc: New
2694	test.
2695	* testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
2696	* testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
2697	New test.
2698	* testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
2699	slow_clock with new namespace.
2700	* testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
2701	* testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
2702	test.
2703	* testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
2704	* testsuite/std/time/traits/is_clock.cc: New test.
2705	* testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
2706	namespace.
2707
27082020-03-21  Jonathan Wakely  <jwakely@redhat.com>
2709
2710	PR libstdc++/93245
2711	* include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
2712	* testsuite/experimental/filesystem/path/generic/generic_string.cc:
2713	Improve test coverage.
2714
2715	PR libstdc++/94242
2716	* include/bits/fs_path.h (path::_S_str_convert): Replace first
2717	parameter with basic_string_view so that strings with different
2718	allocators can be accepted.
2719	(path::generic_string<C,T,A>()): Use basic_string object that uses the
2720	right allocator type.
2721	* testsuite/27_io/filesystem/path/generic/94242.cc: New test.
2722	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
2723	test coverage.
2724
27252020-03-18  Jonathan Wakely  <jwakely@redhat.com>
2726
2727	PR libstdc++/94033
2728	* include/std/type_traits (__is_nt_default_constructible_atom): Remove.
2729	(__is_nt_default_constructible_impl): Remove.
2730	(__is_nothrow_default_constructible_impl): Remove.
2731	(__is_nt_constructible_impl): Add bool template parameter. Adjust
2732	partial specializations.
2733	(__is_nothrow_constructible_impl): Replace class template with alias
2734	template.
2735	(is_nothrow_default_constructible): Derive from alias template
2736	__is_nothrow_constructible_impl instead of
2737	__is_nothrow_default_constructible_impl.
2738	* testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
2739
2740	* include/std/stop_token (stop_token::_Stop_state_ref): Define
2741	comparison operators explicitly if the compiler won't synthesize them.
2742
2743	* include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
2744	__cpp_lib_concepts before using iter_reference_t.
2745	* include/bits/stream_iterator.h (istream_iterator): Check
2746	__cpp_lib_concepts before using default_sentinel_t.
2747	* include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
2748
2749	PR libstdc++/94203
2750	* include/experimental/executor (executor::executor(Executor)): Call
2751	make_shared directly instead of _M_create. Create _Tgt1 object.
2752	(executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
2753	Call allocate_shared directly instead of _M_create. Create _Tgt2
2754	object.
2755	(executor::target_type): Add cast needed for new _Tgt interface.
2756	(executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
2757	(executor::_Tgt): Define the same interface whether RTTI is enabled or
2758	not.
2759	(executor::_Tgt::target_type, executor::_Tgt::target): Do not use
2760	std::type_info in the interface.
2761	(executor::_Tgt::_M_func): Add data member.
2762	(executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
2763	(executor::_Tgt1::_S_func): Define function to access target without
2764	depending on RTTI.
2765	(executor::_M_create): Remove.
2766	(operator==, operator!=): Simplify comparisons for executor.
2767	* include/experimental/socket (is_error_code_enum<socket_errc>):
2768	Define specialization before use.
2769	* testsuite/experimental/net/executor/1.cc: New test.
2770
27712020-03-16  Jonathan Wakely  <jwakely@redhat.com>
2772
2773	PR libstdc++/94199
2774	* include/experimental/executor (service_already_exists): Add default
2775	constructor. Declare make_service to be a friend.
2776	* testsuite/experimental/net/execution_context/make_service.cc: New
2777	test.
2778
27792020-03-12  Jonathan Wakely  <jwakely@redhat.com>
2780
2781	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
2782	a null pointer to functions with nonnull(1) attribute.
2783
27842020-03-11  Patrick Palka  <ppalka@redhat.com>
2785
2786	* include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
2787	'address' -> 'std::__addressof'.
2788	* testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
2789	a non-forward input_range.
2790	* testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
2791	default constructor protected instead of deleted, like with
2792	input_iterator_wrapper.
2793	(test_range::iterator): Add comment explaining that this type is used
2794	only when the underlying wrapper is input_iterator_wrapper or
2795	output_iterator_wrapper.  Remove delegating defaulted constructor so
2796	that the inherited default constructor is used instead.
2797
2798	LWG 3286 ranges::size is not required to be valid after a call to
2799	ranges::begin on an input range
2800	* include/std/ranges (subrange::subrange): Split single-argument
2801	constructor into two, one constrained by _S_store_size and another by
2802	!_S_store_size.
2803	(take_view::begin): Call size() before calling ranges::begin(_M_base).
2804	* testsuite/std/ranges/adaptors/lwg3286.cc: New test.
2805	* testsuite/std/ranges/subrange/lwg3286.cc: New test.
2806
28072020-03-10  Jonathan Wakely  <jwakely@redhat.com>
2808
2809	* include/std/ranges (split_view::_OuterIter::__at_end): Use __current
2810	instead of _M_current.
2811	(split_view::_OuterIter::operator++): Likewise.
2812
2813	* include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
2814	(transform_view::_Iterator::operator*): Add noexcept-specifier.
2815	(transform_view::_Iterator::iter_move): Inline __iter_move body here.
2816	(split_view::_OuterIter::__current): Add noexcept.
2817	(split_view::_InnerIter::__iter_swap): Remove.
2818	(split_view::_InnerIter::__iter_move): Remove.
2819	(split_view::_InnerIter::_M_i_current): New accessors.
2820	(split_view::_InnerIter::__at_end): Use _M_i_current().
2821	(split_view::_InnerIter::operator*): Likewise.
2822	(split_view::_InnerIter::operator++): Likewise.
2823	(iter_move(const _InnerIter&)): Likewise.
2824	(iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
2825	* testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
2826	for iter_move and iter_swap on split_view's inner iterator.
2827
2828	PR c++/94117
2829	* include/std/ranges (ranges::transform_view::_Iterator::iter_move):
2830	Change expression in noexcept-specifier to match function body.
2831
2832	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
2833	comment explaining multiple dg-do directives.
2834	* testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
2835	so test is run as well as compiled.
2836
28372020-03-09  Jonathan Wakely  <jwakely@redhat.com>
2838
2839	PR libstdc++/94063
2840	* src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
2841	handle concatenations that change the type of the first component.
2842	(path::operator+=(basic_string_view<value_type>)): Likewise.
2843	* testsuite/27_io/filesystem/path/concat/94063.cc: New test.
2844
28452020-03-06  Patrick Palka  <ppalka@redhat.com>
2846
2847	* include/std/ranges (join_view::_Sentinel<_Const>): Befriend
2848	join_view::_Sentinel<!_Const>.
2849	* testsuite/std/ranges/adaptors/join.cc: Augment test.
2850
2851	PR libstdc++/93978
2852	* include/bits/range_access.h (__cust_access::_Empty::operator()):
2853	Declare return type to be bool instead of auto.
2854	* testsuite/std/ranges/adaptors/93978.cc: New test.
2855
28562020-03-06  Jonathan Wakely  <jwakely@redhat.com>
2857
2858	PR libstdc++/94069
2859	* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
2860	(__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
2861	second argument to __glibcxx_rwlock_init.
2862	* testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
2863
2864	PR libstdc++/93244
2865	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
2866	test to not fail due to PR 94063.
2867	* testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
2868	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
2869
28702020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
2871
2872	* src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
2873	would match ENOSYS.
2874
28752020-03-05  Jonathan Wakely  <jwakely@redhat.com>
2876
2877	* testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
2878	* testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
2879	* testsuite/experimental/filesystem/operations/copy.cc: Likewise.
2880	* testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
2881	for return value, and in comparison.
2882	* testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
2883
2884	PR libstdc++/94051
2885	* include/std/string_view: Include <bits/ostream_insert.h>.
2886	* testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
2887
28882020-03-04  Jonathan Wakely  <jwakely@redhat.com>
2889
2890	* include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
2891
28922020-03-04  Patrick Palka  <ppalka@redhat.com>
2893
2894	PR libstdc++/94017
2895	* include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
2896	condition for when to use memset, making sure to additionally check that
2897	the output pointer's value type is a non-volatile byte type.  Instead of
2898	requiring that the fill type is a byte type, just require that it's an
2899	integral type.
2900	* testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
2901	New test.
2902	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
2903	New test.
2904	* testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
2905	blocked by PR 94017.
2906	* testsuite/25_algorithms/fill/94017.cc: New test.
2907	* testsuite/25_algorithms/fill_n/94017.cc: New test.
2908
2909	LWG 3355 The memory algorithms should support move-only input iterators
2910	introduced by P1207
2911	* include/bits/ranges_uninitialized.h
2912	(__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
2913	to copy __ifirst, which could be a move-only input iterator.  Use
2914	operator- instead of ranges::distance to compute distance from a sized
2915	sentinel.
2916	(__uninitialized_copy_n_fn::operator()): Likewise.
2917	(__uninitialized_move_fn::operator()): Likewise.
2918	(__uninitialized_move_n_fn::operator()): Likewise.
2919	(__uninitialized_destroy_fn::operator()): Use std::move to avoid
2920	attempting to copy __first.
2921	(__uninitialized_destroy_n_fn::operator()): Likewise.
2922	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
2923	Augment test.
2924	* .../specialized_algorithms/uninitialized_copy/constrained.cc:
2925	Likewise.
2926	* .../specialized_algorithms/uninitialized_move/constrained.cc:
2927	Likewise.
2928
2929	* testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
2930	protected instead of private.
2931	(test_sized_range_sized_sent): New.
2932
2933	* testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
2934	New testsuite iterator.
2935	* testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
2936	* testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
2937
2938	* include/bits/ranges_uninitialized.h
2939	(uninitialized_copy_fn::operator()): Pass a reference type as the first
2940	argument to is_nothrow_assignable_v.
2941	(uninitialized_copy_fn::operator()): Likewise.
2942	(uninitialized_move_fn::operator()): Likewise.  Return an in_out_result
2943	with the input iterator stripped of its move_iterator.
2944	(uninitialized_move_n_fn::operator()): Likewise.
2945	(uninitialized_fill_fn::operator()): Pass a reference type as the first
2946	argument to is_nothrow_assignable_v.
2947	(uninitialized_fill_n_fn::operator()): Likewise.
2948
29492020-03-03  Jonathan Wakely  <jwakely@redhat.com>
2950
2951	PR libstdc++/94013
2952	* include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
2953	traits to control when to use memmove and memcmp optimizations.
2954	(__is_nonvolatile_trivially_copyable): New helper trait.
2955	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
2956	use memcmp optimization with volatile data.
2957	* include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
2958	(__copy_or_move, __copy_or_move_backward): Use __memcpyable.
2959	* include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
2960	(__copy_move_backward_a2): Likewise.
2961	(__equal_aux1): Use __memcmpable.
2962	(__lexicographical_compare_aux): Do not use memcmp optimization with
2963	volatile data.
2964	* testsuite/25_algorithms/copy/94013.cc: New test.
2965	* testsuite/25_algorithms/copy_backward/94013.cc: New test.
2966	* testsuite/25_algorithms/equal/94013.cc: New test.
2967	* testsuite/25_algorithms/fill/94013.cc: New test.
2968	* testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
2969	* testsuite/25_algorithms/move/94013.cc: New test.
2970	* testsuite/25_algorithms/move_backward/94013.cc: New test.
2971
2972	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
2973	Avoid redundant iterator comparisons (LWG 3410).
2974
29752020-03-02  Jonathan Wakely  <jwakely@redhat.com>
2976
2977	PR libstdc++/93972
2978	* include/bits/stl_algobase.h (__memcmp): Allow pointer types to
2979	differ.
2980	* testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
2981
2982	* include/std/ranges (__detail::__maybe_empty_t): Rename to
2983	__maybe_present_t.
2984	(__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
2985
2986	* include/bits/ranges_algo.h (shift_right): Add 'typename' to
2987	dependent type.
2988
29892020-03-01  H.J. Lu  <hongjiu.lu@intel.com>
2990
2991	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
2992
29932020-02-29  John David Anglin  <danglin@gcc.gnu.org>
2994
2995	* testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
2996	* testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
2997	* testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
2998	* testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
2999	* testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
3000
3001	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
3002	Add libatomic option.
3003	* testsuite/30_threads/jthread/jthread.cc: Likewise.
3004
30052020-02-29  François Dumont  <fdumont@gcc.gnu.org>
3006
3007	* include/bits/stl_algo.h
3008	(__find_if, __count_if, __is_permutation, std::is_permutation): Move...
3009	* include/bits/stl_algobase.h: ...here.
3010	* include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
3011
30122020-02-29  John David Anglin  <danglin@gcc.gnu.org>
3013
3014	* testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
3015	option.
3016	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
3017	Likewise.
3018	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
3019	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
3020	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
3021	* testsuite/30_threads/stop_token/stop_source.cc: Likewise.
3022	* testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
3023	* testsuite/30_threads/stop_token/stop_token.cc: Likewise.
3024	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
3025	Likewise.
3026
3027	PR libstdc++/92906
3028	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
3029
30302020-02-28  Patrick Palka  <ppalka@redhat.com>
3031
3032	PR libstdc++/93972
3033	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
3034	Fix condition for when to use memcmp, making it consistent with the
3035	corresponding condition used in std::lexicographical_compare.
3036	* testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
3037
3038	* testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
3039	functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
3040	existing signatures for C++2a.
3041
30422020-02-28  Jonathan Wakely  <jwakely@redhat.com>
3043
3044	* testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
3045	test instead of just compiling it.
3046
30472020-02-28  Patrick Palka  <ppalka@redhat.com>
3048
3049	* include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
3050	whenever the underlying range models common_range.
3051
3052	* include/std/ranges (__detail::_CachedPosition): New struct.
3053	(views::filter_view::_S_needs_cached_begin): New member variable.
3054	(views::filter_view::_M_cached_begin): New member variable.
3055	(views::filter_view::begin): Use _M_cached_begin to cache its
3056	result.
3057	(views::drop_view::_S_needs_cached_begin): New static member variable.
3058	(views::drop_view::_M_cached_begin): New member variable.
3059	(views::drop_view::begin): Use _M_cached_begin to cache its result
3060	when _S_needs_cached_begin.
3061	(views::drop_while_view::_M_cached_begin): New member variable.
3062	(views::drop_while_view::begin): Use _M_cached_begin to cache its
3063	result.
3064	(views::reverse_view::_S_needs_cached_begin): New static member
3065	variable.
3066	(views::reverse_view::_M_cached_begin): New member variable.
3067	(views::reverse_view::begin): Use _M_cached_begin to cache its result
3068	when _S_needs_cached_begin.
3069	* testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
3070	drop_view::begin caches its result.
3071	* testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
3072	that drop_while_view::begin caches its result.
3073	* testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
3074	filter_view::begin caches its result.
3075	* testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
3076	reverse_view::begin caches its result.
3077
30782020-02-28  Jonathan Wakely  <jwakely@redhat.com>
3079
3080	* testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
3081	filesystems that silently truncate timestamps.
3082	* testsuite/experimental/filesystem/operations/last_write_time.cc:
3083	Likewise.
3084
3085	* testsuite/21_strings/basic_string/cons/char/1.cc: Disable
3086	-Wstringop-overflow warnings.
3087
30882020-02-27  Jonathan Wakely  <jwakely@redhat.com>
3089
3090	* testsuite/lib/libstdc++.exp (v3_target_compile): Add
3091	-fdiagnostics-urls=never to options.
3092
30932020-02-27  Patrick Palka  <ppalka@redhat.com>
3094
3095	* include/std/ranges (transform_view::_Iterator<_Const>): Befriend
3096	_Iterator<!_Const>.
3097	(transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
3098	(take_view::_Sentinel<_Const>): Likewise.
3099	(take_while_view::_Sentinel<_Const>): Likewise.
3100	(split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
3101	* testsuite/std/ranges/adaptors/split.cc: Augment test.
3102	* testsuite/std/ranges/adaptors/take.cc: Augment test.
3103	* testsuite/std/ranges/adaptors/take_while.cc: Augment test.
3104	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
3105
3106	* testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
3107	base() of a vector<>::iterator is a pointer.
3108	* testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
3109	* testsuite/25_algorithms/move/constrained.cc: Likewise.
3110	* testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
3111	* testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
3112	instead of &foo[0].
3113	* testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
3114	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
3115	* testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
3116	* testsuite/25_algorithms/sort/constrained.cc: Likewise.
3117	* testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
3118
31192020-02-27  Jonathan Wakely  <jwakely@redhat.com>
3120
3121	* include/debug/array (operator<=>): Define for C++20.
3122	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
3123	Adjust dg-error line numbers.
3124	* testsuite/23_containers/array/tuple_interface/
3125	tuple_element_debug_neg.cc: Likewise.
3126
3127	* testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
3128	defining _GLIBCXX_ASSERTIONS.
3129	* testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
3130	* testsuite/23_containers/span/first_assert_neg.cc: Likewise.
3131	* testsuite/23_containers/span/front_assert_neg.cc: Likewise.
3132	* testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
3133	* testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
3134	* testsuite/23_containers/span/last_assert_neg.cc: Likewise.
3135	* testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
3136	* testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
3137	* testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
3138	* testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
3139	* testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
3140	* testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
3141
3142	* include/debug/string (__gnu_debug::basic_string::insert): Fix for
3143	C++98 where the member function of the base class returns void.
3144
3145	* testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
3146	equality comparisons that support value-initialized iterators.
3147
3148	* include/bits/boost_concept_check.h (__function_requires): Add
3149	_GLIBCXX14_CONSTEXPR.
3150	* testsuite/25_algorithms/min/concept_checks.cc: New test.
3151
31522020-02-26  Patrick Palka  <ppalka@redhat.com>
3153
3154	PR libstdc++/93936
3155	* include/std/ranges (split_view::_InnerIter::operator==): Compare
3156	the operands' _M_i rather than their _M_i.current().
3157	* testsuite/std/ranges/adaptors/split.cc: Augment test.
3158
3159	P1645R1 constexpr for <numeric> algorithms
3160	* include/bits/stl_numeric.h (iota, accumulate, inner_product,
3161	partial_sum, adjacent_difference): Make conditionally constexpr for
3162	C++20.
3163	* include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
3164	test macro.
3165	(reduce, transform_reduce, exclusive_scan, inclusive_scan,
3166	transform_exclusive_scan, transform_inclusive_scan): Make conditionally
3167	constexpr for C++20.
3168	* include/std/version (__cpp_lib_constexpr_numeric): Define.
3169	* testsuite/26_numerics/accumulate/constexpr.cc: New test.
3170	* testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
3171	* testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
3172	* testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
3173	* testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
3174	* testsuite/26_numerics/iota/constexpr.cc: Likewise.
3175	* testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
3176	* testsuite/26_numerics/reduce/constexpr.cc: Likewise.
3177	* testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
3178	* testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
3179	* testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
3180
31812020-02-26  Jonathan Wakely  <jwakely@redhat.com>
3182
3183	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
3184	variables in smaller scope and avoid calling ranges::distance when we
3185	know they are pointers. Remove statically-unreachable use of
3186	__builtin_unreachable().
3187	* include/bits/stl_algobase.h (__lexicographical_compare::__lc):
3188	Define inline.
3189
3190	* include/std/ranges (__detail::__maybe_empty_t): Define new helper
3191	alias.
3192	(__detail::__maybe_const_t): Likewise.
3193	(__adaptor::_RangeAdaptor): Use __maybe_empty_t.
3194	(transform_view, take_view, take_while_view, elements_view): Use
3195	__maybe_const_t.
3196	(join_view, split_view): Use both.
3197
31982020-02-25  Patrick Palka  <ppalka@redhat.com>
3199
3200	LWG 3397 basic_istream_view::iterator should not provide
3201	iterator_category
3202	* include/std/ranges (basic_istream_view:_Iterator::iterator_category):
3203	Rename to ...
3204	(basic_istream_view:_Iterator::iterator_concept): ... this.
3205	* testsuite/std/ranges/istream_view.cc: Augment test.
3206
3207	LWG 3325 Constrain return type of transformation function for
3208	transform_view
3209	* include/std/ranges (transform_view): Constrain the return type of the
3210	transformation function as per LWG 3325.
3211	* testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
3212
3213	LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
3214	* include/std/ranges (join_view::_Iterator::operator--): Require that
3215	range_reference_t<_Base> models common_range.
3216	* testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
3217
3218	LWG 3301 transform_view::_Iterator has incorrect iterator_category
3219	* include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
3220	determination of iterator_category as per LWG 3301.
3221	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
3222
3223	LWG 3292 iota_view is under-constrained
3224	* include/std/ranges (iota_view): Require that _Winc models semiregular
3225	  as per LWG 3292.
3226	* testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
3227
32282020-02-25  Jonathan Wakely  <jwakely@redhat.com>
3229
3230	* include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
3231	during constant evaluation. Call __builtin_memmove directly instead of
3232	__memmove.
3233	(__copy_or_move_backward): Likewise.
3234	* include/bits/stl_algobase.h (__memmove): Remove.
3235	(__copy_move<M, true, random_access_iterator_tag>::__copy_m)
3236	(__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
3237	Use __builtin_memmove directly instead of __memmove.
3238	(__copy_move_a2): Do not use memmove during constant evaluation.
3239	(__copy_move_backward_a2): Use _IsMove constant to select correct
3240	__copy_move_backward specialization.
3241	* testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
3242	begin turned into moves during constant evaluation.
3243
3244	* testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
3245	previous commit.
3246
3247	PR libstdc++/93872
3248	* include/bits/stl_algobase.h (__memmove): Cast away const before
3249	doing move assignment.
3250	* testsuite/25_algorithms/move/93872.cc: New test.
3251	* testsuite/25_algorithms/move_backward/93872.cc: New test.
3252
32532020-02-24  Patrick Palka  <ppalka@redhat.com>
3254
3255	PR libstdc++/93884
3256	* include/bits/ranges_algobase.h (__copy_or_move,
3257	__copy_or_move_backward): Don't inspect the iter_value_t of the output
3258	iterator, instead inspect its iterator_traits directly.
3259	* include/bits/stl_iterator.h (back_insert_iterator::container):
3260	Conditionally initialize.
3261	(back_insert_iterator::difference_type): Conditionally define.
3262	(back_insert_iterator::back_insert_iterator): Conditionally define this
3263	default constructor.
3264	(front_insert_iterator::container): Conditionally initialize.
3265	(front_insert_iterator::difference_type): Conditionally define.
3266	(front_insert_iterator::front_insert_iterator): Conditionally define
3267	this default constructor.
3268	* 24_iterators/back_insert_iterator/pr93884.cc: New test.
3269	* 24_iterators/front_insert_iterator/pr93884.cc: New test.
3270
3271	P0769R2 Add shift to <algorithm>
3272	* include/bits/ranges_algo.h (shift_left, shift_right): New.
3273	* testsuite/25_algorithms/shift_left/1.cc: New test.
3274	* testsuite/25_algorithms/shift_right/1.cc: New test.
3275
32762020-02-24  Jonathan Wakely  <jwakely@redhat.com>
3277
3278	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
3279	Make noexcept-specifier conditional.
3280	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
3281	noexcept-specifier.
3282
3283	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
3284	Add constructor.
3285	(operator==(istream_iterator, default_sentinel_t)): Add operator.
3286	(ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
3287	* include/bits/streambuf_iterator.h
3288	(istreambuf_iterator(default_sentinel_t)): Add constructor.
3289	(operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
3290	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
3291	New test.
3292	* testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
3293	* testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
3294	New test.
3295	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
3296
3297	* include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
3298	(ranges::enable_view): Simplify (LWG 3326).
3299	* include/bits/range_access.h (ranges::enable_view): Declare.
3300	* include/bits/regex.h (__enable_view_impl): Remove partial
3301	specialization.
3302	* include/bits/stl_multiset.h (__enable_view_impl): Likewise.
3303	* include/bits/stl_set.h (__enable_view_impl): Likewise.
3304	* include/bits/unordered_set.h (__enable_view_impl): Likewise.
3305	* include/debug/multiset.h (__enable_view_impl): Likewise.
3306	* include/debug/set.h (__enable_view_impl): Likewise.
3307	* include/debug/unordered_set (__enable_view_impl): Likewise.
3308	* include/experimental/string_view (ranges::enable_view): Define
3309	partial specialization.
3310	* include/std/span (ranges::enable_view): Likewise.
3311	* include/std/string_view (ranges::enable_view): Likewise.
3312	* testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
3313
33142020-02-21  Jonathan Wakely  <jwakely@redhat.com>
3315
3316	* include/std/optional (operator<=>(optional<T>, optional<U>))
3317	(operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
3318	Define for C++20.
3319	* include/std/tuple (__tuple_cmp): New helper function for <=>.
3320	(operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
3321	* include/std/variant (operator<=>(variant<T...>, variant<T...>))
3322	(operator<=>(monostate, monostate)): Define for C++20.
3323	* testsuite/20_util/optional/relops/three_way.cc: New test.
3324	* testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
3325	* testsuite/20_util/variant/89851.cc: Move to ...
3326	* testsuite/20_util/variant/relops/89851.cc: ... here.
3327	* testsuite/20_util/variant/90008.cc: Move to ...
3328	* testsuite/20_util/variant/relops/90008.cc: ... here.
3329	* testsuite/20_util/variant/relops/three_way.cc: New test.
3330
33312020-02-20  Patrick Palka  <ppalka@redhat.com>
3332
3333	* include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
3334	function.
3335	(views::__adaptor::_RangeAdaptor::operator()): Add comments.  Use
3336	__maybe_refwrap to capture lvalue references by reference, and then use
3337	unwrap_reference_t to forward the by-reference captures as references.
3338	* testsuite/std/ranges/adaptors/split.cc: Augment test.
3339	* testsuite/std/ranges/adaptors/split_neg.cc: New test.
3340
3341	* include/std/ranges (iota_view): Forward declare _Sentinel.
3342	(iota_view::_Iterator): Befriend _Sentinel.
3343	(iota_view::_Sentinel::_M_equal): New member function.
3344	(iota_view::_Sentinel::operator==): Use it.
3345	(views::_Iota::operator()): Forward __f using the correct type.
3346	* testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
3347	with integers of different signedness, to appease iota_view's deduction
3348	guide.
3349	* testsuite/std/ranges/iota/iota_view.cc: Augment test.
3350
33512020-02-20  Jonathan Wakely  <jwakely@redhat.com>
3352
3353	* include/bits/range_access.h (ranges::begin): Reject array of
3354	incomplete type.
3355	(ranges::end, ranges::size): Require arrays to be bounded.
3356	(ranges::data): Require lvalue or borrowed_range.
3357	(ranges::iterator_t): Remove constraint.
3358	* testsuite/std/ranges/access/begin.cc: Do not check array of
3359	incomplete type.
3360	* testsuite/std/ranges/access/begin_neg.cc: New test.
3361	* testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
3362	* testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
3363	* testsuite/std/ranges/access/ssize.cc: Do not check array of
3364	incomplete type.
3365
3366	* include/std/system_error (error_category::operator<=>)
3367	(operator<=>(const error_code&, const error_code&))
3368	(operator<=>(const error_condition&, const error_condition&)): Define
3369	for C++20.
3370	* testsuite/19_diagnostics/error_category/operators/less.cc: New test.
3371	* testsuite/19_diagnostics/error_category/operators/three_way.cc: New
3372	test.
3373	* testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
3374	incorrect comment.
3375	* testsuite/19_diagnostics/error_code/operators/less.cc: New test.
3376	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
3377	incorrect comment.
3378	* testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
3379	* testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
3380	incorrect comment.
3381	* testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
3382	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
3383	Remove incorrect comment.
3384	* testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
3385	test.
3386
3387	* libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
3388
3389	* include/std/thread (thread::id::operator<=>): Define for C++20.
3390	* testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
3391	functions in namespace std.
3392	* testsuite/30_threads/thread/id/operators_c++20.cc: New test.
3393
33942020-02-19  Patrick Palka  <ppalka@redhat.com>
3395
3396	* testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
3397	null terminator of the underlying string as part of the test_range.
3398	(main): Call test03.
3399
34002020-02-19  Jonathan Wakely  <jwakely@redhat.com>
3401
3402	* include/bits/stl_iterator.h (common_iterator): Add copyable<I>
3403	requirement (LWG 3385).
3404	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
3405	expected declaration.
3406
3407	* include/std/ranges (take_while_view, drop_view, drop_while_view)
3408	(elements_view:_Iterator): Initialize data members (LWG 3364).
3409
3410	* libsupc++/compare (three_way_comparable): Remove always-false check
3411	that should have been removed with weak_equality (P1959R0).
3412	(three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
3413
3414	* include/std/concepts (__detail::__partially_ordered_with): Move here
3415	from <compare>.
3416	(totally_ordered, totally_ordered_with): Use __partially_ordered_with
3417	to simplify definition (LWG 3331).
3418	* libsupc++/compare (__detail::__partially_ordered_with): Move to
3419	<concepts>.
3420
3421	* include/std/concepts (totally_ordered_with): Remove redundant
3422	requirement (LWG 3329).
3423
3424	* include/std/ranges (__detail::__convertible_to_non_slicing): New
3425	helper concept.
3426	(__detail::__pair_like_convertible_to): Remove.
3427	(__detail::__pair_like_convertible_from): Add requirements for
3428	non-slicing conversions.
3429	(subrange): Constrain constructors with __convertible_to_non_slicing.
3430	Remove constructors from pair-like types. Add new deduction guide.
3431	* testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
3432
3433	* include/bits/iterator_concepts.h (iter_move): Add declaration to
3434	prevent unqualified lookup finding a suitable declaration (LWG 3247).
3435
3436	* include/std/memory_resource (polymorphic_allocator::allocate)
3437	(polymorphic_allocator::allocate_object): Change type of exception to
3438	bad_array_new_length (LWG 3237).
3439	* testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
3440
3441	* include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
3442	* include/std/version (__cpp_lib_unwrap_ref): Likewise.
3443	* testsuite/20_util/unwrap_reference/1.cc: Check macro.
3444	* testsuite/20_util/unwrap_reference/3.cc: New test.
3445
3446	* include/std/numeric (midpoint(T8, T*)): Do not check for complete
3447	type during overload resolution, use static assert instead (LWG 3200).
3448	* testsuite/26_numerics/midpoint/pointer.cc: Do not test with
3449	incomplete type.
3450	* testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
3451
3452	* include/std/span (span(T (&)[N])): Use non-deduced context to
3453	prevent first parameter from interfering with class template argument
3454	deduction (LWG 3369).
3455	* testsuite/23_containers/span/deduction.cc: Add missing 'const'.
3456	* testsuite/23_containers/span/lwg3255.cc: Check for construction from
3457	rvalues.
3458
3459	* include/std/span (span::const_iterator, span::const_reverse_iterator)
3460	(span::cbegin(), span::cend(), span::crbegin(), span::crend()):
3461	Remove (LWG 3320).
3462	* testsuite/23_containers/span/everything.cc: Replace uses of cbegin
3463	and cend.
3464	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
3465	Likewise.
3466	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
3467	constrained.cc: Likewise.
3468	* testsuite/20_util/specialized_algorithms/
3469	uninitialized_default_construct/constrained.cc: Likewise.
3470	* testsuite/20_util/specialized_algorithms/uninitialized_fill/
3471	constrained.cc: Likewise.
3472	* testsuite/20_util/specialized_algorithms/uninitialized_move/
3473	constrained.cc: Likewise.
3474	* testsuite/20_util/specialized_algorithms/
3475	uninitialized_value_construct/constrained.cc: Likewise.
3476
3477	* include/bits/range_access.h (range_size_t): Define alias template.
3478	* include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
3479	* testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
3480
3481	* include/std/ranges (filter_view, transform_view, take_view)
3482	(join_view, split_view, reverse_view): Remove commented-out converting
3483	constructors (LWG 3280).
3484
3485	* include/std/memory (uninitialized_construct_using_allocator): Use
3486	std::construct_at (LWG 3321).
3487
3488	* include/std/memory_resource (polymorphic_allocator::allocate_bytes)
3489	(polymorphic_allocator::allocate_object)
3490	(polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
3491
3492	LWG 3379. "safe" in several library names is misleading
3493	* include/bits/range_access.h (enable_safe_range): Rename to
3494	enable_borrowed_range.
3495	(__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
3496	(safe_range): Rename to borrowed_range.
3497	* include/bits/ranges_algo.h: Adjust to use new names.
3498	* include/bits/ranges_algobase.h: Likewise.
3499	* include/bits/ranges_uninitialized.h: Likewise.
3500	* include/std/ranges: Likewise.
3501	(safe_iterator_t): Rename to borrowed_iterator_t.
3502	(safe_subrange_t): Rename to borrowed_subrange_t.
3503	* include/std/span: Adjust to use new names.
3504	* include/std/string_view: Likewise.
3505	* include/experimental/string_view: Likewise.
3506	* testsuite/std/ranges/access/begin.cc: Likewise.
3507	* testsuite/std/ranges/access/cbegin.cc: Likewise.
3508	* testsuite/std/ranges/access/cdata.cc: Likewise.
3509	* testsuite/std/ranges/access/cend.cc: Likewise.
3510	* testsuite/std/ranges/access/crbegin.cc: Likewise.
3511	* testsuite/std/ranges/access/crend.cc: Likewise.
3512	* testsuite/std/ranges/access/data.cc: Likewise.
3513	* testsuite/std/ranges/access/end.cc: Likewise.
3514	* testsuite/std/ranges/access/rbegin.cc: Likewise.
3515	* testsuite/std/ranges/access/rend.cc: Likewise.
3516	* testsuite/std/ranges/safe_range.cc: Likewise.
3517	* testsuite/std/ranges/safe_range_types.cc: Likewise.
3518	* testsuite/util/testsuite_iterators.h: Likewise.
3519
3520	* include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
3521	(tuple_element<1, const subrange<I, S, K>>): Add partial
3522	specializations (LWG 3398).
3523	* testsuite/std/ranges/subrange/tuple_like.cc: New test.
3524
3525	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
3526	(__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
3527	(__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
3528
35292020-02-18  Patrick Palka  <ppalka@redhat.com>
3530
3531	P1983R0 Wording for GB301, US296, US292, US291, and US283
3532	* include/std/ranges (filter_view::pred): New member function.
3533	(join_view::_Iterator::_Iterator): Remove now-redundant comment since
3534	P1983R0 fixes the highlighted issue in the same way.
3535	(join_view::_Iterator<_Const>): Add friend
3536	join_view::_Iterator<!_Const>.
3537	(join_view::_M_inner): Remove mutable specifier, effectively reverting
3538	the proposed wording changes of P3278.
3539	(join_view::begin): Refine the condition for when to return a const
3540	iterator.
3541	(split_view::_OuterIter::_OuterIter): Adjust constraints.
3542	* testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
3543	exists and works.
3544
35452020-02-18  Jonathan Wakely  <jwakely@redhat.com>
3546
3547	PR libstdc++/93818
3548	* include/std/ranges (_RangeAdaptor): Add deduction guide.
3549	(filter_view::_Iterator): Add alias _Vp_iter and use in place of
3550	iterator_t<_Vp>.
3551	(filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
3552	(transform_view::_Iterator): Add alias _Base_iter and use in place of
3553	iterator_t<_Base>.
3554	(transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
3555	(join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
3556	(join_view::_Iterator::_S_iter_cat()): Add 'typename'.
3557	(split_view::_InnerIter::_S_iter_cat()): Likewise.
3558
3559	* testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
3560	assumption that long is wider than int.
3561	* testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
3562	* testsuite/20_util/integer_comparisons/less.cc: Likewise.
3563	* testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
3564	* testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
3565
3566	P1976R2 Fixed-size span construction from dynamic range
3567	* include/std/span (__cpp_lib_span): Update value.
3568	(span(It, size_type), span(It, End)): Make conditionally explicit. Add
3569	assertion.
3570	(span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
3571	constraints.
3572	(span::first<Count>(), span::last<Count>()): Use explicit type in
3573	return statement.
3574	(as_bytes, as_writable_bytes): Likewise.
3575	* include/std/version (__cpp_lib_span): Update value.
3576	* testsuite/23_containers/span/1.cc: Check new value.
3577	* testsuite/23_containers/span/2.cc: Check new value.
3578	* testsuite/23_containers/span/explicit.cc: New test.
3579
3580	* include/std/span (span::__is_compatible_array): Simplify alias
3581	template by using requires-clause.
3582	(span::__is_compatible_ref): New alias template for constraining
3583	constructors.
3584	(span::__is_compatible_iterator, span::__is_compatible_range): Remove.
3585	(span(It, size_type), span(It, End)): Use __is_compatible_ref.
3586	(span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
3587	redundant parentheses.
3588	(span(R&&)): Add missing constraints.
3589
3590	* include/std/span (span): Reorder members and rename template
3591	parameters to match declarations in the C++2a working paper.
3592
3593	P2116R0 Remove tuple-like protocol support from fixed-extent span
3594	* include/std/span (get, tuple_size, tuple_element): Remove.
3595	* testsuite/23_containers/span/everything.cc: Remove checks for
3596	tuple-like API.
3597	* testsuite/23_containers/span/get_neg.cc: Remove.
3598	* testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
3599	* testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
3600	* testsuite/23_containers/span/tuple_size_neg.cc: Remove.
3601
36022020-02-17  Patrick Palka  <ppalka@redhat.com>
3603
3604	P2106R0 Alternative wording for GB315 and GB316
3605	* include/bits/ranges_algo.h (in_fun_result): New.
3606	(for_each_result, for_each_n_result): Change into an alias of
3607	in_fun_result.
3608	(in_in_result): New.
3609	(mismatch_result): Change into an alias of in_in_result.
3610	(copy_if_result): Change into an alias of in_out_result.
3611	(swap_ranges_result): Change into an alias of in_in_result.
3612	(unary_transform_result): Change into an alias of in_out_result.
3613	(in_in_out_result): New.
3614	(binary_transform_result): Change into an alias of in_in_out_result.
3615	(replace_copy_result, replace_copy_if_result, remove_copy_if_result,
3616	remove_copy_result, unique_copy_result, reverse_copy_result,
3617	rotate_copy_result, partial_sort_copy_result): Change into an alias of
3618	in_out_result.
3619	(in_out_out_result): New.
3620	(partition_copy_result, merge_result): Change into an alias of
3621	in_out_out_result.
3622	(set_union_result, set_intersection_result): Change into an alias of
3623	in_in_out_result.
3624	(set_difference_result): Change into an alias of in_out_result.
3625	(set_symmetric_difference): Change into an alias of in_in_out_result.
3626	(min_max_result): New.
3627	(minmax_result, minmax_element_result): Change into an alias of
3628	min_max_result.
3629	(in_found_result): New.
3630	(next_permutation_result, prev_permutation_result): Change into an alias
3631	of in_found_result.
3632	(__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
3633	Adjust following changes to next_permutation_result and
3634	prev_permutation_result.
3635	* include/bits/ranges_algobase.h (in_out_result): New.
3636	(copy_result, move_result, move_backward_result, copy_backward_result,
3637	copy_n_result): Change into an alias of in_out_result.
3638	* include/bits/ranges_uninitialized.h (uninitialized_copy_result,
3639	uninitialized_copy_n_result, uninitialized_move_result,
3640	uninitialized_move_n_result): Likewise.
3641	* testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
3642	structured bindings.
3643	* testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
3644
3645	P1243R4 Rangify new algorithms
3646	* include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
3647	for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
3648	* testsuite/25_algorithms/clamp/constrained.cc: New test.
3649	* testsuite/25_algorithms/for_each/constrained.cc: Augment test.
3650	* testsuite/25_algorithms/sample/constrained.cc: New test.
3651
36522020-02-17  Jonathan Wakely  <jwakely@redhat.com>
3653
3654	P1964R2 Wording for boolean-testable
3655	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
3656	(__adjacent_find_fn): Cast result of predicate to bool.
3657	* include/std/concepts (__boolean): Remove.
3658	(__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
3659	new helper concepts.
3660	(__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
3661	(predicate): Use __boolean_testable instead of boolean.
3662	* libsupc++/compare (__detail::__partially_ordered, _Synth3way):
3663	Likewise.
3664
3665	P1970R2 Consistency for size() functions: Add ranges::ssize
3666	* include/bits/range_access.h (_SSize, ssize): Define for C++20.
3667	* testsuite/std/ranges/access/ssize.cc: New test.
3668
3669	P1956R1 On the names of low-level bit manipulation functions
3670	* include/bits/hashtable_policy.h: Update comment.
3671	* include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
3672	(ispow2, ceil2, floor2, log2p1): Likewise.
3673	(__cpp_lib_int_pow2): Add feature test macro.
3674	* include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
3675	* include/std/memory (assume_aligned): Adjust use of ispow2.
3676	* include/std/version (__cpp_lib_int_pow2): Add.
3677	* libsupc++/new_opa.cc: Adjust use of __ispow2.
3678	* src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
3679	* testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
3680	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
3681	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
3682	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
3683	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
3684	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
3685	* testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
3686	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
3687	* testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
3688	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
3689	* testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
3690
3691	* include/std/charconv: Add comment.
3692
3693	PR libstdc++/92546 (partial)
3694	* include/bits/random.h (uniform_random_bit_generator): Move definition
3695	to <bits/uniform_int_dist.h>.
3696	* include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
3697	of <bits/random.h>.
3698	* include/bits/ranges_algobase.h: Do not include <cmath>.
3699	* include/bits/uniform_int_dist.h (uniform_random_bit_generator):
3700	Move here.
3701	* include/std/ranges: Do not include <limits>.
3702	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
3703
3704	PR libstdc++/92546 (partial)
3705	* include/Makefile.am: Add new header.
3706	* include/Makefile.in: Regenerate.
3707	* include/bits/int_limits.h: New header.
3708	* include/bits/parse_numbers.h (__select_int::_Select_int): Replace
3709	numeric_limits with __detail::__int_limits.
3710	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
3711	(__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
3712	Likewise.
3713	* include/std/charconv (__to_chars_8, __from_chars_binary)
3714	(__from_chars_alpha_to_num, from_chars): Likewise.
3715	* include/std/memory_resource (polymorphic_allocator::allocate)
3716	(polymorphic_allocator::allocate_object): Likewise.
3717	* include/std/string_view (basic_string_view::_S_compare): Likewise.
3718	* include/std/utility (in_range): Likewise.
3719	* testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
3720	extra error about incomplete type __int_limits<bool>.
3721	* testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
3722	* testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
3723	* testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
3724	* testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
3725	* testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
3726	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
3727	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
3728	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
3729	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
3730	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
3731	* testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
3732	* testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
3733
3734	* python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
3735	value for partial_ordering::unordered.
3736
3737	* include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
3738	const-qualified expression variations.
3739	* include/std/concepts (copyable): Likewise.
3740
3741	* include/std/type_traits (__is_standard_integer): New helper trait.
3742	* include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
3743	(cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
3744	* include/std/version (__cpp_lib_integer_comparison_functions): Define.
3745	* testsuite/20_util/integer_comparisons/1.cc: New test.
3746	* testsuite/20_util/integer_comparisons/2.cc: New test.
3747	* testsuite/20_util/integer_comparisons/equal.cc: New test.
3748	* testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
3749	* testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
3750	* testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
3751	* testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
3752	* testsuite/20_util/integer_comparisons/in_range.cc: New test.
3753	* testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
3754	* testsuite/20_util/integer_comparisons/less.cc: New test.
3755	* testsuite/20_util/integer_comparisons/less_equal.cc: New test.
3756	* testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
3757	* testsuite/20_util/integer_comparisons/less_neg.cc: New test.
3758	* testsuite/20_util/integer_comparisons/not_equal.cc: New test.
3759	* testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
3760
37612020-02-16  Patrick Palka  <ppalka@redhat.com>
3762
3763	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
3764	Move code after an early exit constexpr if to under an else branch.
3765	* include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
3766
37672020-02-15  Patrick Palka  <ppalka@redhat.com>
3768
3769	* include/bits/ranges_algo.h: Adjust whitespace and formatting.
3770	* include/bits/ranges_algobase.h: Likewise.
3771	* include/bits/ranges_uninitialized.h: Likewise.
3772
3773	* include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
3774	binary_search, copy_if, count, count_if, equal_range, find, find_end,
3775	find_first_of, find_if, find_if_not, for_each, generate, generate_n,
3776	includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
3777	is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
3778	lower_bound, make_heap, max, max_element, merge, min, min_element,
3779	minmax, minmax_element, mismatch, next_permutation, none_of,
3780	nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
3781	partition_point, pop_heap, prev_permutation, push_heap, remove,
3782	remove_copy, remove_copy_if, remove_if, replace, replace_copy,
3783	replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
3784	search, search_n, set_difference, set_intersection,
3785	set_symmetric_difference, set_union, shuffle, sort, sort_heap,
3786	stable_partition, stable_sort, swap_ranges, transform, unique,
3787	unique_copy, upper_bound): Convert into function objects.
3788	* include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
3789	fill, move_backward, copy_backward): Likewise.
3790	* include/bits/ranges_uninitialized.h (uninitialized_default_construct,
3791	uninitialized_default_construct_n, uninitialized_value_construct,
3792	uninitialized_value_construct_n, uninitialized_copy,
3793	uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
3794	uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
3795	destroy, destroy_n): Likewise.
3796
3797	* include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
3798	(ranges::find_end): ... here.
3799	(ranges::__lexicographical_compare): Fold into ...
3800	(ranges::lexicographical_compare): ... here.
3801	* include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
3802	(ranges::equal): ... here.
3803
38042020-02-15  Jonathan Wakely  <jwakely@redhat.com>
3805
3806	* include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
3807	* include/std/deque: Likewise.
3808	* include/std/forward_list: Likewise.
3809	* include/std/list: Likewise.
3810	* include/std/string: Likewise.
3811	* include/std/vector: Likewise.
3812	* include/std/version: Likewise.
3813	* testsuite/23_containers/deque/erasure.cc: Test for new value.
3814	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
3815	* testsuite/23_containers/list/erasure.cc: Likewise.
3816	* testsuite/23_containers/map/erasure.cc: Likewise.
3817	* testsuite/23_containers/set/erasure.cc: Likewise.
3818	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
3819	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
3820	* testsuite/23_containers/vector/erasure.cc: Likewise.
3821
38222020-02-15  Jonathan Wakely  <jwakely@redhat.com>
3823
3824	* include/bits/random.h (uniform_random_bit_generator): Require min()
3825	and max() to be constant expressions and min() to be less than max().
3826	* testsuite/26_numerics/random/concept.cc: Check additional cases.
3827	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
3828
38292020-02-13  Patrick Palka  <ppalka@redhat.com>
3830
3831	* include/Makefile.am: Add <bits/ranges_uninitialized.h>.
3832	* include/Makefile.in: Regenerate.
3833	* include/bits/ranges_uninitialized.h: New header.
3834	* include/std/memory: Include it.
3835	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
3836	test.
3837	* .../uninitialized_copy/constrained.cc: New test.
3838	* .../uninitialized_default_construct/constrained.cc: New test.
3839	* .../uninitialized_fill/constrained.cc: New test.
3840	* .../uninitialized_move/constrained.cc: New test.
3841	* .../uninitialized_value_construct/constrained.cc: New test.
3842
3843	* include/Makefile.am: Add bits/ranges_algobase.h
3844	* include/Makefile.in: Regenerate.
3845	* bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
3846	existing #includes.
3847	(__detail::__is_normal_iterator, __detail::is_reverse_iterator,
3848	__detail::__is_move_iterator, copy_result, move_result,
3849	__equal, equal, copy_result, move_result, move_backward_result,
3850	copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
3851	move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
3852	fill): Split out into ...
3853	* bits/range_algobase.h: ... this new header.
3854
38552020-02-12  Patrick Palka  <ppalka@redhat.com>
3856
3857	LWG 3389 and LWG 3390
3858	* include/bits/stl_iterator.h (move_move_iterator): Use std::move when
3859	constructing the move_iterator with __i.
3860	(counted_iterator::counted_iterator): Use std::move when initializing
3861	M_current with __i.
3862	* testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
3863	* testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
3864
38652020-02-12  Sandra Loosemore  <sandra@codesourcery.com>
3866
3867	PR libstdc++/79193
3868	PR libstdc++/88999
3869
3870	* configure: Regenerated.
3871
38722020-02-12  François Dumont  <fdumont@gcc.gnu.org>
3873
3874	* include/bits/hashtable.h
3875	(_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
3876	missing std namespace qualification to forward call.
3877
38782020-02-09  Jonathan Wakely  <jwakely@redhat.com>
3879
3880	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
3881	comment.
3882	* testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
3883
3884	* include/std/ranges: Fix non-ASCII characters in comment.
3885
3886	* include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
3887	equality comparison to be valid and return bool.
3888	(__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
3889	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
3890	type with ambiguous conversion to fundamental types.
3891	* testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
3892
38932020-02-07  Jonathan Wakely  <jwakely@redhat.com>
3894
3895	* include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
3896	Use remove_cvref_t.
3897	(readable_traits): Rename to indirectly_readable_traits.
3898	(readable): Rename to indirectly_readable.
3899	(writable): Rename to indirectly_writable.
3900	(__detail::__iter_exchange_move): Do not use remove_reference_t.
3901	(indirectly_swappable): Adjust requires expression parameter types.
3902	expression.
3903	* include/bits/ranges_algo.h (ranges::transform, ranges::replace)
3904	(ranges::replace_if, ranges::generate_n, ranges::generate)
3905	(ranges::remove): Use new name for writable.
3906	* include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
3907	Use new name for readable.
3908	* include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
3909	new name for readable_traits.
3910	* testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
3911	* testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
3912	new definition of indirectly_readable.
3913
3914	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
3915	to take parameters of common_iterator, instead of the common_iterator
3916	type itself. Fix argument for __common_iter_has_arrow constraint.
3917	(iterator_traits<common_iterator<I, S>>::pointer): Adjust.
3918
39192020-02-07  Jonathan Wakely  <jwakely@redhat.com>
3920
3921	* include/std/ranges (iota_view): Add braces to prevent -Wempty-body
3922	warning.
3923	(basic_istream_view::_Iterator::operator++()): Add missing return.
3924
39252020-02-07  Patrick Palka  <ppalka@redhat.com>
3926
3927	* include/bits/ranges_algo.h: Remove extraneous &&.
3928
3929	* include/std/ranges (ranges::__detail::__stream_extractable,
3930	ranges::basic_istream_view, ranges::istream_view): Define.
3931	* testsuite/std/ranges/istream_view: New test.
3932
3933	Implement C++20 range adaptors
3934	* include/std/ranges: Include <bits/refwrap.h> and <tuple>.
3935	(subrange::_S_store_size): Mark as const instead of constexpr to
3936	avoid what seems to be a bug in GCC.
3937	(__detail::__box): Give it defaulted copy and move constructors.
3938	(ranges::views::_Single::operator()): Mark constexpr.
3939	(ranges::views::_Iota::operator()): Mark constexpr.
3940	(__detail::Empty): Define.
3941	(ranges::views::__closure::_RangeAdaptor,
3942	ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
3943	ranges::views::all, ranges::__detail::find_if,
3944	ranges::__detail::find_if_not, ranges::__detail::mismatch,
3945	ranges::detail::min, filter_view, ranges::views::filter, transform_view,
3946	ranges::views::transform, take_view, ranges::views::take,
3947	take_while_view, ranges::views::take_while, drop_view,
3948	ranges::views::drop, join_view, ranges::views::join,
3949	__detail::require_constant, __detail::tiny_range, split_view,
3950	ranges::views::split, ranges::views::_Counted, ranges::views::counted,
3951	common_view, ranges::views::common, reverse_view,
3952	ranges::views::reverse,
3953	ranges::views::__detail::__is_reversible_subrange,
3954	ranges::views::__detail::__is_reverse_view, reverse_view,
3955	ranges::views::reverse, __detail::__has_tuple_element, elements_view,
3956	ranges::views::elements, ranges::views::keys, ranges::views::values):
3957	Define.
3958	(views): Alias for ranges::views.
3959	(tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
3960	tuple_element<1, ranges::subrange>): New partial specializations.
3961	* testsuite/std/ranges/adaptors/all.cc: New test.
3962	* testsuite/std/ranges/adaptors/common.cc: Likewise.
3963	* testsuite/std/ranges/adaptors/counted.cc: Likewise.
3964	* testsuite/std/ranges/adaptors/drop.cc: Likewise.
3965	* testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
3966	* testsuite/std/ranges/adaptors/elements.cc: Likewise.
3967	* testsuite/std/ranges/adaptors/filter.cc: Likewise.
3968	* testsuite/std/ranges/adaptors/join.cc: Likewise.
3969	* testsuite/std/ranges/adaptors/reverse.cc: Likewise.
3970	* testsuite/std/ranges/adaptors/split.cc: Likewise.
3971	* testsuite/std/ranges/adaptors/take.cc: Likewise.
3972	* testsuite/std/ranges/adaptors/take_while.cc: Likewise.
3973	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
3974
39752020-02-07  Jonathan Wakely  <jwakely@redhat.com>
3976
3977	* libsupc++/compare (__cmp_cat::type): Define typedef for underlying
3978	type of enumerations and comparison category types.
3979	(__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
3980	(__cmp_cat::_Ncmp::unordered): Change value to 2.
3981	(partial_ordering::_M_value, weak_ordering::_M_value)
3982	(strong_ordering::_M_value): Change type to __cmp_cat::type.
3983	(partial_ordering::_M_is_ordered): Remove data member.
3984	(partial_ordering): Use second bit of _M_value for unordered. Adjust
3985	comparison operators.
3986	(weak_ordering::operator partial_ordering): Simplify to remove
3987	branches.
3988	(operator<=>(unspecified, weak_ordering)): Likewise.
3989	(strong_ordering::operator partial_ordering): Likewise.
3990	(strong_ordering::operator weak_ordering): Likewise.
3991	(operator<=>(unspecified, strong_ordering)): Likewise.
3992	* testsuite/18_support/comparisons/categories/partialord.cc: New test.
3993	* testsuite/18_support/comparisons/categories/strongord.cc: New test.
3994	* testsuite/18_support/comparisons/categories/weakord.cc: New test.
3995
3996	* include/std/ranges (iota_view::_Iterator): Fix typo in name of
3997	__cpp_lib_three_way_comparison macro and use deduced return type for
3998	operator<=>.
3999	* testsuite/std/ranges/iota/iterator.cc: New test.
4000
40012020-02-07  Patrick Palka  <ppalka@redhat.com>
4002	    Jonathan Wakely  <jwakely@redhat.com>
4003
4004	Implement C++20 constrained algorithms
4005	* include/Makefile.am: Add new header.
4006	* include/Makefile.in: Regenerate.
4007	* include/std/algorithm: Include <bits/ranges_algo.h>.
4008	* include/bits/ranges_algo.h: New file.
4009	* testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
4010	* testsuite/25_algorithms/all_of/constrained.cc: New test.
4011	* testsuite/25_algorithms/any_of/constrained.cc: New test.
4012	* testsuite/25_algorithms/binary_search/constrained.cc: New test.
4013	* testsuite/25_algorithms/copy/constrained.cc: New test.
4014	* testsuite/25_algorithms/copy_backward/constrained.cc: New test.
4015	* testsuite/25_algorithms/copy_if/constrained.cc: New test.
4016	* testsuite/25_algorithms/copy_n/constrained.cc: New test.
4017	* testsuite/25_algorithms/count/constrained.cc: New test.
4018	* testsuite/25_algorithms/count_if/constrained.cc: New test.
4019	* testsuite/25_algorithms/equal/constrained.cc: New test.
4020	* testsuite/25_algorithms/equal_range/constrained.cc: New test.
4021	* testsuite/25_algorithms/fill/constrained.cc: New test.
4022	* testsuite/25_algorithms/fill_n/constrained.cc: New test.
4023	* testsuite/25_algorithms/find/constrained.cc: New test.
4024	* testsuite/25_algorithms/find_end/constrained.cc: New test.
4025	* testsuite/25_algorithms/find_first_of/constrained.cc: New test.
4026	* testsuite/25_algorithms/find_if/constrained.cc: New test.
4027	* testsuite/25_algorithms/find_if_not/constrained.cc: New test.
4028	* testsuite/25_algorithms/for_each/constrained.cc: New test.
4029	* testsuite/25_algorithms/generate/constrained.cc: New test.
4030	* testsuite/25_algorithms/generate_n/constrained.cc: New test.
4031	* testsuite/25_algorithms/heap/constrained.cc: New test.
4032	* testsuite/25_algorithms/includes/constrained.cc: New test.
4033	* testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
4034	* testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
4035	* testsuite/25_algorithms/is_permutation/constrained.cc: New test.
4036	* testsuite/25_algorithms/is_sorted/constrained.cc: New test.
4037	* testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
4038	* testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
4039	test.
4040	* testsuite/25_algorithms/lower_bound/constrained.cc: New test.
4041	* testsuite/25_algorithms/max/constrained.cc: New test.
4042	* testsuite/25_algorithms/max_element/constrained.cc: New test.
4043	* testsuite/25_algorithms/merge/constrained.cc: New test.
4044	* testsuite/25_algorithms/min/constrained.cc: New test.
4045	* testsuite/25_algorithms/min_element/constrained.cc: New test.
4046	* testsuite/25_algorithms/minmax/constrained.cc: New test.
4047	* testsuite/25_algorithms/minmax_element/constrained.cc: New test.
4048	* testsuite/25_algorithms/mismatch/constrained.cc: New test.
4049	* testsuite/25_algorithms/move/constrained.cc: New test.
4050	* testsuite/25_algorithms/move_backward/constrained.cc: New test.
4051	* testsuite/25_algorithms/next_permutation/constrained.cc: New test.
4052	* testsuite/25_algorithms/none_of/constrained.cc: New test.
4053	* testsuite/25_algorithms/nth_element/constrained.cc: New test.
4054	* testsuite/25_algorithms/partial_sort/constrained.cc: New test.
4055	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
4056	* testsuite/25_algorithms/partition/constrained.cc: New test.
4057	* testsuite/25_algorithms/partition_copy/constrained.cc: New test.
4058	* testsuite/25_algorithms/partition_point/constrained.cc: New test.
4059	* testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
4060	* testsuite/25_algorithms/remove/constrained.cc: New test.
4061	* testsuite/25_algorithms/remove_copy/constrained.cc: New test.
4062	* testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
4063	* testsuite/25_algorithms/remove_if/constrained.cc: New test.
4064	* testsuite/25_algorithms/replace/constrained.cc: New test.
4065	* testsuite/25_algorithms/replace_copy/constrained.cc: New test.
4066	* testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
4067	* testsuite/25_algorithms/replace_if/constrained.cc: New test.
4068	* testsuite/25_algorithms/reverse/constrained.cc: New test.
4069	* testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
4070	* testsuite/25_algorithms/rotate/constrained.cc: New test.
4071	* testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
4072	* testsuite/25_algorithms/search/constrained.cc: New test.
4073	* testsuite/25_algorithms/search_n/constrained.cc: New test.
4074	* testsuite/25_algorithms/set_difference/constrained.cc: New test.
4075	* testsuite/25_algorithms/set_intersection/constrained.cc: New test.
4076	* testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
4077	test.
4078	* testsuite/25_algorithms/set_union/constrained.cc: New test.
4079	* testsuite/25_algorithms/shuffle/constrained.cc: New test.
4080	* testsuite/25_algorithms/sort/constrained.cc: New test.
4081	* testsuite/25_algorithms/stable_partition/constrained.cc: New test.
4082	* testsuite/25_algorithms/stable_sort/constrained.cc: New test.
4083	* testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
4084	* testsuite/25_algorithms/transform/constrained.cc: New test.
4085	* testsuite/25_algorithms/unique/constrained.cc: New test.
4086	* testsuite/25_algorithms/unique_copy/constrained.cc: New test.
4087	* testsuite/25_algorithms/upper_bound/constrained.cc: New test.
4088
40892020-02-06  Jonathan Wakely  <jwakely@redhat.com>
4090
4091	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
4092	number in comment. Fix indentation.
4093
4094	* include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
4095	redundant _GLIBCXX20_CONSTEXPR.
4096
4097	* include/std/ranges (viewable_range): Replace decay_t with
4098	remove_cvref_t (LWG 3375).
4099
41002020-02-05  Jonathan Wakely  <jwakely@redhat.com>
4101
4102	* include/bits/iterator_concepts.h (iter_reference_t)
4103	(iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
4104	Remove workarounds for PR c++/67704.
4105	* testsuite/24_iterators/aliases.cc: New test.
4106
41072020-02-05  Patrick Palka  <ppalka@redhat.com>
4108
4109	* include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
4110	when initializing _M_current.
4111	(move_iterator::base): Split into two overloads differing in
4112	ref-qualifiers as in P1207R4 for C++20.
4113
41142020-02-04  Jonathan Wakely  <jwakely@redhat.com>
4115
4116	* include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
4117	use.
4118
4119	PR libstdc++/93562
4120	* include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
4121	(unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
4122	* testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
4123
41242020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
4125
4126	* configure: Regenerate.
4127
41282020-01-31  Patrick Palka  <ppalka@redhat.com>
4129
4130	* testsuite/24_iterators/range_operations/distance.cc: Do not assume
4131	test_range::end() returns the same type as test_range::begin().
4132	* testsuite/24_iterators/range_operations/next.cc: Likewise.
4133	* testsuite/24_iterators/range_operations/prev.cc: Likewise.
4134	* testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
4135	Always return a sentinel<I>.
4136
41372020-01-29  Jonathan Wakely  <jwakely@redhat.com>
4138
4139	PR libstdc++/92895
4140	* include/std/stop_token (stop_token::stop_possible()): Call new
4141	_M_stop_possible() function.
4142	(stop_token::stop_requested()): Do not use stop_possible().
4143	(stop_token::binary_semaphore): New class, as temporary stand-in for
4144	std::binary_semaphore.
4145	(stop_token::_Stop_cb::_M_callback): Add noexcept to type.
4146	(stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
4147	New data members for symchronization with stop_callback destruction.
4148	(stop_token::_Stop_cb::_Stop_cb): Make non-template.
4149	(stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
4150	Remove.
4151	(stop_token::_Stop_cb::_M_run): New member function.
4152	(stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
4153	Remove.
4154	(stop_token::_Stop_state::_M_owners): New data member to track
4155	reference count for ownership.
4156	(stop_token::_Stop_state::_M_value): New data member combining a
4157	spinlock, the stop requested flag, and the reference count for
4158	associated stop_source objects.
4159	(stop_token::_Stop_state::_M_requester): New data member for
4160	synchronization with stop_callback destruction.
4161	(stop_token::_Stop_state::_M_stop_possible()): New member function.
4162	(stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
4163	of _M_value.
4164	(stop_token::_Stop_state::_M_add_owner)
4165	(stop_token::_Stop_state::_M_release_ownership)
4166	(stop_token::_Stop_state::_M_add_ssrc)
4167	(stop_token::_Stop_state::_M_sub_ssrc): New member functions for
4168	updating reference counts.
4169	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
4170	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
4171	(stop_token::_Stop_state::_M_try_lock)
4172	(stop_token::_Stop_state::_M_try_lock_and_stop)
4173	(stop_token::_Stop_state::_M_do_try_lock): New member functions for
4174	managing spinlock.
4175	(stop_token::_Stop_state::_M_request_stop): Use atomic operations to
4176	read and update state. Release lock while running callbacks. Use new
4177	data members to synchronize with callback destruction.
4178	(stop_token::_Stop_state::_M_remove_callback): Likewise.
4179	(stop_token::_Stop_state::_M_register_callback): Use atomic operations
4180	to read and update state.
4181	(stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
4182	replacing shared_ptr.
4183	(stop_source::stop_source(const stop_source&)): Update reference count.
4184	(stop_source::operator=(const stop_source&)): Likewise.
4185	(stop_source::~stop_source()): Likewise.
4186	(stop_source::stop_source(stop_source&&)): Define as defaulted.
4187	(stop_source::operator=(stop_source&&)): Establish postcondition on
4188	parameter.
4189	(stop_callback): Enforce preconditions on template parameter. Replace
4190	base class with data member of new _Cb_impl type.
4191	(stop_callback::stop_callback(const stop_token&, Cb&&))
4192	(stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
4193	(stop_callback::_Cb_impl): New type wrapping _Callback member and
4194	defining the _S_execute member function.
4195	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
4196	test.
4197	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
4198	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
4199	* testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
4200	New test.
4201	* testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
4202	test.
4203	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
4204	* testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
4205	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
4206	test.
4207
4208	* libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
4209	three_way_comparable_with.
4210	(__detail::__3way_cmp_with): Remove workaround for fixed bug.
4211	(compare_three_way::operator()): Remove redundant constraint from
4212	requires-clause.
4213	(__detail::_Synth3way::operator()): Use three_way_comparable_with
4214	instead of workaround.
4215	* testsuite/18_support/comparisons/object/93479.cc: Prune extra
4216	output due to simplified constraints on compare_three_way::operator().
4217
4218	PR libstdc++/93479
4219	* libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
4220	* testsuite/18_support/comparisons/object/93479.cc: New test.
4221
4222	* testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
4223	returns the same type as test_range::begin(). Add comments.
4224	* testsuite/std/ranges/access/rbegin.cc: Likewise.
4225	* testsuite/std/ranges/access/rend.cc: Likewise.
4226	* testsuite/std/ranges/range.cc: Do not assume the sentinel for
4227	test_range is the same as its iterator type.
4228	* testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
4229	operator- overloads to satisfy sized_sentinel_for when the iterator
4230	satisfies random_access_iterator.
4231
42322020-01-28  Jonathan Wakely  <jwakely@redhat.com>
4233
4234	PR libstdc++/93470
4235	* include/bits/refwrap.h (reference_wrapper::operator()): Restrict
4236	static assertion to object types.
4237
4238	PR libstdc++/93325
4239	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
4240	clock_gettime instead of explicit glibc version check.
4241	* configure: Regenerate.
4242
42432020-01-28  Martin Liska  <mliska@suse.cz>
4244
4245	PR libstdc++/93478
4246	* include/std/atomic: Fix typo.
4247	* include/std/optional: Likewise.
4248
42492020-01-27  Andrew Burgess  <andrew.burgess@embecosm.com>
4250
4251	* configure: Regenerate.
4252
42532020-01-27  Jonathan Wakely  <jwakely@redhat.com>
4254
4255	PR libstdc++/93426
4256	* include/std/span (span): Fix deduction guide.
4257	* testsuite/23_containers/span/deduction.cc: New test.
4258
42592020-01-24  Jonathan Wakely  <jwakely@redhat.com>
4260
4261	* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
4262	(__cmp_cat::_Ord::equivalent): Add enumerator.
4263	(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
4264	and greater.
4265	(partial_ordering, weak_ordering, strong_ordering): Remove
4266	constructors taking __cmp_cat::_Eq parameters. Use renamed
4267	enumerators.
4268
42692020-01-24  Maciej W. Rozycki  <macro@wdc.com>
4270
4271	* acinclude.m4: Handle `--with-toolexeclibdir='.
4272	* Makefile.in: Regenerate.
4273	* aclocal.m4: Regenerate.
4274	* configure: Regenerate.
4275	* doc/Makefile.in: Regenerate.
4276	* include/Makefile.in: Regenerate.
4277	* libsupc++/Makefile.in: Regenerate.
4278	* po/Makefile.in: Regenerate.
4279	* python/Makefile.in: Regenerate.
4280	* src/Makefile.in: Regenerate.
4281	* src/c++11/Makefile.in: Regenerate.
4282	* src/c++17/Makefile.in: Regenerate.
4283	* src/c++98/Makefile.in: Regenerate.
4284	* src/filesystem/Makefile.in: Regenerate.
4285	* testsuite/Makefile.in: Regenerate.
4286
42872020-01-23  Alexandre Oliva <oliva@adacore.com>
4288
4289	* crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
4290	* configure: Rebuild.
4291
4292	* testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
4293
42942020-01-23  Jonathan Wakely  <jwakely@redhat.com>
4295
4296	PR libstdc++/91947
4297	* include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
4298	rule.
4299	* include/Makefile.in: Regenerate.
4300
43012020-01-20  Jonathan Wakely  <jwakely@redhat.com>
4302
4303	* doc/xml/faq.xml: Fix grammar.
4304	* doc/xml/manual/appendix_contributing.xml: Improve instructions.
4305	* doc/xml/manual/spine.xml: Update copyright years.
4306	* doc/html/*: Regenerate.
4307
43082020-01-19  Eric S. Raymond <esr@thyrsus.com>
4309
4310	* doc/xml/faq.xml: Update for SVN -> Git transition.
4311	* doc/xml/manual/appendix_contributing.xml: Likewise.
4312	* doc/xml/manual/status_cxx1998.xml: Likewise.
4313	* doc/xml/manual/status_cxx2011.xml: Likewise.
4314	* doc/xml/manual/status_cxx2014.xml: Likewise.
4315	* doc/xml/manual/status_cxx2017.xml: Likewise.
4316	* doc/xml/manual/status_cxx2020.xml: Likewise.
4317	* doc/xml/manual/status_cxxtr1.xml: Likewise.
4318	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
4319
43202020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
4321
4322	* include/Makefile.am: Add coroutine to the std set.
4323	* include/Makefile.in: Regenerated.
4324	* include/std/coroutine: New file.
4325
43262020-01-17  Jonathan Wakely  <jwakely@redhat.com>
4327
4328	PR libstdc++/92376
4329	* include/bits/c++config: Only do PSTL config when the header is
4330	present, to fix freestanding.
4331	* libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
4332	functions if they were detected by configure.
4333
43342020-01-16  Kai-Uwe Eckhardt  <kuehro@gmx.de>
4335	    Matthew Bauer  <mjbauer95@gmail.com>
4336	    Jonathan Wakely  <jwakely@redhat.com>
4337
4338	PR bootstrap/64271 (partial)
4339	* config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
4340	to unsigned short.
4341	(ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
4342	(ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
4343	definitions with NetBSD upstream.
4344	(ctype_base::blank): Use _CTYPE_BL.
4345	* config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
4346	Declaration.
4347	(ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
4348	(ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
4349	parameters to unsigned char.
4350	* config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
4351
43522020-01-16  François Dumont  <fdumont@gcc.gnu.org>
4353
4354	PR libstdc++/91263
4355	* include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
4356	* include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
4357	(_Equality_base): Remove.
4358	(_Equality<>::_M_equal): Review implementation. Use
4359	std::is_permutation.
4360	* testsuite/23_containers/unordered_multiset/operators/1.cc
4361	(Hash, Equal, test02, test03): New.
4362	* testsuite/23_containers/unordered_set/operators/1.cc
4363	(Hash, Equal, test02, test03): New.
4364
43652020-01-15  Jonathan Wakely  <jwakely@redhat.com>
4366
4367	PR libstdc++/93267
4368	* include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
4369	Move here from <bits/range_access.h> and define using __int128 when
4370	available.
4371	(__is_integer_like, __is_signed_integer_like): Move here from
4372	<bits/range_access.h>.
4373	(weakly_incrementable): Use __is_signed_integer_like.
4374	* include/bits/range_access.h (__max_diff_type, __max_size_type)
4375	(__is_integer_like, __is_signed_integer_like): Move to
4376	<bits/iterator_concepts.h>.
4377	(__make_unsigned_like_t): Move here from <ranges>.
4378	* include/std/ranges (__make_unsigned_like_t): Move to
4379	<bits/range_access.h>.
4380	(iota_view): Replace using-directive with using-declarations.
4381	* testsuite/std/ranges/iota/93267.cc: New test.
4382	* testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
4383
43842020-01-13  Jonathan Wakely  <jwakely@redhat.com>
4385
4386	PR libstdc++/93244
4387	* include/bits/fs_path.h (path::generic_string<C,A>)
4388	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
4389	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
4390	root-dir is converted to forward slash in generic pathname.
4391	* testsuite/27_io/filesystem/path/generic/utf.cc: New test.
4392	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
4393
4394	PR libstdc++/58605
4395	* include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
4396	Define.
4397	(__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
4398	(__atomic_float): Add default member initializer for C++20.
4399	* include/std/atomic (atomic): Likewise.
4400	(atomic::atomic()): Remove noexcept-specifier on default constructor.
4401	* include/std/version (__cpp_lib_atomic_value_initialization): Define.
4402	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
4403	number.
4404	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
4405	* testsuite/29_atomics/atomic/cons/value_init.cc: New test.
4406	* testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
4407	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
4408	expected result for is_trivially_default_constructible.
4409	* testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
4410	* testsuite/29_atomics/atomic_float/value_init.cc: New test.
4411	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
4412	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
4413	* testsuite/29_atomics/atomic_integral/cons/value_init.cc
4414	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
4415	expected results for is_trivially_default_constructible.
4416	* testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
4417	new test generator.
4418
44192020-01-10  Jonathan Wakely  <jwakely@redhat.com>
4420
4421	* testsuite/util/testsuite_iterators.h: Improve comment.
4422
4423	* testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
4424	initialization syntax.
4425
4426	PR libstdc++/92285
4427	* include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
4428	of base class independent of __cplusplus value.
4429	[__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
4430	type defined in the base class
4431	* testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
4432	* testsuite/24_iterators/istreambuf_iterator/requirements/
4433	base_classes.cc: Adjust expected base class for C++98.
4434
44352020-01-09  Olivier Hainque  <hainque@adacore.com>
4436
4437	* doc/xml/manual/appendix_contributing.xml: Document _C2
4438	as a reserved identifier, by VxWorks.
4439	* include/bits/stl_map.h: Rename _C2 template typenames	as _Cmp2.
4440	* include/bits/stl_multimap.h: Likewise.
4441
44422020-01-09  Jonathan Wakely  <jwakely@redhat.com>
4443
4444	* include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
4445	(_ExtPtr_allocator::operator!=): Add missing const qualifiers.
4446	* include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
4447	partial specialization to disambiguate the two constrained
4448	specializations.
4449
4450	* include/experimental/type_traits (experimental::is_pod_v): Disable
4451	-Wdeprecated-declarations warnings around reference to std::is_pod.
4452	* include/std/type_traits (is_pod_v): Likewise.
4453	* testsuite/18_support/max_align_t/requirements/2.cc: Also check
4454	is_standard_layout and is_trivial. Do not check is_pod for C++20.
4455	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
4456	Add -Wno-deprecated for C++20.
4457	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
4458	* testsuite/20_util/is_pod/value.cc: Likewise.
4459	* testsuite/experimental/type_traits/value.cc: Likewise.
4460
44612020-01-09  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
4462
4463	* include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
4464	* include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
4465	* testuite/20_util/is_pod/deprecated-2a.cc: New test.
4466
44672020-01-09  Jonathan Wakely  <jwakely@redhat.com>
4468
4469	PR libstdc++/93205
4470	* include/bits/random.h (operator>>): Check stream operation succeeds.
4471	* include/bits/random.tcc (operator<<): Remove redundant __ostream_type
4472	typedefs.
4473	(operator>>): Remove redundant __istream_type typedefs. Check stream
4474	operations succeed.
4475	(__extract_params): New function to fill a vector from a stream.
4476	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
4477
4478	PR libstdc++/93208
4479	* config/abi/pre/gnu.ver: Add new exports.
4480	* include/std/memory_resource (memory_resource::~memory_resource()):
4481	Do not define inline.
4482	(monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
4483	* src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
4484	Define.
4485	(monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
4486	* testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
4487
44882020-01-09  François Dumont  <fdumont@gcc.gnu.org>
4489
4490	PR libstdc++/92124
4491	* include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
4492	template alias.
4493	(_Hashtable<>::__fwd_value_for): New.
4494	(_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
4495	parameter.
4496	(_Hashtable<>::_M_assign<>): Add _Ht template parameter.
4497	(_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
4498	(_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
4499	with std::move.
4500	(_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
4501	(_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
4502	Adapt.
4503	(_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
4504	Adapt.
4505	* testsuite/23_containers/unordered_set/92124.cc: New.
4506
45072020-01-08  Jonathan Wakely  <jwakely@redhat.com>
4508
4509	PR libstdc++/93201
4510	* src/c++17/fs_ops.cc (do_remove_all): New function implementing more
4511	detailed error reporting for remove_all. Check result of recursive
4512	call before incrementing iterator.
4513	(remove_all(const path&), remove_all(const path&, error_code&)): Use
4514	do_remove_all.
4515	* src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
4516	result of recursive call before incrementing iterator.
4517	* testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
4518	are reported correctly.
4519	* testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
4520
45212020-01-07  Thomas Rodgers  <trodgers@redhat.com>
4522
4523	* include/std/condition_variable
4524	(condition_variable_any::wait_on): Rename to match current draft
4525	standard.
4526	(condition_variable_any::wait_on_until): Likewise.
4527	(condition_variable_any::wait_on_for): Likewise.
4528	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
4529	Adjust tests to account for renamed methods.
4530
45312020-01-07  François Dumont  <fdumont@gcc.gnu.org>
4532
4533	PR libstdc++/92124
4534	* include/bits/stl_tree.h
4535	(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
4536	std::move_if_noexcept by std::move.
4537	* testsuite/23_containers/map/92124.cc: New.
4538	* testsuite/23_containers/set/92124.cc: New.
4539
45402020-01-06  Jonathan Wakely  <jwakely@redhat.com>
4541
4542	* include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
4543	(stop_source): Likewise (LWG 3362).
4544	* testsuite/30_threads/stop_token/stop_source.cc: Test equality
4545	comparisons.
4546
4547	* include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
4548	(lexicographical_compare_three_way): Do not depend on
4549	__cpp_lib_concepts.
4550	* include/std/version (__cpp_lib_three_way_comparison): Only define
4551	when __cpp_lib_concepts is defined.
4552	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
4553
45542020-01-03  Jonathan Wakely  <jwakely@redhat.com>
4555
4556	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
4557	Only define four-argument overload when __cpp_lib_concepts is defined.
4558
45592020-01-01  John David Anglin  <danglin@gcc.gnu.org>
4560
4561	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
4562
45632020-01-01  Jakub Jelinek  <jakub@redhat.com>
4564
4565	Update copyright years.
4566
4567Copyright (C) 2020 Free Software Foundation, Inc.
4568
4569Copying and distribution of this file, with or without modification,
4570are permitted in any medium without royalty provided the copyright
4571notice and this notice are preserved.
4572