12020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>
2
3	* doc/xml/manual/abi.xml: Update link to Arm ABI.
4	* doc/html/manual/abi.html: Regenerate.
5
62020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>
7
8	* doc/xml/manual/debug.xml: Move Valgrind references to https.
9	* doc/html/manual/debug.html: Regenerate.
10
112020-12-26  Gerald Pfeifer  <gerald@pfeifer.com>
12
13	* doc/xml/manual/abi.xml: Update link to Intel's compatibility
14	with GNU compilers document.
15	* doc/html/manual/abi.html: Regenerate.
16
172020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>
18
19	* doc/xml/manual/messages.xml: Update link to Java docs.
20	* doc/html/manual/facets.html: Ditto.
21
222020-12-25  Gerald Pfeifer  <gerald@pfeifer.com>
23
24	* doc/xml/manual/documentation_hacking.xml: Convert three links
25	to doxygen.nl to https.
26	* doc/html/manual/documentation_hacking.html: Regenerate.
27
282020-12-23  Olivier Hainque  <hainque@adacore.com>
29
30	* testsuite/17_intro/names.cc: Account for VxWorks headers.
31
322020-12-21  Patrick Palka  <ppalka@redhat.com>
33
34	* include/bits/c++config (_GLIBCXX_FLOAT_IS_IEEE_BINARY_32):
35	Define this macro.
36	(_GLIBCXX_DOUBLE_IS_IEEE_BINARY_64): Likewise.
37	* include/std/charconv (to_chars): Use these macros to
38	conditionally hide the overloads for floating-point types.
39	* src/c++17/floating_to_chars.cc: Use the macros to
40	conditionally disable this file.
41	(floating_type_traits<float>): Remove redundant static assert.
42	(floating_type_traits<double>): Likewise.
43	* testsuite/20_util/to_chars/double.cc: Run this test only on
44	ieee-floats effective targets.
45	* testsuite/20_util/to_chars/float.cc: Likewise.
46	* testsuite/20_util/to_chars/long_double.cc: Likewise.
47	* testsuite/lib/libstdc++.exp
48	(check_effective_target_ieee-floats): Define new proc for
49	detecting whether float and double have the IEEE binary32 and
50	binary64 formats.
51
522020-12-20  Jonathan Wakely  <jwakely@redhat.com>
53
54	* include/std/semaphore: Fix indentation.
55
562020-12-18  Patrick Palka  <ppalka@redhat.com>
57
58	PR libstdc++/98377
59	* src/c++17/floating_to_chars.cc (__floating_to_chars_precision):
60	Fix mistake.
61
622020-12-18  Patrick Palka  <ppalka@redhat.com>
63
64	PR libstdc++/98370
65	* src/c++17/floating_to_chars.cc (__floating_to_chars_shortest):
66	Provide explicit template arguments to the call to std::max.
67
682020-12-18  Patrick Palka  <ppalka@redhat.com>
69
70	PR libstdc++/98374
71	* src/c++17/floating_to_chars.cc: Guard include of <langinfo.h>
72	with __has_include.
73	(__floating_to_chars_precision) [!defined(RADIXCHAR)]: Don't
74	attempt to obtain the radix character of the current locale,
75	just assume it's '.'.
76
772020-12-18  Patrick Palka  <ppalka@redhat.com>
78
79	* src/c++17/floating_from_chars.cc (from_chars_impl)
80	[!defined(FE_TONEAREST)]: Don't adjust the rounding mode.
81	* src/c++17/floating_to_chars.cc (__floating_to_chars_precision):
82	Likewise.
83
842020-12-18  Patrick Palka  <ppalka@redhat.com>
85
86	* testsuite/20_util/to_chars/double.cc: New test, consisting of
87	testcases imported from the MSVC STL testsuite.
88	* testsuite/20_util/to_chars/float.cc: Likewise.
89
902020-12-18  Patrick Palka  <ppalka@redhat.com>
91
92	* config/abi/pre/gnu.ver: Add new exports.
93	* include/std/charconv (to_chars): Declare the floating-point
94	overloads for float, double and long double.
95	* src/c++17/Makefile.am (sources): Add floating_to_chars.cc.
96	* src/c++17/Makefile.in: Regenerate.
97	* src/c++17/floating_to_chars.cc: New file.
98	(to_chars): Define for float, double and long double.
99	* testsuite/20_util/to_chars/long_double.cc: New test.
100
1012020-12-18  Patrick Palka  <ppalka@redhat.com>
102
103	* src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c,
104	src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c,
105	src/c++17/ryu/d2s_intrinsics.h, src/c++17/ryu/f2s.c,
106	src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c:
107	Apply local modifications.
108
1092020-12-18  Patrick Palka  <ppalka@redhat.com>
110
111	* src/c++17/ryu/MERGE: New file.
112	* src/c++17/ryu/common.h, src/c++17/ryu/d2fixed.c,
113	src/c++17/ryu/d2fixed_full_table.h, src/c++17/ryu/d2s.c,
114	src/c++17/ryu/d2s_full_table.h, src/c++17/ryu/d2s_intrinsics.h,
115	src/c++17/ryu/digit_table.h, src/c++17/ryu/f2s.c,
116	src/c++17/ryu/f2s_intrinsics.h, src/c++17/ryu/generic_128.c,
117	src/c++17/ryu/generic_128.h, src/c++17/ryu/ryu_generic_128.h:
118	Import these files from the Ryu library.
119
1202020-12-17  Jonathan Wakely  <jwakely@redhat.com>
121
122	* config/os/djgpp/error_constants.h: Test POSIX errno macros
123	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
124	* config/os/mingw32-w64/error_constants.h: Likewise.
125	* config/os/mingw32/error_constants.h: Likewise.
126
1272020-12-17  Jonathan Wakely  <jwakely@redhat.com>
128
129	* testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed):
130	Fix condition for _GTHREAD_USE_MUTEX_TIMEDLOCK test.
131
1322020-12-17  Jonathan Wakely  <jwakely@redhat.com>
133
134	* src/c++11/mutex.cc (std::once_flag::_M_finish): Add
135	maybe_unused attribute to variable used in assertion.
136
1372020-12-17  Jonathan Wakely  <jwakely@redhat.com>
138
139	PR libstdc++/98344
140	* include/bits/semaphore_base.h: Fix preprocessor condition.
141
1422020-12-17  Jonathan Wakely  <jwakely@redhat.com>
143
144	* include/bits/std_thread.h (hash<thread::id>): Move here,
145	from ...
146	* include/std/thread (hash<thread::id>): ... here.
147
1482020-12-17  Jonathan Wakely  <jwakely@redhat.com>
149
150	* config.h.in: Regenerate.
151	* configure: Regenerate.
152
1532020-12-16  Jonathan Wakely  <jwakely@redhat.com>
154
155	* Makefile.in: Regenerate.
156	* config.h.in: Regenerate.
157	* config/abi/pre/gnu.ver: Make patterns less greedy.
158	* config/os/gnu-linux/ldbl-ieee128-extra.ver: New file with patterns
159	for IEEE128 long double symbols.
160	* configure: Regenerate.
161	* configure.ac: Enable alternative 128-bit long double format on
162	powerpc64*-*-linux*.
163	* doc/Makefile.in: Regenerate.
164	* fragment.am: Regenerate.
165	* include/Makefile.am: Set _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT.
166	* include/Makefile.in: Regenerate.
167	* include/bits/c++config: Define inline namespace for new long
168	double symbols. Don't define _GLIBCXX_USE_FLOAT128 when it's the
169	same type as long double.
170	* include/bits/locale_classes.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
171	(locale::_Impl::_M_init_extra_ldbl128): Declare new member function.
172	* include/bits/locale_facets.h (_GLIBCXX_NUM_FACETS): Simplify by
173	only counting narrow character facets.
174	(_GLIBCXX_NUM_CXX11_FACETS): Likewise.
175	(_GLIBCXX_NUM_LBDL_ALT128_FACETS): New.
176	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT] (num_get::__do_get): Define
177	vtable placeholder for __ibm128 long double type.
178	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
179	(num_get::__do_get): Declare vtable placeholder for __ibm128 long
180	double type.
181	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
182	(num_put::__do_put): Likewise.
183	* include/bits/locale_facets.tcc
184	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
185	(num_get::__do_get, num_put::__do_put): Define.
186	* include/bits/locale_facets_nonio.h
187	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
188	(money_get::__do_get): Declare vtable placeholder for __ibm128 long
189	double type.
190	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
191	(money_put::__do_put): Likewise.
192	* include/bits/locale_facets_nonio.tcc
193	[_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT && __LONG_DOUBLE_IEEE128__]
194	(money_get::__do_get, money_put::__do_put): Define.
195	* include/ext/numeric_traits.h [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]
196	(__numeric_traits<__ibm128>, __numeric_traits<__ieee128>): Define.
197	* libsupc++/Makefile.in: Regenerate.
198	* po/Makefile.in: Regenerate.
199	* python/Makefile.in: Regenerate.
200	* src/Makefile.am: Add compatibility-ldbl-alt128.cc and
201	compatibility-ldbl-alt128-cxx11.cc sources and recipes for objects.
202	* src/Makefile.in: Regenerate.
203	* src/c++11/Makefile.in: Regenerate.
204	* src/c++11/compatibility-ldbl-alt128-cxx11.cc: New file defining
205	symbols using the old 128-bit long double format, for the cxx11 ABI.
206	* src/c++11/compatibility-ldbl-alt128.cc: Likewise, for the
207	gcc4-compatible ABI.
208	* src/c++11/compatibility-ldbl-facets-aliases.h: New header for long
209	double compat aliases.
210	* src/c++11/cow-locale_init.cc: Add comment.
211	* src/c++11/cxx11-locale-inst.cc: Define C and C_is_char
212	unconditionally.
213	* src/c++11/cxx11-wlocale-inst.cc: Add sanity check. Include
214	locale-inst.cc directly, not via cxx11-locale-inst.cc.
215	* src/c++11/locale-inst-monetary.h: New header for monetary
216	category instantiations.
217	* src/c++11/locale-inst-numeric.h: New header for numeric category
218	instantiations.
219	* src/c++11/locale-inst.cc: Include new headers for monetary,
220	numeric, and long double definitions.
221	* src/c++11/wlocale-inst.cc: Remove long double compat aliases that
222	are defined in new header now.
223	* src/c++17/Makefile.am: Use -mabi=ibmlongdouble for
224	floating_from_chars.cc.
225	* src/c++17/Makefile.in: Regenerate.
226	* src/c++17/floating_from_chars.cc (from_chars_impl): Add
227	if-constexpr branch for __ieee128.
228	(from_chars): Overload for __ieee128.
229	* src/c++20/Makefile.in: Regenerate.
230	* src/c++98/Makefile.in: Regenerate.
231	* src/c++98/locale_init.cc (num_facets): Adjust calculation.
232	(locale::_Impl::_Impl(size_t)): Call _M_init_extra_ldbl128.
233	* src/c++98/localename.cc (num_facets): Adjust calculation.
234	(locale::_Impl::_Impl(const char*, size_t)): Call
235	_M_init_extra_ldbl128.
236	* src/filesystem/Makefile.in: Regenerate.
237	* testsuite/Makefile.in: Regenerate.
238	* testsuite/util/testsuite_abi.cc: Add new symbol versions.
239	Allow new symbols to be added to GLIBCXX_IEEE128_3.4.29 and
240	CXXABI_IEEE128_1.3.13 too.
241	* testsuite/26_numerics/complex/abi_tag.cc: Add u9__ieee128 to
242	regex matching expected symbols.
243
2442020-12-16  Jonathan Wakely  <jwakely@redhat.com>
245
246	* include/std/utility: Use __has_builtin without checking if
247	it's defined.
248
2492020-12-16  Jonathan Wakely  <jwakely@redhat.com>
250
251	* include/bits/c++config: Warn if __STRICT_ANSI__ state is
252	inconsistent with __GLIBCXX_TYPE_INT_N_0.
253
2542020-12-16  Jonathan Wakely  <jwakely@redhat.com>
255
256	PR libstdc++/96083
257	* include/ext/throw_allocator.h: Use __has_builtin to check for
258	__builtin_sprintf support, and use std::sprintf if necessary.
259
2602020-12-16  Jonathan Wakely  <jwakely@redhat.com>
261
262	PR libstdc++/98319
263	* include/experimental/random: Only define contents for C++14
264	and later.
265	* include/experimental/source_location: Likewise.
266	* include/experimental/utility: Likewise.
267	* testsuite/experimental/feat-lib-fund.cc: Include all LFTS
268	headers that are present. Allow test to run for all modes.
269
2702020-12-16  Jonathan Wakely  <jwakely@redhat.com>
271
272	PR libstdc++/46447
273	* testsuite/performance/29_atomics/atomic_flag.cc: New test.
274
2752020-12-16  Jonathan Wakely  <jwakely@redhat.com>
276
277	PR libstdc++/93151
278	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove.
279	* configure.ac: Regenerate.
280	* config/os/generic/error_constants.h: Test POSIX errno macros
281	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
282	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
283	Likewise.
284	* testsuite/19_diagnostics/headers/system_error/93151.cc: New
285	test.
286
2872020-12-15  Jonathan Wakely  <jwakely@redhat.com>
288
289	Revert:
290	2020-12-15  Jonathan Wakely  <jwakely@redhat.com>
291
292	PR libstdc++/98108
293	* include/std/iostream (__ioinit): Add init_priority attribute.
294
2952020-12-15  Keith Packard  <keithp@keithp.com>
296
297	* acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Allow "stdio_pure"
298	option and define _GLIBCXX_USE_PURE_STDIO when it is used. Also
299	add "stdio_posix" option as an alias for "stdio".
300	* config/io/basic_file_stdio.cc [_GLIBCXX_USE_PURE_STDIO]: Only
301	use defined stdio entry points for all I/O operations, without
302	direct calls to underlying POSIX functions.
303	* config.h.in: Regenerate.
304	* configure: Regenerate.
305
3062020-12-15  Ville Voutilainen  <ville.voutilainen@gmail.com>
307
308	* testsuite/27_io/rvalue_streams.cc: Run the extraction to a char*
309	for C++17 and lower only.
310
3112020-12-15  Jonathan Wakely  <jwakely@redhat.com>
312
313	* testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
314	Add dg-timeout-factor directive.
315	* testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc:
316	Increase timeout factor from 2.0 to 3.0.
317	* testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc:
318	Likewise.
319	* testsuite/lib/libstdc++.exp (check_effective_target_debug-mode):
320	Define "debug-mode" as an effective-target keyword.
321
3222020-12-15  Jonathan Wakely  <jwakely@redhat.com>
323
324	* include/bits/c++config (__glibcxx_assert_1): Define as empty
325	for C++11.
326
3272020-12-15  Marius Hillenbrand  <mhillen@linux.ibm.com>
328
329	* testsuite/22_locale/locale/cons/5.cc: Add missing directives
330	for required locales.
331
3322020-12-15  Jonathan Wakely  <jwakely@redhat.com>
333
334	* include/bits/iterator_concepts.h (incrementable_traits<Tp>):
335	Remove workaround for PR c++/78173.
336
3372020-12-15  Vladimir Vishnevsky  <vv.os.swe@gmail.com>
338
339	* configure.ac: Skip AC_LIBTOOL_DLOPEN check if avr-libc is used.
340	* configure: Regenerate.
341
3422020-12-15  Jonathan Wakely  <jwakely@redhat.com>
343
344	PR libstdc++/98108
345	* include/std/iostream (__ioinit): Add init_priority attribute.
346
3472020-12-15  Gerald Pfeifer  <gerald@pfeifer.com>
348
349	* doc/xml/manual/codecvt.xml: Update link to Unicode-HOWTO.
350	* doc/html/manual/facets.html: Regenerate.
351
3522020-12-14  François Dumont  <fdumont@gcc.gnu.org>
353
354	* testsuite/23_containers/array/debug/back1_neg.cc: Target c++14 because assertion
355	is disabled in C++11.
356	* testsuite/23_containers/array/debug/front1_neg.cc: Likewise.
357	* testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc: Likewise.
358
3592020-12-14  Martin Sebor  <msebor@redhat.com>
360
361	* testsuite/ext/vstring/requirements/exception/basic.cc: Suppress
362	a false positive warning.
363	* testsuite/ext/vstring/requirements/exception/propagation_consistent.cc:
364	  Same.
365
3662020-12-14  François Dumont  <fdumont@gcc.gnu.org>
367
368	* testsuite/23_containers/array/debug/back2_neg.cc: target c++14 because assertion
369	for constexpr is disabled in C++11.
370	* testsuite/23_containers/array/debug/front2_neg.cc: Likewise.
371	* testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc: Likewise.
372	* testsuite/23_containers/vector/debug/multithreaded_swap.cc: Include <memory>
373	for shared_ptr.
374
3752020-12-12  François Dumont  <fdumont@gcc.gnu.org>
376
377	* include/debug/macros.h (__glibcxx_check_can_increment_range): Replace
378	_GLIBCXX_DEBUG_VERIFY_COND_AT usage with _GLIBCXX_DEBUG_VERIFY_AT_F.
379	(__glibcxx_check_can_decrement_range): Likewise.
380	* testsuite/25_algorithms/copy_backward/constexpr.cc (test03): New.
381	* testsuite/25_algorithms/copy/debug/constexpr_neg.cc: New test.
382	* testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: New test.
383	* testsuite/25_algorithms/equal/constexpr_neg.cc: New test.
384	* testsuite/25_algorithms/equal/debug/constexpr_neg.cc: New test.
385
3862020-12-10  Jonathan Wakely  <jwakely@redhat.com>
387
388	PR libstdc++/98226
389	* include/std/bit (__countl_one, __countr_one): Remove redundant
390	branches.
391
3922020-12-09  Jonathan Wakely  <jwakely@redhat.com>
393
394	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Define NO_SLEEP
395	if none of nanosleep, sleep and Sleep is available.
396	* config.h.in: Regenerate.
397	* configure: Regenerate.
398	* include/std/thread [_GLIBCXX_NO_SLEEP] (__sleep_for): Do
399	not declare.
400	[_GLIBCXX_NO_SLEEP] (sleep_for, sleep_until): Do not
401	define.
402	* src/c++11/thread.cc [_GLIBCXX_NO_SLEEP] (__sleep_for): Do
403	not define.
404
4052020-12-08  Jason Merrill  <jason@redhat.com>
406
407	PR c++/96299
408	* testsuite/18_support/comparisons/algorithms/partial_order.cc:
409	One more line needs to use VERIFY instead of static_assert.
410
4112020-12-08  Jonathan Wakely  <jwakely@redhat.com>
412
413	* doc/xml/manual/appendix_contributing.xml: Use consistent
414	indentation.
415	* doc/html/manual/source_code_style.html: Regenerate.
416
4172020-12-05  Iain Sandoe  <iain@sandoe.co.uk>
418
419	PR target/97865
420	* configure: Regenerate.
421
4222020-12-04  Jakub Jelinek  <jakub@redhat.com>
423
424	PR c++/80780
425	* testsuite/18_support/source_location/1.cc (main): Adjust for
426	__builtin_source_location using __PRETTY_FUNCTION__-like names instead
427	__FUNCTION__-like.
428	* testsuite/18_support/source_location/consteval.cc (main): Likewise.
429
4302020-12-03  Martin Sebor  <msebor@redhat.com>
431
432	* testsuite/ext/vstring/modifiers/clear/56166.cc: Suppress a false
433	positive warning.
434
4352020-12-03  Jonathan Wakely  <jwakely@redhat.com>
436
437	* testsuite/26_numerics/bit/bit.cast/bit_cast.cc: Remove stray
438	word from copy&paste.
439	* testsuite/26_numerics/bit/bit.cast/version.cc: Likewise.
440
4412020-12-03  Jonathan Wakely  <jwakely@redhat.com>
442
443	* doc/xml/manual/status_cxx2020.xml: Update C++20 status.
444	* doc/html/*: Regenerate.
445
4462020-12-03  JeanHeyd Meneide  <phdofthehouse@gmail.com>
447
448	* doc/doxygen/user.cfg.in (INPUT): Add <source_location>.
449	* include/Makefile.am: Add <source_location>.
450	* include/Makefile.in: Regenerate.
451	* include/std/version (__cpp_lib_source_location): Define.
452	* include/std/source_location: New file.
453	* testsuite/18_support/source_location/1.cc: New test.
454	* testsuite/18_support/source_location/consteval.cc: New test.
455	* testsuite/18_support/source_location/srcloc.h: New test.
456	* testsuite/18_support/source_location/version.cc: New test.
457
4582020-12-03  Jonathan Wakely  <jwakely@redhat.com>
459
460	PR libstdc++/93121
461	* include/std/bit (__cpp_lib_bit_cast, bit_cast): Define.
462	* include/std/version (__cpp_lib_bit_cast): Define.
463	* testsuite/26_numerics/bit/bit.cast/bit_cast.cc: New test.
464	* testsuite/26_numerics/bit/bit.cast/version.cc: New test.
465
4662020-12-03  Jonathan Wakely  <jwakely@redhat.com>
467
468	* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt:
469	Update.
470	* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt:
471	Update.
472
4732020-12-03  Jonathan Wakely  <jwakely@redhat.com>
474
475	* include/std/array (array::operator[](size_t) const, array::front() const)
476	(array::back() const) [__cplusplus == 201103]: Disable
477	assertions.
478	* testsuite/23_containers/array/element_access/constexpr_element_access.cc:
479	Check for correct values.
480	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
481	Adjust dg-error line numbers.
482	* testsuite/23_containers/array/debug/constexpr_c++11.cc: New test.
483
4842020-12-02  Jonathan Wakely  <jwakely@redhat.com>
485
486	PR libstdc++/65480
487	PR libstdc++/68735
488	* python/libstdcxx/v6/printers.py (function_pointer_to_name):
489	New helper function to get the name of a function from its
490	address.
491	(StdExpAnyPrinter.__init__): Use it.
492
4932020-12-02  Jonathan Wakely  <jwakely@redhat.com>
494
495	* testsuite/lib/dg-options.exp (add_options_for_libatomic):
496	Replace powerpc-ibm-aix* and powerpc*-*-darwin* with check for
497	powerpc && ilp32.
498
4992020-12-02  Jonathan Wakely  <jwakely@redhat.com>
500
501	* testsuite/27_io/basic_istream/ignore/char/94749.cc: Add
502	dg-timeout-factor for ilp32 targets.
503	* testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
504	Likewise.
505
5062020-12-02  Jonathan Wakely  <jwakely@redhat.com>
507
508	* include/ext/rope (rope::_S_concat_char_iter)
509	(rope::_S_destr_concat_char_iter): Add allocator parameter.
510	(rope::push_back, rope::append, rope::insert, operator+):
511	Pass allocator.
512	* include/ext/ropeimpl.h (rope::_S_concat_char_iter)
513	(rope::_S_destr_concat_char_iter): Add allocator parameter
514	and use it.
515	(_Rope_char_ref_proxy::operator=(_CharT)): Pass allocator.
516
5172020-12-02  Jonathan Wakely  <jwakely@redhat.com>
518
519	* include/ext/rope: Fix indentation of access specifiers.
520
5212020-12-02  Jonathan Wakely  <jwakely@redhat.com>
522
523	* include/bits/atomic_timed_wait.h: Use #if instead of #ifdef.
524	* include/bits/semaphore_base.h: Likewise.
525	* include/std/version: Remove trailing whitespace.
526
5272020-12-02  Jonathan Wakely  <jwakely@redhat.com>
528
529	* python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the
530	name of the type and pass it to the iterator.
531	(StdPathPrinter): Likewise.
532	* testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test.
533
5342020-12-01  Thomas Rodgers  <trodgers@redhat.com>
535
536	* include/bits/atomic_base.h: Replace usage of
537	_GLIBCXX_HAVE_ATOMIC_WAIT with __cpp_lib_atomic_wait.
538	* include/bits/atomic_timed_wait.h: Likewise.
539	* include/bits/atomic_wait.h: Define __cpp_lib_atomic_wait
540	feature test macro.
541	* include/bits/semaphore_base.h: Replace usage of
542	_GLIBCXX_HAVE_ATOMIC_WAIT with __cpp_lib_atomic_wait.
543	* include/std/atomic: Likewise.
544	* include/std/latch: Likewise.
545	* include/std/semaphore: Likewise.
546	* include/std/version: Define __cpp_lib_atomic wait
547	feature test macro and replace usage of
548	_GLIBCXX_HAVE_ATOMIC_WAIT.
549	* testsuite/29_atomics/atomic/wait_notify/1.cc: New test.
550	* testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
551
5522020-12-01  Michael Weghorn  <m.weghorn@posteo.de>
553
554	* python/libstdcxx/v6/printers.py (StdBitIteratorPrinter)
555	(StdBitReferencePrinter): Add pretty-printers for
556	_Bit_reference, _Bit_iterator and _Bit_const_iterator.
557	* testsuite/libstdc++-prettyprinters/simple.cc: Test
558	std::_Bit_reference, std::_Bit_iterator and
559	std::_Bit_const_iterator.
560	* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
561
5622020-12-01  Jonathan Wakely  <jwakely@redhat.com>
563
564	* include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Define macro to
565	work around different implementations of __has_builtin.
566	(_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP)
567	(_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE)
568	(_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED)
569	(_GLIBCXX_HAVE_BUILTIN_IS_SAME, _GLIBCXX_HAVE_BUILTIN_LAUNDER):
570	Define using _GLIBCXX_HAS_BUILTIN.
571
5722020-12-01  Jonathan Wakely  <jwakely@redhat.com>
573
574	* testsuite/27_io/basic_istream/get/char/lwg3464.cc: Add
575	dg-timeout-factor directive.
576	* testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc:
577	Likewise.
578
5792020-12-01  Jonathan Wakely  <jwakely@redhat.com>
580
581	PR libstdc++/98003
582	* testsuite/27_io/basic_syncbuf/sync_ops/1.cc: Add options for
583	libatomic.
584
5852020-11-30  Jonathan Wakely  <jwakely@redhat.com>
586
587	* doc/doxygen/user.cfg.in (INPUT): Add <latch> and <semaphore>.
588
5892020-11-30  Jonathan Wakely  <jwakely@redhat.com>
590
591	* testsuite/lib/libstdc++.exp (libstdc++_init): Reduce
592	default tool_timeout to 360.
593
5942020-11-30  Jonathan Wakely  <jwakely@redhat.com>
595
596	* testsuite/20_util/specialized_algorithms/pstl/*: Add
597	dg-timeout-factor.
598	* testsuite/25_algorithms/pstl/*: Likewise.
599	* testsuite/26_numerics/pstl/*: Likewise.
600	* testsuite/28_regex/*: Likewise.
601
6022020-11-29  John David Anglin  <danglin@gcc.gnu.org>
603
604	* configure: Regenerate.
605
6062020-11-27  Jonathan Wakely  <jwakely@redhat.com>
607
608	* testsuite/lib/libstdc++.exp (v3_try_preprocess): Define
609	new proc to preprocess a chunk of code.
610	(v3_check_preprocessor_condition): Define new proc to test
611	a preprocessor condition depending on GCC or libstdc++ macros.
612	(check_v3_target_debug_mode, check_v3_target_normal_mode):
613	Use v3_try_preprocess.
614	(check_v3_target_normal_namespace)
615	(check_v3_target_parallel_mode, check_v3_target_cstdint)
616	(check_v3_target_cmath, check_v3_target_atomic_builtins)
617	(check_v3_target_gthreads, check_v3_target_gthreads_timed)
618	(check_v3_target_sleep, check_v3_target_sched_yield)
619	(check_v3_target_string_conversions, check_v3_target_swprintf)
620	(check_v3_target_binary_io, check_v3_target_nprocs): Use
621	v3_check_preprocessor_condition.
622	(check_effective_target_cxx11): Likewise.
623	(check_effective_target_random_device): Likewise.
624	(check_effective_target_tbb-backend): Likewise.
625	(check_effective_target_futex): Likewise.
626	(check_v3_target_little_endian) Call check_effective_target_le.
627	(check_effective_target_atomic-builtins): New proc to define
628	new effective-target keyword.
629	(check_effective_target_gthreads-timed): Likewise.
630
6312020-11-27  Jonathan Wakely  <jwakely@redhat.com>
632
633	* testsuite/27_io/filesystem/operations/absolute.cc: Avoid
634	-Wrange-loop-construct warning.
635	* testsuite/27_io/filesystem/path/append/source.cc: Likewise.
636	* testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
637	* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
638	* testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
639	* testsuite/27_io/filesystem/path/decompose/extension.cc:
640	Likewise.
641	* testsuite/27_io/filesystem/path/decompose/filename.cc:
642	Likewise.
643	* testsuite/27_io/filesystem/path/decompose/parent_path.cc:
644	Likewise.
645	* testsuite/27_io/filesystem/path/decompose/relative_path.cc:
646	Likewise.
647	* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
648	Likewise.
649	* testsuite/27_io/filesystem/path/decompose/root_path.cc:
650	Likewise.
651	* testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
652	* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
653	Likewise.
654	* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
655	Likewise.
656	* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
657	Likewise.
658	* testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
659	* testsuite/27_io/filesystem/path/nonmember/cmp.cc: Likewise.
660	* testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc:
661	Likewise.
662	* testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
663	Likewise.
664	* testsuite/27_io/filesystem/path/query/has_extension.cc:
665	Likewise.
666	* testsuite/27_io/filesystem/path/query/has_filename.cc:
667	Likewise.
668	* testsuite/27_io/filesystem/path/query/has_parent_path.cc:
669	Likewise.
670	* testsuite/27_io/filesystem/path/query/has_relative_path.cc:
671	Likewise.
672	* testsuite/27_io/filesystem/path/query/has_root_directory.cc:
673	Likewise.
674	* testsuite/27_io/filesystem/path/query/has_root_name.cc:
675	Likewise.
676	* testsuite/27_io/filesystem/path/query/has_root_path.cc:
677	Likewise.
678	* testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
679	* testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise.
680	* testsuite/experimental/filesystem/operations/absolute.cc:
681	Likewise.
682	* testsuite/experimental/filesystem/path/assign/copy.cc: Likewise.
683	* testsuite/experimental/filesystem/path/compare/path.cc:
684	Likewise.
685	* testsuite/experimental/filesystem/path/construct/copy.cc:
686	Likewise.
687	* testsuite/experimental/filesystem/path/decompose/extension.cc:
688	Likewise.
689	* testsuite/experimental/filesystem/path/decompose/filename.cc:
690	Likewise.
691	* testsuite/experimental/filesystem/path/decompose/parent_path.cc:
692	Likewise.
693	* testsuite/experimental/filesystem/path/decompose/relative_path.cc:
694	Likewise.
695	* testsuite/experimental/filesystem/path/decompose/root_directory.cc:
696	Likewise.
697	* testsuite/experimental/filesystem/path/decompose/root_path.cc:
698	Likewise.
699	* testsuite/experimental/filesystem/path/itr/traversal.cc:
700	Likewise.
701	* testsuite/experimental/filesystem/path/modifiers/remove_filename.cc:
702	Likewise.
703	* testsuite/experimental/filesystem/path/modifiers/replace_extension.cc:
704	Likewise.
705	* testsuite/experimental/filesystem/path/modifiers/replace_filename.cc:
706	Likewise.
707	* testsuite/experimental/filesystem/path/nonmember/hash_value.cc:
708	Likewise.
709	* testsuite/experimental/filesystem/path/query/has_extension.cc:
710	Likewise.
711	* testsuite/experimental/filesystem/path/query/has_filename.cc:
712	Likewise.
713	* testsuite/experimental/filesystem/path/query/has_parent_path.cc:
714	Likewise.
715	* testsuite/experimental/filesystem/path/query/has_relative_path.cc:
716	Likewise.
717	* testsuite/experimental/filesystem/path/query/has_root_directory.cc:
718	Likewise.
719	* testsuite/experimental/filesystem/path/query/has_root_name.cc:
720	Likewise.
721	* testsuite/experimental/filesystem/path/query/has_root_path.cc:
722	Likewise.
723	* testsuite/experimental/filesystem/path/query/has_stem.cc:
724	Likewise.
725	* testsuite/experimental/filesystem/path/query/is_relative.cc:
726	Likewise.
727
7282020-11-27  Jonathan Wakely  <jwakely@redhat.com>
729
730	* src/c++98/locale.cc (locale::facet::_S_get_c_locale()):
731	Revert change to use __is_single_threaded.
732	* src/c++98/locale_init.cc (locale::_S_initialize()):
733	Likewise.
734
7352020-11-26  Jonathan Wakely  <jwakely@redhat.com>
736
737	* include/bits/atomic_wait.h (_GLIBCXX_HAVE_ATOMIC_WAIT):
738	Define.
739	* include/bits/atomic_base.h: Check _GLIBCXX_HAVE_ATOMIC_WAIT.
740	* include/bits/atomic_timed_wait.h: Likewise.
741	* include/bits/semaphore_base.h: Likewise.
742	* include/std/atomic: Likewise.
743	* include/std/latch: Likewise.
744	* include/std/semaphore: Likewise.
745
7462020-11-26  Jonathan Wakely  <jwakely@redhat.com>
747
748	* include/std/latch: Depend on _GLIBCXX_HAS_GTHREADS and
749	_GLIBCXX_HAVE_LINUX_FUTEX.
750	* include/std/version (__cpp_lib_latch): Define conditionally.
751
7522020-11-26  Jonathan Wakely  <jwakely@redhat.com>
753
754	* testsuite/lib/libstdc++.exp (check_effective_target_gthreads):
755	Call check_v3_target_gthreads not check_v3_target_gthreads_timed.
756
7572020-11-26  Jonathan Wakely  <jwakely@redhat.com>
758
759	* testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc:
760	Add dg-timeout-factor directive.
761	* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
762	Likewise.
763	* testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc:
764	Likewise.
765	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc:
766	Likewise.
767	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
768	Likewise.
769	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc:
770	Likewise.
771	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc:
772	Likewise.
773	* testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
774	Likewise.
775	* testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise.
776	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc:
777	Likewise.
778	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc:
779	Likewise.
780	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
781
7822020-11-26  Jonathan Wakely  <jwakely@redhat.com>
783
784	* testsuite/lib/libstdc++.exp (libstdc++_init): Only set
785	tool_timeout if it hasn't been set by the user already.
786
7872020-11-26  Jonathan Wakely  <jwakely@redhat.com>
788
789	PR libstdc++/97936
790	* testsuite/29_atomics/atomic/wait_notify/bool.cc: Fix missed
791	notifications by making the new thread wait until the parent
792	thread is waiting on the condition variable.
793	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
794	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
795	* testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
796
7972020-11-26  Jonathan Wakely  <jwakely@redhat.com>
798
799	* testsuite/18_support/96817.cc: Use new effective-target
800	keywords to select supported targets more effectively.
801	* testsuite/30_threads/call_once/66146.cc: Likewise.
802	* testsuite/lib/libstdc++.exp (check_effective_target_futex):
803	Define new proc.
804	(check_effective_target_gthreads): Define new proc to replace
805	dg-require-gthreads.
806
8072020-11-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
808
809	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Remove libposix4
810	references.
811	<solaris*>: Don't use -lrt any longer.
812	* configure: Regenerate.
813	* doc/xml/manual/configure.xml (--enable-libstdcxx-time=OPTION):
814	Remove libposix4 reference.
815
8162020-11-26  Jonathan Wakely  <jwakely@redhat.com>
817
818	PR libstdc++/98001
819	* testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid
820	FILE* to constructor.
821
8222020-11-26  Jonathan Wakely  <jwakely@redhat.com>
823
824	* include/precompiled/stdc++.h: Add new headers.
825	* include/std/stop_token: Include <semaphore> unconditionally.
826
8272020-11-25  Jonathan Wakely  <jwakely@redhat.com>
828
829	* include/bits/atomic_timed_wait.h (__cond_wait_until): Do not
830	perform redundant conversions to the same clock.
831
8322020-11-25  Jonathan Wakely  <jwakely@redhat.com>
833
834	* include/bits/atomic_timed_wait.h (__cond_wait_until_impl):
835	Do not define when _GLIBCXX_HAVE_LINUX_FUTEX is defined. Use
836	__condvar and mutex instead of __gthread_cond_t and
837	unique_lock<mutex>.
838	(__cond_wait_until): Likewise. Fix test for return value of
839	__cond_wait_until_impl.
840	(__timed_waiters::_M_do_wait_until): Use __condvar instead
841	of __gthread_cond_t.
842	* include/bits/atomic_wait.h: Remove <bits/unique_lock.h>
843	include. Only include <bits/std_mutex.h> if not using futexes.
844	(__platform_wait_max_value): Remove unused variable.
845	(__waiters::lock_t): Use lock_guard instead of unique_lock.
846	(__waiters::_M_cv): Use __condvar instead of __gthread_cond_t.
847	(__waiters::_M_do_wait(__platform_wait_t)): Likewise.
848	(__waiters::_M_notify()): Likewise. Use notify_one() if not
849	asked to notify all.
850	* include/bits/std_mutex.h (__condvar): New type.
851	* include/std/condition_variable (condition_variable::_M_cond)
852	(condition_variable::wait_until): Use __condvar instead of
853	__gthread_cond_t.
854	* src/c++11/condition_variable.cc (condition_variable): Define
855	default constructor and destructor as defaulted.
856	(condition_variable::wait, condition_variable::notify_one)
857	(condition_variable::notify_all): Forward to corresponding
858	member function of __condvar.
859
8602020-11-25  Jonathan Wakely  <jwakely@redhat.com>
861
862	PR libstdc++/97936
863	* testsuite/29_atomics/atomic/wait_notify/bool.cc: Re-eneable
864	test.
865	* testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
866	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
867	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
868	* testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
869	* testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
870	* testsuite/util/atomic/wait_notify_util.h: Fix missed
871	notifications by making the new thread wait until the parent
872	thread is waiting on the condition variable.
873
8742020-11-25  Jonathan Wakely  <jwakely@redhat.com>
875
876	PR libstdc++/97935
877	* include/bits/iterator_concepts.h (__detail::__iter_without_category):
878	New helper concept.
879	(__iterator_traits::__cat): Use __detail::__iter_without_category.
880	* testsuite/24_iterators/associated_types/iterator.traits.cc: New test.
881
8822020-11-25  Jonathan Wakely  <jwakely@redhat.com>
883
884	* testsuite/17_intro/names.cc: Do not test 'v' on AIX.
885
8862020-11-25  Jonathan Wakely  <jwakely@redhat.com>
887
888	PR libstdc++/97936
889	* include/bits/atomic_wait.h (__platform_wait): Check errno,
890	not just the value of EAGAIN.
891	(__waiters::__waiters()): Fix name of data member.
892
8932020-11-25  Jonathan Wakely  <jwakely@redhat.com>
894
895	PR libstdc++/97936
896	* include/bits/atomic_wait.h (__platform_wait): Return if futex
897	sets EAGAIN.
898	* testsuite/30_threads/latch/3.cc: Re-enable test.
899	* testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
900
9012020-11-24  Jonathan Wakely  <jwakely@redhat.com>
902
903	PR libstdc++/97936
904	PR libstdc++/97944
905	* testsuite/29_atomics/atomic_integral/wait_notify.cc: Disable.
906	Do not require pthreads, but add -pthread when appropriate.
907	* testsuite/30_threads/jthread/95989.cc: Likewise.
908	* testsuite/30_threads/latch/3.cc: Likewise.
909	* testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
910
9112020-11-24  Jonathan Wakely  <jwakely@redhat.com>
912
913	* testsuite/30_threads/jthread/95989.cc: Run all three test
914	functions, not just the first one twice.
915
9162020-11-24  Jonathan Wakely  <jwakely@redhat.com>
917
918	PR libstdc++/67791
919	* src/c++11/thread.cc (thread::_M_start_thread(_State_ptr, void (*)())):
920	Check that gthreads is available before calling __gthread_create.
921
9222020-11-24  Jonathan Wakely  <jwakely@redhat.com>
923
924	* src/c++98/locale.cc (locale::facet::_S_get_c_locale())
925	(locale::id::_M_id() const): Use __is_single_threaded.
926	* src/c++98/locale_init.cc (locale::_S_initialize()):
927	Likewise.
928
9292020-11-23  Jonathan Wakely  <jwakely@redhat.com>
930
931	* include/bits/semaphore_base.h
932	(__platform_semaphore::_M_try_acquire_until): Fix type of
933	variable.
934
9352020-11-23  Stephan Bergmann  <sbergman@redhat.com>
936
937	* include/bits/atomic_wait.h (__thread_relax, __thread_yield):
938	Add 'inline'.
939
9402020-11-23  Jonathan Wakely  <jwakely@redhat.com>
941
942	* acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Check for
943	* config.h.in: Regenerate.
944	* configure: Regenerate.
945	* include/bits/semaphore_base.h (_GLIBCXX_HAVE_POSIX_SEMAPHORE):
946	Check autoconf macro instead of defining it here.
947
9482020-11-23  Jonathan Wakely  <jwakely@redhat.com>
949
950	* include/bits/atomic_wait.h: Do not define anything unless
951	gthreads or futexes are available.
952	* include/bits/atomic_timed_wait.h: Likewise.
953	* include/bits/semaphore_base.h: Likewise.
954	* include/std/semaphore: Likewise.
955	* include/bits/atomic_base.h (atomic_flag::wait)
956	(atomic_flag::notify_one, atomic_flag::notify_all)
957	(__atomic_base<I>::wait, __atomic_base<I>::notify_one)
958	(__atomic_base<I>::notify_all, __atomic_base<P*>::wait)
959	(__atomic_base<P*>::notify_one, __atomic_base<P*>::notify_all)
960	(__atomic_impl::wait, __atomic_impl::notify_one)
961	(__atomic_impl::notify_all, __atomic_float::wait)
962	(__atomic_float::notify_one, __atomic_float::notify_all)
963	(__atomic_ref::wait, __atomic_ref::notify_one)
964	(__atomic_ref::notify_all): Only define if gthreads or futexes
965	are available.
966	* include/std/atomic (atomic::wait, atomic::notify_one)
967	(atomic::notify_all): Likewise.
968	* include/std/version (__cpp_lib_semaphore): Define
969	conditionally.
970
9712020-11-23  Jonathan Wakely  <jwakely@redhat.com>
972
973	PR libstdc++/97948
974	* testsuite/29_atomics/atomic_float/wait_notify.cc: Add options
975	for libatomic.
976	* testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
977	* testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
978
9792020-11-21  Jonathan Wakely  <jwakely@redhat.com>
980
981	* include/bits/atomic_base.h (atomic_flag::wait): Use correct
982	type for __atomic_wait call.
983	* include/bits/atomic_timed_wait.h (__atomic_wait_until): Check
984	_GLIBCXX_HAVE_LINUX_FUTEX.
985	* include/bits/atomic_wait.h (__atomic_notify): Likewise.
986	* include/bits/semaphore_base.h (_GLIBCXX_HAVE_POSIX_SEMAPHORE):
987	Only define if SEM_VALUE_MAX or _POSIX_SEM_VALUE_MAX is defined.
988	* testsuite/29_atomics/atomic/wait_notify/bool.cc: Disable on
989	non-linux targes.
990	* testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
991	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
992	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
993	* testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
994
9952020-11-20  Thomas Rodgers  <trodgers@redhat.com>
996
997	* include/Makefile.am (bits_headers): Add new header.
998	* include/Makefile.in: Regenerate.
999	* include/bits/atomic_base.h (__atomic_flag::wait): Define.
1000	(__atomic_flag::notify_one): Likewise.
1001	(__atomic_flag::notify_all): Likewise.
1002	(__atomic_base<_Itp>::wait): Likewise.
1003	(__atomic_base<_Itp>::notify_one): Likewise.
1004	(__atomic_base<_Itp>::notify_all): Likewise.
1005	(__atomic_base<_Ptp*>::wait): Likewise.
1006	(__atomic_base<_Ptp*>::notify_one): Likewise.
1007	(__atomic_base<_Ptp*>::notify_all): Likewise.
1008	(__atomic_impl::wait): Likewise.
1009	(__atomic_impl::notify_one): Likewise.
1010	(__atomic_impl::notify_all): Likewise.
1011	(__atomic_float<_Fp>::wait): Likewise.
1012	(__atomic_float<_Fp>::notify_one): Likewise.
1013	(__atomic_float<_Fp>::notify_all): Likewise.
1014	(__atomic_ref<_Tp>::wait): Likewise.
1015	(__atomic_ref<_Tp>::notify_one): Likewise.
1016	(__atomic_ref<_Tp>::notify_all): Likewise.
1017	(atomic_wait<_Tp>): Likewise.
1018	(atomic_wait_explicit<_Tp>): Likewise.
1019	(atomic_notify_one<_Tp>): Likewise.
1020	(atomic_notify_all<_Tp>): Likewise.
1021	* include/bits/atomic_wait.h: New file.
1022	* include/bits/atomic_timed_wait.h: New file.
1023	* include/bits/semaphore_base.h: New file.
1024	* include/std/atomic (atomic<bool>::wait): Define.
1025	(atomic<bool>::wait_one): Likewise.
1026	(atomic<bool>::wait_all): Likewise.
1027	(atomic<_Tp>::wait): Likewise.
1028	(atomic<_Tp>::wait_one): Likewise.
1029	(atomic<_Tp>::wait_all): Likewise.
1030	(atomic<_Tp*>::wait): Likewise.
1031	(atomic<_Tp*>::wait_one): Likewise.
1032	(atomic<_Tp*>::wait_all): Likewise.
1033	* include/std/latch: New file.
1034	* include/std/semaphore: New file.
1035	* include/std/version: Add __cpp_lib_semaphore and
1036	__cpp_lib_latch defines.
1037	* testsuite/29_atomics/atomic/wait_notify/bool.cc: New test.
1038	* testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
1039	* testsuite/29_atomics/atomic/wait_notify/generic.cc: Liekwise.
1040	* testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
1041	* testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
1042	* testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
1043	* testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
1044	* testsuite/30_threads/semaphore/1.cc: New test.
1045	* testsuite/30_threads/semaphore/2.cc: Likewise.
1046	* testsuite/30_threads/semaphore/least_max_value_neg.cc: Likewise.
1047	* testsuite/30_threads/semaphore/try_acquire.cc: Likewise.
1048	* testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise.
1049	* testsuite/30_threads/semaphore/try_acquire_posix.cc: Likewise.
1050	* testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
1051	* testsuite/30_threads/latch/1.cc: New test.
1052	* testsuite/30_threads/latch/2.cc: New test.
1053	* testsuite/30_threads/latch/3.cc: New test.
1054	* testsuite/util/atomic/wait_notify_util.h: New File.
1055
10562020-11-20  François Dumont  <fdumont@gcc.gnu.org>
1057
1058	PR libstdc++/83938
1059	* include/bits/stl_tempbuf.h (get_temporary_buffer): Change __len
1060	computation in the loop to avoid truncation.
1061	* include/bits/stl_algo.h:
1062	(__inplace_merge): Take temporary buffer length from smallest range.
1063	(__stable_sort): Limit temporary buffer length.
1064	* testsuite/25_algorithms/inplace_merge/1.cc (test4): New.
1065	* testsuite/performance/25_algorithms/stable_sort.cc: Test stable_sort
1066	under different heap memory conditions.
1067	* testsuite/performance/25_algorithms/inplace_merge.cc: New test.
1068
10692020-11-20  François Dumont  <fdumont@gcc.gnu.org>
1070
1071	* include/bits/move.h (_GLIBCXX_FWDREF): New.
1072	* include/bits/stl_tree.h: Adapt to use latter.
1073	(_Rb_tree<>::_M_clone_node): Add _MoveValue template parameter.
1074	(_Rb_tree<>::_M_mbegin): New.
1075	(_Rb_tree<>::_M_begin): Use latter.
1076	(_Rb_tree<>::_M_copy): Add _MoveValues template parameter.
1077	* testsuite/23_containers/map/allocator/move_cons.cc: New test.
1078	* testsuite/23_containers/multimap/allocator/move_cons.cc: New test.
1079	* testsuite/23_containers/multiset/allocator/move_cons.cc: New test.
1080	* testsuite/23_containers/set/allocator/move_cons.cc: New test.
1081
10822020-11-20  Jonathan Wakely  <jwakely@redhat.com>
1083
1084	PR libstdc++/92546
1085	* include/std/regex (pmr::smatch, pmr::wsmatch): Declare using
1086	underlying __normal_iterator type, not nested typedef
1087	basic_string::const_iterator.
1088
10892020-11-19  Jonathan Wakely  <jwakely@redhat.com>
1090
1091	PR libstdc++/95989
1092	* config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID):
1093	Define new macro to get reliable thread ID.
1094	* include/bits/std_thread.h: (this_thread::get_id): Use new
1095	macro if it's defined.
1096	* testsuite/30_threads/jthread/95989.cc: New test.
1097	* testsuite/30_threads/this_thread/95989.cc: New test.
1098
10992020-11-19  Jonathan Wakely  <jwakely@redhat.com>
1100
1101	* testsuite/30_threads/async/async.cc: Include <thread>.
1102	* testsuite/30_threads/future/members/93456.cc: Likewise.
1103
11042020-11-19  Jonathan Wakely  <jwakely@redhat.com>
1105
1106	PR libstdc++/92546
1107	* include/Makefile.am: Add new <bits/std_thread.h> header.
1108	* include/Makefile.in: Regenerate.
1109	* include/std/future: Include new header instead of <thread>.
1110	* include/std/stop_token: Include new header instead of
1111	<bits/gthr.h>.
1112	(stop_token::_S_yield()): Use this_thread::yield().
1113	(_Stop_state_t::_M_requester): Change type to std::thread::id.
1114	(_Stop_state_t::_M_request_stop()): Use this_thread::get_id().
1115	(_Stop_state_t::_M_remove_callback(_Stop_cb*)): Likewise.
1116	Use __is_single_threaded() to decide whether to synchronize.
1117	* include/std/thread (thread, operator==, this_thread::get_id)
1118	(this_thread::yield): Move to new header.
1119	(operator<=>, operator!=, operator<, operator<=, operator>)
1120	(operator>=, hash<thread::id>, operator<<): Define even when
1121	gthreads not available.
1122	* src/c++11/thread.cc: Include <memory>.
1123	* include/bits/std_thread.h: New file.
1124	(thread, operator==, this_thread::get_id, this_thread::yield):
1125	Define even when gthreads not available.
1126	[!_GLIBCXX_HAS_GTHREADS] (thread::join, thread::detach)
1127	(thread::hardware_concurrency): Define inline.
1128
11292020-11-19  Jonathan Wakely  <jwakely@redhat.com>
1130
1131	PR libstdc++/93421
1132	PR libstdc++/93456
1133	* src/c++11/futex.cc (syscall_time_t): New typedef for
1134	the type of the syscall_timespec::tv_sec member.
1135	(relative_timespec, _M_futex_wait_until)
1136	(_M_futex_wait_until_steady): Use syscall_time_t in overflow
1137	checks, not time_t.
1138
11392020-11-18  Patrick Palka  <ppalka@redhat.com>
1140
1141	* include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify
1142	local variable inner.
1143	(join_view::_Iterator::operator->): Use _Inner_iter instead of
1144	_Outer_iter in the function signature as per LWG 3500.
1145	* testsuite/std/ranges/adaptors/join.cc (test08): Test it.
1146
11472020-11-17  Jonathan Wakely  <jwakely@redhat.com>
1148
1149	PR libstdc++/93421
1150	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Fail if struct
1151	timespec isn't compatible with SYS_clock_gettime.
1152	* configure: Regenerate.
1153	* src/c++11/chrono.cc: Revert changes for time64 compatibility.
1154	Add static_assert instead.
1155	* src/c++11/futex.cc (_M_futex_wait_until_steady): Assume
1156	SYS_clock_gettime can use struct timespec.
1157
11582020-11-17  Jonathan Wakely  <jwakely@redhat.com>
1159
1160	PR libstdc++/97869
1161	* include/precompiled/stdc++.h: Include <coroutine>.
1162	* include/std/version (__cpp_lib_span): Check __cpp_lib_concepts
1163	before defining.
1164
11652020-11-17  Patrick Palka  <ppalka@redhat.com>
1166
1167	PR libstdc++/97828
1168	* include/bits/ranges_algo.h (__search_n_fn::operator()): Check
1169	random_access_iterator before using the backtracking
1170	implementation.  When the backwards scan fails prematurely,
1171	reset __remainder appropriately.
1172	* testsuite/25_algorithms/search_n/97828.cc: New test.
1173
11742020-11-16  Jonathan Wakely  <jwakely@redhat.com>
1175
1176	* src/Makefile.am (libstdc++-symbols.ver-sun): Remove -lrt from
1177	arguments passed to make_sunver.pl script.
1178	* src/Makefile.in: Regenerate.
1179
11802020-11-15  Jason Merrill  <jason@redhat.com>
1181
1182	* testsuite/20_util/result_of/sfinae_friendly_1.cc: Adjust.
1183
11842020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1185
1186	PR libstdc++/93421
1187	* src/c++11/chrono.cc [_GLIBCXX_USE_CLOCK_GETTIME_SYSCALL]
1188	(syscall_timespec): Define a type suitable for SYS_clock_gettime
1189	calls.
1190	(system_clock::now(), steady_clock::now()): Use syscall_timespec
1191	instead of timespec.
1192	* src/c++11/futex.cc (syscall_timespec): Define a type suitable
1193	for SYS_futex and SYS_clock_gettime calls.
1194	(relative_timespec): Use syscall_timespec instead of timespec.
1195	(__atomic_futex_unsigned_base::_M_futex_wait_until): Likewise.
1196	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady):
1197	Likewise.
1198
11992020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1200
1201	PR libstdc++/93456
1202	* src/c++11/futex.cc (relative_timespec): Remove redundant check
1203	negative values.
1204	* testsuite/30_threads/future/members/wait_until_overflow.cc: Moved to...
1205	* testsuite/30_threads/future/members/93456.cc: ...here.
1206
12072020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1208
1209	* src/c++11/futex.cc (relative_timespec): Add [[unlikely]]
1210	attributes.
1211	(__atomic_futex_unsigned_base::_M_futex_wait_until)
1212	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady):
1213	Check for overflow.
1214	* testsuite/30_threads/future/members/wait_until_overflow.cc:
1215	New test.
1216
12172020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1218
1219	* src/c++11/futex.cc (relative_timespec): New function to
1220	create relative time from two absolute times.
1221	(__atomic_futex_unsigned_base::_M_futex_wait_until)
1222	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady):
1223	Use relative_timespec.
1224
12252020-11-13  Jonathan Wakely  <jwakely@redhat.com>
1226
1227	* testsuite/30_threads/future/members/poll.cc: Require gthreads
1228	and add -pthread for targets that require it. Relax required
1229	ratio of wait_for calls before/after the future is ready.
1230
12312020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1232
1233	* include/std/future (future::wait_for): Do not wait for
1234	durations less than or equal to zero.
1235	* src/c++11/futex.cc (_M_futex_wait_until)
1236	(_M_futex_wait_until_steady): Do not wait for timeouts before
1237	the epoch.
1238	* testsuite/30_threads/future/members/poll.cc: New test.
1239
12402020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1241
1242	* include/ext/numeric_traits.h (__numeric_traits): Change
1243	primary template to always derive from __numeric_traits_integer.
1244	(__numeric_traits<float>, __numeric_traits<double>)
1245	(__numeric_traits<long double>): Add explicit specializations.
1246
12472020-11-12  Jonathan Wakely  <jwakely@redhat.com>
1248
1249	PR libstdc++/97798
1250	* include/ext/numeric_traits.h (__glibcxx_signed)
1251	(__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove
1252	macros.
1253	(__is_integer_nonstrict::__width): Define new constant.
1254	(__numeric_traits_integer): Define constants in terms of each
1255	other and __is_integer_nonstrict::__width, rather than the
1256	removed macros.
1257	(_GLIBCXX_INT_N_TRAITS): Macro to define explicit
1258	specializations for non-standard integer types.
1259
12602020-11-11  Jonathan Yong  <10walls@gmail.com>
1261
1262	* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Exclude
1263	cygwin and mingw from relro linker test.
1264	* configure: Regenerate.
1265
12662020-11-11  Paul Scharnofske  <asynts@gmail.com>
1267
1268	* include/std/thread (jthread::operator=(jthread&&)): Transfer
1269	any existing state to a temporary that will request a stop and
1270	then join.
1271	* testsuite/30_threads/jthread/jthread.cc: Test move assignment.
1272
12732020-11-11  Jonathan Wakely  <jwakely@redhat.com>
1274
1275	* include/std/stop_token (_Stop_state_t::_M_requester): Define
1276	new struct with members to store and check the thread ID.
1277	(_Stop_state_t::_M_request_stop()): Use _M_requester._M_set().
1278	(_Stop_state_t::_M_remove_callback(_Stop_cb*)): Use
1279	_M_requester._M_is_current_thread().
1280
12812020-11-11  Jonathan Wakely  <jwakely@redhat.com>
1282
1283	* include/std/ostream (__syncbuf_base): New class template.
1284	(emit_on_flush, noemit_on_flush, flush_emit): New manipulators.
1285	* include/std/syncstream (basic_syncbuf): Derive from
1286	__syncbuf_base instead of basic_streambuf.
1287	(basic_syncbuf::operator=): Remove self-assignment check.
1288	(basic_syncbuf::swap): Remove self-swap check.
1289	(basic_syncbuf::emit): Do not skip pubsync() call if sequence
1290	is empty.
1291	(basic_syncbuf::sync): Remove no-op pubsync on stringbuf.
1292	(basic_syncbuf::overflow): Define override.
1293	* testsuite/27_io/basic_syncstream/basic_ops/1.cc: Test
1294	basic_osyncstream::put(char_type).
1295	* testsuite/27_io/basic_ostream/emit/1.cc: New test.
1296
12972020-11-10  Jonathan Wakely  <jwakely@redhat.com>
1298
1299	* config/locale/generic/c_locale.cc (__set_C_locale()): New function
1300	to set the "C" locale and return the name of the previous locale.
1301	(__convert_to_v<float>, __convert_to_v<double>)
1302	(__convert_to_v<long double>): Use __set_C_locale and set failbit on
1303	error.
1304
13052020-11-10  Jonathan Wakely  <jwakely@redhat.com>
1306
1307	* include/std/sstream (basic_stringbug, basic_istringstream)
1308	(basic_ostringstream, basic_stringstream): Reorder C++20
1309	constructors to be declared next to other constructors.
1310
13112020-11-10  Jonathan Wakely  <jwakely@redhat.com>
1312
1313	* config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten patterns.
1314	(GLIBCXX_3.4.29): Export new symbols.
1315	* include/bits/alloc_traits.h (__allocator_like): New concept.
1316	* include/std/sstream (basic_stringbuf::swap): Add exception
1317	specification.
1318	(basic_stringbuf::str() const): Add ref-qualifier. Use new
1319	_M_high_mark function.
1320	(basic_stringbuf::str(const SAlloc&) const): Define new function.
1321	(basic_stringbuf::str() &&): Likewise.
1322	(basic_stringbuf::str(const basic_string<C,T,SAlloc>&)):
1323	Likewise.
1324	(basic_stringbuf::str(basic_string<C,T,Alloc>&&)): Likewise.
1325	(basic_stringbuf::view() const): Use _M_high_mark.
1326	(basic_istringstream::str, basic_ostringstream::str)
1327	(basic_stringstream::str): Define new overloads.
1328	* src/c++20/sstream-inst.cc (basic_stringbuf::str)
1329	(basic_istringstream::str, basic_ostringstream::str)
1330	(basic_stringstream::str): Explicit instantiation definitions
1331	for new overloads.
1332	* testsuite/27_io/basic_istringstream/view/char/1.cc: Add more
1333	checks.
1334	* testsuite/27_io/basic_istringstream/view/wchar_t/1.cc:
1335	Likewise.
1336	* testsuite/27_io/basic_ostringstream/view/char/1.cc:
1337	Likewise.
1338	* testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc:
1339	Likewise.
1340	* testsuite/27_io/basic_stringstream/view/char/1.cc:
1341	Likewise.
1342	* testsuite/27_io/basic_stringstream/view/wchar_t/1.cc:
1343	Likewise.
1344	* testsuite/27_io/basic_istringstream/str/char/2.cc: New test.
1345	* testsuite/27_io/basic_istringstream/str/wchar_t/2.cc: New test.
1346	* testsuite/27_io/basic_ostringstream/str/char/3.cc: New test.
1347	* testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc: New test.
1348	* testsuite/27_io/basic_stringbuf/str/char/4.cc: New test.
1349	* testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc: New test.
1350	* testsuite/27_io/basic_stringstream/str/char/5.cc: New test.
1351	* testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc: New test.
1352
13532020-11-10  Jonathan Wakely  <jwakely@redhat.com>
1354
1355	PR libstdc++/97415
1356	* include/std/sstream (basic_stringbuf::_M_update_egptr)
1357	(basic_stringbuf::__xfer_bufptrs::__xfer_bufptrs): Check for
1358	null before comparing pointers.
1359
13602020-11-09  François Dumont  <fdumont@gcc.gnu.org>
1361
1362	* include/debug/array: Remove.
1363	* include/Makefile.am: Remove <debug/array>.
1364	* include/Makefile.in: Regenerate.
1365	* include/experimental/functional: Adapt.
1366	* include/std/array: Move to _GLIBCXX_INLINE_VERSION namespace.
1367	* include/std/functional: Adapt.
1368	* include/std/span: Adapt.
1369	* testsuite/23_containers/array/debug/back1_neg.cc:
1370	Remove dg-require-debug-mode. Add -D_GLIBCXX_ASSERTIONS option.
1371	* testsuite/23_containers/array/debug/back2_neg.cc: Likewise.
1372	* testsuite/23_containers/array/debug/front1_neg.cc: Likewise.
1373	* testsuite/23_containers/array/debug/front2_neg.cc: Likewise.
1374	* testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc:
1375	Likewise.
1376	* testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc:
1377	Likewise.
1378	* testsuite/23_containers/array/element_access/60497.cc
1379	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1380	Remove.
1381	* testsuite/23_containers/array/tuple_interface/get_neg.cc
1382	* testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc
1383	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
1384
13852020-11-09  François Dumont  <fdumont@gcc.gnu.org>
1386
1387	* include/debug/assertions.h (__glibcxx_requires_non_empty_range):
1388	Remove __builtin_expect.
1389	(__glibcxx_requires_subscript): Likewise.
1390	(__glibcxx_requires_nonempty): Likewise.
1391	* include/debug/formatter.h (__check_singular): Add C++11 constexpr
1392	qualification.
1393	* include/debug/helper_functions.h (__check_singular): Likewise. Skip
1394	check if constant evaluated.
1395	(__valid_range): Do not skip check if constant evaluated.
1396	* include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_COND_AT): Add
1397	__builtin_expect.
1398	(_GLIBCXX_DEBUG_VERIFY_AT_F): Use __glibcxx_assert_1.
1399	* testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
1400	New test.
1401	* testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc: New test.
1402	* testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc: New test.
1403	* testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc:
1404	New test.
1405	* testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
1406	New test.
1407	* testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
1408	New test.
1409	* testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc: New test.
1410	* testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc: New test.
1411	* testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
1412	New test.
1413	* testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: New test.
1414	* testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: New test.
1415	* testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: New test.
1416	* testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc: New test.
1417	* testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc: New test.
1418	* testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: New test.
1419	* testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: New test.
1420	* testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: New test.
1421	* testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc: New test.
1422	* testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc: New test.
1423
14242020-11-09  Jonathan Wakely  <jwakely@redhat.com>
1425
1426	* include/bits/uniform_int_dist.h (__detail::_Power_of_2):
1427	Document that true result for zero is intentional.
1428
14292020-11-09  Jonathan Wakely  <jwakely@redhat.com>
1430
1431	* include/std/bit (__popcount): Remove redundant check for zero.
1432
14332020-11-09  Jonathan Wakely  <jwakely@redhat.com>
1434
1435	PR libstdc++/97729
1436	* libsupc++/exception_ptr.h (exception_ptr::exception_ptr())
1437	(exception_ptr::exception_ptr(const exception_ptr&))
1438	(exception_ptr::~exception_ptr()): Remove 'always_inline'
1439	attributes. Use 'inline' unconditionally.
1440
14412020-11-09  Jonathan Wakely  <jwakely@redhat.com>
1442
1443	PR libstdc++/97758
1444	* include/bits/std_function.h [!__cpp_rtti]: Include <typeinfo>.
1445
14462020-11-07  Liu Hao  <lh_mouse@126.com>
1447
1448	* libsupc++/cxxabi.h: (__cxa_atexit): mark with _GLIBCXX_CDTOR_CALLABI
1449	(__cxa_thread_atexit): ditto
1450	* libsupc++/atexit_thread.cc: (__cxa_atexit): mark with
1451	_GLIBCXX_CDTOR_CALLABI
1452	(__cxa_thread_atexit): ditto
1453	(elt): ditto
1454
14552020-11-06  Jonathan Wakely  <jwakely@redhat.com>
1456
1457	* config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten up patterns
1458	for basic_stringbuf that refer to __xfer_bufptrs.
1459
14602020-11-05  Marek Polacek  <polacek@redhat.com>
1461
1462	PR c++/25814
1463	* testsuite/20_util/reference_wrapper/lwg2993.cc: Add a dg-warning.
1464	* testsuite/25_algorithms/generate_n/87982_neg.cc: Likewise.
1465
14662020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1467
1468	PR libstdc++/96269
1469	* include/std/optional (operator==, operator!=, operator<)
1470	(operator>, operator<=, operator>=): Fix types used in
1471	SFINAE constraints.
1472	* testsuite/20_util/optional/relops/96269.cc: New test.
1473
14742020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1475
1476	PR libstdc++/97731
1477	* src/filesystem/dir.cc (recursive_directory_iterator): Call the
1478	right overload of _Dir::advance.
1479	* testsuite/experimental/filesystem/iterators/97731.cc: New test.
1480
14812020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1482
1483	PR libstdc++/97729
1484	* include/std/future (__basic_future::_M_get_result): Use
1485	nullptr for null pointer constant.
1486	* libsupc++/eh_ptr.cc (operator==, operator!=): Remove
1487	definitions.
1488	* libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Define
1489	macro to conditionally add __attribute__((__used__)).
1490	(operator==, operator!=, exception_ptr::exception_ptr())
1491	(exception_ptr::exception_ptr(const exception_ptr&))
1492	(exception_ptr::~exception_ptr())
1493	(exception_ptr::operator=(const exception_ptr&))
1494	(exception_ptr::swap(exception_ptr&)): Always define as
1495	inline. Add macro to be conditionally "used".
1496
14972020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1498
1499	PR libstdc++/97729
1500	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Add exports.
1501	* src/c++20/sstream-inst.cc (basic_stringbuf): Instantiate
1502	private constructor taking __xfer_bufptrs.
1503
15042020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1505
1506	* include/std/sstream (basic_stringbuf(const allocator_type&):
1507	Add explicit.
1508	(basic_stringbuf(const basic_string<C,T,SA>&, openmode, const A&)):
1509	Call _M_stringbuf_init. Construct _M_string from pointer and length
1510	to avoid constraint checks for string view.
1511	(basic_stringbuf::view()): Make __sv_type alias local to the
1512	function.
1513	(basic_istringstream(const basic_string<C,T,SA>&, openmode, const A&)):
1514	Pass string to _M_streambuf instead of constructing a temporary
1515	with the wrong allocator.
1516	(basic_ostringstream(const basic_string<C,T,SA>&, openmode, const A&)):
1517	Likewise.
1518	(basic_stringstream(const basic_string<C,T,SA>&, openmode, const A&)):
1519	Likewise.
1520	* src/c++20/sstream-inst.cc: Use string_view and wstring_view
1521	typedefs in explicit instantiations.
1522	* testsuite/27_io/basic_istringstream/cons/char/1.cc: Add more
1523	tests for constructors.
1524	* testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise.
1525	* testsuite/27_io/basic_stringbuf/cons/char/1.cc: Likewise.
1526	* testsuite/27_io/basic_stringbuf/cons/char/2.cc: Likewise.
1527	* testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc: Likewise.
1528	* testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc: Likewise.
1529	* testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise.
1530
15312020-11-05  Jonathan Wakely  <jwakely@redhat.com>
1532
1533	* include/std/sstream: Adjust whitespace.
1534
15352020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1536
1537	PR libstdc++/97719
1538	* include/std/sstream (basic_stringstream(string_type&&, openmode)):
1539	Fix default argument.
1540	* testsuite/27_io/basic_stringstream/cons/char/97719.cc: New test.
1541
15422020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1543
1544	* testsuite/18_support/96817.cc: Fail fast if the library is
1545	configured to not use futexes.
1546
15472020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1548
1549	PR libstdc++/94971
1550	* include/bits/stl_algo.h (search(FIter, FIter, const Searcher):
1551	Adjust #if condition.
1552	* include/parallel/algo.h (search(FIter, FIter, const Searcher&):
1553	Define new overload for C++17.
1554
15552020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1556
1557	PR libstdc++/92285
1558	* doc/xml/manual/evolution.xml: Document change to base class.
1559	* doc/html/manual/api.html: Regenerate.
1560
15612020-11-04  Jonathan Wakely  <jwakely@redhat.com>
1562
1563	* include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd):
1564	Use qualified-id to refer to static member functions.
1565
15662020-11-03  Jonathan Wakely  <jwakely@redhat.com>
1567
1568	* include/std/syncstream: Include <bits/std_mutex.h>
1569	unconditionally.
1570
15712020-11-03  François Dumont  <fdumont@gcc.gnu.org>
1572
1573	* config/abi/pre/gnu-versioned-namespace.ver:
1574	Add __istream_extract and _Safe_local_iterator_base::_M_attach_single
1575	symbols.
1576
15772020-11-03  Jonathan Wakely  <jwakely@redhat.com>
1578
1579	* src/c++11/mutex.cc [_GLIBCXX_HAVE_TLS] (__once_proxy): Define
1580	separately for TLS targets.
1581	[!_GLIBCXX_HAVE_TLS] (__get_once_functor_lock_ptr): Replace with ...
1582	(set_lock_ptr): ... this. Set new value and return previous
1583	value.
1584	[!_GLIBCXX_HAVE_TLS] (__set_once_functor_lock_ptr): Adjust to
1585	use set_lock_ptr.
1586	[!_GLIBCXX_HAVE_TLS] (__once_proxy): Likewise.
1587
15882020-11-03  Jonathan Wakely  <jwakely@redhat.com>
1589
1590	PR libstdc++/55394
1591	PR libstdc++/66146
1592	PR libstdc++/84323
1593	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Add new symbols.
1594	* include/std/mutex [!_GLIBCXX_HAS_GTHREADS] (once_flag): Define
1595	even when gthreads is not supported.
1596	(once_flag::_M_once) [_GLIBCXX_HAVE_LINUX_FUTEX]: Change type
1597	from __gthread_once_t to int.
1598	(once_flag::_M_passive(), once_flag::_M_activate())
1599	(once_flag::_M_finish(bool), once_flag::_Active_execution):
1600	Define new members for futex and non-threaded implementation.
1601	[_GLIBCXX_HAS_GTHREADS] (once_flag::_Prepare_execution): New
1602	RAII helper type.
1603	(call_once): Use new members of once_flag.
1604	* src/c++11/mutex.cc (std::once_flag::_M_activate): Define.
1605	(std::once_flag::_M_finish): Define.
1606	* testsuite/30_threads/call_once/39909.cc: Do not require
1607	gthreads.
1608	* testsuite/30_threads/call_once/49668.cc: Likewise.
1609	* testsuite/30_threads/call_once/60497.cc: Likewise.
1610	* testsuite/30_threads/call_once/call_once1.cc: Likewise.
1611	* testsuite/30_threads/call_once/dr2442.cc: Likewise.
1612	* testsuite/30_threads/call_once/once_flag.cc: Add test for
1613	constexpr constructor.
1614	* testsuite/30_threads/call_once/66146.cc: New test.
1615	* testsuite/30_threads/call_once/constexpr.cc: Removed.
1616	* testsuite/30_threads/once_flag/cons/constexpr.cc: Removed.
1617
16182020-11-03  Jonathan Yong  <10walls@gmail.com>
1619
1620	* src/Makefile.am (libstdc___la_LINK): Add lt_host_flags.
1621	* src/Makefile.in: Regenerate.
1622
16232020-11-02  Thomas Rodgers  <trodgers@redhat.com>
1624
1625	* doc/doxygen/user.cfg.in (INPUT): Add new header.
1626	* include/Makefile.am (std_headers): Add new header.
1627	* include/Makefile.in: Regenerate.
1628	* include/precompiled/stdc++.h: Include new header.
1629	* include/std/syncstream: New header.
1630	* include/std/version: Add __cpp_lib_syncbuf.
1631	* testsuite/27_io/basic_syncbuf/1.cc: New test.
1632	* testsuite/27_io/basic_syncbuf/2.cc: Likewise.
1633	* testsuite/27_io/basic_syncbuf/basic_ops/1.cc:
1634	Likewise.
1635	* testsuite/27_io/basic_syncbuf/requirements/types.cc:
1636	Likewise.
1637	* testsuite/27_io/basic_syncbuf/sync_ops/1.cc:
1638	Likewise.
1639	* testsuite/27_io/basic_syncstream/1.cc: Likewise.
1640	* testsuite/27_io/basic_syncstream/2.cc: Likewise.
1641	* testsuite/27_io/basic_syncstream/basic_ops/1.cc:
1642	Likewise.
1643	* testsuite/27_io/basic_syncstream/requirements/types.cc:
1644	Likewise.
1645
16462020-11-01  Jonathan Wakely  <jwakely@redhat.com>
1647
1648	* include/std/type_traits (is_integral<wchar_t>)
1649	(make_unsigned<wchar_t>, make_signed<wchar_t>): Define based
1650	on #ifdef __WCHAR_TYPE__ instead of _GLIBCXX_USE_WCHAR_T.
1651	* include/bits/cpp_type_traits.h (__is_integer<wchar_t>)
1652	(__is_char<wchar_t>): Likewise.
1653
16542020-10-31  François Dumont  <fdumont@gcc.gnu.org>
1655
1656	* src/c++17/floating_from_chars.cc (_GLIBCXX_USE_CX11_ABI): Add define.
1657	(buffering_string): New.
1658	[!_GLIBCXX_USE_CXX11_ABI](reserve_string): New.
1659	(from_chars): Adapt.
1660	* src/c++20/sstream-inst.cc: Limit instantiations to
1661	_GLIBCXX_USE_CXX11_ABI.
1662
16632020-10-31  Jonathan Wakely  <jwakely@redhat.com>
1664
1665	* include/bits/random.h (independent_bit_engine): Fix typo
1666	in comment.
1667	(shuffle_order_engine): Fix incorrect description in comment.
1668	* include/bits/random.tcc (__representable_as_double
1669	(__p1_representable_as_double): New helper functions.
1670	(shuffle_order_engine::operator()): Use double for calculation
1671	if (max() - min() + 1) is representable as double.
1672	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1673	line number.
1674
16752020-10-31  Jonathan Wakely  <jwakely@redhat.com>
1676
1677	PR libstdc++/96958
1678	* include/bits/hashtable_policy.h (_Prime_rehash_policy)
1679	(_Power2_rehash_policy): Use ceil and floor instead of ceill and
1680	floorl.
1681	* src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy): Likewise.
1682	Use double instead of long double.
1683
16842020-10-31  Patrick Palka  <ppalka@redhat.com>
1685
1686	PR libstdc++/97600
1687	* include/std/ranges (basic_istream_view::begin): Initialize
1688	_Iterator from 'this' instead of '*this'.
1689	(basic_istream_view::_Iterator::_Iterator): Adjust constructor
1690	accordingly.
1691	(filter_view::_Iterator::_Iterator): Take a filter_view*
1692	argument instead of a filter_view& argument.
1693	(filter_view::_Sentinel::_Sentinel): Likewise.
1694	(filter_view::begin): Initialize _Iterator from 'this' instead
1695	of '*this'.
1696	(filter_view::end): Likewise.
1697	(transform_view::_Iterator::_Iterator): Take a _Parent* instead
1698	of a _Parent&.
1699	(filter_view::_Iterator::operator+): Adjust accordingly.
1700	(filter_view::_Iterator::operator-): Likewise.
1701	(filter_view::begin): Initialize _Iterator from 'this' instead
1702	of '*this'.
1703	(filter_view::end): Likewise.
1704	(join_view::_Iterator): Take a _Parent* instead of a _Parent&.
1705	(join_view::_Sentinel): Likewise.
1706	(join_view::begin): Initialize _Iterator from 'this' instead of
1707	'*this'.
1708	(join_view::end): Initialize _Sentinel from 'this' instead of
1709	'*this'.
1710	(split_view::_OuterIter): Take a _Parent& instead of a _Parent*.
1711	(split_view::begin): Initialize _OuterIter from 'this' instead
1712	of '*this'.
1713	(split_view::end): Likewise.
1714	* testsuite/std/ranges/97600.cc: New test.
1715
17162020-10-30  Jonathan Wakely  <jwakely@redhat.com>
1717
1718	* include/std/ranges (enable_borrowed_view<take_view<T>>)
1719	(enable_borrowed_view<drop_view<T>>)
1720	(enable_borrowed_view<drop_while_view<T>>)
1721	(enable_borrowed_view<reverse_view<T>>)
1722	(enable_borrowed_view<common_view<T>>)
1723	(enable_borrowed_view<elements_view<T>>): Add partial
1724	specializations as per P2017R1.
1725	* testsuite/std/ranges/adaptors/conditionally_borrowed.cc:
1726	New test.
1727
17282020-10-30  Jonathan Wakely  <jwakely@redhat.com>
1729
1730	PR libstdc++/96958
1731	* include/bits/hashtable_policy.h (_Prime_rehash_policy)
1732	(_Power2_rehash_policy): Use double instead of long double.
1733
17342020-10-30  Jonathan Wakely  <jwakely@redhat.com>
1735
1736	* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
1737	Avoid -Wcatch-value warnings.
1738
17392020-10-30  Patrick Palka  <ppalka@redhat.com>
1740
1741	* include/std/ranges (__detail::__box): For the partial
1742	specialization used by types that are already semiregular,
1743	make the default constructor value-initialize the underlying
1744	object instead of default-initializing it.  Make its in place
1745	constructor explicit.
1746	* testsuite/std/ranges/adaptors/detail/semiregular_box.cc:
1747	Augment test.
1748
17492020-10-30  David Edelsohn  <dje.gcc@gmail.com>
1750
1751	* testsuite/20_util/unique_ptr/creation/for_overwrite.cc: XFAIL on AIX.
1752
17532020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1754
1755	* config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Tighten patterns
1756	for old <sstream> symbols some more.
1757
17582020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1759
1760	* include/bits/ranges_util.h (subrange::subrange(R&&)): Use
1761	direct-initialization instead of list-initialization, so a
1762	potential narrowing conversion from ranges::size(r) to the
1763	stored size isn't ill-formed.
1764
17652020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1766
1767	* include/bits/parse_numbers.h (_Select_int_base): Avoid
1768	narrowing conversion in constant expression.
1769	* include/experimental/buffer (buffer_copy): Avoid narrowing
1770	conversion.
1771	* include/experimental/internet (hash<>::operator()): Do not
1772	use deprecated 'argument_type' member.
1773	* include/std/variant (variant::emplace): Use cast instead
1774	of implicit conversion from size_t to narrower unsigned type.
1775
17762020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1777
1778	* include/tr1/shared_ptr.h (__shared_count, __shared_ptr)
1779	(shared_ptr): Add diagnostic pragmas around uses of auto_ptr.
1780	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
1781	Adust dg-error line numbers.
1782
17832020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1784
1785	* testsuite/18_support/96817.cc: Avoid -Wunused warnings.
1786	* testsuite/20_util/any/assign/2.cc: Likewise.
1787	* testsuite/20_util/any/cons/2.cc: Likewise.
1788	* testsuite/20_util/align/1.cc: Avoid -Wsign-compare warning.
1789	* testsuite/20_util/function/65760.cc: Avoid -Wunused warning.
1790	* testsuite/20_util/function/1.cc: Avoid -Wcatch-value warning.
1791	* testsuite/20_util/function/cons/move_target.cc: Avoid -Wunused
1792	warning.
1793	* testsuite/20_util/headers/memory/synopsis.cc: Add exception
1794	specification.
1795	* testsuite/20_util/monotonic_buffer_resource/allocate.cc: Avoid
1796	-Wsign-compare warning.
1797	* testsuite/20_util/tuple/cons/deduction.cc: Avoid -Wunused
1798	warning.
1799	* testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc:
1800	Avoid -Wdeprecated-copy warning.
1801	* testsuite/21_strings/basic_string/56166.cc: Avoid
1802	-Wcatch-value warning.
1803	* testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
1804	Avoid -Wcatch-value warnings.
1805	* testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
1806	Likewise.
1807	* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
1808	Likewise.
1809	* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
1810	Likewise.
1811	* testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc:
1812	Likewise.
1813	* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
1814	Likewise.
1815	* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
1816	Likewise.
1817	* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
1818	Likewise.
1819	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc:
1820	Likewise.
1821	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc:
1822	Likewise.
1823	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc:
1824	Likewise.
1825	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc:
1826	Likewise.
1827	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc:
1828	Likewise.
1829	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc:
1830	Likewise.
1831	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc:
1832	Likewise.
1833	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc:
1834	Likewise.
1835	* testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc:
1836	Prune additional diagnostics.
1837	* testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc:
1838	Likewise.
1839	* testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc:
1840	Likewise.
1841	* testsuite/21_strings/headers/string/synopsis.cc: Add exception
1842	specifications.
1843	* testsuite/22_locale/locale/cons/12352.cc: Define sized
1844	delete operators to avoid warnings.
1845	* testsuite/23_containers/deque/modifiers/swap/1.cc: Add
1846	exception specification.
1847	* testsuite/23_containers/forward_list/cons/11.cc: Avoid
1848	-Wdeprecated-copy warning.
1849	* testsuite/23_containers/headers/bitset/synopsis.cc: Add
1850	exception specification.
1851	* testsuite/23_containers/headers/deque/synopsis.cc: Likewise.
1852	* testsuite/23_containers/headers/forward_list/synopsis.cc:
1853	Likewise.
1854	* testsuite/23_containers/headers/list/synopsis.cc: Likewise.
1855	* testsuite/23_containers/headers/map/synopsis.cc: Likewise.
1856	* testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
1857	* testsuite/23_containers/headers/set/synopsis.cc: Likewise.
1858	* testsuite/23_containers/headers/vector/synopsis.cc: Likewise.
1859	* testsuite/23_containers/list/modifiers/swap/1.cc: Likewise.
1860	* testsuite/23_containers/map/modifiers/swap/1.cc: Likewise.
1861	* testsuite/23_containers/multimap/modifiers/swap/1.cc:
1862	Likewise.
1863	* testsuite/23_containers/multiset/modifiers/swap/1.cc:
1864	Likewise.
1865	* testsuite/23_containers/set/modifiers/swap/1.cc: Likewise.
1866	* testsuite/23_containers/unordered_set/56267-2.cc: Avoid
1867	-Wdeprecated-copy warning.
1868	* testsuite/23_containers/vector/bool/23632.cc: Avoid
1869	-Wempty-body warning.
1870	* testsuite/23_containers/vector/modifiers/swap/1.cc: Add
1871	exception specification.
1872	* testsuite/25_algorithms/heap/moveable2.cc: Fix misplaced
1873	parentheses around arguments.
1874	* testsuite/25_algorithms/sample/1.cc: Use return value.
1875	* testsuite/25_algorithms/search/searcher.cc: Avoid -Wunused
1876	warnings.
1877	* testsuite/27_io/basic_ostream/exceptions/char/9561.cc:
1878	Likewise.
1879	* testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc:
1880	Likewise.
1881	* testsuite/27_io/filesystem/operations/remove_all.cc: Avoid
1882	-Wsign-compare warning.
1883	* testsuite/experimental/any/assign/2.cc: Avoid -Wunused warnings.
1884	* testsuite/experimental/any/cons/2.cc: Likewise.
1885	* testsuite/experimental/filesystem/operations/remove_all.cc:
1886	Avoid -Wign-compare warning.
1887	* testsuite/experimental/memory/observer_ptr/cons/cons.cc:
1888	Likewise.
1889	* testsuite/experimental/memory_resource/null_memory_resource.cc:
1890	Likewise.
1891	* testsuite/experimental/source_location/1.cc: Avoid -Waddress
1892	warning.
1893	* testsuite/ext/pod_char_traits.cc: Avoid -Wunused warning.
1894	* testsuite/ext/vstring/modifiers/clear/56166.cc: Avoid
1895	-Wcatch-value.
1896	* testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
1897	Avoid -Wunused warning.
1898	* testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc:
1899	Likewise.
1900	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
1901	Prune additional warnings.
1902	* testsuite/tr1/3_function_objects/function/1.cc: Avoid
1903	-Wcatch-value warning.
1904	* testsuite/util/replacement_memory_operators.h: Define sized
1905	delete to avoid warnings.
1906	* testsuite/util/testsuite_api.h (_NonDefaultConstructible): Add
1907	user-declared assignment operator to stop -Wdeprecated-copy
1908	warnings.
1909	* testsuite/util/testsuite_containers.h: Avoid -Wunused warning.
1910	* testsuite/util/testsuite_iterators.h: Avoid -Wsign-compare
1911	warnings.
1912	* testsuite/util/testsuite_new_operators.h: Define sized deleted.
1913
19142020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1915
1916	* testsuite/25_algorithms/all_of/constexpr.cc: Check result of
1917	the algorithm.
1918	* testsuite/25_algorithms/any_of/constexpr.cc: Likewise.
1919	* testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
1920	* testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise.
1921	* testsuite/25_algorithms/count/constexpr.cc: Likewise.
1922	* testsuite/25_algorithms/equal/constexpr.cc: Likewise.
1923	* testsuite/25_algorithms/equal_range/constexpr.cc: Likewise.
1924	* testsuite/25_algorithms/fill/constexpr.cc: Likewise.
1925	* testsuite/25_algorithms/find_end/constexpr.cc: Likewise.
1926	* testsuite/25_algorithms/find_if/constexpr.cc: Likewise.
1927	* testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise.
1928	* testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise.
1929	* testsuite/25_algorithms/is_sorted_until/constexpr.cc:
1930	Likewise.
1931	* testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
1932	Likewise.
1933	* testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise.
1934	* testsuite/25_algorithms/merge/constexpr.cc: Likewise.
1935	* testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
1936	* testsuite/25_algorithms/none_of/constexpr.cc: Likewise.
1937	* testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise.
1938	* testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise.
1939	* testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise.
1940	* testsuite/25_algorithms/remove_if/constexpr.cc: Likewise.
1941	* testsuite/25_algorithms/replace_if/constexpr.cc: Likewise.
1942	* testsuite/25_algorithms/reverse/constexpr.cc: Likewise.
1943	* testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise.
1944	* testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise.
1945	* testsuite/25_algorithms/search/constexpr.cc: Likewise.
1946	* testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
1947	* testsuite/25_algorithms/set_intersection/constexpr.cc:
1948	Likewise.
1949	* testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
1950	Likewise.
1951	* testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
1952	* testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
1953	* testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
1954
19552020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1956
1957	* include/bits/uniform_int_dist.h (_Power_of_two): Add
1958	constexpr.
1959	(uniform_int_distribution::_S_nd): Add static_assert to ensure
1960	the wider type is twice as wide as the result type.
1961	(uniform_int_distribution::__generate_impl): Add static_assert
1962	and declare variables as constexpr where appropriate.
1963	(uniform_int_distribution:operator()): Likewise. Only consider
1964	the uniform random bit generator's range of possible results
1965	when deciding whether _S_nd can be used, not the __uctype type.
1966
19672020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1968
1969	* include/ext/rope (_Refcount_Base::_M_ref_count): Remove
1970	volatile qualifier.
1971	(_Refcount_Base::_M_decr()): Likewise.
1972
19732020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1974
1975	* include/bits/std_function.h (_Function_handler<void, void>):
1976	Define explicit specialization used for invalid target types.
1977	(_Base_manager::_M_manager) [!__cpp_rtti]: Return null.
1978	(function::target_type()): Check for null pointer.
1979	(function::target()): Define unconditionall. Fix bug with
1980	const_cast of function pointer type.
1981	(function::target() const): Define unconditionally, but
1982	only use RTTI if enabled.
1983	* testsuite/20_util/function/target_no_rtti.cc: New test.
1984
19852020-10-29  Patrick Palka  <ppalka@redhat.com>
1986
1987	* testsuite/25_algorithms/lexicographical_compare/constrained.cc:
1988	(test03): Fix initializing the vector vy with the array y of size 4.
1989
19902020-10-29  Jonathan Wakely  <jwakely@redhat.com>
1991
1992	* include/bits/hashtable_policy.h (_Local_iterator_base): Cast
1993	value to avoid -Wsign-compare warnings.
1994	* include/bits/regex.h (sub_match::_M_str): Avoid narrowing
1995	conversion.
1996	* include/bits/regex_compiler.tcc (_Compiler::_M_quantifier):
1997	Initialize variable to avoid -Wmaybe-uninitialized warning.
1998	* include/bits/shared_ptr_base.h (_Sp_counted_deleter::_Impl):
1999	Reorder mem-initializer-list to avoid -Wreorder warning.
2000	* include/bits/stl_tree.h (_Rb_tree_impl): Explicitly
2001	initialize base class in copy constructor.
2002	* include/debug/safe_iterator.h (_Safe_iterator): Likewise.
2003	* include/ext/debug_allocator.h: Reorder mem-initializer-list
2004	to avoid -Wreorder warning.
2005	* include/ext/throw_allocator.h (throw_allocator_limit)
2006	(throw_allocator_random): Add user-declared assignment operators
2007	to avoid -Wdeprecated-copy warnings.
2008
20092020-10-29  Jonathan Wakely  <jwakely@redhat.com>
2010
2011	* include/bits/uniform_int_dist.h (uniform_int_distribution):
2012	Rename _UniformRandomNumberGenerator template parameters to
2013	_UniformRandomBitGenerator, as per P0346R1.
2014
20152020-10-29  Jonathan Wakely  <jwakely@redhat.com>
2016
2017	* include/std/sstream (basic_stringbuf(__string_type&&, openmode)):
2018	Call _M_init_syncbuf to set up get/put areas. Also qualify
2019	std::move.
2020
20212020-10-28  Jonathan Wakely  <jwakely@redhat.com>
2022
2023	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Remove duplicate
2024	patterns.
2025	(CXXABI_1.3.13): Restore missing piece.
2026
20272020-10-28  Thomas Rodgers  <trodgers@redhat.com>
2028
2029	* acinclude.m4 (glibcxx_SUBDIRS): Add src/c++20.
2030	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): New symbols.
2031	* configure: Regenerate.
2032	* include/std/sstream:
2033	(basic_stringbuf::basic_stringbuf(allocator const&)): New constructor.
2034	(basic_stringbuf::basic_stringbuf(openmode, allocator const&)): Likewise.
2035	(basic_stringbuf::basic_stringbuf(basic_string&&, openmode)): Likewise.
2036	(basic_stringbuf::basic_stringbuf(basic_stringbuf&&, allocator const&)):
2037	Likewise.
2038	(basic_stringbuf::get_allocator()): New method.
2039	(basic_stringbuf::view()): Likewise.
2040	(basic_istringstream::basic_istringstream(basic_string&&, openmode)):
2041	New constructor.
2042	(basic_istringstream::basic_istringstream(openmode, allocator const&)):
2043	Likewise
2044	(basic_istringstream::view()): New method.
2045	(basic_ostringstream::basic_ostringstream(basic_string&&, openmode)):
2046	New constructor.
2047	(basic_ostringstream::basic_ostringstream(openmode, allocator const&)):
2048	Likewise
2049	(basic_ostringstream::view()): New method.
2050	(basic_stringstream::basic_stringstream(basic_string&&, openmode)):
2051	New constructor.
2052	(basic_stringstream::basic_stringstream(openmode, allocator const&)):
2053	Likewise
2054	(basic_stringstream::view()): New method.
2055	* src/Makefile.in: Add c++20 directory.
2056	* src/Makefile.am: Regenerate.
2057	* src/c++20/Makefile.am: Add makefile for new sub-directory.
2058	* src/c++20/Makefile.in: Generate.
2059	* src/c++20/sstream-inst.cc: New file defining explicit
2060	instantiations for basic_stringbuf, basic_istringstream,
2061	basic_ostringstream, and basic_stringstream member functions
2062	added in C++20.
2063	* testsuite/27_io/basic_stringbuf/cons/char/2.cc: New test.
2064	* testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc: Likewise.
2065	* testsuite/27_io/basic_stringbuf/view/char/1.cc: Likewise.
2066	* testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc: Likewise.
2067	* testsuite/27_io/basic_istringstream/cons/char/1.cc: Likewise.
2068	* testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc: Likewise.
2069	* testsuite/27_io/basic_istringstream/view/char/1.cc: Likewise.
2070	* testsuite/27_io/basic_istringstream/view/wchar_t/1.cc: Likewise.
2071	* testsuite/27_io/basic_ostringstream/cons/char/1.cc: Likewise.
2072	* testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc: Likewise.
2073	* testsuite/27_io/basic_ostringstream/view/char/1.cc: Likewise.
2074	* testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc: Likewise.
2075	* testsuite/27_io/basic_stringstream/cons/char/1.cc: Likewise.
2076	* testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc: Likewise.
2077	* testsuite/27_io/basic_stringstream/view/char/1.cc: Likewise.
2078	* testsuite/27_io/basic_stringstream/view/wchar_t/1.cc: Likewise.
2079
20802020-10-28  Patrick Palka  <ppalka@redhat.com>
2081
2082	PR libstdc++/97613
2083	* include/std/chrono (year_month_weekday::operator sys_days):
2084	Cast the result of index() to int so that the initializer for
2085	days{} is sign-extended when it's converted to the underlying
2086	type.
2087	* testsuite/std/time/year_month_weekday/3.cc: New test.
2088
20892020-10-28  Jonathan Wakely  <jwakely@redhat.com>
2090
2091	* libsupc++/new_opnt.cc (new): Add comment about forced unwind
2092	exceptions.
2093
20942020-10-28  Jonathan Wakely  <jwakely@redhat.com>
2095
2096	PR libstdc++/94268
2097	* config/os/mingw32-w64/os_defines.h (_GLIBCXX_BUFSIZ):
2098	Define.
2099	* config/os/mingw32/os_defines.h (_GLIBCXX_BUFSIZ):
2100	Define.
2101	* include/bits/fstream.tcc: Use _GLIBCXX_BUFSIZ instead
2102	of BUFSIZ.
2103	* include/ext/stdio_filebuf.h: Likewise.
2104	* include/std/fstream (_GLIBCXX_BUFSIZ): Define.
2105
21062020-10-28  Jonathan Wakely  <jwakely@redhat.com>
2107
2108	PR libstdc++/95592
2109	* include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR)
2110	(_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION):
2111	Use elaborated-type-specifier and qualified-id to avoid
2112	ambiguities with QNX system headers.
2113	* testsuite/26_numerics/valarray/95592.cc: New test.
2114
21152020-10-28  Jonathan Wakely  <jwakely@redhat.com>
2116
2117	PR libstdc++/95609
2118	* include/std/span (span): Reorder data members to match common
2119	implementations of struct iovec.
2120	* testsuite/23_containers/span/layout_compat.cc: New test.
2121
21222020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2123
2124	* include/std/functional (std::_Placeholder): Define for C++98
2125	as well as later standards.
2126	* include/tr1/functional (std::placeholders::_1 etc): Declare
2127	for C++98.
2128	(tr1::_Placeholder): Replace with using-declaration for
2129	std::_Placeholder.
2130	(tr1::placeholders::_1 etc.): Replace with using-directive for
2131	std::placeholders.
2132
21332020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2134
2135	* include/tr1/ell_integral.tcc (__ellint_rf, __ellint_rd)
2136	(__ellint_rc, __ellint_rj): Remove unused variables.
2137	* include/tr1/modified_bessel_func.tcc (__airy): Likewise.
2138
21392020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2140
2141	* include/bits/locale_conv.h (__str_codecvt_out_all):
2142	Add cast to compare operands of the same signedness.
2143	* include/bits/locale_facets_nonio.tcc
2144	(time_get::_M_extract_wday_or_month): Likewise.
2145	* include/bits/sstream.tcc (basic_stringbuf::overflow):
2146	Likewise.
2147	* include/tr1/legendre_function.tcc (__sph_legendre): Use
2148	unsigned for loop variable.
2149
21502020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2151
2152	* include/std/charconv (from_chars): Add noexcept to match
2153	definitions in src/c++17/floating_from_chars.cc
2154
21552020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2156
2157	* src/c++17/fs_dir.cc (fs::directory_iterator::operator*):
2158	Add noexcept. Do not throw on precondition violation.
2159
21602020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2161
2162	* include/bits/fs_path.h (path::_List::begin, path::_List::end):
2163	Add noexcept to match definitions in src/c++17/fs_path.cc.
2164
21652020-10-27  Jonathan Wakely  <jwakely@redhat.com>
2166
2167	* testsuite/experimental/memory_resource/new_delete_resource.cc:
2168	Add missing <cstdint> header.
2169	* testsuite/experimental/memory_resource/resource_adaptor.cc:
2170	Likewise.
2171
21722020-10-26  Jonathan Wakely  <jwakely@redhat.com>
2173
2174	* include/experimental/executor (strand::_State): Fix thinko.
2175
21762020-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
2177
2178	* include/std/type_traits (__is_nt_constructible_impl): Remove.
2179	(__is_nothrow_constructible_impl): Adjust.
2180	(is_nothrow_default_constructible): Likewise.
2181	(__is_nt_assignable_impl): Remove.
2182	(__is_nothrow_assignable_impl): Adjust.
2183
21842020-10-26  Jonathan Wakely  <jwakely@redhat.com>
2185
2186	PR libstdc++/97570
2187	* libsupc++/new_opa.cc: Declare size_t in global namespace.
2188	Remove unused header.
2189
21902020-10-26  Stephan Bergmann  <sbergman@redhat.com>
2191
2192	* include/bits/shared_ptr_base.h
2193	(_Sp_counted_base::_M_add_ref_lock_nothrow(): Add noexcept to
2194	definitions to match declaration.
2195	(__shared_count(const __weak_count&, nothrow_t)): Add noexcept
2196	to declaration to match definition.
2197
21982020-10-23  Patrick Palka  <ppalka@redhat.com>
2199
2200	* include/std/ranges (single_view::single_view): Mark the
2201	in place constructor explicit as per LWG 3428.
2202	(take_view): Remove the constraint on the deduction guide's
2203	template parameter as per LWG 3447.
2204
22052020-10-23  Jonathan Wakely  <jwakely@redhat.com>
2206
2207	* include/experimental/memory_resource: Include <tuple>.
2208	(polymorphic_allocator::construct): Qualify forward_as_tuple.
2209	* include/std/memory_resource: Likewise.
2210
22112020-10-22  Jonathan Wakely  <jwakely@redhat.com>
2212
2213	* testsuite/30_threads/condition_variable/members/68519.cc:
2214	Define recent_epoch_float_clock::duration to meet the Cpp17Clock
2215	requirements.
2216
22172020-10-22  Jonathan Wakely  <jwakely@redhat.com>
2218
2219	* include/std/shared_mutex: Only include <condition_variable>
2220	when pthread_rwlock_t and POSIX timers are not available.
2221	(__cpp_lib_shared_mutex, __cpp_lib_shared_timed_mutex): Change
2222	value to be type 'long'.
2223	* include/std/version (__cpp_lib_shared_mutex)
2224	(__cpp_lib_shared_timed_mutex): Likewise.
2225
22262020-10-22  Jonathan Wakely  <jwakely@redhat.com>
2227
2228	* include/Makefile.am: Add new header.
2229	* include/Makefile.in: Regenerate.
2230	* include/bits/shared_ptr.h: Include <iosfwd>.
2231	* include/bits/shared_ptr_base.h: Include required headers here
2232	directly, instead of in <memory>.
2233	* include/bits/uses_allocator_args.h: New file. Move utility
2234	functions for uses-allocator construction from <memory> to here.
2235	Only define the utility functions when concepts are available.
2236	(__cpp_lib_make_obj_using_allocator): Define non-standard
2237	feature test macro.
2238	* include/std/condition_variable: Remove unused headers.
2239	* include/std/future: Likewise.
2240	* include/std/memory: Remove headers that are not needed
2241	directly, and are now inclkuded where they're needed. Include
2242	new <bits/uses_allocator_args.h> header.
2243	* include/std/memory_resource: Include only the necessary
2244	headers. Use new feature test macro to detect support for the
2245	utility functions.
2246	* include/std/scoped_allocator: Likewise.
2247	* include/std/version (__cpp_lib_make_obj_using_allocator):
2248	Define.
2249
22502020-10-22  Olivier Hainque  <hainque@adacore.com>
2251
2252	* crossconfig.m4: Turn vxworks matcher into vxworks*.
2253	* configure.host: Likewise.
2254	* configure: Regenerate.
2255
22562020-10-21  Jonathan Wakely  <jwakely@redhat.com>
2257
2258	* include/bits/shared_ptr.h (shared_ptr(const weak_ptr&, nothrow_t)):
2259	Add noexcept.
2260	* include/bits/shared_ptr_base.h (_Sp_counted_base::_M_add_ref_lock):
2261	Remove specializations and just call _M_add_ref_lock_nothrow.
2262	(__shared_count, __shared_ptr): Use nullptr for null pointer
2263	constants.
2264	(__shared_count(const __weak_count&)): Use _M_add_ref_lock_nothrow
2265	instead of _M_add_ref_lock.
2266	(__shared_count(const __weak_count&, nothrow_t)): Add noexcept.
2267	(__shared_ptr::operator bool()): Add noexcept.
2268	(__shared_ptr(const __weak_ptr&, nothrow_t)): Add noexcept.
2269
22702020-10-21  Jonathan Wakely  <jwakely@redhat.com>
2271
2272	PR libstdc++/97512
2273	* include/bits/ranges_util.h (tuple_size<subrange>)
2274	(tuple_element<I, cv subrange>): Move here from ...
2275	* include/std/ranges: ... here.
2276	* testsuite/std/ranges/subrange/97512.cc: New test.
2277
22782020-10-21  Thomas Rodgers  <trodgers@redhat.com>
2279
2280	* include/pstl/algorithm_impl.h: Update file.
2281	* include/pstl/execution_impl.h: Likewise.
2282	* include/pstl/glue_algorithm_impl.h: Likewise.
2283	* include/pstl/glue_memory_impl.h: Likewise.
2284	* include/pstl/glue_numeric_impl.h: Likewise.
2285	* include/pstl/memory_impl.h: Likewise.
2286	* include/pstl/numeric_impl.h: Likewise.
2287	* include/pstl/parallel_backend.h: Likewise.
2288	* include/pstl/parallel_backend_serial.h: Likewise.
2289	* include/pstl/parallel_backend_tbb.h: Likewise.
2290	* include/pstl/parallel_backend_utils.h: Likewise.
2291	* include/pstl/pstl_config.h: Likewise.
2292	* include/pstl/unseq_backend_simd.h: Likewise.
2293
22942020-10-20  François Dumont  <fdumont@gcc.gnu.org>
2295
2296	* include/bits/hashtable_policy.h
2297	(_Hash_node_value_base<>): Remove _Hash_node_base inheritance.
2298	(_Hash_node_code_cache<bool _Cache_hash_code>): New.
2299	(_Hash_node_value<typename _Value, bool _Cache_hash_code>): New.
2300	(_Hash_node<>): Inherits _Hash_node_base<> and _Hash_node_value<>.
2301	(_Map_base<>::__node_type): Remove.
2302	(_Map_base<>::iterator): Remove.
2303	(_Insert_base<>::__hash_cached): New.
2304	(_Insert_base<>::__constant_iterators): New.
2305	(_Insert_base<>::__hashtable_alloc): New.
2306	(_Insert_base<>::__node_type): Remove.
2307	(_Insert_base<>::__node_ptr): New.
2308	(_Hash_code_base<>): Remove specializations.
2309	(_Hash_code_base<>::__node_type): Remove.
2310	(_Hash_code_base<>::_M_bucket_index(const __node_type*, size_t)):
2311	Replace by...
2312	(_Hash_code_base<>::_M_bucket_index(const _Hash_node_value<>&, size_t)):
2313	...this.
2314	(_Hash_code_base<>::_M_store_code(__node_type*, __hash_code)):
2315	Replace by...
2316	(_Hash_code_base<>::_M_store_code(_Hash_node_code_cache<>&, __hash_code)):
2317	...this.
2318	(_Hash_code_base<>::_M_copy_code(__node_type*, const __node_type*)):
2319	Replace by...
2320	(_Hash_code_base<>::_M_copy_code(_Hash_node_code_cache<>&,
2321	const _Hash_node_code_base<>&)): ...this.
2322	(_Hashtable_base<>::__constant_iterators): Remove.
2323	(_Hashtable_base<>::__unique_keys): Remove.
2324	(_Hashtable_base<>::__node_type): Remove.
2325	(_Hashtable_base<>::iterator): Remove.
2326	(_Hashtable_base<>::const_iterator): Remove.
2327	(_Hashtable_base<>::local_iterator): Remove.
2328	(_Hashtable_base<>::const_local_iterator): Remove.
2329	(_Hashtable_base<>::__ireturn_type): Remove.
2330	(_Hashtable_base<>::_Equal_hash_code<>::_S_equals): Replace by...
2331	(_Hashtable_base<>::_S_equals(__hash_code, const _Hash_node_code_hash<>&)):
2332	...this.
2333	(_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals): Replace by...
2334	(_Hashtable_base<>::_S_node_equals(__hash_code,
2335	const _Hash_node_code_hash<>&)): ...this.
2336	(_Hashtable_base<>::_Equal_hash_code<>): Remove.
2337	(_Hashtable_base<>::_M_equals): Adapt.
2338	(_Hashtable_baxe<>::_M_node_equals): Adapt.
2339	(_Equality<>::_M_equal): Adapt.
2340	(_Hashtable_alloc<>::__node_ptr): New.
2341	(_Hashtable_alloc<>::__bucket_type): Rename into...
2342	(_Hashtable_alloc<>::__node_base_ptr): ...this.
2343	(_Hashtable_alloc<>::__bucket_alloc_type): Rename into...
2344	(_Hashtable_alloc<>::__buckets_alloc_type): ...this.
2345	(_Hashtable_alloc<>::__bucket_alloc_traits): Rename into...
2346	(_Hashtable_alloc<>::__buckets_alloc_traits): ...this.
2347	(_Hashtable_alloc<>::__buckets_ptr): New.
2348	(_Hashtable_alloc<>::_M_allocate_node): Adapt.
2349	(_Hashtable_alloc<>::_M_deallocate_node): Adapt.
2350	(_Hashtable_alloc<>::_M_deallocate_node_ptr): Adapt.
2351	(_Hashtable_alloc<>::_M_deallocate_nodes): Adapt.
2352	(_Hashtable_alloc<>::_M_allocate_buckets): Adapt.
2353	(_Hashtable_alloc<>::_M_deallocate_buckets): Adapt.
2354	* include/bits/hashtable.h (_Hashtable<>): Adapt.
2355
23562020-10-20  Aldy Hernandez  <aldyh@redhat.com>
2357
2358	* testsuite/21_strings/basic_string/capacity/1.cc: Pass
2359	-Wno-stringop-overflow to test.
2360
23612020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2362
2363	PR libstdc++/95917
2364	* include/std/coroutine (__noop_coro_frame): Replace with
2365	noop_coroutine_handle::__frame.
2366	(__dummy_resume_destroy): Define inline in __frame.
2367	(__noop_coro_fr): Replace with noop_coroutine_handle::_S_fr
2368	and define as inline.
2369	* testsuite/18_support/coroutines/95917.cc: New test.
2370
23712020-10-20  Jonathan Wakely  <jwakely@redhat.com>
2372
2373	* include/std/coroutine (coroutine_handle<_Promise>): Remove
2374	base class. Add constructors, conversions, accessors etc. as
2375	proposed for LWG 3460.
2376	(coroutine_handle<noop_coroutine_promise>): Likewise.
2377	* testsuite/18_support/coroutines/lwg3460.cc: New test.
2378
23792020-10-19  Jonathan Wakely  <jwakely@redhat.com>
2380
2381	* include/bits/unique_ptr.h (make_unique_for_overwrite): Define
2382	for C++20.
2383	* testsuite/20_util/unique_ptr/creation/array_neg.cc: Remove
2384	unused header. Adjust standard reference.
2385	* testsuite/20_util/unique_ptr/creation/for_overwrite.cc: New test.
2386	* testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc: New test.
2387
23882020-10-19  Jonathan Wakely  <jwakely@redhat.com>
2389
2390	* include/std/tuple (_Head_base<Idx, Head, true>): Use reserved
2391	form of __no_unique_address__ attribute because
2392	no_unique_address is not reserved prior to C++20.
2393
23942020-10-19  Jonathan Wakely  <jwakely@redhat.com>
2395
2396	* include/bits/node_handle.h (_Node_handle_common): Replace
2397	std::optional with custom type.
2398	* testsuite/20_util/variant/exception_safety.cc: Add missing
2399	header include.
2400
24012020-10-19  Jonathan Wakely  <jwakely@redhat.com>
2402
2403	* include/precompiled/expc++.h: Removed.
2404
24052020-10-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
2406
2407	PR libstdc++/97449
2408	* include/std/variant
2409	(__gen_vtable_impl<>::_S_apply_single_alt):
2410	Diagnose visitor return type mismatches here..
2411	(__gen_vtable_impl</*base case*/>::_S_apply):
2412	..not here.
2413
24142020-10-15  Jonathan Wakely  <jwakely@redhat.com>
2415
2416	* include/std/concepts: Fix typos in copyright notice.
2417	* include/std/ranges: Likewise.
2418
24192020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2420
2421	PR libstdc++/97415
2422	* include/std/sstream (basic_stringbuf::str()): Check for
2423	null egptr() before comparing to non-null pptr().
2424
24252020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2426
2427	* testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc:
2428	Do not generate debug info.
2429	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc:
2430	Likewise.
2431
24322020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2433
2434	* include/bits/basic_string.h (basic_string(const Alloc&))
2435	(basic_string(const basic_string&)
2436	(basic_string(const CharT*, size_type, const Alloc&))
2437	(basic_string(const CharT*, const Alloc&))
2438	(basic_string(size_type, CharT, const Alloc&))
2439	(basic_string(initializer_list<CharT>, const Alloc&))
2440	(basic_string(InputIterator, InputIterator, const Alloc&)):
2441	Define inline in class body.
2442	* include/bits/basic_string.tcc (basic_string(const Alloc&))
2443	(basic_string(const basic_string&)
2444	(basic_string(const CharT*, size_type, const Alloc&))
2445	(basic_string(const CharT*, const Alloc&))
2446	(basic_string(size_type, CharT, const Alloc&))
2447	(basic_string(initializer_list<CharT>, const Alloc&))
2448	(basic_string(InputIterator, InputIterator, const Alloc&)):
2449	Move definitions into class body.
2450
24512020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2452
2453	* testsuite/lib/libstdc++.exp (check_effective_target_cxx11-abi):
2454	Add comments about which test flags get used by the check.
2455
24562020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2457
2458	* testsuite/21_strings/basic_string/allocator/char/copy.cc: Make
2459	comment more precise about what isn't supported by COW strings.
2460	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
2461	Likewise.
2462	* testsuite/21_strings/basic_string/allocator/char/move.cc:
2463	Likewise.
2464	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
2465	Likewise.
2466	* testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
2467	Likewise.
2468	* testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
2469	Likewise.
2470	* testsuite/21_strings/basic_string/allocator/char/swap.cc:
2471	Likewise.
2472	* testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
2473	Likewise.
2474	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
2475	Likewise.
2476	* testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
2477	Likewise.
2478	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
2479	Likewise.
2480	* testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
2481	Likewise.
2482	* testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
2483	Likewise.
2484	* testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
2485	Likewise.
2486
24872020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2488
2489	* testsuite/21_strings/basic_string/allocator/char/minimal.cc:
2490	Do not require cxx11-abi effective target.
2491	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
2492	Likewise.
2493	* testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
2494
24952020-10-14  Jonathan Wakely  <jwakely@redhat.com>
2496
2497	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2498	(basic_string(const _CharT*, const _Alloc&)): Constrain to
2499	require an allocator-like type to fix CTAD ambiguity (LWG 3706).
2500	* testsuite/21_strings/basic_string/cons/char/deduction.cc:
2501	Remove dg-skip-if.
2502	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
2503	Likewise.
2504
25052020-10-13  Nuno Lopes  <nuno.lopes@ist.utl.pt>
2506
2507	* include/bits/stl_algo.h (any_of): Fix incorrect description
2508	in comment.
2509
25102020-10-13  Jonathan Wakely  <jwakely@redhat.com>
2511
2512	* doc/xml/manual/evolution.xml: Document some API changes
2513	and deprecations.
2514	* doc/xml/manual/intro.xml: Document LWG 2499.
2515	* doc/xml/manual/status_cxx2020.xml: Update status.
2516	* doc/html/*: Regenerate.
2517
25182020-10-13  Jonathan Wakely  <jwakely@redhat.com>
2519
2520	* doc/xml/book.txml: Remove trailing whitespace.
2521	* doc/xml/chapter.txml: Likewise.
2522	* doc/xml/class.txml: Likewise.
2523	* doc/xml/gnu/fdl-1.3.xml: Likewise.
2524	* doc/xml/gnu/gpl-3.0.xml: Likewise.
2525	* doc/xml/manual/abi.xml: Likewise.
2526	* doc/xml/manual/algorithms.xml: Likewise.
2527	* doc/xml/manual/allocator.xml: Likewise.
2528	* doc/xml/manual/appendix_contributing.xml: Likewise.
2529	* doc/xml/manual/appendix_free.xml: Likewise.
2530	* doc/xml/manual/appendix_porting.xml: Likewise.
2531	* doc/xml/manual/atomics.xml: Likewise.
2532	* doc/xml/manual/auto_ptr.xml: Likewise.
2533	* doc/xml/manual/backwards_compatibility.xml: Likewise.
2534	* doc/xml/manual/bitmap_allocator.xml: Likewise.
2535	* doc/xml/manual/build_hacking.xml: Likewise.
2536	* doc/xml/manual/codecvt.xml: Likewise.
2537	* doc/xml/manual/concurrency.xml: Likewise.
2538	* doc/xml/manual/concurrency_extensions.xml: Likewise.
2539	* doc/xml/manual/configure.xml: Likewise.
2540	* doc/xml/manual/containers.xml: Likewise.
2541	* doc/xml/manual/ctype.xml: Likewise.
2542	* doc/xml/manual/debug.xml: Likewise.
2543	* doc/xml/manual/debug_mode.xml: Likewise.
2544	* doc/xml/manual/diagnostics.xml: Likewise.
2545	* doc/xml/manual/documentation_hacking.xml: Likewise.
2546	* doc/xml/manual/evolution.xml: Likewise.
2547	* doc/xml/manual/internals.xml: Likewise.
2548	* doc/xml/manual/intro.xml: Likewise.
2549	* doc/xml/manual/io.xml: Likewise.
2550	* doc/xml/manual/iterators.xml: Likewise.
2551	* doc/xml/manual/locale.xml: Likewise.
2552	* doc/xml/manual/localization.xml: Likewise.
2553	* doc/xml/manual/messages.xml: Likewise.
2554	* doc/xml/manual/mt_allocator.xml: Likewise.
2555	* doc/xml/manual/numerics.xml: Likewise.
2556	* doc/xml/manual/parallel_mode.xml: Likewise.
2557	* doc/xml/manual/policy_data_structures.xml: Likewise.
2558	* doc/xml/manual/prerequisites.xml: Likewise.
2559	* doc/xml/manual/shared_ptr.xml: Likewise.
2560	* doc/xml/manual/spine.xml: Likewise.
2561	* doc/xml/manual/status_cxxtr1.xml: Likewise.
2562	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
2563	* doc/xml/manual/strings.xml: Likewise.
2564	* doc/xml/manual/support.xml: Likewise.
2565	* doc/xml/manual/test.xml: Likewise.
2566	* doc/xml/manual/test_policy_data_structures.xml: Likewise.
2567	* doc/xml/manual/using.xml: Likewise.
2568	* doc/xml/manual/using_exceptions.xml: Likewise.
2569	* doc/xml/manual/utilities.xml: Likewise.
2570	* doc/html/*: Regenerate.
2571
25722020-10-12  Patrick Palka  <ppalka@redhat.com>
2573
2574	* include/std/ranges (take_while_view::begin): Constrain the
2575	const overload further as per LWG 3450.
2576	(take_while_view::end): Likewise.
2577	* testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
2578	3450.
2579
25802020-10-12  Patrick Palka  <ppalka@redhat.com>
2581
2582	PR libstdc++/95322
2583	* include/std/ranges (take_view::_CI): Define this alias
2584	template as per LWG 3449 and remove ...
2585	(take_view::_Sentinel::_CI): ... this type alias.
2586	(take_view::_Sentinel::operator==): Adjust use of _CI
2587	accordingly.  Define a second overload that accepts an iterator
2588	of the opposite constness as per LWG 3449.
2589	(take_while_view::_Sentinel::operator==): Likewise.
2590	* testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
2591
25922020-10-12  Jonathan Wakely  <jwakely@redhat.com>
2593
2594	* doc/doxygen/user.cfg.in: Update to Doxygen 1.8.20 format.
2595
25962020-10-12  Jonathan Wakely  <jwakely@redhat.com>
2597
2598	* doc/doxygen/user.cfg.in (PREDEFINED): Use __cplusplus=201703L
2599	so that C++17 features are documented.
2600
26012020-10-12  Jonathan Wakely  <jwakely@redhat.com>
2602
2603	* include/bits/stl_algobase.h (copy, move, copy_backward)
2604	(move_backward): Fix documentation for returned iterator.
2605
26062020-10-12  Martin Sebor  <msebor@redhat.com>
2607
2608	PR c++/97201
2609	* libsupc++/new (operator new): Add attribute alloc_size and malloc.
2610
26112020-10-11  Clement Chigot  <clement.chigot@atos.net>
2612
2613	* config/os/aix/t-aix: Add complementary mode object file to
2614	libstdc++fs.a
2615
26162020-10-10  Jonathan Wakely  <jwakely@redhat.com>
2617
2618	PR libstdc++/97362
2619	* doc/html/manual/source_code_style.html: Regenerate.
2620	* doc/xml/manual/appendix_contributing.xml: Add __deref to
2621	BADNAMES.
2622	* include/debug/functions.h (_Irreflexive_checker::__deref):
2623	Rename to __ref.
2624	* testsuite/17_intro/badnames.cc: Check __deref.
2625
26262020-10-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
2627
2628	* include/std/variant (__check_visitor_result):
2629	Use size_t for indexes.
2630	(__check_visitor_results): Likewise.
2631
26322020-10-09  Ville Voutilainen  <ville.voutilainen@gmail.com>
2633
2634	PR libstdc++/95904
2635	* include/std/variant (__deduce_visit_result): Add a nested ::type.
2636	(__gen_vtable_impl</*base case*/>::_S_apply):
2637	Check the visitor return type.
2638	(__same_types): New.
2639	(__check_visitor_result): Likewise.
2640	(__check_visitor_results): Likewise.
2641	(visit(_Visitor&&, _Variants&&...)): Use __check_visitor_results
2642	in case we're visiting just one variant.
2643	* testsuite/20_util/variant/visit_neg.cc: Adjust.
2644
26452020-10-09  Jonathan Wakely  <jwakely@redhat.com>
2646
2647	PR libstdc++/97311
2648	* include/bits/random.tcc (seed_seq::generate): Use uint32_t for
2649	calculations. Also split the first loop into three loops to
2650	avoid branching on k on every iteration, resolving PR 94823.
2651	* testsuite/26_numerics/random/seed_seq/97311.cc: New test.
2652	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-erro
2653	line number.
2654
26552020-10-09  Daniel Lemire  <lemire@gmail.com>
2656
2657	* include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd):
2658	New member function implementing Lemire's "nearly divisionless"
2659	algorithm.
2660	(uniform_int_distribution::operator()): Use _S_nd when the range
2661	of the URBG is the full width of the result type.
2662
26632020-10-09  Jonathan Wakely  <jwakely@redhat.com>
2664
2665	* testsuite/Makefile.am: Set and export variable separately.
2666	* testsuite/Makefile.in: Regenerate.
2667
26682020-10-09  Jonathan Wakely  <jwakely@redhat.com>
2669
2670	* scripts/check_performance: Use gnu++11 instead of gnu++0x.
2671	* testsuite/Makefile.am (check-performance): Export CXXFLAGS to
2672	child process.
2673	* testsuite/Makefile.in: Regenerate.
2674
26752020-10-09  Jonathan Wakely  <jwakely@redhat.com>
2676
2677	* testsuite/performance/26_numerics/random_dist.cc: New test.
2678
26792020-10-09  Jonathan Wakely  <jwakely@redhat.com>
2680
2681	* testsuite/util/testsuite_performance.h (report_header): Remove
2682	unused variable.
2683
26842020-10-08  Patrick Palka  <ppalka@redhat.com>
2685
2686	PR libstdc++/95788
2687	* include/bits/ranges_uninitialized.h:
2688	(__construct_at_fn::operator()): Rewrite in terms of
2689	std::construct_at.  Declare it conditionally noexcept.  Qualify
2690	calls to declval in its requires-clause.
2691	* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
2692	New test.
2693
26942020-10-08  Jonathan Wakely  <jwakely@redhat.com>
2695
2696	PR libstdc++/82584
2697	* include/bits/random.tcc
2698	(discrete_distribution::param_type::_M_initialize)
2699	(piecewise_constant_distribution::param_type::_M_initialize)
2700	(piecewise_linear_distribution::param_type::_M_initialize):
2701	Add assertions for positive sums..
2702	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
2703	line.
2704
27052020-10-08  Jonathan Wakely  <jwakely@redhat.com>
2706
2707	* include/bits/ios_base.h (ios_base::failure): Add constructors
2708	takeing error_code argument. Add code() member function.
2709	* testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
2710	run for the old ABI but do not check for derivation from
2711	std::system_error.
2712	* testsuite/27_io/ios_base/failure/error_code.cc: New test.
2713
27142020-10-08  Jonathan Wakely  <jwakely@redhat.com>
2715
2716	* include/bits/random.h (__detail::_Mod): Revert last change.
2717	(__detail::__mod): Do not use _Mod for a==0 case.
2718	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
2719	Check other cases with a==0. Also check runtime results.
2720	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
2721	line.
2722
27232020-10-07  Jonathan Wakely  <jwakely@redhat.com>
2724
2725	* include/bits/random.h (__detail::_Mod): Avoid divide by zero.
2726	* testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
2727	New test.
2728
27292020-10-07  Jonathan Wakely  <jwakely@redhat.com>
2730
2731	* include/bits/random.h (seed_seq(initializer_list<T>)): Rename
2732	parameter to use reserved name.
2733	* include/bits/ranges_algo.h (shift_left, shift_right): Rename
2734	template parameters to use reserved name.
2735	* libsupc++/exception_ptr.h (exception_ptr): Likewise for
2736	parameters and local variables.
2737	* testsuite/17_intro/names.cc: Check "il". Do not check "d" and
2738	"y" in C++20 mode.
2739
27402020-10-06  Jonathan Wakely  <jwakely@redhat.com>
2741
2742	PR libstdc++/90295
2743	* config/abi/pre/gnu.ver (CXXABI_1.3.13): New symbol version.
2744	(exception_ptr::_M_addref(), exception_ptr::_M_release()):
2745	Export symbols.
2746	* libsupc++/eh_ptr.cc (exception_ptr::exception_ptr()):
2747	Remove out-of-line definition.
2748	(exception_ptr::exception_ptr(const exception_ptr&)):
2749	Likewise.
2750	(exception_ptr::~exception_ptr()): Likewise.
2751	(exception_ptr::operator=(const exception_ptr&)):
2752	Likewise.
2753	(exception_ptr::swap(exception_ptr&)): Likewise.
2754	(exception_ptr::_M_addref()): Add branch prediction.
2755	* libsupc++/exception_ptr.h (exception_ptr::operator bool):
2756	Add noexcept.
2757	[!_GLIBCXX_EH_PTR_COMPAT] (operator==, operator!=): Define
2758	inline as hidden friends. Remove declarations at namespace
2759	scope.
2760	(exception_ptr::exception_ptr()): Define inline.
2761	(exception_ptr::exception_ptr(const exception_ptr&)):
2762	Likewise.
2763	(exception_ptr::~exception_ptr()): Likewise.
2764	(exception_ptr::operator=(const exception_ptr&)):
2765	Likewise.
2766	(exception_ptr::swap(exception_ptr&)): Likewise.
2767	* testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.13.
2768	* testsuite/18_support/exception_ptr/90295.cc: New test.
2769
27702020-10-06  Jonathan Wakely  <jwakely@redhat.com>
2771
2772	* include/std/ranges (join_view): Remove deduction guide.
2773	(views::join): Add explicit template argument list to prevent
2774	deducing the wrong type.
2775	* testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
2776	here, from ...
2777	* testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
2778
27792020-10-05  Jonathan Wakely  <jwakely@redhat.com>
2780
2781	* include/bits/regex.h: Use __int_traits<int> instead of
2782	std::numeric_limits<int>.
2783	* include/bits/uniform_int_dist.h: Use __int_traits<T>::__max
2784	instead of std::numeric_limits<T>::max().
2785	* include/bits/hashtable_policy.h: Use size_t(-1) instead of
2786	std::numeric_limits<size_t>::max().
2787	* include/std/regex: Include <ext/numeric_traits.h>.
2788	* include/std/string_view: Use typedef for __int_traits<int>.
2789	* src/c++11/hashtable_c++0x.cc: Use size_t(-1) instead of
2790	std::numeric_limits<size_t>::max().
2791	* testsuite/std/ranges/iota/96042.cc: Include <limits>.
2792	* testsuite/std/ranges/iota/difference_type.cc: Likewise.
2793	* testsuite/std/ranges/subrange/96042.cc: Likewise.
2794
27952020-10-05  Jonathan Wakely  <jwakely@redhat.com>
2796
2797	* include/std/numeric: Move all #include directives to the top
2798	of the header.
2799	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
2800	numbers.
2801	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
2802
28032020-10-05  Jonathan Wakely  <jwakely@redhat.com>
2804
2805	* config/abi/pre/gnu.ver: Add new symbol.
2806	* include/bits/functexcept.h (__throw_bad_array_new_length):
2807	Declare new function.
2808	* include/ext/malloc_allocator.h (malloc_allocator::allocate):
2809	Throw bad_array_new_length for impossible sizes (LWG 3190).
2810	* include/ext/new_allocator.h (new_allocator::allocate):
2811	Likewise.
2812	* include/std/memory_resource (polymorphic_allocator::allocate)
2813	(polymorphic_allocator::allocate_object): Use new function,
2814	__throw_bad_array_new_length.
2815	* src/c++11/functexcept.cc (__throw_bad_array_new_length):
2816	Define.
2817	* testsuite/20_util/allocator/lwg3190.cc: New test.
2818
28192020-10-05  Mike Crowe  <mac@mcrowe.com>
2820
2821	PR libstdc++/91486
2822	* include/bits/atomic_futex.h:
2823	(__atomic_futex_unsigned::_M_load_when_equal_until): Use target
2824	clock duration type when rounding.
2825	* testsuite/30_threads/async/async.cc (test_pr91486_wait_for):
2826	Rename from test_pr91486.
2827	(float_steady_clock): New class for test.
2828	(test_pr91486_wait_until): New test.
2829
28302020-10-05  Mike Crowe  <mac@mcrowe.com>
2831
2832	* testsuite/20_util/duration_cast/rounding_c++11.cc: Copy
2833	rounding.cc and alter to support compilation for C++11 and to
2834	test std::chrono::__detail::ceil.
2835
28362020-10-02  Jonathan Wakely  <jwakely@redhat.com>
2837
2838	* testsuite/29_atomics/atomic_float/value_init.cc: Use float
2839	instead of double so that __atomic_load_8 isn't needed.
2840
28412020-10-02  Jonathan Wakely  <jwakely@redhat.com>
2842
2843	* testsuite/18_support/96817.cc: Use terminate handler that
2844	calls _Exit(0).
2845
28462020-10-02  Patrick Palka  <ppalka@redhat.com>
2847
2848	* include/bits/stl_iterator.h (reverse_iterator::iter_move):
2849	Define for C++20 as per P0896.
2850	(reverse_iterator::iter_swap): Likewise.
2851	(move_iterator::operator*): Apply P0896 changes for C++20.
2852	(move_iterator::operator[]): Likewise.
2853	* testsuite/24_iterators/reverse_iterator/cust.cc: New test.
2854
28552020-10-01  Jonathan Wakely  <jwakely@redhat.com>
2856
2857	* config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
2858	Do not try to dereference return value of __atomic_load_n.
2859
28602020-09-30  Jonathan Wakely  <jwakely@redhat.com>
2861
2862	* config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
2863	(_GLIBCXX_GUARD_SET_AND_RELEASE): Define for EABI.
2864
28652020-09-30  Jonathan Wakely  <jwakely@redhat.com>
2866
2867	* include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
2868	Define for GCC 11 or when !__is_identifier(__is_same).
2869	(_GLIBCXX_BUILTIN_IS_SAME_AS): Remove.
2870	* include/std/type_traits (is_same, is_same_v): Replace uses
2871	of _GLIBCXX_BUILTIN_IS_SAME_AS.
2872
28732020-09-28  Patrick Palka  <ppalka@redhat.com>
2874
2875	* include/std/ranges (filter_view): Declare the data member
2876	_M_base last instead of first, and adjust constructors' member
2877	initializer lists accordingly.
2878	(transform_view): Likewise.
2879	(take_view): Likewise.
2880	(take_while_view): Likewise.
2881	(drop_view): Likewise.
2882	(drop_while_view): Likewise.
2883	(join_view): Likewise.
2884	(split_view): Likewise (and tweak nearby formatting).
2885	(reverse_view): Likewise.
2886	* testsuite/std/ranges/adaptors/sizeof.cc: Update expected
2887	sizes.
2888
28892020-09-28  Patrick Palka  <ppalka@redhat.com>
2890
2891	* testsuite/std/ranges/adaptors/sizeof.cc: New test.
2892
28932020-09-28  Patrick Palka  <ppalka@redhat.com>
2894
2895	* include/bits/ranges_util.h (subrange::_M_end): Give it
2896	[[no_unique_address]].
2897	* testsuite/std/ranges/subrange/sizeof.cc: New test.
2898
28992020-09-28  Patrick Palka  <ppalka@redhat.com>
2900
2901	* include/std/ranges (iota_view::_M_bound): Give it
2902	[[no_unique_address]].
2903	* testsuite/std/ranges/iota/iota_view.cc: Check that an
2904	unbounded iota_view has minimal size.
2905
29062020-09-27  Clement Chigot  <clement.chigot@atos.net>
2907
2908	* config/os/aix/t-aix: Use $(AR) without -X32_64.
2909
29102020-09-26  Jonathan Wakely  <jwakely@redhat.com>
2911
2912	PR libstdc++/96817
2913	* include/ext/atomicity.h (__gnu_cxx::__is_single_threaded()):
2914	New function wrapping __libc_single_threaded if available.
2915	(__exchange_and_add_dispatch, __atomic_add_dispatch): Use it.
2916	* libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_abort)
2917	(__cxa_guard_release): Likewise.
2918	* testsuite/18_support/96817.cc: New test.
2919
29202020-09-25  Jonathan Wakely  <jwakely@redhat.com>
2921
2922	* libsupc++/Makefile.am: Remove redundant -std=gnu++1z flags.
2923	* libsupc++/Makefile.in: Regenerate.
2924
29252020-09-24  Antony Polukhin  <antoshkka@gmail.com>
2926
2927	PR libstdc++/71579
2928	* include/std/type_traits (invoke_result, is_invocable)
2929	(is_invocable_r, is_nothrow_invocable, is_nothrow_invocable_r):
2930	Add static_asserts to make sure that the arguments of the type
2931	traits are not misused with incomplete types.
2932	* testsuite/20_util/invoke_result/incomplete_args_neg.cc: New test.
2933	* testsuite/20_util/is_invocable/incomplete_args_neg.cc: New test.
2934	* testsuite/20_util/is_invocable/incomplete_neg.cc: New test.
2935	* testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc:
2936	New test.
2937	* testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: Check
2938	for error on incomplete type usage in trait.
2939
29402020-09-24  Patrick Palka  <ppalka@redhat.com>
2941
2942	* include/std/ranges (__detail::__boxable): Split out the
2943	associated constraints of __box into here.
2944	(__detail::__box): Use the __boxable concept.  Define a leaner
2945	partial specialization for semiregular types.
2946	(single_view::_M_value): Give it [[no_unique_address]].
2947	(filter_view::_M_pred): Likewise.
2948	(transform_view::_M_fun): Likewise.
2949	(take_while_view::_M_pred): Likewise.
2950	(drop_while_view::_M_pred):: Likewise.
2951	* testsuite/std/ranges/adaptors/detail/semiregular_box.cc: New
2952	test.
2953
29542020-09-24  Jonathan Wakely  <jwakely@redhat.com>
2955
2956	* doc/xml/manual/configure.xml: Correct name of option.
2957	* doc/html/*: Regenerate.
2958
29592020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2960
2961	PR libstdc++/97167
2962	* src/c++17/fs_path.cc (path::_Parser::root_path()): Check
2963	for empty string before inspecting the first character.
2964	* testsuite/27_io/filesystem/path/append/source.cc: Append
2965	empty string_view to path.
2966
29672020-09-22  Glen Joseph Fernandes  <glenjofe@gmail.com>
2968
2969	* include/bits/align.h (align): Fix overflow handling.
2970	* testsuite/20_util/align/3.cc: New test.
2971
29722020-09-22  Jonathan Wakely  <jwakely@redhat.com>
2973
2974	* include/Makefile.am: Add new headers and adjust for renamed
2975	header.
2976	* include/Makefile.in: Regenerate.
2977	* include/bits/iterator_concepts.h: Adjust for renamed header.
2978	* include/bits/range_access.h (ranges::*): Move to new
2979	<bits/ranges_base.h> header.
2980	* include/bits/ranges_algobase.h: Include new <bits/ranges_base.h>
2981	header instead of <ranges>.
2982	* include/bits/ranges_algo.h: Include new <bits/ranges_util.h>
2983	header.
2984	* include/bits/range_cmp.h: Moved to...
2985	* include/bits/ranges_cmp.h: ...here.
2986	* include/bits/ranges_base.h: New header.
2987	* include/bits/ranges_util.h: New header.
2988	* include/experimental/string_view: Include new
2989	<bits/ranges_base.h> header.
2990	* include/std/functional: Adjust for renamed header.
2991	* include/std/ranges (ranges::view_base, ranges::enable_view)
2992	(ranges::dangling, ranges::borrowed_iterator_t): Move to new
2993	<bits/ranges_base.h> header.
2994	(ranges::view_interface, ranges::subrange)
2995	(ranges::borrowed_subrange_t): Move to new <bits/ranges_util.h>
2996	header.
2997	* include/std/span: Include new <bits/ranges_base.h> header.
2998	* include/std/string_view: Likewise.
2999	* testsuite/24_iterators/back_insert_iterator/pr93884.cc: Add
3000	missing <ranges> header.
3001	* testsuite/24_iterators/front_insert_iterator/pr93884.cc:
3002	Likewise.
3003
30042020-09-22  Jonathan Wakely  <jwakely@redhat.com>
3005
3006	PR libstdc++/96803
3007	* include/std/tuple
3008	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
3009	Use correct value category in __use_alloc call.
3010	* testsuite/20_util/tuple/cons/96803.cc: Check with constructors
3011	that require correct value category to be used.
3012
30132020-09-22  Patrick Palka  <ppalka@redhat.com>
3014
3015	* include/std/span (span::front): Remove static_assert.
3016	(span::back): Likewise.
3017	(span::operator[]): Likewise.
3018	* testsuite/23_containers/span/back_neg.cc: Rewrite to verify
3019	that we check the preconditions of back() only when it's called.
3020	* testsuite/23_containers/span/front_neg.cc: Likewise for
3021	front().
3022	* testsuite/23_containers/span/index_op_neg.cc: Likewise for
3023	operator[].
3024
30252020-09-22  Patrick Palka  <ppalka@redhat.com>
3026
3027	* include/bits/stl_algo.h (__sample): Exit early when the
3028	input range is empty.
3029	* testsuite/25_algorithms/sample/3.cc: New test.
3030
30312020-09-22  Patrick Palka  <ppalka@redhat.com>
3032
3033	* include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
3034	(search): Likewise for the overload that takes a searcher.
3035	* testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
3036	std::for_each_n.
3037	* testsuite/25_algorithms/search/constexpr.cc: Test constexpr
3038	std::search overload that takes a searcher.
3039
30402020-09-21  Jonathan Wakely  <jwakely@redhat.com>
3041
3042	* include/bits/c++config (__replacement_assert): Add noreturn
3043	attribute.
3044	(__glibcxx_assert_impl): Use __builtin_expect to hint that the
3045	assertion is expected to pass.
3046
30472020-09-21  Jonathan Wakely  <jwakely@redhat.com>
3048
3049	* include/std/ranges (drop_view::begin()): Adjust constraints
3050	to match the correct condition for O(1) ranges::next (LWG 3482).
3051	* testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
3052	cached for non-sized_range.
3053
30542020-09-21  Jonathan Wakely  <jwakely@redhat.com>
3055
3056	* include/std/ranges (transform_view, elements_view): Relax
3057	constraints on operator- for iterators, as per LWG 3483.
3058	* testsuite/std/ranges/adaptors/elements.cc: Check that we
3059	can take the difference of two iterators from a non-random
3060	access range.
3061	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
3062
30632020-09-21  Jonathan Wakely  <jwakely@redhat.com>
3064
3065	PR libstdc++/97132
3066	* include/bits/align.h (align) [!_GLIBCXX_USE_C99_STDINT_TR1]:
3067	Remove unused code.
3068	(assume_aligned): Do not use __builtin_assume_aligned during
3069	constant evaluation.
3070	* testsuite/20_util/assume_aligned/1.cc: Improve test.
3071	* testsuite/20_util/assume_aligned/97132.cc: New test.
3072
30732020-09-20  Jonathan Wakely  <jwakely@redhat.com>
3074
3075	PR libstdc++/97101
3076	* include/std/functional (bind_front): Fix order of parameters
3077	in is_nothrow_constructible_v specialization.
3078	* testsuite/20_util/function_objects/bind_front/97101.cc: New test.
3079
30802020-09-11  Thomas Rodgers  <trodgers@redhat.com>
3081
3082	* include/std/memory: Move #include <bits/align.h> inside C++11
3083	conditional includes.
3084
30852020-09-11  Thomas Rodgers  <trodgers@redhat.com>
3086
3087	* include/Makefile.am (bits_headers): Add new header.
3088	* include/Makefile.in: Regenerate.
3089	* include/bits/align.h: New file.
3090	* include/std/memory (align): Move definition to bits/align.h.
3091	(assume_aligned): Likewise.
3092
30932020-09-11  Jonathan Wakely  <jwakely@redhat.com>
3094
3095	* include/std/chrono [C++17] (chrono::__detail::ceil): Add
3096	using declaration to make chrono::ceil available for internal
3097	use with a consistent name.
3098	(chrono::__detail::__ceil_impl): New function template.
3099	(chrono::__detail::ceil): Use __ceil_impl to compare and
3100	increment the value. Remove SFINAE constraint.
3101
31022020-09-11  Jonathan Wakely  <jwakely@redhat.com>
3103
3104	* include/bits/regex_error.h (__throw_regex_error): Fix
3105	parameter declaration and use reserved attribute names.
3106
31072020-09-11  Mike Crowe  <mac@mcrowe.com>
3108
3109	* include/std/condition_variable (condition_variable::wait_until):
3110	Convert delta to steady_clock duration before adding to current
3111	steady_clock time to avoid rounding errors described in PR68519.
3112	(condition_variable::wait_for): Simplify calculation of absolute
3113	time by using chrono::__detail::ceil in both overloads.
3114	* testsuite/30_threads/condition_variable/members/68519.cc:
3115	(test_wait_for): Renamed from test01. Replace unassigned val
3116	variable with constant false. Reduce scope of mx and cv
3117	variables to just test_wait_for function.
3118	(test_wait_until): Add new test case.
3119
31202020-09-11  Mike Crowe  <mac@mcrowe.com>
3121
3122	PR libstdc++/91486
3123	* include/bits/atomic_futex.h
3124	(__atomic_futex_unsigned::_M_load_when_equal_for)
3125	(__atomic_futex_unsigned::_M_load_when_equal_until): Use
3126	__detail::ceil to convert delta to the reference clock
3127	duration type to avoid resolution problems.
3128	* include/std/chrono (__detail::ceil): Move implementation
3129	of std::chrono::ceil into private namespace so that it's
3130	available to pre-C++17 code.
3131	* testsuite/30_threads/async/async.cc (test_pr91486):
3132	Test __atomic_futex_unsigned::_M_load_when_equal_for.
3133
31342020-09-11  Mike Crowe  <mac@mcrowe.com>
3135
3136	* include/bits/atomic_futex.h
3137	(__atomic_futex_unsigned::_M_load_when_equal_until): Add
3138	loop on generic _Clock to check the timeout against _Clock
3139	again after _M_load_when_equal_until returns indicating a
3140	timeout.
3141	* testsuite/30_threads/async/async.cc: Invent slow_clock
3142	that runs at an eleventh of steady_clock's speed. Use it
3143	to test the user-supplied-clock variant of
3144	__atomic_futex_unsigned::_M_load_when_equal_until works
3145	generally with test03 and loops correctly when the timeout
3146	time hasn't been reached in test04.
3147
31482020-09-11  Mike Crowe  <mac@mcrowe.com>
3149
3150	PR libstdc++/93542
3151	* include/bits/atomic_futex.h (__atomic_futex_unsigned): Change
3152	__clock_t typedef to use steady_clock so that unknown clocks are
3153	synced to it rather than system_clock. Change existing __clock_t
3154	overloads of _M_load_and_text_until_impl and
3155	_M_load_when_equal_until to use system_clock explicitly. Remove
3156	comment about DR 887 since these changes address that problem as
3157	best as we currently able.
3158
31592020-09-11  Mike Crowe  <mac@mcrowe.com>
3160
3161	PR libstdc++/93542
3162	* config/abi/pre/gnu.ver: Update for addition of
3163	__atomic_futex_unsigned_base::_M_futex_wait_until_steady.
3164	* include/bits/atomic_futex.h (__atomic_futex_unsigned_base):
3165	Add comments to clarify that _M_futex_wait_until and
3166	_M_load_and_test_until use CLOCK_REALTIME.
3167	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady)
3168	(__atomic_futex_unsigned_base::_M_load_and_text_until_steady):
3169	New member functions that use CLOCK_MONOTONIC.
3170	(__atomic_futex_unsigned_base::_M_load_and_test_until_impl)
3171	(__atomic_futex_unsigned_base::_M_load_when_equal_until): Add
3172	overloads that accept a steady_clock time_point and use the
3173	new member functions.
3174	* src/c++11/futex.cc: Include headers required for
3175	clock_gettime.
3176	(futex_clock_monotonic_flag): New constant to tell futex to
3177	use CLOCK_MONOTONIC to match existing futex_clock_realtime_flag.
3178	(futex_clock_monotonic_unavailable): New global to store the
3179	result of trying to use CLOCK_MONOTONIC.
3180	(__atomic_futex_unsigned_base::_M_futex_wait_until_steady): Add
3181	new variant of _M_futex_wait_until that uses CLOCK_MONOTONIC to
3182	support waiting using steady_clock.
3183
31842020-09-11  Mike Crowe  <mac@mcrowe.com>
3185
3186	* src/c++11/futex.cc: Add new constants for required futex
3187	flags.  Add futex_clock_realtime_unavailable flag to store
3188	result of trying to use FUTEX_CLOCK_REALTIME.
3189	(__atomic_futex_unsigned_base::_M_futex_wait_until): Try to
3190	use FUTEX_WAIT_BITSET with FUTEX_CLOCK_REALTIME and only
3191	fall back to using gettimeofday and FUTEX_WAIT if that's not
3192	supported.
3193
31942020-09-11  Mike Crowe  <mac@mcrowe.com>
3195
3196	* testsuite/30_threads/async/async.cc (test02): Test steady_clock
3197	with std::future::wait_until.
3198	(test03): Add new test templated on clock type waiting for future
3199	associated with async to resolve.
3200	(main): Call test03 to test both system_clock and steady_clock.
3201
32022020-09-11  Torbjörn SVENSSON  <torbjorn.svensson@st.com>
3203	    Christophe Lyon  <christophe.lyon@linaro.org>
3204
3205	* libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
3206
32072020-09-11  Torbjörn SVENSSON  <torbjorn.svensson@st.com>
3208	    Christophe Lyon  <christophe.lyon@linaro.org>
3209
3210	* libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
3211
32122020-09-11  Christophe Lyon  <christophe.lyon@linaro.org>
3213
3214	* include/bits/regex_error.h: Avoid warning with -fno-exceptions.
3215
32162020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3217
3218	* include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
3219	Add casts to compare types of the same signedness.
3220
32212020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3222
3223	* include/bits/ranges_algobase.h (__equal_fn): Remove unused
3224	typedef.
3225
32262020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3227
3228	* include/std/version (__cpp_lib_array_constexpr):
3229	(__cpp_lib_constexpr_char_traits): Only define C++17 value when
3230	compiling C++17.
3231
32322020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3233
3234	* include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
3235	(operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
3236	warnings for uses of std::auto_ptr.
3237	* include/experimental/type_traits (is_literal_type_v):
3238	Likewise, for use of std::is_literal_type.
3239	* include/std/condition_variable (condition_variable_any::_Unlock):
3240	Likewise, for use of std::uncaught_exception.
3241
32422020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3243
3244	* include/bits/fs_path.h (path::_List::type()): Avoid narrowing
3245	conversion.
3246	* include/std/chrono (operator+(const year&, const years&)):
3247	Likewise.
3248
32492020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3250
3251	* include/bits/codecvt.h (codecvt_byname): Remove names of
3252	unused parameters.
3253
32542020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3255
3256	* include/bits/locale_facets_nonio.tcc: Adjust whitespace.
3257
32582020-09-10  Krystian Kuźniarek  <krystian.kuzniarek@gmail.com>
3259
3260	* include/c_global/cmath (__lerp): Avoid -Wparentheses warnings.
3261
32622020-09-10  Krystian Kuźniarek  <krystian.kuzniarek@gmail.com>
3263
3264	* include/bits/atomic_base.h: Fix -Wunused-variable
3265	warnings.
3266	* include/ext/new_allocator.h: Fix -Wunused-parameter
3267	warnings.
3268
32692020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3270
3271	* include/bits/stl_iterator.h (counted_iterator): Add assertions
3272	to check preconditions added by LWG 3472.
3273
32742020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3275
3276	PR libstdc++/94160
3277	* src/c++17/memory_resource.cc (munge_options): Round
3278	max_blocks_per_chunk to a multiple of four.
3279	(__pool_resource::_M_alloc_pools()): Simplify slightly.
3280	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
3281	Check that valid pointers are returned when small values are
3282	used for max_blocks_per_chunk.
3283
32842020-09-10  Jonathan Wakely  <jwakely@redhat.com>
3285
3286	PR libstdc++/96942
3287	* include/std/memory_resource (monotonic_buffer_resource::do_allocate):
3288	Use __builtin_expect when checking if a new buffer needs to be
3289	allocated from the upstream resource, and for checks for edge
3290	cases like zero sized buffers and allocations.
3291	* src/c++17/memory_resource.cc (aligned_size): New class template.
3292	(aligned_ceil): New helper function to round up to a given
3293	alignment.
3294	(monotonic_buffer_resource::chunk): Replace _M_size and _M_align
3295	with an aligned_size member. Remove _M_canary member. Change _M_next
3296	to pointer instead of unaligned buffer.
3297	(monotonic_buffer_resource::chunk::allocate): Round up to multiple
3298	of 64 instead of to power of two. Check for size overflow. Remove
3299	redundant check for minimum required alignment.
3300	(monotonic_buffer_resource::chunk::release): Adjust for changes
3301	to data members.
3302	(monotonic_buffer_resource::_M_new_buffer): Use aligned_ceil.
3303	(big_block): Replace _M_size and _M_align with aligned_size
3304	member.
3305	(big_block::big_block): Check for size overflow.
3306	(big_block::size, big_block::align): Adjust to use aligned_size.
3307	(big_block::alloc_size): Use aligned_ceil.
3308	(munge_options): Use aligned_ceil.
3309	(__pool_resource::allocate): Use big_block::align for alignment.
3310	* testsuite/20_util/monotonic_buffer_resource/allocate.cc: Check
3311	upstream resource gets expected values for impossible sizes.
3312	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
3313	Likewise. Adjust checks for expected alignment in existing test.
3314
33152020-09-07  Jonathan Wakely  <jwakely@redhat.com>
3316
3317	* include/std/chrono (duration::_S_gcd): Use invariant that
3318	neither value is zero initially.
3319
33202020-09-07  Jonathan Wakely  <jwakely@redhat.com>
3321
3322	* include/std/ranges (__box): Simplify constraints as per LWG 3477.
3323
33242020-09-03  Jonathan Wakely  <jwakely@redhat.com>
3325
3326	PR libstdc++/96592
3327	* include/std/tuple (_TupleConstraints<true, T...>): Use
3328	alternative is_constructible instead of std::is_constructible.
3329	* testsuite/20_util/tuple/cons/96592.cc: New test.
3330
33312020-09-03  Jonathan Wakely  <jwakely@redhat.com>
3332
3333	* include/std/chrono (duration::_S_gcd): Use iterative algorithm
3334	for C++14 and later.
3335	* include/std/numeric (__detail::__gcd): Replace recursive
3336	Euclidean algorithm with iterative version of binary GCD algorithm.
3337	* testsuite/26_numerics/gcd/1.cc: Test additional inputs.
3338	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
3339	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
3340	* testsuite/experimental/numeric/gcd.cc: Test additional inputs.
3341	* testsuite/26_numerics/gcd/2.cc: New test.
3342
33432020-09-02  Jonathan Wakely  <jwakely@redhat.com>
3344
3345	PR libstdc++/92978
3346	* testsuite/experimental/numeric/92978.cc: Use experimental::lcm
3347	not std::lcm.
3348
33492020-09-02  Jonathan Wakely  <jwakely@redhat.com>
3350
3351	PR libstdc++/96851
3352	* include/bits/cpp_type_traits.h (__is_memcmp_ordered):
3353	New trait that says if memcmp can be used for ordering.
3354	(__is_memcmp_ordered_with): Likewise, for two types.
3355	* include/bits/deque.tcc (__lex_cmp_dit): Use new traits
3356	instead of __is_byte and __numeric_traits.
3357	(__lexicographical_compare_aux1): Likewise.
3358	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
3359	Likewise.
3360	* include/bits/stl_algobase.h (__lexicographical_compare_aux1)
3361	(__is_byte_iter): Likewise.
3362	* include/std/array (operator<=>): Likewise. Only use memcmp
3363	when std::is_constant_evaluated() is false.
3364	* testsuite/23_containers/array/comparison_operators/96851.cc:
3365	New test.
3366	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
3367	Adjust dg-error line numbers.
3368
33692020-09-02  Jonathan Wakely  <jwakely@redhat.com>
3370
3371	* include/bits/stl_iterator.h: Include <bits/exception_defines.h>
3372	for definitions of __try, __catch and __throw_exception_again.
3373	(counted_iterator::operator++(int)): Use __throw_exception_again
3374	instead of throw.
3375	* libsupc++/new: Include <bits/exception.h> not <exception>.
3376	* libsupc++/new_opvnt.cc: Include <bits/exception_defines.h>.
3377	* testsuite/18_support/destroying_delete.cc: Include
3378	<type_traits> for std::is_same_v definition.
3379	* testsuite/20_util/variant/index_type.cc: Qualify size_t.
3380
33812020-09-01  Jonathan Wakely  <jwakely@redhat.com>
3382
3383	PR libstdc++/71960
3384	* include/bits/c++config (__glibcxx_assert_impl): Remove
3385	do-while so that uses of the macro need to add it.
3386	(__glibcxx_assert): Rename macro for runtime assertions
3387	to __glibcxx_assert_2.
3388	(__glibcxx_assert_1): Define macro for constexpr assertions.
3389	(__glibcxx_assert): Define macro for constexpr and runtime
3390	assertions.
3391	* include/bits/range_access.h (ranges::advance): Remove
3392	redundant precondition checks during constant evaluation.
3393	* include/parallel/base.h (_GLIBCXX_PARALLEL_ASSERT): Always
3394	use do-while in macro expansion.
3395	* include/std/ranges (iota_view::iota_view(W, B)): Remove
3396	redundant braces.
3397
33982020-09-01  Jonathan Wakely  <jwakely@redhat.com>
3399
3400	* include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
3401	New helper function for finding GCD of two positive intmax_t
3402	values.
3403	(duration::__divide): New helper alias for dividing one period
3404	by another.
3405	(duration::__is_harmonic): Use __divide not ratio_divide.
3406	(duration(const duration<R2, P2>&)): Require the duration rep
3407	types to be convertible.
3408	* testsuite/20_util/duration/cons/dr2094.cc: New test.
3409	* testsuite/20_util/duration/requirements/reduced_period.cc:
3410	Fix definition of unused member functions in test type.
3411	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
3412	Adjust expected errors.
3413
34142020-08-29  Jonathan Wakely  <jwakely@redhat.com>
3415
3416	* include/std/numeric (__detail::__absu(bool)): Make deleted
3417	function a function template, so it will be chosen for calls
3418	with an explicit template argument list.
3419	* testsuite/26_numerics/gcd/gcd_neg.cc: Add dg-prune-output.
3420	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
3421
34222020-08-28  Jonathan Wakely  <jwakely@redhat.com>
3423
3424	* include/std/chrono (common_type): Fix partial specializations
3425	for a single duration type to use the common_type of the rep.
3426	(duration::operator+, duration::operator-): Fix return types
3427	to also use the common_type of the rep.
3428	* testsuite/20_util/duration/requirements/reduced_period.cc:
3429	Check duration using a rep that has common_type specialized.
3430
34312020-08-28  Jonathan Wakely  <jwakely@redhat.com>
3432
3433	PR libstdc++/92978
3434	* include/std/numeric (__abs_integral): Replace with ...
3435	(__detail::__absu): New function template that returns an
3436	unsigned type, guaranteeing it can represent the most
3437	negative signed value.
3438	(__detail::__gcd, __detail::__lcm): Require arguments to
3439	be unsigned and therefore already non-negative.
3440	(gcd, lcm): Convert arguments to absolute value as unsigned
3441	type before calling __detail::__gcd or __detail::__lcm.
3442	* include/experimental/numeric (gcd, lcm): Likewise.
3443	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
3444	errors.
3445	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
3446	* testsuite/26_numerics/gcd/92978.cc: New test.
3447	* testsuite/26_numerics/lcm/92978.cc: New test.
3448	* testsuite/experimental/numeric/92978.cc: New test.
3449
34502020-08-27  Jonathan Wakely  <jwakely@redhat.com>
3451
3452	* include/std/chrono (__duration_common_type): Ensure the
3453	reduced ratio is used. Remove unused partial specialization
3454	using __failure_type.
3455	(common_type): Pass reduced ratios to __duration_common_type.
3456	Add partial specializations for simple cases involving a single
3457	duration or time_point type.
3458	(duration::period): Use reduced ratio.
3459	(duration::operator+(), duration::operator-()): Return duration
3460	type using the reduced ratio.
3461	* testsuite/20_util/duration/requirements/typedefs_neg2.cc:
3462	Adjust expected errors.
3463	* testsuite/20_util/duration/requirements/reduced_period.cc: New test.
3464
34652020-08-27  Patrick Palka  <ppalka@redhat.com>
3466
3467	* include/std/chrono (year_month::operator+): Properly handle a
3468	month value of 0 by casting the month value to int before
3469	subtracting 1 from it so that the difference is sign-extended in
3470	the subsequent addition.
3471	* testsuite/std/time/year_month/1.cc: Test adding months to a
3472	year_month whose month component is below or above the
3473	normalized range of [1,12].
3474
34752020-08-27  Patrick Palka  <ppalka@redhat.com>
3476
3477	* include/std/chrono
3478	(__detail::__months_years_conversion_disambiguator): Define.
3479	(year_month::operator+=): Templatize the 'months'-based overload
3480	so that the 'years'-based overload is selected in case of
3481	equally-ranked implicit conversion sequences to both 'months'
3482	and 'years' from the supplied argument.
3483	(year_month::operator-=): Likewise.
3484	(year_month::operator+): Likewise.
3485	(year_month::operator-): Likewise.
3486	(year_month_day::operator+=): Likewise.
3487	(year_month_day::operator-=): Likewise.
3488	(year_month_day::operator+): Likewise.
3489	(year_month_day::operator-): Likewise.
3490	(year_month_day_last::operator+=): Likewise.
3491	(year_month_day_last::operator-=): Likewise.
3492	(year_month_day_last::operator+): Likewise
3493	(year_month_day_last::operator-): Likewise.
3494	(year_month_day_weekday::operator+=): Likewise
3495	(year_month_day_weekday::operator-=): Likewise.
3496	(year_month_day_weekday::operator+): Likewise.
3497	(year_month_day_weekday::operator-): Likewise.
3498	(year_month_day_weekday_last::operator+=): Likewise
3499	(year_month_day_weekday_last::operator-=): Likewise.
3500	(year_month_day_weekday_last::operator+): Likewise.
3501	(year_month_day_weekday_last::operator-): Likewise.
3502	(testsuite/std/time/year_month/2.cc): New test.
3503	(testsuite/std/time/year_month_day/2.cc): New test.
3504	(testsuite/std/time/year_month_day_last/2.cc): New test.
3505	(testsuite/std/time/year_month_weekday/2.cc): New test.
3506	(testsuite/std/time/year_month_weekday_last/2.cc): New test.
3507	* testsuite/std/time/year_month/2.cc: New file.
3508	* testsuite/std/time/year_month_day/2.cc: New file.
3509	* testsuite/std/time/year_month_day_last/2.cc: New file.
3510	* testsuite/std/time/year_month_weekday/2.cc: New file.
3511	* testsuite/std/time/year_month_weekday_last/2.cc: New file.
3512
35132020-08-27  Patrick Palka  <ppalka@redhat.com>
3514
3515	PR libstdc++/95322
3516	* include/std/ranges (transform_view::sentinel::__distance_from):
3517	Give this a deduced return type.
3518	(transform_view::sentinel::operator-): Adjust the return type so
3519	that it's based on the constness of the iterator rather than
3520	that of the sentinel.
3521	* testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
3522
35232020-08-27  Patrick Palka  <ppalka@redhat.com>
3524
3525	* include/std/ranges (elements_view::begin): Adjust constraints.
3526	(elements_view::end): Likewise.
3527	(elements_view::_Sentinel::operator==): Templatize to take both
3528	_Iterator<true> and _Iterator<false>.
3529	(elements_view::_Sentinel::operator-): Likewise.
3530	* testsuite/std/ranges/adaptors/elements.cc: Add testcase for
3531	the example from P1994R1.
3532	* testsuite/std/ranges/adaptors/lwg3406.cc: New test.
3533
35342020-08-27  Patrick Palka  <ppalka@redhat.com>
3535
3536	* include/std/ranges (elements_view::end): Replace these two
3537	overloads with four new overloads.
3538	(elements_view::_Iterator::operator==): Remove.
3539	(elements_view::_Iterator::operator-): Likewise.
3540	(elements_view::_Sentinel): Define.
3541
35422020-08-26  Jonathan Wakely  <jwakely@redhat.com>
3543
3544	* include/std/tuple (_Tuple_impl): Whitespaces changes for
3545	consistent indentation. Also use __enable_if_t alias template.
3546
35472020-08-26  Jonathan Wakely  <jwakely@redhat.com>
3548
3549	PR libstdc++/96803
3550	* include/std/tuple
3551	(_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
3552	Replace parameter pack with a type parameter and a pack and pass
3553	the first type to __use_alloc.
3554	* testsuite/20_util/tuple/cons/96803.cc: New test.
3555
35562020-08-26  Patrick Palka  <ppalka@redhat.com>
3557
3558	* include/std/chrono (year_month_weekday::operator==): Compare
3559	weekday_indexed instead of weekday.
3560	* testsuite/std/time/year_month_weekday/1.cc: Augment testcase.
3561
35622020-08-26  Jonathan Wakely  <jwakely@redhat.com>
3563
3564	* include/bits/hashtable_policy.h (_Hash_code_base): Change
3565	index of _Hashtable_ebo_helper base class.
3566	* testsuite/23_containers/unordered_map/dup_types.cc: New test.
3567
35682020-08-26  Jonathan Wakely  <jwakely@redhat.com>
3569
3570	PR libstdc++/71960
3571	* include/experimental/string_view (basic_string_view):
3572	Enable debug assertions.
3573	* include/std/string_view (basic_string_view):
3574	Likewise.
3575
35762020-08-26  François Dumont  <fdumont@gcc.gnu.org>
3577
3578	* include/bits/hashtable_policy.h (_Hashtable<>): Rename _H1 into _Hash
3579	_H2 into _RangeHash and _Hash into _Unused.
3580	(_Hastable_base<>): Likewise.
3581	(_Map_base<>): Likewise.
3582	(_Insert_base<>): Likewise.
3583	(_Insert<>): Likewise.
3584	(_Rehash_base<>): Likewise.
3585	(_Local_iterator_base<>): Likewise.
3586	(_Hash_code_base<>): Likewise.
3587	(_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>):
3588	Remove.
3589	(_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>):
3590	Remove.
3591	(_Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHas, _Unused,
3592	bool>): Remove _Hashtable_ebo_helper<2, _RangeHash> base type..
3593	(_Hash_code_base<>::_M_bucket_index(const _Key&, __hash_code, size_t)):
3594	Replace by...
3595	(_Hash_code_base<>::_M_bucket_index(__hash_code, size_t)): ...this.
3596	(_Local_iterator<>): Remove _H1 and _H2 template parameters.
3597	(_Local_const_iterator<>): Likewise.
3598	(_Equality<>): Likewise.
3599	(_Map_base<>::operator[](const key_type&): Adapt.
3600	(_Map_base<>::operator[](key_type&&): Adapt.
3601	(_Identity::operator()): Add noexcept.
3602	(_Select1st::operator()): Likewise.
3603	(_Hash_code_base<>): Remove _Hashtable_ebo_helper<0, _ExtractKey> base
3604	type.
3605	(_Hash_code_base::_M_extract): Remove.
3606	* include/bits/hashtable.h (_Hashtable<>): Remove _H1 and _H2 template
3607	parameters. Remove _ExtractKey from constructors.
3608	(_Hashtable<>::_M_insert_unique_node(const key_type&, size_t,
3609	__hash_code, __node_type*, size_t)): Replace by...
3610	(_Hashtable<>::_M_insert_unique_node(size_t, __hash_code,
3611	 __node_type*, size_t)): ...this.
3612	(_Hashtable<>::_M_insert_muti_node(__node_type*, const key_type&,
3613	__hash_code, __node_type*)): Replace by...
3614	(_Hashtable<>::_M_insert_multi_node(__node_type*, __hash_code,
3615	__node_type*)): ...this.
3616	(_Hashtable<>::__key_extract): Remove.
3617	* include/bits/node_handle.h: Adapt.
3618
36192020-08-25  Jonathan Wakely  <jwakely@redhat.com>
3620
3621	* testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Removed.
3622	* testsuite/21_strings/debug/self_move_assign_neg.cc: Removed.
3623	* testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Removed.
3624	* testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Removed.
3625	* testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc: Removed.
3626	* testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Removed.
3627	* testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Removed.
3628	* testsuite/23_containers/list/debug/self_move_assign_neg.cc: Removed.
3629	* testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Removed.
3630	* testsuite/23_containers/map/debug/self_move_assign_neg.cc: Removed.
3631	* testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc: Removed.
3632	* testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Removed.
3633	* testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc: Removed.
3634	* testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Removed.
3635	* testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Removed.
3636	* testsuite/23_containers/set/debug/self_move_assign_neg.cc: Removed.
3637	* testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc: Removed.
3638	* testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Removed.
3639	* testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc:
3640	Removed.
3641	* testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc: Removed.
3642	* testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc:
3643	Removed.
3644	* testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc: Removed.
3645	* testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc: Removed.
3646	* testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Removed.
3647	* testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc: Removed.
3648	* testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Removed.
3649
36502020-08-25  Patrick Palka  <ppalka@redhat.com>
3651
3652	* include/std/chrono (year_month_weekday::ok): Fix assert.
3653
36542020-08-25  Jonathan Wakely  <jwakely@redhat.com>
3655
3656	* include/std/future (future, shared_future. promise): Add
3657	is_destructible assertion (LWG 3466). Adjust string-literal for
3658	!is_array and !is_function assertions.
3659	* testsuite/30_threads/future/requirements/lwg3458.cc: Check
3660	types with no accessible destructor. Adjust expected errors.
3661	* testsuite/30_threads/promise/requirements/lwg3466.cc:
3662	Likewise.
3663	* testsuite/30_threads/shared_future/requirements/lwg3458.cc:
3664	Likewise.
3665
36662020-08-25  Patrick Palka  <ppalka@redhat.com>
3667	    Ed Smith-Rowland  <3dw4rd@verizon.net>
3668	    Jonathan Wakely  <jwakely@redhat.com>
3669
3670	* include/std/chrono (time_point::operator++)
3671	(time_point::operator--): Define.
3672	(utc_clock, tai_clock, gps_clock): Forward declare.
3673	(utc_time, utc_seconds, tai_time, tai_seconds, gps_time)
3674	(gps_seconds): Define.
3675	(is_clock<utc_clock>, is_clock<tai_clock>, is_clock<gps_clock>)
3676	(is_clock_v<utc_clock>, is_clock_v<tai_clock>)
3677	(is_clock_v<gps_clock>): Define these specializations.
3678	(leap_second_info): Define.
3679	(day, month, year, weekday, weekday_indexed)
3680	(weekday_last, month_day, month_day_last, month_weekday)
3681	(month_weekday_last, year_month, year_month_day)
3682	(year_month_day_last, year_month_weekday, year_month_weekday_last):
3683	Declare and later define.
3684	(last_spec, last, __detail::__days_per_month)
3685	(__detail::__days_per_month, __detail::__last_day): Define.
3686	(January, February, March, April, May, June, July, August)
3687	(September, October, November, December, Sunday, Monday, Tuesday)
3688	(Wednesday, Thursday, Friday, Saturday): Define.
3689	(weekday::operator[]): Define out-of-line.
3690	(year_month_day::_S_from_days, year_month_day::M_days_since_epoch):
3691	Likewise.
3692	(year_month_day::year_month_day, year_month_day::ok): Likewise.
3693	(__detail::__pow10, hh_mm_ss): Define.
3694	(literals::chrono_literals::operator""d)
3695	(literals::chrono_literals::operator""y): Define.
3696	(is_am, is_pm, make12, make24): Define.
3697	* testsuite/20_util/time_point/4.cc: New test.
3698	* testsuite/std/time/day/1.cc: New test.
3699	* testsuite/std/time/hh_mm_ss/1.cc: New test.
3700	* testsuite/std/time/is_am/1.cc: New test.
3701	* testsuite/std/time/is_pm/1.cc: New test.
3702	* testsuite/std/time/make12/1.cc: New test.
3703	* testsuite/std/time/make24/1.cc: New test.
3704	* testsuite/std/time/month/1.cc: New test.
3705	* testsuite/std/time/month_day/1.cc: New test.
3706	* testsuite/std/time/month_day_last/1.cc: New test.
3707	* testsuite/std/time/month_weekday/1.cc: New test.
3708	* testsuite/std/time/month_weekday_last/1.cc: New test.
3709	* testsuite/std/time/weekday/1.cc: New test.
3710	* testsuite/std/time/weekday_indexed/1.cc: New test.
3711	* testsuite/std/time/weekday_last/1.cc: New test.
3712	* testsuite/std/time/year/1.cc: New test.
3713	* testsuite/std/time/year_month/1.cc: New test.
3714	* testsuite/std/time/year_month_day/1.cc: New test.
3715	* testsuite/std/time/year_month_day_last/1.cc: New test.
3716	* testsuite/std/time/year_month_weekday/1.cc: New test.
3717	* testsuite/std/time/year_month_weekday_last/1.cc: New test.
3718
37192020-08-24  Jonathan Wakely  <jwakely@redhat.com>
3720
3721	* include/std/ranges (join_view): Add deduction guide (LWG 3474).
3722	* testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
3723
37242020-08-24  Jonathan Wakely  <jwakely@redhat.com>
3725
3726	* include/bits/iterator_concepts.h (indirectly_readable): Add
3727	partial specializations to resolve ambiguities (LWG 3446).
3728	* testsuite/24_iterators/associated_types/readable.traits.cc:
3729	Check types with both value_type and element_type.
3730
37312020-08-24  Jonathan Wakely  <jwakely@redhat.com>
3732
3733	* include/std/ranges (ranges::iota_view::size()): Perform all
3734	calculations in the right unsigned types.
3735	* testsuite/std/ranges/iota/size.cc: New test.
3736
37372020-08-24  Jonathan Wakely  <jwakely@redhat.com>
3738
3739	PR libstdc++/96766
3740	* include/std/variant (_Variant_storage): Replace implicit
3741	conversions from size_t to __index_type with explicit casts.
3742
37432020-08-24  Jonathan Wakely  <jwakely@redhat.com>
3744
3745	* testsuite/30_threads/packaged_task/cons/alloc.cc: Run for
3746	C++11 and skip for C++17 or later.
3747
37482020-08-24  Corentin Gay  <gay@adacore.com>
3749
3750	* testsuite/20_util/shared_ptr/atomic/3.cc: Do not require POSIX
3751	threads and add -pthread only on targets supporting them.
3752	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
3753	Likewise.
3754	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc:
3755	Likewise.
3756	* testsuite/30_threads/async/42819.cc: Likewise.
3757	* testsuite/30_threads/async/49668.cc: Likewise.
3758	* testsuite/30_threads/async/54297.cc: Likewise.
3759	* testsuite/30_threads/async/any.cc: Likewise.
3760	* testsuite/30_threads/async/async.cc: Likewise.
3761	* testsuite/30_threads/async/except.cc: Likewise.
3762	* testsuite/30_threads/async/launch.cc: Likewise.
3763	* testsuite/30_threads/async/lwg2021.cc: Likewise.
3764	* testsuite/30_threads/async/sync.cc: Likewise. : Likewise.
3765	* testsuite/30_threads/call_once/39909.cc: Likewise.
3766	* testsuite/30_threads/call_once/49668.cc: Likewise.
3767	* testsuite/30_threads/call_once/60497.cc: Likewise.
3768	* testsuite/30_threads/call_once/call_once1.cc: Likewise.
3769	* testsuite/30_threads/call_once/dr2442.cc: Likewise.
3770	* testsuite/30_threads/condition_variable/54185.cc: Likewise.
3771	* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
3772	* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
3773	* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
3774	* testsuite/30_threads/condition_variable/members/3.cc: Likewise.
3775	* testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
3776	* testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
3777	* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
3778	Likewise.
3779	* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
3780	* testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
3781	* testsuite/30_threads/condition_variable_any/cond.cc: Likewise.
3782	* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
3783	* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
3784	* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
3785	* testsuite/30_threads/future/cons/move.cc: Likewise.
3786	* testsuite/30_threads/future/members/45133.cc: Likewise.
3787	* testsuite/30_threads/future/members/get.cc: Likewise.
3788	* testsuite/30_threads/future/members/get2.cc: Likewise.
3789	* testsuite/30_threads/future/members/share.cc: Likewise.
3790	* testsuite/30_threads/future/members/valid.cc: Likewise.
3791	* testsuite/30_threads/future/members/wait.cc: Likewise.
3792	* testsuite/30_threads/future/members/wait_for.cc: Likewise.
3793	* testsuite/30_threads/future/members/wait_until.cc: Likewise.
3794	* testsuite/30_threads/lock/1.cc: Likewise.
3795	* testsuite/30_threads/lock/2.cc: Likewise.
3796	* testsuite/30_threads/lock/3.cc: Likewise.
3797	* testsuite/30_threads/lock/4.cc: Likewise.
3798	* testsuite/30_threads/mutex/cons/1.cc: Likewise.
3799	* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
3800	* testsuite/30_threads/mutex/lock/1.cc: Likewise.
3801	* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
3802	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
3803	* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
3804	* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
3805	* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
3806	* testsuite/30_threads/mutex/unlock/2.cc: Likewise.
3807	* testsuite/30_threads/packaged_task/49668.cc: Likewise.
3808	* testsuite/30_threads/packaged_task/60564.cc: Likewise.
3809	* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
3810	* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
3811	* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
3812	* testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
3813	* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
3814	* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
3815	* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
3816	* testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
3817	Likewise.
3818	* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
3819	* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
3820	* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
3821	* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
3822	* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
3823	* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
3824	* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
3825	* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
3826	* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
3827	* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
3828	* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
3829	* testsuite/30_threads/promise/60966.cc: Likewise.
3830	* testsuite/30_threads/promise/cons/1.cc: Likewise.
3831	* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
3832	* testsuite/30_threads/promise/cons/move.cc: Likewise.
3833	* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
3834	* testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
3835	* testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
3836	* testsuite/30_threads/promise/members/get_future.cc: Likewise.
3837	* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
3838	* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
3839	* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
3840	* testsuite/30_threads/promise/members/set_value.cc: Likewise.
3841	* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
3842	* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
3843	* testsuite/30_threads/promise/members/swap.cc: Likewise.
3844	* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
3845	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
3846	Likewise.
3847	* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
3848	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
3849	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
3850	Likewise.
3851	* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
3852	* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
3853	* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
3854	* testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
3855	* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
3856	* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
3857	Likewise.
3858	* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
3859	* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
3860	* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
3861	Likewise.
3862	* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
3863	Likewise.
3864	* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
3865	* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
3866	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
3867	Likewise.
3868	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
3869	Likewise.
3870	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
3871	Likewise.
3872	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
3873	Likewise.
3874	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
3875	Likewise.
3876	* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
3877	* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
3878	* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
3879	* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
3880	* testsuite/30_threads/shared_future/members/get.cc: Likewise.
3881	* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
3882	* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
3883	* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
3884	* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
3885	* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
3886	* testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
3887	* testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
3888	* testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
3889	* testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
3890	* testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
3891	* testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
3892	* testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
3893	* testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
3894	* testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
3895	* testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
3896	* testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
3897	* testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
3898	* testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
3899	* testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
3900	* testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
3901	* testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
3902	* testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
3903	* testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
3904	* testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
3905	* testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
3906	* testsuite/30_threads/this_thread/1.cc: Likewise.
3907	* testsuite/30_threads/this_thread/sleep_for-mt.cc: Likewise.
3908	* testsuite/30_threads/this_thread/sleep_until-mt.cc: Likewise.
3909	* testsuite/30_threads/thread/cons/1.cc: Likewise.
3910	* testsuite/30_threads/thread/cons/2.cc: Likewise.
3911	* testsuite/30_threads/thread/cons/3.cc: Likewise.
3912	* testsuite/30_threads/thread/cons/4.cc: Likewise.
3913	* testsuite/30_threads/thread/cons/49668.cc: Likewise.
3914	* testsuite/30_threads/thread/cons/5.cc: Likewise.
3915	* testsuite/30_threads/thread/cons/6.cc: Likewise.
3916	* testsuite/30_threads/thread/cons/7.cc: Likewise.
3917	* testsuite/30_threads/thread/cons/8.cc: Likewise.
3918	* testsuite/30_threads/thread/cons/9.cc: Likewise.
3919	* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
3920	* testsuite/30_threads/thread/cons/terminate.cc: Likewise.
3921	* testsuite/30_threads/thread/members/1.cc: Likewise.
3922	* testsuite/30_threads/thread/members/2.cc: Likewise.
3923	* testsuite/30_threads/thread/members/3.cc: Likewise.
3924	* testsuite/30_threads/thread/members/4.cc: Likewise.
3925	* testsuite/30_threads/thread/members/5.cc: Likewise.
3926	* testsuite/30_threads/thread/members/hardware_concurrency.cc:
3927	Likewise.
3928	* testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
3929	* testsuite/30_threads/thread/swap/1.cc: Likewise.
3930	* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
3931	* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc:
3932	Likewise.
3933	* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
3934	* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
3935	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
3936	Likewise.
3937	* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
3938	* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
3939	* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
3940	* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
3941	* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
3942	* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
3943	* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
3944	* testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
3945	* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
3946	* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
3947	* testsuite/30_threads/try_lock/1.cc: Likewise.
3948	* testsuite/30_threads/try_lock/2.cc: Likewise.
3949	* testsuite/30_threads/try_lock/3.cc: Likewise.
3950	* testsuite/30_threads/try_lock/4.cc: Likewise.
3951	* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
3952	* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
3953	* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
3954	* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
3955	* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
3956	* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
3957	* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
3958	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
3959	* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
3960	* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
3961	* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
3962
39632020-08-21  Jonathan Wakely  <jwakely@redhat.com>
3964
3965	PR libstdc++/96736
3966	* testsuite/17_intro/headers/c++1998/all_attributes.cc: Do not
3967	test "cold" on darwin.
3968	* testsuite/17_intro/headers/c++2011/all_attributes.cc:
3969	Likewise.
3970	* testsuite/17_intro/headers/c++2014/all_attributes.cc:
3971	Likewise.
3972	* testsuite/17_intro/headers/c++2017/all_attributes.cc:
3973	Likewise.
3974	* testsuite/17_intro/headers/c++2020/all_attributes.cc:
3975	Likewise.
3976
39772020-08-21  Jonathan Wakely  <jwakely@redhat.com>
3978
3979	PR libstdc++/96718
3980	* testsuite/25_algorithms/pstl/feature_test-2.cc: Require
3981	tbb-backend effective target.
3982	* testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
3983	* testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
3984	* testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
3985
39862020-08-20  Jonathan Wakely  <jwakely@redhat.com>
3987
3988	* include/bits/iterator_concepts.h [__STRICT_ANSI__]
3989	(incrementable_traits<__int128>): Define specialization.
3990	(incrementable_traits<unsigned __int128>): Likewise.
3991	* testsuite/std/ranges/iota/96042.cc: Test iota_view with
3992	__int128.
3993
39942020-08-19  Jonathan Wakely  <jwakely@redhat.com>
3995	    Patrick Palka  <ppalka@redhat.com>
3996
3997	PR libstdc++/96042
3998	* include/bits/range_access.h (__detail::__to_unsigned_like):
3999	Do not use make_unsigned_t<T> in the return type, as it can
4000	result in an error before the integral<T> constraint is checked.
4001	[__STRICT_ANSI__]: Add overloads for 128-bit integer types.
4002	(__detail::__make_unsigned_like_t): Define as the return type
4003	of __to_unsigned_like.
4004	* testsuite/std/ranges/subrange/96042.cc: New test.
4005
40062020-08-19  Jonathan Wakely  <jwakely@redhat.com>
4007
4008	* include/bits/stl_tree.h (operator!=, operator>, operator<=)
4009	(operator>=): Remove deprecated functions.
4010
40112020-08-19  Jonathan Wakely  <jwakely@redhat.com>
4012
4013	PR libstdc++/96042
4014	* include/ext/numeric_traits.h (__is_integer_nonstrict): New
4015	trait which is true for 128-bit integers even in strict modes.
4016	(__numeric_traits_integer, __numeric_traits): Use
4017	__is_integer_nonstrict instead of __is_integer.
4018	* include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
4019	(numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
4020	Define.
4021	* testsuite/std/ranges/iota/96042.cc: New test.
4022
40232020-08-19  Jonathan Wakely  <jwakely@redhat.com>
4024
4025	* include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST)
4026	(_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST)
4027	(_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
4028	Add new macros to comment.
4029
40302020-08-19  Patrick Palka  <ppalka@redhat.com>
4031
4032	* include/Makefile.am (bits_headers): Add new header
4033	<bits/max_size_type.h>.
4034	* include/Makefile.in: Regenerate.
4035	* include/bits/iterator_concepts.h
4036	(ranges::__detail::__max_diff_type): Remove definition, replace
4037	with forward declaration of class __max_diff_type.
4038	(__detail::__max_size_type): Remove definition, replace with
4039	forward declaration of class __max_size_type.
4040	(__detail::__is_unsigned_int128, __is_signed_int128)
4041	(__is_int128): New concepts.
4042	(__detail::__is_integer_like): Accept __int128 and unsigned
4043	__int128.
4044	(__detail::__is_signed_integer_like): Accept __int128.
4045	* include/bits/max_size_type.h: New header.
4046	* include/bits/range_access.h: Include <bits/max_size_type.h>.
4047	(__detail::__to_unsigned_like): Two new overloads.
4048	* testsuite/std/ranges/iota/difference_type.cc: New test.
4049	* testsuite/std/ranges/iota/max_size_type.cc: New test.
4050
40512020-08-19  Jonathan Wakely  <jwakely@redhat.com>
4052
4053	* include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
4054	standard modes.
4055	(_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
4056	message in deprecated warnings.
4057	(_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
4058	macros for marking features deprecated in C++11.
4059	(_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
4060	New macros.
4061	* include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
4062	Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
4063	(auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
4064	* include/backward/binders.h (binder1st, binder2nd): Likewise.
4065	* include/bits/ios_base.h (io_state, open_mode, seek_dir)
4066	(streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
4067	* include/std/streambuf (stossc): Replace C++11 attribute
4068	with _GLIBCXX_DEPRECATED_SUGGEST.
4069	* include/std/type_traits (__is_nullptr_t): Use
4070	_GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
4071	* testsuite/27_io/types/1.cc: Check for deprecated warnings.
4072	Also check for io_state, open_mode and seek_dir typedefs.
4073
40742020-08-19  Antony Polukhin  <antoshkka@gmail.com>
4075
4076	PR libstdc++/71579
4077	* include/std/type_traits (invoke_result, is_nothrow_invocable_r)
4078	Add static_asserts to make sure that the argument of the type
4079	trait is not misused with incomplete types.
4080	(is_swappable_with, is_nothrow_swappable_with): Add static_asserts
4081	to make sure that the first and second arguments of the type trait
4082	are not misused with incomplete types.
4083	* testsuite/20_util/invoke_result/incomplete_neg.cc: New test.
4084	* testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: New test.
4085	* testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc: New test.
4086	* testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc: New
4087	test.
4088	* testsuite/20_util/is_swappable_with/incomplete_neg.cc: New test.
4089
40902020-08-18  David Edelsohn  <dje.gcc@gmail.com>
4091	    Clement Chigot  <clement.chigot@atos.net>
4092
4093	* config/os/aix/t-aix: Add complementary mode object files to
4094	libsupc++.a
4095
40962020-08-18  Jonathan Wakely  <jwakely@redhat.com>
4097
4098	* testsuite/17_intro/headers/c++1998/all_attributes.cc: Check
4099	"cold" isn't used in the library. Also check <cxxabi.h>.
4100	* testsuite/17_intro/headers/c++2011/all_attributes.cc:
4101	Likewise.
4102	* testsuite/17_intro/headers/c++2014/all_attributes.cc:
4103	Likewise.
4104	* testsuite/17_intro/headers/c++2017/all_attributes.cc:
4105	Likewise.
4106	* testsuite/17_intro/headers/c++2020/all_attributes.cc:
4107	Likewise.
4108
41092020-08-18  Jonathan Wakely  <jwakely@redhat.com>
4110
4111	PR libstdc++/69724
4112	* include/std/future (__future_base::_S_make_deferred_state)
4113	(__future_base::_S_make_async_state): Remove.
4114	(__future_base::_Deferred_state): Change constructor to accept a
4115	parameter pack of arguments and forward them to the call
4116	wrapper.
4117	(__future_base::_Async_state_impl): Likewise. Replace lambda
4118	expression with a named member function.
4119	(async): Construct state object directly from the arguments,
4120	instead of using thread::__make_invoker, _S_make_deferred_state
4121	and _S_make_async_state. Move shared state into the returned
4122	future.
4123	* include/std/thread (thread::_Call_wrapper): New alias
4124	template for use by constructor and std::async.
4125	(thread::thread(Callable&&, Args&&...)): Create state object
4126	directly instead of using _S_make_state.
4127	(thread::__make_invoker, thread::__decayed_tuple)
4128	(thread::_S_make_state): Remove.
4129	* testsuite/30_threads/async/69724.cc: New test.
4130
41312020-08-17  Jonathan Wakely  <jwakely@redhat.com>
4132
4133	PR libstdc++/55713
4134	PR libstdc++/71096
4135	PR libstdc++/93147
4136	* include/std/tuple [__has_cpp_attribute(no_unique_address)]
4137	(_Head_base<Idx, Head, true>): New definition of the partial
4138	specialization, using [[no_unique_address]] instead of
4139	inheritance.
4140	* testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
4141	output.
4142	* testsuite/20_util/tuple/comparison_operators/93147.cc: New test.
4143	* testsuite/20_util/tuple/creation_functions/55713.cc: New test.
4144	* testsuite/20_util/tuple/element_access/71096.cc: New test.
4145
41462020-08-14  Lewis Hyatt  <lhyatt@gmail.com>
4147
4148	* testsuite/lib/libstdc++.exp: Use the new option
4149	-fdiagnostics-plain-output.
4150
41512020-08-13  Jonathan Wakely  <jwakely@redhat.com>
4152
4153	* acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Warn if the c_std
4154	option is used and fail unless --enable-cheaders-obsolete is
4155	also used.
4156	* configure: Regenerate.
4157
41582020-08-12  Jonathan Wakely  <jwakely@redhat.com>
4159
4160	PR libstdc++/85828
4161	* include/bits/basic_string.h (operator=(basic_string&&)): Check
4162	for self-move before copying with char_traits::copy.
4163	* include/bits/hashtable.h (operator=(_Hashtable&&)): Check for
4164	self-move.
4165	* include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)):
4166	Check for equal allocators.
4167	* include/bits/stl_list.h (_M_move_assign(list&&, true_type)):
4168	Call clear() instead of _M_clear().
4169	* include/debug/formatter.h (__msg_self_move_assign): Change
4170	comment.
4171	* include/debug/macros.h (__glibcxx_check_self_move_assign):
4172	(_GLIBCXX_DEBUG_VERIFY): Remove.
4173	* include/debug/safe_container.h (operator=(_Safe_container&&)):
4174	Remove assertion check for safe move and make it well-defined.
4175	* include/debug/safe_iterator.h (operator=(_Safe_iterator&&)):
4176	Remove assertion check for self-move.
4177	* include/debug/safe_local_iterator.h
4178	(operator=(_Safe_local_iterator&&)): Likewise.
4179	* testsuite/21_strings/basic_string/cons/char/self_move.cc: New test.
4180	* testsuite/23_containers/deque/cons/self_move.cc: New test.
4181	* testsuite/23_containers/forward_list/cons/self_move.cc: New test.
4182	* testsuite/23_containers/list/cons/self_move.cc: New test.
4183	* testsuite/23_containers/set/cons/self_move.cc: New test.
4184	* testsuite/23_containers/unordered_set/cons/self_move.cc: New test.
4185	* testsuite/23_containers/vector/cons/self_move.cc: New test.
4186
41872020-08-11  François Dumont  <fdumont@gcc.gnu.org>
4188
4189	PR libstdc++/91620
4190	* include/bits/forward_list.tcc (forward_list<>::remove): Collect nodes
4191	to destroy in an intermediate forward_list.
4192	(forward_list<>::remove_if, forward_list<>::unique): Likewise.
4193	* include/bits/list.tcc (list<>::remove, list<>::unique): Likewise.
4194	(list<>::remove_if): Likewise.
4195	* include/debug/forward_list (forward_list<>::_M_erase_after): Remove.
4196	(forward_list<>::erase_after): Adapt.
4197	(forward_list<>::remove, forward_list<>::remove_if): Collect nodes to
4198	destroy in an intermediate forward_list.
4199	(forward_list<>::unique): Likewise.
4200	* include/debug/list (list<>::remove, list<>::unique): Likewise.
4201	(list<>::remove_if): Likewise.
4202	* testsuite/23_containers/forward_list/operations/91620.cc: New test.
4203	* testsuite/23_containers/list/operations/91620.cc: New test.
4204
42052020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4206
4207	* testsuite/30_threads/thread/cons/84535.cc: Use a custom
4208	namespace.
4209	* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
4210
42112020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4212
4213	PR libstdc++/89760
4214	* include/experimental/executor [!_GLIBCXX_HAS_GTHREADS]:
4215	(execution_context::mutex_type): Define dummy mutex type.
4216	(system_context): Use execution_context::mutex_type.
4217	(system_context) [!_GLIBCXX_HAS_GTHREADS]: Define dummy
4218	thread and condition variable types.
4219	[!_GLIBCXX_HAS_GTHREADS] (system_context::_M_run()): Do not
4220	define.
4221	(system_context::_M_post) [!_GLIBCXX_HAS_GTHREADS]: Throw
4222	an exception when threads aren't available.
4223	(strand::running_in_this_thread()): Defer to _M_state.
4224	(strand::_State::running_in_this_thread()): New function.
4225	(use_future_t): Do not depend on _GLIBCXX_USE_C99_STDINT_TR1.
4226	* include/experimental/io_context (io_context): Use the
4227	execution_context::mutex_type alias. Replace stack of thread
4228	IDs with counter.
4229	* testsuite/experimental/net/execution_context/use_service.cc:
4230	Enable test for non-pthread targets.
4231
42322020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4233
4234	* include/experimental/executor (system_context::a__tag): Make
4235	default constructor explicit.
4236
42372020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4238
4239	* include/experimental/executor (system_context::_M_run()):
4240	Fix predicate.
4241	* testsuite/experimental/net/system_context/1.cc: New test.
4242
42432020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4244
4245	* include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
4246	#ifdef instead of #if.
4247	(stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
4248	using __gthread_yield.
4249
42502020-08-11  Jonathan Wakely  <jwakely@redhat.com>
4251
4252	* include/std/thread [!_GLIBCXX_HAS_GTHREADS] (this_thread::yield)
4253	(this_thread::sleep_until): Define.
4254	[!_GLIBCXX_HAS_GTHREADS] (this_thread::sleep_for): Define. Replace
4255	use of __gthread_time_t typedef with timespec.
4256	* src/c++11/thread.cc [!_GLIBCXX_HAS_GTHREADS] (__sleep_for):
4257	Likewise.
4258	* testsuite/30_threads/this_thread/2.cc: Moved to...
4259	* testsuite/30_threads/this_thread/yield.cc: ...here.
4260	* testsuite/30_threads/this_thread/3.cc: Moved to...
4261	* testsuite/30_threads/this_thread/sleep_for-mt.cc: ...here.
4262	* testsuite/30_threads/this_thread/4.cc: Moved to...
4263	* testsuite/30_threads/this_thread/sleep_until-mt.cc: ...here.
4264	* testsuite/30_threads/this_thread/58038.cc: Add
4265	dg-require-sleep.
4266	* testsuite/30_threads/this_thread/60421.cc: Likewise.
4267	* testsuite/30_threads/this_thread/sleep_for.cc: New test.
4268	* testsuite/30_threads/this_thread/sleep_until.cc: New test.
4269
42702020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4271
4272	PR libstdc++/94681
4273	* src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
4274	of calling ::lstat directly.
4275	* src/filesystem/ops.cc (read_symlink): Likewise.
4276
42772020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4278
4279	* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
4280	Use gdb.Type.strip_typedefs().
4281	* testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
4282	the emulated old type.
4283
42842020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4285
4286	PR libstdc++/94681
4287	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
4288	$enable_libstdcxx_filesystem_ts.
4289	* configure: Regenerate.
4290
42912020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4292
4293	PR libstdc++/93904
4294	* include/bits/stl_iterator.h (inserter): Do not deduce
4295	iterator type (LWG 561).
4296	* testsuite/24_iterators/insert_iterator/dr561.cc: New test.
4297
42982020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4299
4300	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI=0]
4301	(basic_string::reserve()): Do nothing if exceptions are not
4302	enabled.
4303
43042020-08-10  Jonathan Wakely  <jwakely@redhat.com>
4305
4306	PR libstdc++/95749
4307	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
4308	(stat_type): Change to __stat64.
4309	(stat): Use _wstat64.
4310
43112020-08-07  Jonathan Wakely  <jwakely@redhat.com>
4312
4313	PR libstdc++/96303
4314	* include/debug/bitset (bitset::operator==): Call _M_base() on
4315	right operand.
4316	(bitset::operator!=): Likewise, but don't define it at all when
4317	default comparisons are supported by the compiler.
4318	* testsuite/23_containers/bitset/operations/96303.cc: New test.
4319
43202020-08-07  Jonathan Wakely  <jwakely@redhat.com>
4321
4322	* testsuite/18_support/comparisons/algorithms/partial_order.cc:
4323	Replace VERIFY with static_assert where the compiler now
4324	allows it.
4325	* testsuite/18_support/comparisons/algorithms/weak_order.cc:
4326	Likewise.
4327
43282020-08-07  Jonathan Wakely  <jwakely@redhat.com>
4329
4330	* config/abi/pre/gnu.ver: Fix wildcards for wstring symbols.
4331
43322020-08-06  Andrew Luo  <andrewluotechnologies@outlook.com>
4333	    Jonathan Wakely  <jwakely@redhat.com>
4334
4335	* config/abi/pre/gnu.ver (GLIBCXX_3.4): Use less greedy
4336	patterns for basic_string members.
4337	(GLIBCXX_3.4.29): Export new basic_string::reserve symbols.
4338	* doc/xml/manual/status_cxx2020.xml: Update P0966 status.
4339	* include/bits/basic_string.h (shrink_to_fit()): Call reserve().
4340	(reserve(size_type)): Remove default argument.
4341	(reserve()): Declare new overload.
4342	[!_GLIBCXX_USE_CXX11_ABI] (shrink_to_fit, reserve): Likewise.
4343	* include/bits/basic_string.tcc (reserve(size_type)): Remove
4344	support for shrinking capacity.
4345	(reserve()): Perform shrink-to-fit operation.
4346	[!_GLIBCXX_USE_CXX11_ABI] (reserve): Likewise.
4347	* testsuite/21_strings/basic_string/capacity/1.cc: Adjust to
4348	reflect new behavior.
4349	* testsuite/21_strings/basic_string/capacity/char/1.cc:
4350	Likewise.
4351	* testsuite/21_strings/basic_string/capacity/char/18654.cc:
4352	Likewise.
4353	* testsuite/21_strings/basic_string/capacity/char/2.cc:
4354	Likewise.
4355	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
4356	Likewise.
4357	* testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
4358	Likewise.
4359	* testsuite/21_strings/basic_string/capacity/wchar_t/2.cc:
4360	Likewise.
4361
43622020-08-06  Jonathan Wakely  <jwakely@redhat.com>
4363
4364	* include/bits/basic_string.tcc
4365	(operator>>(basic_istream&, basic_string&)): Do not set eofbit
4366	if extraction stopped after in.width() characters.
4367	* src/c++98/istream-string.cc (operator>>(istream&, string&)):
4368	Likewise.
4369	* include/bits/istream.tcc (__istream_extract): Do not set
4370	eofbit if extraction stopped after n-1 characters.
4371	* src/c++98/istream.cc (__istream_extract): Likewise.
4372	* testsuite/21_strings/basic_string/inserters_extractors/char/13.cc: New test.
4373	* testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc: New test.
4374	* testsuite/27_io/basic_istream/extractors_character/char/5.cc: New test.
4375	* testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc: New test.
4376
43772020-08-06  Jonathan Wakely  <jwakely@redhat.com>
4378
4379	PR libstdc++/96484
4380	* src/c++17/fs_ops.cc (fs::read_symlink): Return an error
4381	immediately for non-symlinks.
4382	* src/filesystem/ops.cc (fs::read_symlink): Likewise.
4383
43842020-08-06  Jonathan Wakely  <jwakely@redhat.com>
4385
4386	* include/std/istream (operator>>(istream&, char*)): Add
4387	attributes to get warnings for pointers that are null or known
4388	to point to the end of a buffer. Request upper bound from
4389	__builtin_object_size check and handle zero-sized buffer case.
4390	(operator>>(istream&, signed char))
4391	(operator>>(istream&, unsigned char*)): Add attributes.
4392	* testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
4393	Check extracting into the middle of a buffer.
4394	* testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc: New test.
4395
43962020-08-05  Jonathan Wakely  <jwakely@redhat.com>
4397
4398	* include/std/atomic (atomic<T>::store): Reformat.
4399
44002020-08-05  Jonathan Wakely  <jwakely@redhat.com>
4401
4402	* doc/xml/manual/status_cxx2017.xml: Replace oneAPI DPC++ link
4403	with LLVM repo for PSTL.
4404	* doc/html/manual/status.html: Regenerate.
4405
44062020-08-05  Jonathan Wakely  <jwakely@redhat.com>
4407
4408	* config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Export new symbols.
4409	* include/bits/istream.tcc (__istream_extract): New function
4410	template implementing both of operator>>(istream&, char*) and
4411	operator>>(istream&, char(&)[N]). Add explicit instantiation
4412	declaration for it. Remove explicit instantiation declarations
4413	for old function templates.
4414	* include/std/istream (__istream_extract): Declare.
4415	(operator>>(basic_istream<C,T>&, C*)): Define inline and simply
4416	call __istream_extract.
4417	(operator>>(basic_istream<char,T>&, signed char*)): Likewise.
4418	(operator>>(basic_istream<char,T>&, unsigned char*)): Likewise.
4419	(operator>>(basic_istream<C,T>&, C(7)[N])): Define for LWG 2499.
4420	(operator>>(basic_istream<char,T>&, signed char(&)[N])):
4421	Likewise.
4422	(operator>>(basic_istream<char,T>&, unsigned char(&)[N])):
4423	Likewise.
4424	* include/std/streambuf (basic_streambuf): Declare char overload
4425	of __istream_extract as a friend.
4426	* src/c++11/istream-inst.cc: Add explicit instantiation
4427	definition for wchar_t overload of __istream_extract. Remove
4428	explicit instantiation definitions of old operator>> overloads
4429	for versioned-namespace build.
4430	* src/c++98/istream.cc (operator>>(istream&, char*)): Replace
4431	with __istream_extract(istream&, char*, streamsize).
4432	* testsuite/27_io/basic_istream/extractors_character/char/3.cc:
4433	Do not use variable-length array.
4434	* testsuite/27_io/basic_istream/extractors_character/char/4.cc:
4435	Do not run test for C++20.
4436	* testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
4437	Do not test writing to pointers for C++20.
4438	* testsuite/27_io/basic_istream/extractors_character/char/9826.cc:
4439	Use array instead of pointer.
4440	* testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc:
4441	Do not use variable-length array.
4442	* testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
4443	Do not run test for C++20.
4444	* testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc:
4445	Do not test writing to pointers for C++20.
4446	* testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc:
4447	New test.
4448	* testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc:
4449	New test.
4450	* testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
4451	New test.
4452	* testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc:
4453	New test.
4454	* testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc:
4455	New test.
4456
44572020-08-01  Gerald Pfeifer  <gerald@pfeifer.com>
4458
4459	* doc/xml/manual/using_exceptions.xml: Move www.stroustrup.com to
4460	https.
4461	* doc/html/manual/using_exceptions.html: Regenerate.
4462
44632020-07-31  Gerald Pfeifer  <gerald@pfeifer.com>
4464
4465	* doc/xml/manual/status_cxx2017.xml: ParallelSTL is now part
4466	of oneAPI DPC++ Library on Github.
4467	* doc/html/manual/status.html: Regenerate.
4468
44692020-07-31  François Dumont  <fdumont@gcc.gnu.org>
4470
4471	* include/bits/stl_bvector.h
4472	[_GLIBCXX_INLINE_VERSION](_Bvector_impl_data::_M_start): Define as
4473	_Bit_type*.
4474	(_Bvector_impl_data(const _Bvector_impl_data&)): Default.
4475	(_Bvector_impl_data(_Bvector_impl_data&&)): Delegate to latter.
4476	(_Bvector_impl_data::operator=(const _Bvector_impl_data&)): Default.
4477	(_Bvector_impl_data::_M_move_data(_Bvector_impl_data&&)): Use latter.
4478	(_Bvector_impl_data::_M_reset()): Likewise.
4479	(_Bvector_impl_data::_M_swap_data): New.
4480	(_Bvector_impl::_Bvector_impl(_Bvector_impl&&)): Implement explicitely.
4481	(_Bvector_impl::_Bvector_impl(_Bit_alloc_type&&, _Bvector_impl&&)): New.
4482	(_Bvector_base::_Bvector_base(_Bvector_base&&, const allocator_type&)):
4483	New, use latter.
4484	(vector::vector(vector&&, const allocator_type&, true_type)): New, use
4485	latter.
4486	(vector::vector(vector&&, const allocator_type&, false_type)): New.
4487	(vector::vector(vector&&, const allocator_type&)): Use latters.
4488	(vector::vector(const vector&, const allocator_type&)): Adapt.
4489	[__cplusplus >= 201103](vector::vector(_InputIt, _InputIt,
4490	const allocator_type&)): Use _M_initialize_range.
4491	(vector::operator[](size_type)): Use iterator operator[].
4492	(vector::operator[](size_type) const): Use const_iterator operator[].
4493	(vector::swap(vector&)): Add assertions on allocators. Use _M_swap_data.
4494	[__cplusplus >= 201103](vector::insert(const_iterator, _InputIt,
4495	_InputIt)): Use _M_insert_range.
4496	(vector::_M_initialize(size_type)): Adapt.
4497	[__cplusplus >= 201103](vector::_M_initialize_dispatch): Remove.
4498	[__cplusplus >= 201103](vector::_M_insert_dispatch): Remove.
4499	* python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Stop
4500	using start _M_offset.
4501	(StdVectorPrinter.to_string): Likewise.
4502	* testsuite/23_containers/vector/bool/allocator/swap.cc: Adapt.
4503	* testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc:
4504	Add check.
4505
45062020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4507
4508	* testsuite/27_io/basic_istream/ignore/char/94749.cc: Use 0
4509	instead of nullptr.
4510	* testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
4511	Likewise.
4512
45132020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4514
4515	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
4516	Move struct to namespace scope.
4517
45182020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4519
4520	* testsuite/26_numerics/numbers/float128.cc: Check
4521	__STRICT_ANSI__ before using __float128.
4522	* testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc:
4523	Likewise.
4524
45252020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4526
4527	* testsuite/18_support/set_terminate.cc: Require C++11 or
4528	higher.
4529	* testsuite/28_regex/simple_c++11.cc: Likewise.
4530	* testsuite/tr1/headers/c++200x/complex.cc: Likewise.
4531	* testsuite/24_iterators/headers/iterator/synopsis.cc:
4532	Require C++14 or lower.
4533
45342020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4535
4536	* testsuite/23_containers/span/back_assert_neg.cc: Split c++2a
4537	effective-target from xfail selector.
4538	* testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
4539	* testsuite/23_containers/span/first_assert_neg.cc: Likewise.
4540	* testsuite/23_containers/span/front_assert_neg.cc: Likewise.
4541	* testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
4542	* testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
4543	* testsuite/23_containers/span/last_assert_neg.cc: Likewise.
4544	* testsuite/23_containers/span/subspan_2_assert_neg.cc:
4545	Likewise.
4546	* testsuite/23_containers/span/subspan_3_assert_neg.cc:
4547	Likewise.
4548	* testsuite/23_containers/span/subspan_4_assert_neg.cc:
4549	Likewise.
4550	* testsuite/23_containers/span/subspan_5_assert_neg.cc:
4551	Likewise.
4552	* testsuite/23_containers/span/subspan_6_assert_neg.cc:
4553	Likewise.
4554	* testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
4555
45562020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4557
4558	* testsuite/20_util/reference_wrapper/83427.cc: Adjust
4559	effective-target to specific language mode only.
4560	* testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
4561	Likewise.
4562	* testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
4563	Likewise.
4564	* testsuite/24_iterators/headers/iterator/synopsis_c++11.cc:
4565	Likewise.
4566	* testsuite/24_iterators/headers/iterator/synopsis_c++14.cc:
4567	Likewise.
4568	* testsuite/26_numerics/valarray/69116.cc:
4569	Likewise.
4570	* testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
4571	Remove whitespace at end of file.
4572	* testsuite/30_threads/headers/future/std_c++0x_neg.cc:
4573	Likewise.
4574
45752020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4576
4577	* testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
4578	c++17 effective-target.
4579	* testsuite/17_intro/headers/c++2017/all_no_exceptions.cc:
4580	Likewise.
4581	* testsuite/17_intro/headers/c++2017/all_no_rtti.cc: Likewise.
4582	* testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
4583	Likewise.
4584	* testsuite/17_intro/headers/c++2017/operator_names.cc:
4585	Likewise.
4586	* testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise.
4587	* testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
4588	Likewise.
4589	* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
4590	Likewise.
4591	* testsuite/19_diagnostics/error_code/is_error_code_v.cc:
4592	Likewise.
4593	* testsuite/20_util/any/assign/1.cc: Likewise.
4594	* testsuite/20_util/any/assign/2.cc: Likewise.
4595	* testsuite/20_util/any/assign/emplace.cc: Likewise.
4596	* testsuite/20_util/any/assign/exception.cc: Likewise.
4597	* testsuite/20_util/any/assign/self.cc: Likewise.
4598	* testsuite/20_util/any/cons/1.cc: Likewise.
4599	* testsuite/20_util/any/cons/2.cc: Likewise.
4600	* testsuite/20_util/any/cons/aligned.cc: Likewise.
4601	* testsuite/20_util/any/cons/explicit.cc: Likewise.
4602	* testsuite/20_util/any/cons/in_place.cc: Likewise.
4603	* testsuite/20_util/any/cons/nontrivial.cc: Likewise.
4604	* testsuite/20_util/any/make_any.cc: Likewise.
4605	* testsuite/20_util/any/misc/any_cast.cc: Likewise.
4606	* testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
4607	* testsuite/20_util/any/misc/swap.cc: Likewise.
4608	* testsuite/20_util/any/modifiers/1.cc: Likewise.
4609	* testsuite/20_util/any/observers/type.cc: Likewise.
4610	* testsuite/20_util/any/requirements.cc: Likewise.
4611	* testsuite/20_util/any/typedefs.cc: Likewise.
4612	* testsuite/20_util/as_const/1.cc: Likewise.
4613	* testsuite/20_util/as_const/rvalue_neg.cc: Likewise.
4614	* testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
4615	* testsuite/20_util/bool_constant/requirements.cc: Likewise.
4616	* testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
4617	Likewise.
4618	* testsuite/20_util/duration_cast/rounding.cc: Likewise.
4619	* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
4620	Likewise.
4621	* testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
4622	* testsuite/20_util/function_objects/not_fn/1.cc: Likewise.
4623	* testsuite/20_util/function_objects/searchers.cc: Likewise.
4624	* testsuite/20_util/in_place/requirements.cc: Likewise.
4625	* testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc:
4626	Likewise.
4627	* testsuite/20_util/is_invocable/requirements/typedefs.cc:
4628	Likewise.
4629	* testsuite/20_util/is_invocable/value.cc: Likewise.
4630	* testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc:
4631	Likewise.
4632	* testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc:
4633	Likewise.
4634	* testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
4635	Likewise.
4636	* testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
4637	Likewise.
4638	* testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
4639	* testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
4640	Likewise.
4641	* testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
4642	Likewise.
4643	* testsuite/20_util/is_nothrow_swappable_with/value.cc:
4644	Likewise.
4645	* testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
4646	Likewise.
4647	* testsuite/20_util/is_swappable/requirements/typedefs.cc:
4648	Likewise.
4649	* testsuite/20_util/is_swappable/value.cc: Likewise.
4650	* testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
4651	Likewise.
4652	* testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
4653	Likewise.
4654	* testsuite/20_util/is_swappable_with/value.cc: Likewise.
4655	* testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc:
4656	Likewise.
4657	* testsuite/20_util/logical_traits/requirements/typedefs.cc:
4658	Likewise.
4659	* testsuite/20_util/logical_traits/value.cc: Likewise.
4660	* testsuite/20_util/optional/constexpr/make_optional.cc: Likewise.
4661	* testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
4662	* testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
4663	* testsuite/20_util/optional/hash.cc: Likewise.
4664	* testsuite/20_util/pair/swap_cxx17.cc: Likewise.
4665	* testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
4666	* testsuite/20_util/shared_ptr/requirements/weak_type.cc:
4667	Likewise.
4668	* testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
4669	Likewise.
4670	* testsuite/20_util/tuple/apply/1.cc: Likewise.
4671	* testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
4672	* testsuite/20_util/tuple/swap_cxx17.cc: Likewise.
4673	* testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
4674	* testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
4675	Likewise.
4676	* testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
4677	Likewise.
4678	* testsuite/20_util/variant/any.cc: Likewise.
4679	* testsuite/20_util/variant/compile.cc: Likewise.
4680	* testsuite/20_util/variant/hash.cc: Likewise.
4681	* testsuite/20_util/variant/index_type.cc: Likewise.
4682	* testsuite/20_util/variant/run.cc: Likewise.
4683	* testsuite/20_util/void_t/1.cc: Likewise.
4684	* testsuite/21_strings/basic_string/79162.cc: Likewise.
4685	* testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
4686	* testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
4687	* testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
4688	* testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
4689	* testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
4690	Likewise.
4691	* testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
4692	Likewise.
4693	* testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
4694	Likewise.
4695	* testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
4696	Likewise.
4697	* testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
4698	Likewise.
4699	* testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
4700	Likewise.
4701	* testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
4702	Likewise.
4703	* testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
4704	Likewise.
4705	* testsuite/21_strings/basic_string/operations/compare/char/2.cc:
4706	Likewise.
4707	* testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
4708	Likewise.
4709	* testsuite/21_strings/basic_string/operations/data/char/2.cc:
4710	Likewise.
4711	* testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
4712	Likewise.
4713	* testsuite/21_strings/basic_string/operations/find/char/5.cc:
4714	Likewise.
4715	* testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
4716	Likewise.
4717	* testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
4718	* testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
4719	Likewise.
4720	* testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
4721	* testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
4722	* testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
4723	* testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
4724	* testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
4725	Likewise.
4726	* testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
4727	Likewise.
4728	* testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
4729	Likewise.
4730	* testsuite/21_strings/basic_string_view/element_access/char/1.cc:
4731	Likewise.
4732	* testsuite/21_strings/basic_string_view/element_access/char/2.cc:
4733	Likewise.
4734	* testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
4735	Likewise.
4736	* testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
4737	Likewise.
4738	* testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
4739	Likewise.
4740	* testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
4741	Likewise.
4742	* testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
4743	Likewise.
4744	* testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
4745	Likewise.
4746	* testsuite/21_strings/basic_string_view/include.cc: Likewise.
4747	* testsuite/21_strings/basic_string_view/inserters/char/1.cc:
4748	Likewise.
4749	* testsuite/21_strings/basic_string_view/inserters/char/2.cc:
4750	Likewise.
4751	* testsuite/21_strings/basic_string_view/inserters/char/3.cc:
4752	Likewise.
4753	* testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
4754	Likewise.
4755	* testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
4756	Likewise.
4757	* testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
4758	Likewise.
4759	* testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
4760	Likewise.
4761	* testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
4762	Likewise.
4763	* testsuite/21_strings/basic_string_view/literals/types.cc:
4764	Likewise.
4765	* testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
4766	Likewise.
4767	* testsuite/21_strings/basic_string_view/literals/values.cc:
4768	Likewise.
4769	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
4770	Likewise.
4771	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
4772	Likewise.
4773	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
4774	Likewise.
4775	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
4776	Likewise.
4777	* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
4778	Likewise.
4779	* testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
4780	Likewise.
4781	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
4782	Likewise.
4783	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
4784	Likewise.
4785	* testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
4786	Likewise.
4787	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
4788	Likewise.
4789	* testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
4790	Likewise.
4791	* testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
4792	Likewise.
4793	* testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
4794	Likewise.
4795	* testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
4796	Likewise.
4797	* testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
4798	Likewise.
4799	* testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
4800	Likewise.
4801	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
4802	Likewise.
4803	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
4804	Likewise.
4805	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
4806	Likewise.
4807	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
4808	Likewise.
4809	* testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
4810	Likewise.
4811	* testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
4812	Likewise.
4813	* testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
4814	Likewise.
4815	* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
4816	Likewise.
4817	* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
4818	Likewise.
4819	* testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
4820	Likewise.
4821	* testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
4822	Likewise.
4823	* testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
4824	Likewise.
4825	* testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
4826	Likewise.
4827	* testsuite/21_strings/basic_string_view/range_access/char/1.cc:
4828	Likewise.
4829	* testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
4830	Likewise.
4831	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
4832	Likewise.
4833	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
4834	Likewise.
4835	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
4836	Likewise.
4837	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
4838	Likewise.
4839	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
4840	Likewise.
4841	* testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
4842	Likewise.
4843	* testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
4844	Likewise.
4845	* testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
4846	* testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
4847	* testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
4848	Likewise.
4849	* testsuite/23_containers/map/modifiers/extract.cc: Likewise.
4850	* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
4851	Likewise.
4852	* testsuite/23_containers/map/modifiers/merge.cc: Likewise.
4853	* testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
4854	* testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
4855	* testsuite/23_containers/multimap/modifiers/merge.cc: Likewise.
4856	* testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
4857	* testsuite/23_containers/multiset/modifiers/merge.cc: Likewise.
4858	* testsuite/23_containers/set/modifiers/extract.cc: Likewise.
4859	* testsuite/23_containers/set/modifiers/merge.cc: Likewise.
4860	* testsuite/23_containers/unordered_map/modifiers/extract.cc:
4861	Likewise.
4862	* testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
4863	Likewise.
4864	* testsuite/23_containers/unordered_map/modifiers/merge.cc:
4865	Likewise.
4866	* testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
4867	Likewise.
4868	* testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
4869	Likewise.
4870	* testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
4871	Likewise.
4872	* testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
4873	Likewise.
4874	* testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
4875	Likewise.
4876	* testsuite/23_containers/unordered_set/modifiers/extract.cc:
4877	Likewise.
4878	* testsuite/23_containers/unordered_set/modifiers/merge.cc:
4879	Likewise.
4880	* testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
4881	Likewise.
4882	* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
4883	Likewise.
4884	* testsuite/25_algorithms/clamp/1.cc: Likewise.
4885	* testsuite/25_algorithms/clamp/2.cc: Likewise.
4886	* testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
4887	* testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
4888	Likewise.
4889	* testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
4890	Likewise.
4891	* testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
4892	Likewise.
4893	* testsuite/26_numerics/headers/cmath/special_functions_global.cc:
4894	Likewise.
4895	* testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc:
4896	Likewise.
4897	* testsuite/29_atomics/atomic/is_always_lock_free.cc: Likewise.
4898	* testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
4899	Likewise.
4900	* testsuite/30_threads/shared_lock/70766.cc: Likewise.
4901	* testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
4902	* testsuite/30_threads/shared_mutex/cons/assign_neg.cc:
4903	Likewise.
4904	* testsuite/30_threads/shared_mutex/cons/copy_neg.cc:
4905	Likewise.
4906	* testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
4907	Likewise.
4908	* testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
4909	* testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
4910	* testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
4911
49122020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4913
4914	PR libstdc++/96382
4915	* include/bits/stl_iterator.h (reverse_iterator): Friend
4916	declaration should not depend on __cplusplus.
4917
49182020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4919
4920	* testsuite/experimental/filesystem/filesystem_error/cons.cc:
4921	Remove -std=gnu++17 option.
4922
49232020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4924
4925	* testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
4926	definition of aggregates in C++20.
4927	* testsuite/20_util/optional/requirements.cc: Adjust for
4928	defaulted comparisons in C++20.
4929
49302020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4931
4932	* testsuite/20_util/tuple/78939.cc: Suppress warnings about
4933	deprecation of volatile-qualified structured bindings in C++20.
4934	* testsuite/20_util/variable_templates_for_traits.cc: Likewise
4935	for deprecation of is_pod in C++20
4936
49372020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4938
4939	* testsuite/20_util/time_point_cast/rounding.cc: Remove
4940	duplicate dg-do directive and add c++17 effective target.
4941
49422020-07-31  Jonathan Wakely  <jwakely@redhat.com>
4943
4944	* src/c++17/floating_from_chars.cc (from_chars_impl): Use
4945	LC_ALL_MASK not LC_ALL.
4946
49472020-07-31  Richard Biener  <rguenther@suse.de>
4948
4949	PR debug/96383
4950	* testsuite/20_util/assume_aligned/3.cc: Use -g0.
4951
49522020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4953
4954	* include/bits/basic_string.h (size_type, difference_type):
4955	Use allocator_traits to obtain the allocator's size_type and
4956	difference_type.
4957
49582020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4959
4960	PR libstdc++/96279
4961	* src/c++17/floating_from_chars.cc (from_chars_impl): Use
4962	isinf unqualified.
4963	[!_GLIBCXX_USE_C99_STDLIB]: Use strtod for float and long
4964	double.
4965
49662020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4967
4968	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
4969	Use allocator with the correct value type.
4970	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
4971	Likewise.
4972
49732020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4974
4975	* testsuite/20_util/from_chars/4.cc: Pass non-const iterator
4976	to string::insert.
4977
49782020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4979
4980	* include/bits/iterator_concepts.h (__detail::__cv_bool): New
4981	helper concept.
4982	(__detail::__integral_nonbool): Likewise.
4983	(__detail::__is_integer_like): Use __integral_nonbool.
4984	* testsuite/std/ranges/access/lwg3467.cc: New test.
4985
49862020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4987
4988	* testsuite/20_util/from_chars/4.cc: Use dg-add-options ieee.
4989	* testsuite/29_atomics/atomic_float/1.cc: Likewise.
4990
49912020-07-30  Jonathan Wakely  <jwakely@redhat.com>
4992
4993	* testsuite/23_containers/vector/bool/72847.cc: Use the
4994	exceptions_enabled effective-target keyword instead of
4995	checking for an explicit -fno-exceptions option.
4996	* testsuite/util/testsuite_abi.cc (examine_symbol): Remove
4997	redundant try-catch.
4998	* testsuite/util/testsuite_allocator.h [!__cpp_exceptions]:
4999	Do not define check_allocate_max_size and memory_resource.
5000	* testsuite/util/testsuite_containers.h: Replace comment with
5001	#error if wrong standard dialect used.
5002	* testsuite/util/testsuite_shared.cc: Likewise.
5003
50042020-07-29  François Dumont  <fdumont@gcc.gnu.org>
5005
5006	* include/bits/hashtable_policy.h (_Node_iterator_base()): New.
5007	(operator==(const _Node_iterator_base&, const _Node_iterator_base&)):
5008	Make hidden friend.
5009	(operator!=(const _Node_iterator_base&, const _Node_iterator_base&)):
5010	Make hidden friend.
5011	(_Local_iterator_base<>): Inherits _Node_iterator_base.
5012	(_Local_iterator_base<>::_M_cur): Remove.
5013	(_Local_iterator_base<>::_M_curr()): Remove.
5014	(operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
5015	Remove.
5016	(operator!=(const _Local_iterator_base&, const _Local_iterator_base&)):
5017	Remove.
5018	* include/debug/unordered_map (unordered_map<>::_M_invalidate): Adapt.
5019	(unordered_multimap<>::_M_invalidate): Adapt.
5020	* include/debug/unordered_set (unordered_set<>::_M_invalidate): Adapt.
5021	(unordered_multiset<>::_M_invalidate): Adapt.
5022
50232020-07-29  David Edelsohn  <dje.gcc@gmail.com>
5024	    Jonathan Wakely  <jwakely@redhat.com>
5025	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5026
5027	* testsuite/lib/dg-options.exp (add_options_for_libatomic): Add
5028	target powerpc-ibm-aix* and powerpc*-*-darwin*.
5029	* testsuite/29_atomics/atomic_float/value_init.cc: Add options
5030	for libatomic.
5031
50322020-07-29  François Dumont  <fdumont@gcc.gnu.org>
5033
5034	* include/bits/hashtable.h
5035	(_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
5036	Add noexcept qualification.
5037	(_Hashtable(_Hashtable&&)): Fix noexcept qualification.
5038	(_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
5039	qualification.
5040	* include/bits/unordered_map.h
5041	(unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
5042	qualification.
5043	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
5044	Likewise.
5045	* include/bits/unordered_set.h
5046	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
5047	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
5048	Likewise.
5049	* include/debug/unordered_map
5050	(unordered_map(unordered_map&&, const allocator_type&)): Likewise.
5051	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
5052	Likewise.
5053	* include/debug/unordered_set
5054	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
5055	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
5056	Likewise.
5057	* testsuite/23_containers/unordered_map/allocator/default_init.cc:
5058	New test.
5059	* testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
5060	New test.
5061	* testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
5062	New test.
5063	* testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
5064	New test.
5065	* testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
5066	New test.
5067	* testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
5068	New test.
5069	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
5070	New test.
5071	* testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
5072	New test.
5073	* testsuite/23_containers/unordered_set/allocator/default_init.cc:
5074	New test.
5075	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
5076	New test.
5077	* testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
5078	New test.
5079
50802020-07-28  François Dumont  <fdumont@gcc.gnu.org>
5081
5082	* include/bits/hashtable.h
5083	(_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
5084	const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
5085	const allocator_type&, true_type)): New.
5086	(_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
5087	const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
5088	const allocator_type&, false_type)): New.
5089	(_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
5090	const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
5091	const allocator_type&)): Delegate to latters.
5092	(operator=(initializer_list<value_type>)): Rehash if too small.
5093	(_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Remove
5094	size_t len parameter.
5095	* include/bits/hashtable_policy.h (_Insert_base<>::_M_insert_range):
5096	Do not try to get input range distance.
5097	* testsuite/23_containers/unordered_set/cons/bucket_hint.cc: New test.
5098	* testsuite/23_containers/unordered_set/modifiers/insert.cc: New test.
5099
51002020-07-27  François Dumont  <fdumont@gcc.gnu.org>
5101
5102	* include/bits/hashtable_policy.h (_Map_base<>::at): Use
5103	_Hashtable<>::find.
5104	(_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals):New.
5105	(_Hashtable_base<>::_M_node_equals): New, use latter.
5106	(_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
5107	_RehashPolicy, false>::_M_equal): Adapt to use latter.
5108	* include/bits/hashtable.h (_Hashtable<>::_M_update_bbegin): New.
5109	(_Hashtable<>::_M_assign): Use latter.
5110	(_Hashtable<>::_M_move_assign): Likewise.
5111	(_Hashtable<>(_Hashtable<>&&)): Likewise.
5112	(_Hashtable<>(_Hashtable<>&&, const allocator_type&)): Likewise.
5113	(_Hashtable<>::swap): Likewise.
5114	(_Hashtable<>::find): Build iterator directly from _M_find_node result.
5115	(_Hashtable<>::count): Use _Hashtable<>::find.
5116	(_Hashtable<>::equal_range): Likewise.
5117	(_Hashtable<>::_M_erase(false_type, const key_type&)): Use
5118	_M_node_equals.
5119
51202020-07-27  Jonathan Wakely  <jwakely@redhat.com>
5121
5122	* src/c++17/floating_from_chars.cc (from_chars_impl): Ensure
5123	that FE_NEAREST is used.
5124	* testsuite/20_util/from_chars/4.cc: Do not use if constexpr in
5125	a { target c++14 } test.
5126	[!_GLIBCXX_HAVE_USELOCALE]: Disable all tests.
5127	* testsuite/20_util/from_chars/5.cc [!_GLIBCXX_HAVE_USELOCALE]:
5128	Likewise.
5129	* testsuite/20_util/from_chars/6.cc: New test.
5130
51312020-07-22  Jonathan Wakely  <jwakely@redhat.com>
5132
5133	* include/std/future (future, shared_future, promise): Add
5134	static assertions to the primary template to reject array and
5135	function types.
5136	* testsuite/30_threads/future/requirements/lwg3458.cc: New test.
5137	* testsuite/30_threads/promise/requirements/lwg3466.cc: New test.
5138	* testsuite/30_threads/shared_future/requirements/lwg3458.cc: New test.
5139
51402020-07-22  Jonathan Wakely  <jwakely@redhat.com>
5141
5142	* include/bits/stl_iterator.h (reverse_iterator): Constrain
5143	converting constructor and converting assignment operator.
5144	Access source iterator's data member directly instead of
5145	calling base().
5146	(move_iterator): Likewise.
5147	* testsuite/24_iterators/move_iterator/dr3435.cc: New test.
5148	* testsuite/24_iterators/reverse_iterator/dr3435.cc: New test.
5149
51502020-07-20  Jonathan Wakely  <jwakely@redhat.com>
5151
5152	* acinclude.m4 (libtool_VERSION): Bump version.
5153	* config.h.in: Regenerate.
5154	* config/abi/pre/gnu.ver: Add GLIBCXX_3.4.29 version and new
5155	exports.
5156	* config/os/gnu-linux/ldbl-extra.ver: Add _GLIBCXX_LDBL_3.4.29
5157	version and new export.
5158	* configure: Regenerate.
5159	* configure.ac: Check for <xlocale.h> and uselocale.
5160	* crossconfig.m4: Add macro or checks for uselocale.
5161	* include/std/charconv (from_chars): Declare overloads for
5162	float, double, and long double.
5163	* src/c++17/Makefile.am: Add new file.
5164	* src/c++17/Makefile.in: Regenerate.
5165	* src/c++17/floating_from_chars.cc: New file.
5166	(from_chars): Define for float, double, and long double.
5167	* testsuite/20_util/from_chars/1_c++20_neg.cc: Prune extra
5168	diagnostics caused by new overloads.
5169	* testsuite/20_util/from_chars/1_neg.cc: Likewise.
5170	* testsuite/20_util/from_chars/2.cc: Check leading '+'.
5171	* testsuite/20_util/from_chars/4.cc: New test.
5172	* testsuite/20_util/from_chars/5.cc: New test.
5173	* testsuite/util/testsuite_abi.cc: Add new symbol versions.
5174
51752020-07-20  Jonathan Wakely  <jwakely@redhat.com>
5176
5177	* include/bits/istream.tcc
5178	(basic_istream::get(__streambuf_type&, char_type): Use unsigned
5179	long long for counter and check if it would overflow _M_gcount.
5180	* testsuite/27_io/basic_istream/get/char/lwg3464.cc: New test.
5181	* testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: New test.
5182
51832020-07-17  Iain Sandoe  <iain@sandoe.co.uk>
5184
5185	* include/std/coroutine: Mark the methods of the
5186	trivial awaitables as constexpr.
5187
51882020-07-14  David Edelsohn  <dje.gcc@gmail.com>
5189
5190	* config/os/aix/t-aix: Set BITS from compiler cpp macro.
5191
51922020-07-13  Jonathan Wakely  <jwakely@redhat.com>
5193
5194	PR libstdc++/94749
5195	PR libstdc++/96161
5196	* include/bits/istream.tcc (basic_istream::ignore(streamsize))
5197	[n == max]: Check overflow conditions on _M_gcount. Rely on
5198	the fact that either EOF or the delimiter was reached.
5199	[n < max]: Check _M_gcount < n before checking for EOF or
5200	delimiter.
5201	(basic_istream::ignore(streamsize, char_type): Likewise.
5202	* src/c++98/compatibility.cc (istream::ignore(streamsize))
5203	(wistream::ignore(streamsize)): Likewise.
5204	* src/c++98/istream.cc (istream::ignore(streamsize, char_type))
5205	(wistream::ignore(streamsize, char_type)): Likewise.
5206	* testsuite/27_io/basic_istream/ignore/char/94749.cc: Check that
5207	delimiter is discarded if the number of characters ignored
5208	doesn't fit in streamsize.
5209	* testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
5210	Likewise.
5211	* testsuite/27_io/basic_istream/ignore/char/96161.cc: New test.
5212	* testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc: New test.
5213
52142020-07-08  François Dumont  <fdumont@gcc.gnu.org>
5215
5216	* include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
5217	qualification based only on _Compare one.
5218	* testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
5219	static asserts.
5220	* testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
5221	Likewise.
5222	* testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
5223	Likewise.
5224	* testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
5225
52262020-07-07  Jonathan Wakely  <jwakely@redhat.com>
5227
5228	* include/std/limits: Whitespace changes.
5229
52302020-07-07  Jonathan Wakely  <jwakely@redhat.com>
5231
5232	* include/Makefile.am: Remove bits/int_limits.h.
5233	* include/Makefile.in: Regenerate.
5234	* include/bits/int_limits.h: Removed.
5235	* include/bits/parse_numbers.h (_Select_int_base): Replace
5236	__int_limits with __int_traits.
5237	* include/bits/range_access.h (_SSize::operator()): Likewise.
5238	* include/ext/numeric_traits.h (__numeric_traits_integer): Add
5239	static assertion.
5240	(__int_traits): New alias template.
5241	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
5242	(__countr_zero, __countr_one, __popcount, __bit_ceil)
5243	(__bit_floor, __bit_width) Replace __int_limits with
5244	__int_traits.
5245	* include/std/charconv (__to_chars_8, __from_chars_binary)
5246	(__from_chars_alpha_to_num, from_chars): Likewise.
5247	* include/std/memory_resource (polymorphic_allocator::allocate)
5248	(polymorphic_allocator::allocate_object): Likewise.
5249	* include/std/string_view (basic_string_view::_S_compare):
5250	Likewise.
5251	* include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
5252
52532020-07-07  Jonathan Wakely  <jwakely@redhat.com>
5254
5255	* include/std/limits: Whitespace changes.
5256
52572020-07-06  Jonathan Wakely  <jwakely@redhat.com>
5258
5259	* include/std/optional (_Optional_payload_base, _Optional_base)
5260	(optional, __optional_hash_call_base): Adjust whitespace and
5261	other formatting. Remove redundant && tokens on template
5262	arguments to type traits.
5263
52642020-07-06  Jonathan Wakely  <jwakely@redhat.com>
5265
5266	* include/std/optional (make_optional): Add enable_if
5267	constraints and noexcept-specifier to each overload.
5268	* testsuite/20_util/optional/make_optional-2.cc: New test.
5269
52702020-07-06  Jonathan Wakely  <jwakely@redhat.com>
5271
5272	PR libstdc++/96036
5273	* include/std/optional (optional): Add noexcept-specifier to
5274	every constructor, assignment operator, emplace function and
5275	dereference operator.
5276	* testsuite/20_util/optional/assignment/noexcept.cc: New test.
5277	* testsuite/20_util/optional/cons/noexcept.cc: New test.
5278
52792020-07-06  Jonathan Wakely  <jwakely@redhat.com>
5280
5281	PR libstdc++/96063
5282	* include/bits/fs_dir.h: Use consistent tag in class-head.
5283	* include/bits/localefwd.h: Likewise.
5284	* include/bits/regex.h: Likewise.
5285	* include/bits/stl_map.h: Likewise.
5286	* include/bits/stl_multimap.h: Likewise.
5287	* include/bits/stl_multiset.h: Likewise.
5288	* include/bits/stl_set.h: Likewise.
5289	* include/std/complex: Likewise.
5290	* include/std/functional: Likewise.
5291	* include/std/future: Likewise.
5292	* include/std/system_error: Likewise.
5293	* include/std/thread: Likewise.
5294	* include/std/tuple: Likewise.
5295	* include/std/type_traits: Likewise.
5296	* include/std/valarray: Likewise.
5297
52982020-07-02  Jonathan Wakely  <jwakely@redhat.com>
5299
5300	* testsuite/27_io/basic_ios/conv/voidptr.cc: Add c++98_only
5301	target selector.
5302
53032020-07-02  Jonathan Wakely  <jwakely@redhat.com>
5304
5305	* testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: Add
5306	c++98_only target selector.
5307	* testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc:
5308	Likewise.
5309	* testsuite/18_support/headers/cstdint/std_c++0x_neg.cc:
5310	Likewise.
5311	* testsuite/18_support/headers/new/synopsis_cxx98.cc: Likewise.
5312	* testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc:
5313	Likewise.
5314	* testsuite/20_util/headers/type_traits/std_c++0x_neg.cc:
5315	Likewise.
5316	* testsuite/23_containers/headers/array/std_c++0x_neg.cc:
5317	Likewise.
5318	* testsuite/23_containers/headers/tuple/std_c++0x_neg.cc:
5319	Likewise.
5320	* testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
5321	Likewise.
5322	* testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
5323	Likewise.
5324	* testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc:
5325	Likewise.
5326	* testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc:
5327	Likewise.
5328	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc:
5329	Likewise.
5330	* testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc:
5331	Likewise.
5332	* testsuite/26_numerics/headers/random/std_c++0x_neg.cc:
5333	Likewise.
5334	* testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise.
5335	* testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise.
5336	* testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc:
5337	Likewise.
5338	* testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
5339	Likewise.
5340	* testsuite/30_threads/headers/future/std_c++0x_neg.cc:
5341	Likewise.
5342	* testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise.
5343	* testsuite/30_threads/headers/thread/std_c++0x_neg.cc:
5344	Likewise.
5345
53462020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
5347
5348	PR libstdc++/91807
5349	* include/std/variant
5350	(_Copy_assign_base::operator=(const _Copy_assign_base&):
5351	Do the move-assignment from a temporary so that the temporary
5352	is constructed with an explicit index.
5353	* testsuite/20_util/variant/91807.cc: New.
5354
53552020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
5356
5357	PR libstdc++/91153
5358	PR target/93224
5359	* testsuite/29_atomics/atomic_float/1.cc: Use different values
5360	for tests.
5361	* testsuite/29_atomics/atomic_ref/float.cc: Likewise.
5362
53632020-07-01  Jonathan Wakely  <jwakely@redhat.com>
5364
5365	PR libstdc++/94627
5366	* include/bits/regex.h (operator==, operator!=): Remove noexcept
5367	equality comparisons for match_results.
5368	* testsuite/28_regex/match_results/94627.cc: New test.
5369
53702020-07-01  Martin Sebor  <msebor@redhat.com>
5371
5372	* testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust
5373	text of expected warning.
5374	* testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same.
5375	* testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same.
5376	* testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same.
5377	* testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same.
5378
53792020-06-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
5380
5381	Revert:
5382	2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
5383
5384	* include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
5385	Add a __nonnull__ attribute.
5386	* testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
5387	* testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
5388
53892020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
5390
5391	* include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
5392	Add a __nonnull__ attribute.
5393	* testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
5394	* testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
5395
53962020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
5397
5398	PR libstdc++/95915
5399	* include/std/type_traits (is_literal_type, is_literal_type_v):
5400	Deprecate in C++17.
5401	* include/std/variant (_Uninitialized):
5402	Adjust the condition and the comment.
5403	* testsuite/20_util/is_literal_type/deprecated-1z.cc: New.
5404	* testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc:
5405	Adjust.
5406	* testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise.
5407	* testsuite/20_util/is_literal_type/value.cc: Likewise.
5408	* testsuite/20_util/optional/constexpr/nullopt.cc:
5409	Use __is_literal_type directly.
5410	* testsuite/20_util/optional/nullopt.cc: Likewise.
5411	* testsuite/20_util/variable_templates_for_traits.cc: Adjust.
5412	* testsuite/20_util/variant/95915.cc: New.
5413	* testsuite/20_util/variant/compile.cc: Add new test.
5414	* testsuite/experimental/optional/constexpr/nullopt.cc:
5415	Use __is_literal_type directly.
5416	* testsuite/experimental/optional/nullopt.cc: Likewise.
5417	* testsuite/experimental/type_traits/value.cc: Adjust.
5418	* testsuite/util/testsuite_common_types.h:
5419	Use __is_literal_type directly.
5420
54212020-06-24  Jonathan Wakely  <jwakely@redhat.com>
5422
5423	* include/std/charconv (__from_chars_binary): Ignore leading zeros.
5424	* testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
5425	not just 10 and 16.
5426	* testsuite/20_util/from_chars/3.cc: New test.
5427
54282020-06-24  Jonathan Wakely  <jwakely@redhat.com>
5429
5430	* include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
5431	* include/std/charconv (__detail::__to_chars): Avoid
5432	-Wsign-compare warning.
5433
54342020-06-24  Jonathan Wakely  <jwakely@redhat.com>
5435
5436	PR libstdc++/95851
5437	* include/std/charconv (__to_chars_i): Check for zero-sized
5438	buffer unconditionally.
5439	* testsuite/20_util/to_chars/95851.cc: New test.
5440
54412020-06-23  Jonathan Wakely  <jwakely@redhat.com>
5442
5443	* testsuite/20_util/from_chars/1_c++20_neg.cc: Check enumeration
5444	type.
5445	* testsuite/20_util/from_chars/1_neg.cc: Likewise. Move dg-error
5446	directives outside preprocessor condition.
5447
54482020-06-23  Jonathan Wakely  <jwakely@redhat.com>
5449
5450	PR libstdc++/95832
5451	* include/std/variant (__detail::__variant::_Build_FUN): Remove
5452	partial specialization to prevent narrowing conversions to bool.
5453	* testsuite/20_util/variant/compile.cc: Test non-narrowing
5454	conversions to bool.
5455	* testsuite/20_util/variant/run.cc: Likewise.
5456
54572020-06-23  Jonathan Wakely  <jwakely@redhat.com>
5458
5459	* doc/Makefile.in: Regenerate.
5460	* include/Makefile.in: Regenerate.
5461	* libsupc++/Makefile.in: Regenerate.
5462	* po/Makefile.in: Regenerate.
5463	* python/Makefile.in: Regenerate.
5464	* src/Makefile.in: Regenerate.
5465	* src/c++11/Makefile.in: Regenerate.
5466	* src/c++17/Makefile.in: Regenerate.
5467	* src/c++98/Makefile.in: Regenerate.
5468	* src/filesystem/Makefile.in: Regenerate.
5469	* testsuite/Makefile.in: Regenerate.
5470
54712020-06-22  David Edelsohn  <dje.gcc@gmail.com>
5472
5473	* Makefile.am: Use -include.
5474	* Makefile.in: Regenerate.
5475
54762020-06-21  David Edelsohn  <dje.gcc@gmail.com>
5477
5478	* Makefile.am (tmake_file): Build and install AIX-style FAT libraries.
5479	* Makefile.in: Regenerate.
5480	* configure.ac (tmake_file): Substitute.
5481	* configure: Regenerate.
5482	* configure.host (aix*): Define tmake_file.
5483	* config/os/aix/t-aix: New file.
5484
54852020-06-20  Jason Merrill  <jason@redhat.com>
5486
5487	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
5488	Remove greedy_ops tests.
5489	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
5490	Remove greedy_ops tests.
5491
54922020-06-19  Jonathan Wakely  <jwakely@redhat.com>
5493
5494	PR libstdc++/95765
5495	* include/bits/stl_algobase.h (__size_to_integer(float))
5496	(__size_to_integer(double), __size_to_integer(long double))
5497	(__size_to_integer(__float128)): Cast return type explicitly.
5498	* include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
5499	Remove unused typedef.
5500
55012020-06-19  Jonathan Wakely  <jwakely@redhat.com>
5502
5503	* include/bits/stl_pair.h (_Index_tuple): Remove redundant
5504	namespace qualification.
5505	(pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
5506	Likewise.
5507	* include/std/tuple (_Head_base, _Tuple_impl, tuple_size)
5508	(tuple_element, __get_helper, get, __make_tuple_impl)
5509	(__make_1st_indices, __tuple_concater)
5510	(pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
5511	Likewise.
5512	* include/std/utility (tuple_element, __is_tuple_like_impl)
5513	(tuple_size, __pair_get, get): Likewise.
5514
55152020-06-19  Jonathan Wakely  <jwakely@redhat.com>
5516
5517	* include/bits/std_function.h (function): Define all member
5518	functions inline.
5519
55202020-06-19  Marc Glisse  <marc.glisse@inria.fr>
5521
5522	* include/bits/stl_algo.h (__includes): Simplify the code.
5523
55242020-06-19  Marc Glisse  <marc.glisse@inria.fr>
5525
5526	* include/std/optional (optional()): Explicitly define it.
5527
55282020-06-17  Jonathan Wakely  <jwakely@redhat.com>
5529
5530	PR libstdc++/94540
5531	* include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
5532	Construct the first value at *__first instead of on the stack.
5533	(__uninitialized_default_n_1<true>): Likewise.
5534	Improve comments on several of the non-standard algorithms.
5535	* testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
5536	New test.
5537	* testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
5538	New test.
5539	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
5540	New test.
5541	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
5542	New test.
5543	* testsuite/23_containers/vector/cons/94540.cc: New test.
5544
55452020-06-17  Jonathan Wakely  <jwakely@redhat.com>
5546
5547	* testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
5548	Replace Value type with int so trivial code path is used.
5549	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
5550	Likewise.
5551
55522020-06-17  Jonathan Wakely  <jwakely@redhat.com>
5553
5554	* include/bits/stl_uninitialized.h (uninitialized_fill_n): Only
5555	use std::fill_n when the size is an integral type.
5556	(__uninitialized_default_n): Likewise.
5557	* testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
5558	New test.
5559	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
5560	New test.
5561	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
5562	New test.
5563
55642020-06-16  Jonathan Wakely  <jwakely@redhat.com>
5565
5566	PR libstdc++/95282
5567	* include/bits/atomic_base.h (__atomic_impl::load): Use the _Val
5568	alias instead of deducing _Tp as an unqualified type.
5569	(__atomic_impl::exchange): Use the _Val alias to remove volatile
5570	from the reinterpret_cast result type.
5571
55722020-06-16  Jonathan Wakely  <jwakely@redhat.com>
5573
5574	* include/std/atomic (atomic): Add static assertions.
5575	* testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
5576
55772020-06-16  Patrick Palka  <ppalka@redhat.com>
5578
5579	PR libstdc++/94003
5580	* testsuite/20_util/is_constructible/94003.cc: New test.
5581
55822020-06-15  Jonathan Wakely  <jwakely@redhat.com>
5583
5584	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
5585	Update value for C++20.
5586	* include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
5587	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
5588	Update expected value.
5589	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
5590	Likewise.
5591
55922020-06-15  Paul Keir  <paul.keir@uws.ac.uk>
5593
5594	* include/bits/char_traits.h (char_traits::move): constexpr move with
5595	overlap was using copy_backward incorrectly.
5596	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
5597	New test.
5598
55992020-06-12  Jonathan Wakely  <jwakely@redhat.com>
5600
5601	* testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear()
5602	when the value is currently set.
5603	* testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc:
5604	Actually check the return value.
5605	* testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc:
5606	Likewise.
5607
56082020-06-12  Jonathan Wakely  <jwakely@redhat.com>
5609
5610	* include/bits/atomic_base.h (atomic_flag::test): Add missing
5611	const qualifiers.
5612	* testsuite/29_atomics/atomic_flag/test/explicit.cc: Add
5613	dg-options and verify results of test function.
5614	* testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise.
5615
56162020-06-11  Jonathan Wakely  <jwakely@redhat.com>
5617
5618	PR libstdc++/94749
5619	* include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)):
5620	Only discard an extra character if we didn't already reach the
5621	maximum number.
5622	* src/c++98/istream.cc (istream::ignore(streamsiz, char))
5623	(wistream::ignore(streamsize, wchar_t)): Likewise.
5624	* testsuite/27_io/basic_istream/ignore/char/94749.cc: New test.
5625	* testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test.
5626
56272020-06-10  Patrick Palka  <ppalka@redhat.com>
5628
5629	PR libstdc++/95578
5630	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
5631	Also check that the iterator and sentinel have the same type before
5632	applying the unwrapping optimization for __normal_iterator.
5633	Split the check into two, one for the first iterator/sentinel
5634	pair and another for second iterator/sentinel pair.  Remove uses
5635	of __niter_base, and remove uses of std::move on a
5636	__normal_iterator.
5637	* include/bits/ranges_algobase.h (__equal_fn): Likewise.
5638	(__copy_or_move): Likewise.  Perform similar adjustments for
5639	the reverse_iterator and move_iterator optimizations.  Inline
5640	the checks into the if-constexprs, and use using-declarations to
5641	make them less visually noisy.  Remove uses of __niter_wrap.
5642	(__copy_or_move_backward): Likewise.
5643	* testsuite/25_algorithms/copy/95578.cc: New test.
5644	* testsuite/25_algorithms/copy_backward/95578.cc: New test.
5645	* testsuite/25_algorithms/equal/95578.cc: New test.
5646	* testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
5647	* testsuite/25_algorithms/move/95578.cc: New test.
5648	* testsuite/25_algorithms/move_backward/95578.cc: New test.
5649
56502020-06-10  François Dumont  <fdumont@gcc.gnu.org>
5651	    Jonathan Wakely  <jwakely@redhat.com>
5652
5653	* include/bits/deque.tcc (__lex_cmp_dit): New.
5654	(__lexicographical_compare_aux1): Define overloads for deque
5655	iterators.
5656	* include/bits/stl_algobase.h (__lexicographical_compare::__3way):
5657	New static member function.
5658	(__lexicographical_compare<true>::__3way): Likewise.
5659	(__lexicographical_compare<true>::__lc): Use __3way.
5660	(__lexicographical_compare_aux): Rename to
5661	__lexicographical_compare_aux1 and declare overloads for deque
5662	iterators.
5663	(__lexicographical_compare_aux): Define new forwarding function
5664	that calls __lexicographical_compare_aux1 and declare new overloads
5665	for safe iterators.
5666	(lexicographical_compare): Do not use __niter_base on
5667	parameters.
5668	* include/debug/safe_iterator.tcc
5669	(__lexicographical_compare_aux): Define overloads for safe
5670	iterators.
5671	* testsuite/25_algorithms/lexicographical_compare/1.cc: Add
5672	checks with random access iterators.
5673	* testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
5674	New test.
5675
56762020-06-09  Jonathan Wakely  <jwakely@redhat.com>
5677
5678	* include/bits/stl_iterator.h (move_iterator::operator=): Define.
5679	* testsuite/24_iterators/move_iterator/dr3265.cc: New test.
5680
56812020-06-09  Jonathan Wakely  <jwakely@redhat.com>
5682
5683	* include/std/optional (bad_optional_access): Define default
5684	constructor and destructor as defaulted.
5685	* testsuite/20_util/optional/bad_access.cc: New test.
5686
56872020-06-08  Jonathan Wakely  <jwakely@redhat.com>
5688
5689	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
5690	line number.
5691	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
5692
56932020-06-08  Jonathan Wakely  <jwakely@redhat.com>
5694
5695	* include/bits/unique_ptr.h (operator<<): Define for C++20.
5696	* testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
5697
56982020-06-04  Jonathan Wakely  <jwakely@redhat.com>
5699
5700	* include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
5701	(__detail::__cat, __detail::__diff): Move to class scope in the
5702	relevant __iterator_traits specializations.
5703	(__iterator_traits<>): Use nested class templates instead of ones from
5704	namespace __detail.
5705	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
5706	class scope in iterator_traits<common_iterator<I, S>>.
5707	(iterator_traits<common_iterator<I, S>>): Use nested class template
5708	instead of __detail::__common_iter_ptr.
5709
57102020-06-04  François Dumont  <fdumont@gcc.gnu.org>
5711
5712	* include/bits/stl_algo.h (__copy_n_a): Move to ...
5713	* include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
5714	parameter.
5715	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
5716	Declare.
5717	(__niter_base(const _Safe_iterator<_Ite, _Seq,
5718	random_access_iterator_tag>&)): Declare.
5719	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
5720	_Deque_iterator<>)): Declare.
5721	* include/bits/deque.tcc
5722	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
5723	_Deque_iterator<>)): New.
5724	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
5725	New.
5726	* include/bits/streambuf_iterator.h
5727	(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
5728	* include/debug/safe_iterator.tcc (__niter_base): New.
5729	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
5730	(test03): New.
5731	* testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
5732	New test.
5733	* testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
5734	New test.
5735	* testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
5736	* testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
5737	New test.
5738
57392020-06-04  Jonathan Wakely  <jwakely@redhat.com>
5740
5741	* include/bits/ranges_algobase.h (__copy_n_fn): Only call
5742	ranges::copy for positive values.
5743	* include/bits/stl_algo.h (copy_n): Convert Size argument to an
5744	integral type and only call __copy_n for positive values.
5745	* testsuite/util/testsuite_iterators.h
5746	(random_access_iterator_wrapper::operator+=): Fix range check for
5747	negative values.
5748	(output_container, input_container, forward_container)
5749	(bidirectional_container, random_access_container): New alias
5750	templates.
5751	* testsuite/25_algorithms/copy_n/5.cc: New test.
5752
57532020-06-02  Jonathan Wakely  <jwakely@redhat.com>
5754
5755	PR libstdc++/90102
5756	* include/debug/deque (deque(const _Base&)): Replace parameter
5757	with a struct that wraps a const _Base&.
5758	* include/debug/forward_list (forward_list(_Base_ref)): New
5759	constructor.
5760	* include/debug/list (list(const _Base&)): Replace parameter
5761	with a struct that wraps a const _Base&.
5762	* include/debug/map.h (map(const _Base&)): Likewise.
5763	* include/debug/multimap.h (multimap(const _Base&)): Likewise.
5764	* include/debug/multiset.h (multiset(const _Base&)): Likewise.
5765	* include/debug/set.h (set(const _Base&)): Likewise.
5766	* include/debug/unordered_map (unordered_map(const _Base&))
5767	(unordered_multimap(const _Base&)): Likewise.
5768	* include/debug/unordered_set (unordered_set(const _Base&))
5769	(unordered_multiset(const _Base&)): Likewise.
5770	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
5771	Adjust dg-error line number.
5772	* include/debug/vector (vector(const _Base&)): Likewise.
5773	* testsuite/23_containers/deque/debug/90102.cc: New test.
5774	* testsuite/23_containers/forward_list/debug/90102.cc: New test.
5775	* testsuite/23_containers/list/debug/90102.cc: New test.
5776	* testsuite/23_containers/map/debug/90102.cc: New test.
5777	* testsuite/23_containers/multimap/debug/90102.cc: New test.
5778	* testsuite/23_containers/multiset/debug/90102.cc: New test.
5779	* testsuite/23_containers/set/debug/90102.cc: New test.
5780	* testsuite/23_containers/unordered_map/debug/90102.cc: New test.
5781	* testsuite/23_containers/unordered_multimap/debug/90102.cc: New test.
5782	* testsuite/23_containers/unordered_multiset/debug/90102.cc: New test.
5783	* testsuite/23_containers/unordered_set/debug/90102.cc: New test.
5784	* testsuite/23_containers/vector/debug/90102.cc: New test.
5785
57862020-06-01  Jonathan Wakely  <jwakely@redhat.com>
5787
5788	PR libstdc++/95392
5789	* include/bits/fs_path.h (path::_S_to_string): Move to
5790	namespace-scope and rename to ...
5791	(__detail::__string_from_range): ... this.
5792	[WINDOWS] (__detail::__wstr_from_utf8): New function template to
5793	convert a char sequence containing UTF-8 to wstring.
5794	(path::_S_convert(Iter, Iter)): Adjust call to _S_to_string.
5795	(path::_S_convert_loc(Iter, Iter, const locale&)): Likewise.
5796	(u8path(InputIterator, InputIterator)) [WINDOWS]: Use
5797	__string_from_range to obtain a contiguous range and
5798	__wstr_from_utf8 to obtain a wide string.
5799	(u8path(const Source&)) [WINDOWS]: Use __effective_range to
5800	obtain a contiguous range and __wstr_from_utf8 to obtain a wide
5801	string.
5802	(path::_S_convert(const _EcharT*, const _EcharT)) [WINDOWS]:
5803	Use __wstr_from_utf8.
5804
58052020-06-01  Jonathan Wakely  <jwakely@redhat.com>
5806
5807	* testsuite/util/testsuite_iterators.h:
5808	(input_iterator_wrapper::operator++(int)): Return proxy object.
5809
58102020-06-01  Jonathan Wakely  <jwakely@redhat.com>
5811
5812	* doc/xml/manual/evolution.xml: Document deprecation of
5813	__is_nullptr_t and removal of std::allocator members.
5814	* doc/html/manual/api.html: Regenerate.
5815
58162020-06-01  Jonathan Wakely  <jwakely@redhat.com>
5817
5818	* doc/xml/manual/containers.xml: Replace <xref> with <link>.
5819	* doc/xml/manual/evolution.xml: Likewise.
5820	* doc/html/manual/api.html: Regenerate.
5821	* doc/html/manual/containers.html: Regenerate.
5822
58232020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
5824
5825	* doc/xml/faq.xml: Adjust Valgrind reference and remove another.
5826	* doc/html/faq.html: Regenerate.
5827
58282020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
5829
5830	* doc/xml/manual/policy_data_structures_biblio.xml: Remove
5831	stray change.
5832
58332020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
5834
5835	* doc/xml/manual/policy_data_structures_biblio.xml: Switch
5836	www.cs.princeton.edu to https.
5837	* doc/html/manual/policy_data_structures.html: Regenerate.
5838
58392020-05-31  Douglas B Rupp  <douglas.b.rupp@gmail.com>
5840
5841	* crossconfig.m4 (<*-vxworks>): Check for more math decls.
5842	* configure: Rebuild.
5843
58442020-05-29  H.J. Lu  <hjl.tools@gmail.com>
5845
5846	PR bootstrap/95413
5847	* configure: Regenerated.
5848
58492020-05-29  François Dumont  <fdumont@gcc.gnu.org>
5850
5851	PR libstdc++/95079
5852	* include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
5853	* include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
5854	(unordered_map<>::insert_or_assign): Adapt.
5855
58562020-05-27  Jonathan Wakely  <jwakely@redhat.com>
5857
5858	PR libstdc++/95282
5859	* include/bits/atomic_base.h (__atomic_impl::load): Add
5860	cv-qualifiers to parameter so that _Tp is deduced as the
5861	unqualified type.
5862	* testsuite/29_atomics/atomic_float/95282.cc: New test.
5863
58642020-05-27  Jonathan Wakely  <jwakely@redhat.com>
5865
5866	PR libstdc++/95322
5867	* include/std/ranges (transform_view::_Sentinel): Allow hidden
5868	friends to work with _Iterator<true> and _Iterator<false>.
5869	(join_view::_Sentinel): Likewise.
5870	* testsuite/std/ranges/adaptors/95322.cc: New test.
5871
58722020-05-27  Jonathan Wakely  <jwakely@redhat.com>
5873
5874	PR libstdc++/94354
5875	* include/bits/stl_iterator.h (reverse_iterator): Fix comparison
5876	operators to use the correct operations on the underlying
5877	iterators.
5878	* testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test.
5879
58802020-05-27  Jonathan Wakely  <jwakely@redhat.com>
5881
5882	* testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
5883
58842020-05-26  Patrick Palka  <ppalka@redhat.com>
5885
5886	PR libstdc++/95322
5887	* include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
5888	Remove and instead define it ...
5889	(common_iterator::_Proxy): ... here.
5890	(common_iterator::operator->): Use it.
5891	* testsuite/24_iterators/common_iterator/2.cc: New test.
5892	* testsuite/std/ranges/adaptors/95322.cc: New test.
5893
58942020-05-23  Patrick Palka  <ppalka@redhat.com>
5895
5896	PR libstdc++/93978
5897	* testsuite/std/ranges/adaptors/93978.cc: Add -Wall to
5898	dg-additional-options.  Avoid unused-but-set-variable warning.
5899
59002020-05-23  Jonathan Wakely  <jwakely@redhat.com>
5901
5902	PR libstdc++/95289
5903	* include/debug/helper_functions.h (__get_distance): Only declare
5904	as a constexpr function for C++14 and up.
5905	* testsuite/25_algorithms/copy/debug/95289.cc: New test.
5906
5907	* include/bits/fs_path.h (__detail::_S_range_begin)
5908	(__detail::_S_range_end, path::_S_string_from_iter): Replace with
5909	overloaded function template __detail::__effective_range.
5910	(__detail::__effective_range): New overloaded function template to
5911	create a basic_string or basic_string_view for an effective range.
5912	(__detail::__value_type_is_char): Use __detail::__effective_range.
5913	Do not use remove_const on value type.
5914	(__detail::__value_type_is_char_or_char8_t): Likewise.
5915	(path::path(const Source&, format))
5916	(path::path(const Source&, const locale&))
5917	(path::operator/=(const Source&), path::append(const Source&))
5918	(path::concat(const Source&)): Use __detail::__effective_range.
5919	(path::_S_to_string(InputIterator, InputIterator)): New function
5920	template to create a string view if possible, or string otherwise.
5921	(path::_S_convert): Add overloads that convert a string returned
5922	by __detail::__effective_range. Use if-constexpr to inline conversion
5923	logic from all overloads of _Cvt::_S_convert.
5924	(path::_S_convert_loc): Add overload that converts a string. Use
5925	_S_to_string to avoid allocation when possible.
5926	(path::_Cvt): Remove.
5927	(path::operator+=(CharT)): Remove indirection through path::concat.
5928	* include/experimental/bits/fs_path.h (path::_S_convert_loc): Add
5929	overload for non-const pointers, to avoid constructing a std::string.
5930	* src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional
5931	compilation with call to _S_convert.
5932
5933	* include/bits/fs_path.h (__detail::_S_range_begin)
5934	(__detail::_S_range_end): Remove unintentional static specifiers.
5935	* include/experimental/bits/fs_path.h (__detail::_S_range_begin)
5936	(__detail::_S_range_end): Likewise.
5937
5938	* include/bits/fs_path.h (filesystem::__detail::__is_encoded_char):
5939	Replace alias template with variable template. Don't remove const.
5940	(filesystem::__detail::__is_path_src): Replace overloaded function
5941	template with variable template and specializations.
5942	(filesystem::__detail::__is_path_iter_src): Replace alias template
5943	with class template.
5944	(filesystem::__detail::_Path): Use __is_path_src. Remove support for
5945	iterator pairs.
5946	(filesystem::__detail::_Path2): New alias template for checking
5947	InputIterator requirements.
5948	(filesystem::__detail::__constructible_from): Remove.
5949	(filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>.
5950	* testsuite/27_io/filesystem/path/construct/80762.cc: Check with two
5951	constructor arguments of void and void* types.
5952
59532020-05-21  Matthias Kretz  <kretz@kde.org>
5954
5955	* testsuite/Makefile.am: Remove dup target_triplet and set tool,
5956	allowing runtest to work without arguments.
5957	* testsuite/Makefile.in: Regenerate.
5958
59592020-05-21  Jonathan Wakely  <jwakely@redhat.com>
5960
5961	PR libstdc++/93983
5962	* include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
5963	Reorder constraints to avoid recursion when constructors use
5964	iterator_traits (LWG 3420).
5965	* testsuite/24_iterators/customization_points/lwg3420.cc: New test.
5966
5967	* include/experimental/socket (basic_socket::is_open()
5968	(basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
5969
5970	* include/experimental/bits/net.h (__endpoint, __protocol)
5971	(__acceptable_protocol, __inet_protocol): New concepts.
5972	(__detail::__is_endpoint): Move trait from <experimental/socket>.
5973	(__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
5974	traits.
5975	(__endpoint, __protocol, __acceptable_protocol): New variable
5976	templates.
5977	* include/experimental/socket (__is_endpoint): Move to net.h header.
5978	(basic_socket, basic_socket_acceptor): Check requirements.
5979
5980	* include/experimental/executor (use_future_t::use_future_t()): Fix
5981	incorrect noexcept-specifier.
5982	* include/experimental/internet (basic_resolver_results): Adjust
5983	whitespace.
5984	* include/experimental/socket (__basic_socket_impl::release): Add
5985	member function.
5986	(basic_socket(io_context&, const endpoint_type&)): Fix argument to
5987	target constructor.
5988	(basic_socket::release(), basic_socket::release(error_code&)): Add
5989	missing member functions.
5990	(basic_socket::is_open()): Add nodiscard attribute.
5991	(basic_socket::close(error_code&)): Pass argument to base function.
5992	(basic_socket_acceptor::release())
5993	(basic_socket_acceptor::release(error_code&)): Add missing member
5994	functions.
5995	(basic_socket_acceptor::is_open()): Add nodiscard attribute.
5996	(basic_socket_streambuf::error()): Add noexcept.
5997	(basic_socket_iostream::error()): Likewise.
5998	* testsuite/experimental/net/socket/basic_socket.cc: New test.
5999
6000	* include/experimental/buffer: Replace typedefs with
6001	alias-declarations.
6002	* include/experimental/executor: Likewise.
6003	* include/experimental/internet: Likewise.
6004	* include/experimental/socket: Likewise.
6005	* include/experimental/timer: Likewise.
6006
60072020-05-19  Jonathan Wakely  <jwakely@redhat.com>
6008
6009	PR libstdc++/94087
6010	* src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
6011	passed in.
6012	(__x86_rdseed_rdrand): New function that uses rdseed with rdrand
6013	fallback.
6014	(random_device::_M_init): Use __x86_rdseed_rdrand when both
6015	instructions are available.
6016	* testsuite/26_numerics/random/random_device/94087.cc: New test.
6017
60182020-05-19  Patrick Palka  <ppalka@redhat.com>
6019
6020	PR c++/66439
6021	* testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
6022	mismatch" messages.
6023	* testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
6024
60252020-05-15  H.J. Lu  <hongjiu.lu@intel.com>
6026
6027	PR bootstrap/95147
6028	* configure: Regenerated.
6029
60302020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
6031
6032	* configure: Regenerated.
6033
60342020-05-13  Alexandre Oliva <oliva@adacore.com>
6035
6036	PR libstdc++/77691
6037	* include/experimental/memory_resource
6038	(__resource_adaptor_imp::do_allocate): Handle max_align_t on
6039	x86-vxworks as on x86-solaris.
6040	(__resource_adaptor_imp::do_deallocate): Likewise.
6041	* testsuite/experimental/memory_resource/new_delete_resource.cc:
6042	Drop xfail.
6043	(BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
6044	(test03): Drop max-align test for char-aligned alloc.
6045
60462020-05-08  Ulrich Drepper  <drepper@redhat.com>
6047
6048	* include/bits/atomic_base.h (atomic_flag): Implement test member
6049	function.
6050	* include/std/version: Define __cpp_lib_atomic_flag_test.
6051	* testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
6052	* testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
6053
60542020-05-07  Jonathan Wakely  <jwakely@redhat.com>
6055
6056	PR libstdc++/94971 (partial)
6057	* include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
6058	std::sample using macro to work in parallel mode.
6059	(__sort_fn): Likewise for std::sort.
6060	(ranges::__nth_element_fn): Likewise for std::nth_element.
6061	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
6062	Likewise for std::__min_cmp.
6063	* include/parallel/algobase.h (lexicographical_compare_three_way):
6064	Add to namespace std::__parallel.
6065
6066	PR c/92472
6067	* include/parallel/multiway_merge.h (_GuardedIterator::operator*)
6068	(_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
6069	(_UnguardedIterator::operator _RAIter): Add const qualifier.
6070	(operator<(_GuardedIterator&, _GuardedIterator&)
6071	(operator<=(_GuardedIterator&, _GuardedIterator&)
6072	(operator<(_UnguardedIterator&, _UnguardedIterator&)
6073	(operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
6074	parameters to const references.
6075
60762020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
6077
6078	* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
6079	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
6080
60812020-05-06  François Dumont  <fdumont@gcc.gnu.org>
6082
6083	* include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
6084	(std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
6085	* include/bits/stl_bvector.h (__fill_bvector): Move outside
6086	_GLIBCXX_STD_C namespace.
6087	(fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
6088	into...
6089	(__fill_a1): ...this.
6090	* testsuite/25_algorithms/fill/bvector/1.cc: New.
6091
60922020-05-06  H.J. Lu  <hongjiu.lu@intel.com>
6093
6094	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
6095
60962020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6097
6098	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
6099	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
6100	Likewise.
6101	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
6102	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
6103	Likewise.
6104
61052020-05-06  Martin Liska  <mliska@suse.cz>
6106
6107	Revert:
6108	2020-05-05  Martin Liska  <mliska@suse.cz>
6109	PR c/92472
6110	* include/parallel/multiway_merge.h:
6111	Use const for _Compare template argument.
6112
61132020-05-06  Jonathan Wakely  <jwakely@redhat.com>
6114
6115	* doc/xml/manual/abi.xml (abi.versioning.history): Document library
6116	versions for GCC 9.[123] and 10.1 releases.
6117	* doc/html/*: Regenerate.
6118
61192020-05-06  Jakub Jelinek  <jakub@redhat.com>
6120
6121	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
6122	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
6123	* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
6124	* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
6125	* config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
6126	* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
6127	* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
6128
61292020-05-05  Martin Liska  <mliska@suse.cz>
6130
6131	PR c/92472
6132	* include/parallel/multiway_merge.h:
6133	Use const for _Compare template argument.
6134
61352020-05-04  Fangrui Song  <maskray@google.com>
6136
6137	* libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
6138
61392020-05-04  Jonathan Wakely  <jwakely@redhat.com>
6140
6141	* doc/xml/faq.xml: Use working link for SGI STL FAQ.
6142	* doc/html/*: Regenerate.
6143
6144	PR libstdc++/94906
6145	* src/c++17/memory_resource.cc
6146	(monotonic_buffer_resource::_Chunk::release): Use size_t for shift
6147	operands.
6148
61492020-05-04  Nathan Sidwell  <nathan@acm.org>
6150
6151	PR libstdc++/94747
6152	* libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
6153	ptrdiff_t before negation, to show intent more clearly.
6154
61552020-05-04  Jonathan Wakely  <jwakely@redhat.com>
6156
6157	PR libstdc++/94936
6158	* src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
6159	Add comment about single-threaded behaviour.
6160	(synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
6161	class member access out of loop.
6162	(synchronized_pool_resource::synchronized_pool_resource())
6163	(synchronized_pool_resource::~synchronized_pool_resource())
6164	(synchronized_pool_resource::release()): Check __gthread_active_p
6165	before creating and/or deleting the thread-specific data key.
6166	(synchronized_pool_resource::_M_thread_specific_pools()): Adjust
6167	assertions.
6168	(synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
6169	path for single-threaded case.
6170	(synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
6171	Likewise. Return if unable to find a pool that owns the allocation.
6172	* testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
6173	New test.
6174	* testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
6175	test.
6176	* testsuite/20_util/synchronized_pool_resource/release_single.cc: New
6177	test.
6178
61792020-05-03  Jonathan Wakely  <jwakely@redhat.com>
6180
6181	PR libstdc++/94933
6182	* include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
6183	usable in constant expressions.
6184	* testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
6185	non-scalars.
6186
61872020-05-01  Jonathan Wakely  <jwakely@redhat.com>
6188
6189	PR libstdc++/94901
6190	* testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
6191
61922020-05-01  Jonathan Wakely  <jwakely@redhat.com>
6193	    Patrick Palka  <ppalka@redhat.com>
6194
6195	PR libstdc++/92894
6196	* include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
6197	Add trait to determine return type and an alias for it.
6198	(ranges::__cust_imove::_IMove::operator()): Use __result instead of
6199	deduced return type.
6200	(iter_rvalue_reference_t): Use _IMove::__type instead of checking
6201	the result of ranges::iter_move.
6202	(__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
6203	instead of checking the result of ranges::iter_move.
6204	* testsuite/24_iterators/customization_points/92894.cc: New test.
6205	* testsuite/24_iterators/indirect_callable/92894.cc: New test.
6206
62072020-05-01  Jonathan Wakely  <jwakely@redhat.com>
6208
6209	PR libstdc++/94901
6210	* include/std/type_traits (__is_complete_or_unbounded): Replace
6211	BADNAME _T with _Tp.
6212	* testsuite/17_intro/badnames.cc: New test.
6213
62142020-04-30  Jonathan Wakely  <jwakely@redhat.com>
6215
6216	PR libstdc++/89510
6217	* include/bits/alloc_traits.h (allocator_traits::_S_construct)
6218	(allocator_traits::_S_destroy)
6219	(allocator_traits<allocator<T>>::construct): Use traits in
6220	noexcept-specifiers.
6221	* include/bits/allocator.h (allocator<void>::construct)
6222	(allocator<void>::destroy): Likewise.
6223	* include/ext/malloc_allocator.h (malloc_allocator::construct)
6224	(malloc_allocator::destroy): Likewise.
6225	* include/ext/new_allocator.h (new_allocator::construct)
6226	(new_allocator::destroy): Likewise.
6227	* testsuite/20_util/allocator/89510.cc: New test.
6228	* testsuite/ext/malloc_allocator/89510.cc: New test.
6229	* testsuite/ext/new_allocator/89510.cc: New test.
6230
62312020-04-29  Jonathan Wakely  <jwakely@redhat.com>
6232
6233	PR libstdc++/94854
6234	* include/bits/basic_string.tcc: Update comment about explicit
6235	instantiations.
6236
62372020-04-28  Jonathan Wakely  <jwakely@redhat.com>
6238
6239	PR libstdc++/91480
6240	* include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
6241	Remove non-standard macro.
6242	* include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
6243	to indicate P1032R1 support.
6244	* include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
6245	* include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
6246	* include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
6247	* include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
6248	(__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
6249	(__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
6250	* testsuite/20_util/function_objects/constexpr_searcher.cc: Check
6251	feature test macro.
6252	* testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
6253	* testsuite/21_strings/basic_string_view/operations/copy/char/
6254	constexpr.cc: Likewise.
6255	* testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
6256
6257	PR libstdc++/94831
6258	* include/bits/alloc_traits.h (_S_construct): Restore placement
6259	new-expression for C++11/14/17 and call std::construct_at directly
6260	for C++20.
6261	* include/bits/stl_construct.h (_Construct): Revert to non-constexpr
6262	function returning void.
6263	* testsuite/20_util/specialized_algorithms/
6264	uninitialized_value_construct/94831.cc: New test.
6265	* testsuite/23_containers/vector/cons/94831.cc: New test.
6266
62672020-04-28  Patrick Palka  <ppalka@redhat.com>
6268
6269	LWG 3433 subrange::advance(n) has UB when n < 0
6270	* include/std/ranges (subrange::prev): Fix typo.
6271	(subrange::advance): Handle a negative argument as per the proposed
6272	resolution of LWG 3433.
6273	* testsuite/std/ranges/subrange/lwg3433.cc: New test.
6274
62752020-04-28  Jonathan Wakely  <jwakely@redhat.com>
6276	    Iain Sandoe  <iain@sandoe.co.uk>
6277
6278	PR c++/94759
6279	* include/std/coroutine: Implement handing for non-
6280	class coroutine return types.
6281
62822020-04-24  Jonathan Wakely  <jwakely@redhat.com>
6283
6284	* include/experimental/executor (service_already_exists): Make default
6285	constructor public (LWG 3414).
6286	* testsuite/experimental/net/execution_context/make_service.cc: Check
6287	the service_already_exists can be default constructed.
6288
62892020-04-24  Kamlesh Kumar  <kamleshbhalui@gmail.com>
6290	    Jonathan Wakely  <jwakely@redhat.com>
6291
6292	PR libstdc++/90415
6293	PR libstdc++/92156
6294	* include/std/any (any): Rename template parameters for consistency
6295	with the standard.
6296	(any::_Decay): Rename to _Decay_if_not_any.
6297	(any::any(T&&):: Remove is_constructible from constraints. Remove
6298	non-standard overload.
6299	(any::any(in_place_type_t<T>, Args&&...))
6300	(any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
6301	(any::emplace(Args&&...))
6302	(any::emplace(initializer_list<U>, Args&&...)):
6303	Use decay_t instead of _Decay.
6304	* testsuite/20_util/any/cons/90415.cc: New test.
6305	* testsuite/20_util/any/cons/92156.cc: New Test.
6306	* testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
6307	more robust.
6308	* testsuite/20_util/any/modifiers/92156.cc: New test.
6309
63102020-04-23  Jonathan Wakely  <jwakely@redhat.com>
6311
6312	* doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
6313	* doc/html/*: Regenerate.
6314
6315	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
6316	value for C++17 to 201803L because P0858R0 is supported for C++17.
6317	* include/std/version (__cpp_lib_array_constexpr): Likewise.
6318	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
6319	Check for value corresponding to P0031R0 features being tested.
6320	* testsuite/23_containers/array/requirements/constexpr_iter.cc:
6321	Check for value corresponding to P0858R0 features being tested.
6322
6323	* include/std/version (__cpp_lib_three_way_comparison): Define for
6324	freestanding builds.
6325
63262020-04-23  Thomas Rodgers  <rodgert@appliantology.com>
6327
6328	* include/experimental/net/executor (system_context): Mark
6329	system_context::system_context() = delete.
6330	* testsuite/experimental/net/executor/1.cc: Add new
6331	test to check system_context is not default constructible.
6332
63332020-04-23  Iain Sandoe  <iain@sandoe.co.uk>
6334
6335	* include/std/coroutine: Update the inline namespace to __n4861.
6336	Add the __cpp_lib_coroutine define, set to 201902L.
6337	* include/std/version: Add __cpp_lib_coroutine, set to 201902L.
6338
63392020-04-22  Jonathan Wakely  <jwakely@redhat.com>
6340
6341	* include/std/execution (__cpp_lib_execution): Define to indicate
6342	support for P0024R2 and P1001R2.
6343	* include/std/version (__cpp_lib_execution): Define.
6344	* testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
6345	defined by <algorithm>, move other tests to new tests ...
6346	* testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
6347	* testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
6348	* testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
6349	* testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
6350
6351	* include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
6352	different values for C++17 and C++20, to indicate different feature
6353	sets. Update value for C++20 to indicate P1032R1 support.
6354	* include/std/version (__cpp_lib_array_constexpr): Likewise.
6355	* testsuite/23_containers/array/comparison_operators/constexpr.cc:
6356	Check feature test macro.
6357	* testsuite/23_containers/array/element_access/constexpr_c++17.cc:
6358	New test.
6359	* testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
6360	feature test macro.
6361	* testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
6362	in C++17 mode and check feature test macro.
6363
6364	* include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
6365	here.
6366	* testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
6367	defined by <utility>.
6368
6369	* include/std/functional (__cpp_lib_concepts): Update macro value to
6370	indicate P1964R2 support.
6371	* include/std/version (__cpp_lib_concepts): Likewise.
6372	* testsuite/std/concepts/1.cc: Adjust expected value.
6373	* testsuite/std/concepts/2.cc: Likewise.
6374
6375	* include/std/functional (__cpp_lib_constexpr_invoke): Rename to
6376	__cpp_lib_constexpr_functional.
6377	* include/std/version (__cpp_lib_constexpr_invoke): Likewise.
6378	* testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
6379
6380	* include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
6381	indicate P1006R1 support.
6382	(__cpp_lib_to_address): Define to indicate P0653R2 support.
6383	* include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
6384	P1227R2 support.
6385	* include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
6386	P0769R2 support.
6387	* include/std/atomic (__cpp_lib_atomic_float): Define to indicate
6388	P0020R6 support.
6389	* include/std/memory (__cpp_lib_assume_aligned): Define to indicate
6390	P1007R3 support.
6391	* include/std/memory_resource (__cpp_lib_polymorphic_allocator):
6392	Define to indicate P0339R6 support.
6393	* include/std/string_view (__cpp_lib_starts_ends_with): Define to
6394	indicate P0457R2 support.
6395	* include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
6396	to indicate P0758R1 support.
6397	(__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
6398	(__cpp_lib_type_identity): Define to indicate P0887R1 support.
6399	* include/std/version (__cpp_lib_atomic_float)
6400	(__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
6401	(__cpp_lib_type_identity, __cpp_lib_assume_aligned)
6402	(__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
6403	(__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
6404	(__cpp_lib_to_address): Define.
6405	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
6406
6407	* include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
6408	macro.
6409	* include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
6410	Likewise.
6411	* include/std/version (__cpp_lib_map_insertion)
6412	(__cpp_lib_unordered_map_insertion): Remove.
6413
6414	* include/std/condition_variable (__cpp_lib_jthread): Remove
6415	redundant definition.
6416	* include/std/stop_token (__cpp_lib_jthread): Update macro value to
6417	indicate P1869R1 support.
6418	* include/std/version (__cpp_lib_jthread): Update value.
6419	* testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
6420	for updated macro value.
6421	* testsuite/30_threads/condition_variable_any/stop_token/2.cc:
6422	Likewise.
6423	* testsuite/30_threads/jthread/1.cc: Likewise.
6424	* testsuite/30_threads/jthread/2.cc: Likewise.
6425	* testsuite/30_threads/stop_token/1.cc: Likewise.
6426	* testsuite/30_threads/stop_token/2.cc: Likewise.
6427
6428	* testsuite/21_strings/basic_string/erasure.cc: Check for
6429	__cpp_lib_erase_if macro.
6430	* testsuite/23_containers/deque/erasure.cc: Add header name to #error
6431	messages.
6432	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
6433	* testsuite/23_containers/list/erasure.cc: Likewise.
6434	* testsuite/23_containers/map/erasure.cc: Likewise.
6435	* testsuite/23_containers/set/erasure.cc: Likewise.
6436	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
6437	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
6438	* testsuite/23_containers/vector/erasure.cc: Likewise.
6439
64402020-04-21  Jonathan Wakely  <jwakely@redhat.com>
6441
6442	* include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
6443	to define operator<=>.
6444	* testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
6445
6446	* doc/Makefile.am (xml_sources_manual): Add missing XML files.
6447	* doc/Makefile.in: Regenerate.
6448	* doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
6449	of "this page".
6450	* doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
6451	to the C++11 status table.
6452	* doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
6453	proposals with table matching contents of the C++14 standard.
6454	* doc/xml/manual/status_cxx2017.xml: Add table matching contents of
6455	the C++17 standard.
6456	* doc/html/*: Regenerate.
6457
6458	PR c++/94149
6459	* include/std/type_traits (__is_nt_constructible_impl): Add partial
6460	specializations for bounded arrays with non-empty initializers.
6461	* testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
6462
64632020-04-20  Thomas Rodgers  <trodgers@redhat.com>
6464
6465	* testsuite/lib/libstdc++.exp: Add additional_flags=
6466	-DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
6467	compiling with a newer Thread Building Blocks.
6468
64692020-04-20  Jonathan Wakely  <jwakely@redhat.com>
6470
6471	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
6472
6473	* testsuite/20_util/is_constructible/51185.cc: Make test class a
6474	non-aggregate so that the test verifies the same thing in all -std
6475	modes.
6476	* testsuite/20_util/is_constructible/value-2.cc: Adjust expected
6477	results for some types when paren-init for aggregates is supported.
6478
6479	* include/std/version (__cpp_lib_three_way_comparison): Update value.
6480	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
6481	(__detail::__synth3way): Add noexcept-specifier.
6482
6483	* include/bits/stl_map.h (map): Define operator<=> and remove
6484	operator< for C++20.
6485	* include/bits/stl_multimap.h (multimap): Likewise.
6486	* include/bits/stl_multiset.h (multiset): Likewise.
6487	* include/bits/stl_set.h (set): Likewise.
6488	* include/bits/stl_tree.h (_Rb_tree): Likewise.
6489	(_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
6490	operator!= for C++20.
6491	* include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
6492	* include/debug/multimap.h (__gnu_debug::multimap): Likewise.
6493	* include/debug/multiset.h (__gnu_debug::multiset): Likewise.
6494	* include/debug/set.h (__gnu_debug::set): Likewise.
6495	* testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
6496	* testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
6497	* testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
6498	* testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
6499
65002020-04-20  Matthias Kretz  <kretz@kde.org>
6501
6502	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
6503
65042020-04-19  Jonathan Wakely  <jwakely@redhat.com>
6505
6506	* include/bits/stl_queue.h (queue): Define operator<=> for C++20.
6507	* include/bits/stl_stack.h (stack): Likewise.
6508	* testsuite/23_containers/queue/cmp_c++20.cc: New test.
6509	* testsuite/23_containers/stack/cmp_c++20.cc: New test.
6510
6511	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
6512	Remove redundant operator!= for C++20.
6513	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
6514	Likewise.
6515	* include/debug/unordered_map (unordered_map, unordered_multimap):
6516	Likewise.
6517	* include/debug/unordered_set (unordered_set, unordered_multiset):
6518	Likewise.
6519
6520	PR other/94629
6521	* include/debug/formatter.h (_Error_formatter::_Parameter): Fix
6522	redundant assignment in constructor.
6523
65242020-04-18  Jonathan Wakely  <jwakely@redhat.com>
6525
6526	* include/std/chrono (duration, time_point): Define operator<=> and
6527	remove redundant operator!= for C++20.
6528	* testsuite/20_util/duration/comparison_operators/three_way.cc: New
6529	test.
6530	* testsuite/20_util/time_point/comparison_operators/three_way.cc: New
6531	test.
6532
6533	* testsuite/util/native_type/native_priority_queue.hpp: Use
6534	allocator_traits to rebind allocator.
6535
65362020-04-17  Jonathan Wakely  <jwakely@redhat.com>
6537
6538	* include/bits/forward_list.h (forward_list): Define operator<=> and
6539	remove redundant comparison operators for C++20.
6540	* include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
6541	* include/bits/stl_deque.h (deque): Likewise.
6542	* include/bits/stl_iterator.h (__normal_iterator): Likewise.
6543	* include/bits/stl_list.h (list): Likewise.
6544	* include/bits/stl_vector.h (vector): Likewise.
6545	* include/debug/deque (__gnu_debug::deque): Likewise.
6546	* include/debug/forward_list (__gnu_debug::forward_list): Likewise.
6547	* include/debug/list (__gnu_debug::list): Likewise.
6548	* include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
6549	Likewise.
6550	* include/debug/vector (__gnu_debug::vector): Likewise.
6551	* include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
6552	operator<=> for C++20.
6553	* testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
6554	* testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
6555	* testsuite/23_containers/list/cmp_c++20.cc: New test.
6556	* testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
6557	* testsuite/23_containers/vector/cmp_c++20.cc: New test.
6558
6559	* include/bits/basic_string.h (basic_string): Define operator<=> and
6560	remove redundant comparison operators for C++20.
6561	* include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
6562	Add comparison_category members.
6563	(__detail::__char_traits_cmp_cat): New helper to get comparison
6564	category from char traits class.
6565	* include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
6566	define for C++20.
6567	(sub_match): Define operator<=> and remove redundant comparison
6568	operators for C++20.
6569	(match_results): Remove redundant operator!= for C++20.
6570	* include/std/string_view (basic_string_view): Define operator<=> and
6571	remove redundant comparison operators for C++20.
6572	* testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
6573	test.
6574	* testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
6575	New test.
6576	* testsuite/21_strings/basic_string_view/operations/copy/char/
6577	constexpr.cc: Initialize variable.
6578	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
6579	constexpr.cc: Likewise.
6580	* testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
6581	dg-do directive and remove comments showing incorrect signatures.
6582	* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
6583	Likewise.
6584	* testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
6585	New test.
6586	* testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
6587	New test.
6588	* testsuite/28_regex/sub_match/compare_c++20.cc: New test.
6589
65902020-04-16  Jonathan Wakely  <jwakely@redhat.com>
6591
6592	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
6593	name of unused parameter.
6594
65952020-04-15  Jonathan Wakely  <jwakely@redhat.com>
6596
6597	* include/bits/fs_dir.h (file_status): Define operator== for C++20.
6598	(directory_entry): Define operator<=> and remove redundant comparison
6599	operators for C++20.
6600	* include/bits/fs_fwd.h (space_info): Define operator== for C++20.
6601	* include/bits/fs_path.h (path): Define operator<=> and remove
6602	redundant comparison operators for C++20.
6603	* testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
6604	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
6605	* testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
6606	* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
6607
6608	* include/bits/allocator.h (operator!=): Do not define for C++20.
6609	* include/bits/locale_classes.h (operator!=): Likewise.
6610	* include/bits/std_function.h (operator==(nullptr_t, const function&))
6611	(operator!=(const function&, nullptr_t))
6612	(operator!=(nullptr_t, const function&)): Likewise.
6613	* include/ext/bitmap_allocator.h (operator!=): Likewise.
6614	* include/ext/debug_allocator.h (operator!=): Likewise.
6615	* include/ext/extptr_allocator.h (operator!=): Likewise.
6616	* include/ext/malloc_allocator.h (operator!=): Likewise.
6617	* include/ext/mt_allocator.h (operator!=): Likewise.
6618	* include/ext/new_allocator.h (operator!=): Likewise.
6619	* include/ext/pool_allocator.h (operator!=): Likewise.
6620	* include/ext/throw_allocator.h (operator!=): Likewise.
6621	* include/std/bitset (bitset::operator!=): Likewise.
6622	* include/std/memory_resource (operator!=): Likewise.
6623	* include/std/scoped_allocator (operator!=): Likewise.
6624
6625	* include/std/typeindex (operator<=>): Define for C++20.
6626	* testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
6627
66282020-04-14  Jonathan Wakely  <jwakely@redhat.com>
6629
6630	* libsupc++/compare (compare_three_way): Fix constraint so that
6631	BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
6632	* testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
6633	New test.
6634
6635	PR libstdc++/94562
6636	* include/bits/shared_ptr.h (operator<=>): Define for C++20.
6637	* include/bits/shared_ptr_base.h (operator<=>): Likewise.
6638	* include/bits/unique_ptr.h (operator<=>): Add inline specifier.
6639	* testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
6640	* testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
6641	std::less<A*> to be used when comparing std::shared_ptr<A> objects in
6642	C++20.
6643
6644	PR libstdc++/94565
6645	* libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
6646	* testsuite/18_support/comparisons/categories/94565.cc: New test.
6647
66482020-04-13  Iain Sandoe  <iain@sandoe.co.uk>
6649
6650	* include/std/coroutine: Update coroutines builtin define,
6651	per n4861.
6652
66532020-04-09  Jonathan Wakely  <jwakely@redhat.com>
6654
6655	* libsupc++/compare (compare_three_way): Fix noexcept-specifier.
6656	(strong_order, weak_order, partial_order): Replace uses of <=> with
6657	compare_three_way function object (LWG 3324).
6658	* testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
6659	equality operator so that X satisfies three_way_comparable.
6660	* testsuite/18_support/comparisons/algorithms/strong_order.cc:
6661	Likewise.
6662	* testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
6663
6664	* include/bits/unique_ptr.h (operator<=>): Define for C++20.
6665	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
6666	* testsuite/20_util/default_delete/void_neg.cc: Likewise.
6667	* testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
6668	* testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
6669
66702020-04-08  Jonathan Wakely  <jwakely@redhat.com>
6671
6672	* include/bits/slice_array.h (operator==(const slice&, const slice&)):
6673	Define for C++20.
6674	* include/std/complex (operator==(const T&, const complex<T>&))
6675	(operator!=(const complex<T>&, const complex<T>&))
6676	(operator!=(const complex<T>&, const T&))
6677	(operator!=(const T&, const complex<T>&)): Do not declare for C++20.
6678	* testsuite/26_numerics/slice/compare.cc: New test.
6679
6680	* include/std/charconv (to_chars_result, from_chars_result): Add
6681	defaulted equality comparisons for C++20.
6682	* testsuite/20_util/from_chars/compare.cc: New test.
6683	* testsuite/20_util/to_chars/compare.cc: New test.
6684
66852020-04-07  Jonathan Wakely  <jwakely@redhat.com>
6686
6687	PR libstdc++/94520
6688	* include/std/charconv (__integer_to_chars_result_type)
6689	(__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
6690	allow use in C++14.
6691	* testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
6692	use of std::string_view with std::string.
6693	* testsuite/20_util/from_chars/2.cc: Likewise.
6694	* testsuite/20_util/to_chars/1.cc: Likewise.
6695	* testsuite/20_util/to_chars/2.cc: Likewise.
6696
66972020-04-06  Jonathan Wakely  <jwakely@redhat.com>
6698
6699	PR libstdc++/94498
6700	* include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
6701	usable in constant expressions for C++20.
6702	(__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
6703	_GLIBCXX20_CONSTEXPR.
6704	(std::char_traits<char>, std::char_traits<wchar_t>)
6705	(std::char_traits<char8_t>): Make move, copy and assign usable in
6706	constant expressions for C++20.
6707	(std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
6708	and copy usable in constant expressions for C++20.
6709	* include/std/string_view (basic_string_view::copy): Add
6710	_GLIBCXX20_CONSTEXPR.
6711	* testsuite/21_strings/basic_string_view/operations/copy/char/
6712	constexpr.cc: New test.
6713	* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
6714	constexpr.cc: New test.
6715
67162020-04-05  Gerald Pfeifer  <gerald@pfeifer.com>
6717
6718	* doc/xml/manual/appendix_contributing.xml: Refer to Git
6719	documentation instead of Subversion.  Switch to https.
6720	* doc/html/manual/appendix_contributing.html: Regenerate.
6721
67222020-04-03  Jonathan Wakely  <jwakely@redhat.com>
6723
6724	PR libstdc++/93960
6725	* include/bits/ptr_traits.h (__to_address): Add special case for debug
6726	iterators, to avoid dereferenceable check.
6727	* testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
6728	* testsuite/20_util/to_address/debug.cc: New test.
6729
67302020-04-01  Andrea Corallo  <andrea.corallo@arm.com>
6731
6732	* testsuite/experimental/net/execution_context/use_service.cc:
6733	Require pthread and gthreads.
6734
67352020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>
6736
6737	* doc/xml/manual/appendix_free.xml: Move "free books" list from
6738	fsf.org to gnu.org.
6739	* doc/html/manual/appendix_free.html: Regenerate.
6740
67412020-03-31  Ville Voutilainen  <ville.voutilainen@gmail.com>
6742
6743	Library-side tests for parenthesized aggregate init
6744
6745	PR c++/92878
6746	PR c++/92947
6747
6748	* testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
6749	* testsuite/20_util/any/assign/92878_92947.cc: Likewise.
6750	* testsuite/20_util/any/cons/92878_92947.cc: Likewise.
6751	* testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
6752	* testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
6753	* testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
6754	* testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
6755	* testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
6756	* testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
6757	Likewise.
6758	* testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
6759	* testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
6760	* testsuite/20_util/variant/92878_92947.cc: Likewise.
6761	* testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
6762	Likewise.
6763	* testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
6764	Likewise.
6765	* testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
6766	Likewise.
6767	* testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
6768	Likewise.
6769	* testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
6770	Likewise.
6771	* testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
6772	Likewise.
6773	* testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
6774	* testsuite/23_containers/queue/92878_92947.cc: Likewise.
6775	* testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
6776	Likewise.
6777	* testsuite/23_containers/stack/92878_92947.cc: Likewise.
6778	* testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
6779	Likewise.
6780	* testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
6781	Likewise.
6782	* testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
6783	Likewise.
6784	* testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
6785	Likewise.
6786	* testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
6787	Likewise.
6788
67892020-03-28  Jonathan Wakely  <jwakely@redhat.com>
6790
6791	* testsuite/20_util/is_constructible/value-2.cc: Fix test to account
6792	for changes due to parenthesized aggregate-initialization in C++20.
6793	* testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
6794	with std::chrono::sys_time in C++20.
6795
6796	* include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
6797	to constrain C++20 versions of comparison operators. Fix backwards
6798	logic of relational operators.
6799	(move_iterator): Use requires-clause to constrain comparison operators
6800	in C++20. Do not declare non-standard same-type overloads for C++20.
6801	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
6802	of comparisons and check using greedy_ops type.
6803	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
6804	* testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
6805	main function from compile-only test.
6806	* testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
6807
68082020-03-27  Jonathan Wakely  <jwakely@redhat.com>
6809
6810	* include/bits/range_cmp.h (__cpp_lib_ranges): Define.
6811	* include/bits/stl_iterator.h: Check value of __cpp_concepts so that
6812	C++20 concepts are required.
6813	* include/bits/stl_iterator_base_types.h: Likewise.
6814	* include/std/concepts: Likewise.
6815	* include/std/version: Likewise.
6816	* testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
6817	macro.
6818
6819	* include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
6820	(reverse_iterator::iterator_category): Define for C++20.
6821	(reverse_iterator): Define comparison operators correctly for C++20.
6822	(__normal_iterator): Add constraints to comparison operators for C++20.
6823	(move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
6824	overload for input iterators.
6825	(move_iterator): Add constraints to comparison operators for C++20.
6826	Define operator<=> for C++20.
6827	* testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
6828	* testsuite/24_iterators/move_iterator/move_only.cc: New test.
6829	* testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
6830	* testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
6831
6832	* include/bits/iterator_concepts.h (__detail::__decay_copy)
6833	(__detail::__member_begin, __detail::__adl_begin): Move here from
6834	<bits/range_access.h>.
6835	(__detail::__ranges_begin, __detail::__range_iter_t): Define.
6836	* bits/range_access.h (__cust_access::__decay_copy)
6837	(__cust_access::__member_begin, __cust_access::__adl_begin): Move to
6838	<bits/iterator_concepts.h>.
6839	(ranges::iterator_t): Use __detail::__range_iter_t.
6840	* include/bits/stl_iterator.h (back_insert_iterator): Simplify
6841	conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
6842	(front_insert_iterator): Likewise.
6843	(insert_iterator): Implement changes from P0896R4 for C++20.
6844	* testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
6845	* testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
6846	* testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
6847	for inclusion in synopsis_c++20.cc which expects different signatures
6848	for some function templates.
6849	* testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
6850
6851	* include/std/type_traits (__is_array_convertible): Move definition
6852	to immediately after is_convertible.
6853
68542020-03-26  Jonathan Wakely  <jwakely@redhat.com>
6855
6856	* include/std/chrono (chrono::days, chrono::weeks, chrono::years)
6857	(chrono::months, chrono::sys_days, chrono::local_t)
6858	(chrono::local_time, chrono::local_seconds, chrono::local_days):
6859	Define for C++20.
6860	(chrono::time_point): Add missing static assert.
6861	* testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
6862	* testsuite/std/time/clock/file/overview.cc: New test.
6863	* testsuite/std/time/clock/file/members.cc: New test.
6864	* testsuite/std/time/syn_c++20.cc: New test.
6865
68662020-03-25  Mike Crowe  <mac@mcrowe.com>
6867
6868	* testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
6869	test.
6870	* testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
6871	test.
6872
68732020-03-25  Jonathan Wakely  <jwakely@redhat.com>
6874
6875	* include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
6876	* include/std/chrono (filesystem::__file_clock): Here.
6877	(filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
6878	Define public member functions for C++20.
6879	(is_clock, is_clock_v): Define traits for C++20.
6880	* include/std/condition_variable (condition_variable::wait_until): Add
6881	check for valid clock.
6882	* include/std/future (_State_baseV2::wait_until): Likewise.
6883	* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
6884	* include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
6885	Likewise.
6886	* include/std/thread (this_thread::sleep_until): Likewise.
6887	* testsuite/30_threads/condition_variable/members/2.cc: Qualify
6888	slow_clock with new namespace.
6889	* testsuite/30_threads/condition_variable/members/clock_neg.cc: New
6890	test.
6891	* testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
6892	New test.
6893	* testsuite/30_threads/future/members/clock_neg.cc: New test.
6894	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
6895	Qualify slow_clock with new namespace.
6896	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/
6897	clock_neg.cc: New test.
6898	* testsuite/30_threads/shared_future/members/clock_neg.cc: New
6899	test.
6900	* testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
6901	* testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
6902	New test.
6903	* testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
6904	slow_clock with new namespace.
6905	* testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
6906	* testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
6907	test.
6908	* testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
6909	* testsuite/std/time/traits/is_clock.cc: New test.
6910	* testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
6911	namespace.
6912
69132020-03-21  Jonathan Wakely  <jwakely@redhat.com>
6914
6915	PR libstdc++/93245
6916	* include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
6917	* testsuite/experimental/filesystem/path/generic/generic_string.cc:
6918	Improve test coverage.
6919
6920	PR libstdc++/94242
6921	* include/bits/fs_path.h (path::_S_str_convert): Replace first
6922	parameter with basic_string_view so that strings with different
6923	allocators can be accepted.
6924	(path::generic_string<C,T,A>()): Use basic_string object that uses the
6925	right allocator type.
6926	* testsuite/27_io/filesystem/path/generic/94242.cc: New test.
6927	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
6928	test coverage.
6929
69302020-03-18  Jonathan Wakely  <jwakely@redhat.com>
6931
6932	PR libstdc++/94033
6933	* include/std/type_traits (__is_nt_default_constructible_atom): Remove.
6934	(__is_nt_default_constructible_impl): Remove.
6935	(__is_nothrow_default_constructible_impl): Remove.
6936	(__is_nt_constructible_impl): Add bool template parameter. Adjust
6937	partial specializations.
6938	(__is_nothrow_constructible_impl): Replace class template with alias
6939	template.
6940	(is_nothrow_default_constructible): Derive from alias template
6941	__is_nothrow_constructible_impl instead of
6942	__is_nothrow_default_constructible_impl.
6943	* testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
6944
6945	* include/std/stop_token (stop_token::_Stop_state_ref): Define
6946	comparison operators explicitly if the compiler won't synthesize them.
6947
6948	* include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
6949	__cpp_lib_concepts before using iter_reference_t.
6950	* include/bits/stream_iterator.h (istream_iterator): Check
6951	__cpp_lib_concepts before using default_sentinel_t.
6952	* include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
6953
6954	PR libstdc++/94203
6955	* include/experimental/executor (executor::executor(Executor)): Call
6956	make_shared directly instead of _M_create. Create _Tgt1 object.
6957	(executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
6958	Call allocate_shared directly instead of _M_create. Create _Tgt2
6959	object.
6960	(executor::target_type): Add cast needed for new _Tgt interface.
6961	(executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
6962	(executor::_Tgt): Define the same interface whether RTTI is enabled or
6963	not.
6964	(executor::_Tgt::target_type, executor::_Tgt::target): Do not use
6965	std::type_info in the interface.
6966	(executor::_Tgt::_M_func): Add data member.
6967	(executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
6968	(executor::_Tgt1::_S_func): Define function to access target without
6969	depending on RTTI.
6970	(executor::_M_create): Remove.
6971	(operator==, operator!=): Simplify comparisons for executor.
6972	* include/experimental/socket (is_error_code_enum<socket_errc>):
6973	Define specialization before use.
6974	* testsuite/experimental/net/executor/1.cc: New test.
6975
69762020-03-16  Jonathan Wakely  <jwakely@redhat.com>
6977
6978	PR libstdc++/94199
6979	* include/experimental/executor (service_already_exists): Add default
6980	constructor. Declare make_service to be a friend.
6981	* testsuite/experimental/net/execution_context/make_service.cc: New
6982	test.
6983
69842020-03-12  Jonathan Wakely  <jwakely@redhat.com>
6985
6986	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
6987	a null pointer to functions with nonnull(1) attribute.
6988
69892020-03-11  Patrick Palka  <ppalka@redhat.com>
6990
6991	* include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
6992	'address' -> 'std::__addressof'.
6993	* testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
6994	a non-forward input_range.
6995	* testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
6996	default constructor protected instead of deleted, like with
6997	input_iterator_wrapper.
6998	(test_range::iterator): Add comment explaining that this type is used
6999	only when the underlying wrapper is input_iterator_wrapper or
7000	output_iterator_wrapper.  Remove delegating defaulted constructor so
7001	that the inherited default constructor is used instead.
7002
7003	LWG 3286 ranges::size is not required to be valid after a call to
7004	ranges::begin on an input range
7005	* include/std/ranges (subrange::subrange): Split single-argument
7006	constructor into two, one constrained by _S_store_size and another by
7007	!_S_store_size.
7008	(take_view::begin): Call size() before calling ranges::begin(_M_base).
7009	* testsuite/std/ranges/adaptors/lwg3286.cc: New test.
7010	* testsuite/std/ranges/subrange/lwg3286.cc: New test.
7011
70122020-03-10  Jonathan Wakely  <jwakely@redhat.com>
7013
7014	* include/std/ranges (split_view::_OuterIter::__at_end): Use __current
7015	instead of _M_current.
7016	(split_view::_OuterIter::operator++): Likewise.
7017
7018	* include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
7019	(transform_view::_Iterator::operator*): Add noexcept-specifier.
7020	(transform_view::_Iterator::iter_move): Inline __iter_move body here.
7021	(split_view::_OuterIter::__current): Add noexcept.
7022	(split_view::_InnerIter::__iter_swap): Remove.
7023	(split_view::_InnerIter::__iter_move): Remove.
7024	(split_view::_InnerIter::_M_i_current): New accessors.
7025	(split_view::_InnerIter::__at_end): Use _M_i_current().
7026	(split_view::_InnerIter::operator*): Likewise.
7027	(split_view::_InnerIter::operator++): Likewise.
7028	(iter_move(const _InnerIter&)): Likewise.
7029	(iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
7030	* testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
7031	for iter_move and iter_swap on split_view's inner iterator.
7032
7033	PR c++/94117
7034	* include/std/ranges (ranges::transform_view::_Iterator::iter_move):
7035	Change expression in noexcept-specifier to match function body.
7036
7037	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
7038	comment explaining multiple dg-do directives.
7039	* testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
7040	so test is run as well as compiled.
7041
70422020-03-09  Jonathan Wakely  <jwakely@redhat.com>
7043
7044	PR libstdc++/94063
7045	* src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
7046	handle concatenations that change the type of the first component.
7047	(path::operator+=(basic_string_view<value_type>)): Likewise.
7048	* testsuite/27_io/filesystem/path/concat/94063.cc: New test.
7049
70502020-03-06  Patrick Palka  <ppalka@redhat.com>
7051
7052	* include/std/ranges (join_view::_Sentinel<_Const>): Befriend
7053	join_view::_Sentinel<!_Const>.
7054	* testsuite/std/ranges/adaptors/join.cc: Augment test.
7055
7056	PR libstdc++/93978
7057	* include/bits/range_access.h (__cust_access::_Empty::operator()):
7058	Declare return type to be bool instead of auto.
7059	* testsuite/std/ranges/adaptors/93978.cc: New test.
7060
70612020-03-06  Jonathan Wakely  <jwakely@redhat.com>
7062
7063	PR libstdc++/94069
7064	* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
7065	(__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
7066	second argument to __glibcxx_rwlock_init.
7067	* testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
7068
7069	PR libstdc++/93244
7070	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
7071	test to not fail due to PR 94063.
7072	* testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
7073	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
7074
70752020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
7076
7077	* src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
7078	would match ENOSYS.
7079
70802020-03-05  Jonathan Wakely  <jwakely@redhat.com>
7081
7082	* testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
7083	* testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
7084	* testsuite/experimental/filesystem/operations/copy.cc: Likewise.
7085	* testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
7086	for return value, and in comparison.
7087	* testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
7088
7089	PR libstdc++/94051
7090	* include/std/string_view: Include <bits/ostream_insert.h>.
7091	* testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
7092
70932020-03-04  Jonathan Wakely  <jwakely@redhat.com>
7094
7095	* include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
7096
70972020-03-04  Patrick Palka  <ppalka@redhat.com>
7098
7099	PR libstdc++/94017
7100	* include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
7101	condition for when to use memset, making sure to additionally check that
7102	the output pointer's value type is a non-volatile byte type.  Instead of
7103	requiring that the fill type is a byte type, just require that it's an
7104	integral type.
7105	* testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
7106	New test.
7107	* testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
7108	New test.
7109	* testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
7110	blocked by PR 94017.
7111	* testsuite/25_algorithms/fill/94017.cc: New test.
7112	* testsuite/25_algorithms/fill_n/94017.cc: New test.
7113
7114	LWG 3355 The memory algorithms should support move-only input iterators
7115	introduced by P1207
7116	* include/bits/ranges_uninitialized.h
7117	(__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
7118	to copy __ifirst, which could be a move-only input iterator.  Use
7119	operator- instead of ranges::distance to compute distance from a sized
7120	sentinel.
7121	(__uninitialized_copy_n_fn::operator()): Likewise.
7122	(__uninitialized_move_fn::operator()): Likewise.
7123	(__uninitialized_move_n_fn::operator()): Likewise.
7124	(__uninitialized_destroy_fn::operator()): Use std::move to avoid
7125	attempting to copy __first.
7126	(__uninitialized_destroy_n_fn::operator()): Likewise.
7127	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
7128	Augment test.
7129	* .../specialized_algorithms/uninitialized_copy/constrained.cc:
7130	Likewise.
7131	* .../specialized_algorithms/uninitialized_move/constrained.cc:
7132	Likewise.
7133
7134	* testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
7135	protected instead of private.
7136	(test_sized_range_sized_sent): New.
7137
7138	* testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
7139	New testsuite iterator.
7140	* testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
7141	* testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
7142
7143	* include/bits/ranges_uninitialized.h
7144	(uninitialized_copy_fn::operator()): Pass a reference type as the first
7145	argument to is_nothrow_assignable_v.
7146	(uninitialized_copy_fn::operator()): Likewise.
7147	(uninitialized_move_fn::operator()): Likewise.  Return an in_out_result
7148	with the input iterator stripped of its move_iterator.
7149	(uninitialized_move_n_fn::operator()): Likewise.
7150	(uninitialized_fill_fn::operator()): Pass a reference type as the first
7151	argument to is_nothrow_assignable_v.
7152	(uninitialized_fill_n_fn::operator()): Likewise.
7153
71542020-03-03  Jonathan Wakely  <jwakely@redhat.com>
7155
7156	PR libstdc++/94013
7157	* include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
7158	traits to control when to use memmove and memcmp optimizations.
7159	(__is_nonvolatile_trivially_copyable): New helper trait.
7160	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
7161	use memcmp optimization with volatile data.
7162	* include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
7163	(__copy_or_move, __copy_or_move_backward): Use __memcpyable.
7164	* include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
7165	(__copy_move_backward_a2): Likewise.
7166	(__equal_aux1): Use __memcmpable.
7167	(__lexicographical_compare_aux): Do not use memcmp optimization with
7168	volatile data.
7169	* testsuite/25_algorithms/copy/94013.cc: New test.
7170	* testsuite/25_algorithms/copy_backward/94013.cc: New test.
7171	* testsuite/25_algorithms/equal/94013.cc: New test.
7172	* testsuite/25_algorithms/fill/94013.cc: New test.
7173	* testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
7174	* testsuite/25_algorithms/move/94013.cc: New test.
7175	* testsuite/25_algorithms/move_backward/94013.cc: New test.
7176
7177	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
7178	Avoid redundant iterator comparisons (LWG 3410).
7179
71802020-03-02  Jonathan Wakely  <jwakely@redhat.com>
7181
7182	PR libstdc++/93972
7183	* include/bits/stl_algobase.h (__memcmp): Allow pointer types to
7184	differ.
7185	* testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
7186
7187	* include/std/ranges (__detail::__maybe_empty_t): Rename to
7188	__maybe_present_t.
7189	(__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
7190
7191	* include/bits/ranges_algo.h (shift_right): Add 'typename' to
7192	dependent type.
7193
71942020-03-01  H.J. Lu  <hongjiu.lu@intel.com>
7195
7196	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
7197
71982020-02-29  John David Anglin  <danglin@gcc.gnu.org>
7199
7200	* testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
7201	* testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
7202	* testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
7203	* testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
7204	* testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
7205
7206	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
7207	Add libatomic option.
7208	* testsuite/30_threads/jthread/jthread.cc: Likewise.
7209
72102020-02-29  François Dumont  <fdumont@gcc.gnu.org>
7211
7212	* include/bits/stl_algo.h
7213	(__find_if, __count_if, __is_permutation, std::is_permutation): Move...
7214	* include/bits/stl_algobase.h: ...here.
7215	* include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
7216
72172020-02-29  John David Anglin  <danglin@gcc.gnu.org>
7218
7219	* testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
7220	option.
7221	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
7222	Likewise.
7223	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
7224	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
7225	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
7226	* testsuite/30_threads/stop_token/stop_source.cc: Likewise.
7227	* testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
7228	* testsuite/30_threads/stop_token/stop_token.cc: Likewise.
7229	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
7230	Likewise.
7231
7232	PR libstdc++/92906
7233	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
7234
72352020-02-28  Patrick Palka  <ppalka@redhat.com>
7236
7237	PR libstdc++/93972
7238	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
7239	Fix condition for when to use memcmp, making it consistent with the
7240	corresponding condition used in std::lexicographical_compare.
7241	* testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
7242
7243	* testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
7244	functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
7245	existing signatures for C++2a.
7246
72472020-02-28  Jonathan Wakely  <jwakely@redhat.com>
7248
7249	* testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
7250	test instead of just compiling it.
7251
72522020-02-28  Patrick Palka  <ppalka@redhat.com>
7253
7254	* include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
7255	whenever the underlying range models common_range.
7256
7257	* include/std/ranges (__detail::_CachedPosition): New struct.
7258	(views::filter_view::_S_needs_cached_begin): New member variable.
7259	(views::filter_view::_M_cached_begin): New member variable.
7260	(views::filter_view::begin): Use _M_cached_begin to cache its
7261	result.
7262	(views::drop_view::_S_needs_cached_begin): New static member variable.
7263	(views::drop_view::_M_cached_begin): New member variable.
7264	(views::drop_view::begin): Use _M_cached_begin to cache its result
7265	when _S_needs_cached_begin.
7266	(views::drop_while_view::_M_cached_begin): New member variable.
7267	(views::drop_while_view::begin): Use _M_cached_begin to cache its
7268	result.
7269	(views::reverse_view::_S_needs_cached_begin): New static member
7270	variable.
7271	(views::reverse_view::_M_cached_begin): New member variable.
7272	(views::reverse_view::begin): Use _M_cached_begin to cache its result
7273	when _S_needs_cached_begin.
7274	* testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
7275	drop_view::begin caches its result.
7276	* testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
7277	that drop_while_view::begin caches its result.
7278	* testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
7279	filter_view::begin caches its result.
7280	* testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
7281	reverse_view::begin caches its result.
7282
72832020-02-28  Jonathan Wakely  <jwakely@redhat.com>
7284
7285	* testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
7286	filesystems that silently truncate timestamps.
7287	* testsuite/experimental/filesystem/operations/last_write_time.cc:
7288	Likewise.
7289
7290	* testsuite/21_strings/basic_string/cons/char/1.cc: Disable
7291	-Wstringop-overflow warnings.
7292
72932020-02-27  Jonathan Wakely  <jwakely@redhat.com>
7294
7295	* testsuite/lib/libstdc++.exp (v3_target_compile): Add
7296	-fdiagnostics-urls=never to options.
7297
72982020-02-27  Patrick Palka  <ppalka@redhat.com>
7299
7300	* include/std/ranges (transform_view::_Iterator<_Const>): Befriend
7301	_Iterator<!_Const>.
7302	(transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
7303	(take_view::_Sentinel<_Const>): Likewise.
7304	(take_while_view::_Sentinel<_Const>): Likewise.
7305	(split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
7306	* testsuite/std/ranges/adaptors/split.cc: Augment test.
7307	* testsuite/std/ranges/adaptors/take.cc: Augment test.
7308	* testsuite/std/ranges/adaptors/take_while.cc: Augment test.
7309	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
7310
7311	* testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
7312	base() of a vector<>::iterator is a pointer.
7313	* testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
7314	* testsuite/25_algorithms/move/constrained.cc: Likewise.
7315	* testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
7316	* testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
7317	instead of &foo[0].
7318	* testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
7319	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
7320	* testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
7321	* testsuite/25_algorithms/sort/constrained.cc: Likewise.
7322	* testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
7323
73242020-02-27  Jonathan Wakely  <jwakely@redhat.com>
7325
7326	* include/debug/array (operator<=>): Define for C++20.
7327	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
7328	Adjust dg-error line numbers.
7329	* testsuite/23_containers/array/tuple_interface/
7330	tuple_element_debug_neg.cc: Likewise.
7331
7332	* testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
7333	defining _GLIBCXX_ASSERTIONS.
7334	* testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
7335	* testsuite/23_containers/span/first_assert_neg.cc: Likewise.
7336	* testsuite/23_containers/span/front_assert_neg.cc: Likewise.
7337	* testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
7338	* testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
7339	* testsuite/23_containers/span/last_assert_neg.cc: Likewise.
7340	* testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
7341	* testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
7342	* testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
7343	* testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
7344	* testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
7345	* testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
7346
7347	* include/debug/string (__gnu_debug::basic_string::insert): Fix for
7348	C++98 where the member function of the base class returns void.
7349
7350	* testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
7351	equality comparisons that support value-initialized iterators.
7352
7353	* include/bits/boost_concept_check.h (__function_requires): Add
7354	_GLIBCXX14_CONSTEXPR.
7355	* testsuite/25_algorithms/min/concept_checks.cc: New test.
7356
73572020-02-26  Patrick Palka  <ppalka@redhat.com>
7358
7359	PR libstdc++/93936
7360	* include/std/ranges (split_view::_InnerIter::operator==): Compare
7361	the operands' _M_i rather than their _M_i.current().
7362	* testsuite/std/ranges/adaptors/split.cc: Augment test.
7363
7364	P1645R1 constexpr for <numeric> algorithms
7365	* include/bits/stl_numeric.h (iota, accumulate, inner_product,
7366	partial_sum, adjacent_difference): Make conditionally constexpr for
7367	C++20.
7368	* include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
7369	test macro.
7370	(reduce, transform_reduce, exclusive_scan, inclusive_scan,
7371	transform_exclusive_scan, transform_inclusive_scan): Make conditionally
7372	constexpr for C++20.
7373	* include/std/version (__cpp_lib_constexpr_numeric): Define.
7374	* testsuite/26_numerics/accumulate/constexpr.cc: New test.
7375	* testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
7376	* testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
7377	* testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
7378	* testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
7379	* testsuite/26_numerics/iota/constexpr.cc: Likewise.
7380	* testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
7381	* testsuite/26_numerics/reduce/constexpr.cc: Likewise.
7382	* testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
7383	* testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
7384	* testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
7385
73862020-02-26  Jonathan Wakely  <jwakely@redhat.com>
7387
7388	* include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
7389	variables in smaller scope and avoid calling ranges::distance when we
7390	know they are pointers. Remove statically-unreachable use of
7391	__builtin_unreachable().
7392	* include/bits/stl_algobase.h (__lexicographical_compare::__lc):
7393	Define inline.
7394
7395	* include/std/ranges (__detail::__maybe_empty_t): Define new helper
7396	alias.
7397	(__detail::__maybe_const_t): Likewise.
7398	(__adaptor::_RangeAdaptor): Use __maybe_empty_t.
7399	(transform_view, take_view, take_while_view, elements_view): Use
7400	__maybe_const_t.
7401	(join_view, split_view): Use both.
7402
74032020-02-25  Patrick Palka  <ppalka@redhat.com>
7404
7405	LWG 3397 basic_istream_view::iterator should not provide
7406	iterator_category
7407	* include/std/ranges (basic_istream_view:_Iterator::iterator_category):
7408	Rename to ...
7409	(basic_istream_view:_Iterator::iterator_concept): ... this.
7410	* testsuite/std/ranges/istream_view.cc: Augment test.
7411
7412	LWG 3325 Constrain return type of transformation function for
7413	transform_view
7414	* include/std/ranges (transform_view): Constrain the return type of the
7415	transformation function as per LWG 3325.
7416	* testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
7417
7418	LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
7419	* include/std/ranges (join_view::_Iterator::operator--): Require that
7420	range_reference_t<_Base> models common_range.
7421	* testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
7422
7423	LWG 3301 transform_view::_Iterator has incorrect iterator_category
7424	* include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
7425	determination of iterator_category as per LWG 3301.
7426	* testsuite/std/ranges/adaptors/transform.cc: Augment test.
7427
7428	LWG 3292 iota_view is under-constrained
7429	* include/std/ranges (iota_view): Require that _Winc models semiregular
7430	  as per LWG 3292.
7431	* testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
7432
74332020-02-25  Jonathan Wakely  <jwakely@redhat.com>
7434
7435	* include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
7436	during constant evaluation. Call __builtin_memmove directly instead of
7437	__memmove.
7438	(__copy_or_move_backward): Likewise.
7439	* include/bits/stl_algobase.h (__memmove): Remove.
7440	(__copy_move<M, true, random_access_iterator_tag>::__copy_m)
7441	(__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
7442	Use __builtin_memmove directly instead of __memmove.
7443	(__copy_move_a2): Do not use memmove during constant evaluation.
7444	(__copy_move_backward_a2): Use _IsMove constant to select correct
7445	__copy_move_backward specialization.
7446	* testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
7447	begin turned into moves during constant evaluation.
7448
7449	* testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
7450	previous commit.
7451
7452	PR libstdc++/93872
7453	* include/bits/stl_algobase.h (__memmove): Cast away const before
7454	doing move assignment.
7455	* testsuite/25_algorithms/move/93872.cc: New test.
7456	* testsuite/25_algorithms/move_backward/93872.cc: New test.
7457
74582020-02-24  Patrick Palka  <ppalka@redhat.com>
7459
7460	PR libstdc++/93884
7461	* include/bits/ranges_algobase.h (__copy_or_move,
7462	__copy_or_move_backward): Don't inspect the iter_value_t of the output
7463	iterator, instead inspect its iterator_traits directly.
7464	* include/bits/stl_iterator.h (back_insert_iterator::container):
7465	Conditionally initialize.
7466	(back_insert_iterator::difference_type): Conditionally define.
7467	(back_insert_iterator::back_insert_iterator): Conditionally define this
7468	default constructor.
7469	(front_insert_iterator::container): Conditionally initialize.
7470	(front_insert_iterator::difference_type): Conditionally define.
7471	(front_insert_iterator::front_insert_iterator): Conditionally define
7472	this default constructor.
7473	* 24_iterators/back_insert_iterator/pr93884.cc: New test.
7474	* 24_iterators/front_insert_iterator/pr93884.cc: New test.
7475
7476	P0769R2 Add shift to <algorithm>
7477	* include/bits/ranges_algo.h (shift_left, shift_right): New.
7478	* testsuite/25_algorithms/shift_left/1.cc: New test.
7479	* testsuite/25_algorithms/shift_right/1.cc: New test.
7480
74812020-02-24  Jonathan Wakely  <jwakely@redhat.com>
7482
7483	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
7484	Make noexcept-specifier conditional.
7485	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
7486	noexcept-specifier.
7487
7488	* include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
7489	Add constructor.
7490	(operator==(istream_iterator, default_sentinel_t)): Add operator.
7491	(ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
7492	* include/bits/streambuf_iterator.h
7493	(istreambuf_iterator(default_sentinel_t)): Add constructor.
7494	(operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
7495	* testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
7496	New test.
7497	* testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
7498	* testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
7499	New test.
7500	* testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
7501
7502	* include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
7503	(ranges::enable_view): Simplify (LWG 3326).
7504	* include/bits/range_access.h (ranges::enable_view): Declare.
7505	* include/bits/regex.h (__enable_view_impl): Remove partial
7506	specialization.
7507	* include/bits/stl_multiset.h (__enable_view_impl): Likewise.
7508	* include/bits/stl_set.h (__enable_view_impl): Likewise.
7509	* include/bits/unordered_set.h (__enable_view_impl): Likewise.
7510	* include/debug/multiset.h (__enable_view_impl): Likewise.
7511	* include/debug/set.h (__enable_view_impl): Likewise.
7512	* include/debug/unordered_set (__enable_view_impl): Likewise.
7513	* include/experimental/string_view (ranges::enable_view): Define
7514	partial specialization.
7515	* include/std/span (ranges::enable_view): Likewise.
7516	* include/std/string_view (ranges::enable_view): Likewise.
7517	* testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
7518
75192020-02-21  Jonathan Wakely  <jwakely@redhat.com>
7520
7521	* include/std/optional (operator<=>(optional<T>, optional<U>))
7522	(operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
7523	Define for C++20.
7524	* include/std/tuple (__tuple_cmp): New helper function for <=>.
7525	(operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
7526	* include/std/variant (operator<=>(variant<T...>, variant<T...>))
7527	(operator<=>(monostate, monostate)): Define for C++20.
7528	* testsuite/20_util/optional/relops/three_way.cc: New test.
7529	* testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
7530	* testsuite/20_util/variant/89851.cc: Move to ...
7531	* testsuite/20_util/variant/relops/89851.cc: ... here.
7532	* testsuite/20_util/variant/90008.cc: Move to ...
7533	* testsuite/20_util/variant/relops/90008.cc: ... here.
7534	* testsuite/20_util/variant/relops/three_way.cc: New test.
7535
75362020-02-20  Patrick Palka  <ppalka@redhat.com>
7537
7538	* include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
7539	function.
7540	(views::__adaptor::_RangeAdaptor::operator()): Add comments.  Use
7541	__maybe_refwrap to capture lvalue references by reference, and then use
7542	unwrap_reference_t to forward the by-reference captures as references.
7543	* testsuite/std/ranges/adaptors/split.cc: Augment test.
7544	* testsuite/std/ranges/adaptors/split_neg.cc: New test.
7545
7546	* include/std/ranges (iota_view): Forward declare _Sentinel.
7547	(iota_view::_Iterator): Befriend _Sentinel.
7548	(iota_view::_Sentinel::_M_equal): New member function.
7549	(iota_view::_Sentinel::operator==): Use it.
7550	(views::_Iota::operator()): Forward __f using the correct type.
7551	* testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
7552	with integers of different signedness, to appease iota_view's deduction
7553	guide.
7554	* testsuite/std/ranges/iota/iota_view.cc: Augment test.
7555
75562020-02-20  Jonathan Wakely  <jwakely@redhat.com>
7557
7558	* include/bits/range_access.h (ranges::begin): Reject array of
7559	incomplete type.
7560	(ranges::end, ranges::size): Require arrays to be bounded.
7561	(ranges::data): Require lvalue or borrowed_range.
7562	(ranges::iterator_t): Remove constraint.
7563	* testsuite/std/ranges/access/begin.cc: Do not check array of
7564	incomplete type.
7565	* testsuite/std/ranges/access/begin_neg.cc: New test.
7566	* testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
7567	* testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
7568	* testsuite/std/ranges/access/ssize.cc: Do not check array of
7569	incomplete type.
7570
7571	* include/std/system_error (error_category::operator<=>)
7572	(operator<=>(const error_code&, const error_code&))
7573	(operator<=>(const error_condition&, const error_condition&)): Define
7574	for C++20.
7575	* testsuite/19_diagnostics/error_category/operators/less.cc: New test.
7576	* testsuite/19_diagnostics/error_category/operators/three_way.cc: New
7577	test.
7578	* testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
7579	incorrect comment.
7580	* testsuite/19_diagnostics/error_code/operators/less.cc: New test.
7581	* testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
7582	incorrect comment.
7583	* testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
7584	* testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
7585	incorrect comment.
7586	* testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
7587	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
7588	Remove incorrect comment.
7589	* testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
7590	test.
7591
7592	* libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
7593
7594	* include/std/thread (thread::id::operator<=>): Define for C++20.
7595	* testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
7596	functions in namespace std.
7597	* testsuite/30_threads/thread/id/operators_c++20.cc: New test.
7598
75992020-02-19  Patrick Palka  <ppalka@redhat.com>
7600
7601	* testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
7602	null terminator of the underlying string as part of the test_range.
7603	(main): Call test03.
7604
76052020-02-19  Jonathan Wakely  <jwakely@redhat.com>
7606
7607	* include/bits/stl_iterator.h (common_iterator): Add copyable<I>
7608	requirement (LWG 3385).
7609	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
7610	expected declaration.
7611
7612	* include/std/ranges (take_while_view, drop_view, drop_while_view)
7613	(elements_view:_Iterator): Initialize data members (LWG 3364).
7614
7615	* libsupc++/compare (three_way_comparable): Remove always-false check
7616	that should have been removed with weak_equality (P1959R0).
7617	(three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
7618
7619	* include/std/concepts (__detail::__partially_ordered_with): Move here
7620	from <compare>.
7621	(totally_ordered, totally_ordered_with): Use __partially_ordered_with
7622	to simplify definition (LWG 3331).
7623	* libsupc++/compare (__detail::__partially_ordered_with): Move to
7624	<concepts>.
7625
7626	* include/std/concepts (totally_ordered_with): Remove redundant
7627	requirement (LWG 3329).
7628
7629	* include/std/ranges (__detail::__convertible_to_non_slicing): New
7630	helper concept.
7631	(__detail::__pair_like_convertible_to): Remove.
7632	(__detail::__pair_like_convertible_from): Add requirements for
7633	non-slicing conversions.
7634	(subrange): Constrain constructors with __convertible_to_non_slicing.
7635	Remove constructors from pair-like types. Add new deduction guide.
7636	* testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
7637
7638	* include/bits/iterator_concepts.h (iter_move): Add declaration to
7639	prevent unqualified lookup finding a suitable declaration (LWG 3247).
7640
7641	* include/std/memory_resource (polymorphic_allocator::allocate)
7642	(polymorphic_allocator::allocate_object): Change type of exception to
7643	bad_array_new_length (LWG 3237).
7644	* testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
7645
7646	* include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
7647	* include/std/version (__cpp_lib_unwrap_ref): Likewise.
7648	* testsuite/20_util/unwrap_reference/1.cc: Check macro.
7649	* testsuite/20_util/unwrap_reference/3.cc: New test.
7650
7651	* include/std/numeric (midpoint(T8, T*)): Do not check for complete
7652	type during overload resolution, use static assert instead (LWG 3200).
7653	* testsuite/26_numerics/midpoint/pointer.cc: Do not test with
7654	incomplete type.
7655	* testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
7656
7657	* include/std/span (span(T (&)[N])): Use non-deduced context to
7658	prevent first parameter from interfering with class template argument
7659	deduction (LWG 3369).
7660	* testsuite/23_containers/span/deduction.cc: Add missing 'const'.
7661	* testsuite/23_containers/span/lwg3255.cc: Check for construction from
7662	rvalues.
7663
7664	* include/std/span (span::const_iterator, span::const_reverse_iterator)
7665	(span::cbegin(), span::cend(), span::crbegin(), span::crend()):
7666	Remove (LWG 3320).
7667	* testsuite/23_containers/span/everything.cc: Replace uses of cbegin
7668	and cend.
7669	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
7670	Likewise.
7671	* testsuite/20_util/specialized_algorithms/uninitialized_copy/
7672	constrained.cc: Likewise.
7673	* testsuite/20_util/specialized_algorithms/
7674	uninitialized_default_construct/constrained.cc: Likewise.
7675	* testsuite/20_util/specialized_algorithms/uninitialized_fill/
7676	constrained.cc: Likewise.
7677	* testsuite/20_util/specialized_algorithms/uninitialized_move/
7678	constrained.cc: Likewise.
7679	* testsuite/20_util/specialized_algorithms/
7680	uninitialized_value_construct/constrained.cc: Likewise.
7681
7682	* include/bits/range_access.h (range_size_t): Define alias template.
7683	* include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
7684	* testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
7685
7686	* include/std/ranges (filter_view, transform_view, take_view)
7687	(join_view, split_view, reverse_view): Remove commented-out converting
7688	constructors (LWG 3280).
7689
7690	* include/std/memory (uninitialized_construct_using_allocator): Use
7691	std::construct_at (LWG 3321).
7692
7693	* include/std/memory_resource (polymorphic_allocator::allocate_bytes)
7694	(polymorphic_allocator::allocate_object)
7695	(polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
7696
7697	LWG 3379. "safe" in several library names is misleading
7698	* include/bits/range_access.h (enable_safe_range): Rename to
7699	enable_borrowed_range.
7700	(__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
7701	(safe_range): Rename to borrowed_range.
7702	* include/bits/ranges_algo.h: Adjust to use new names.
7703	* include/bits/ranges_algobase.h: Likewise.
7704	* include/bits/ranges_uninitialized.h: Likewise.
7705	* include/std/ranges: Likewise.
7706	(safe_iterator_t): Rename to borrowed_iterator_t.
7707	(safe_subrange_t): Rename to borrowed_subrange_t.
7708	* include/std/span: Adjust to use new names.
7709	* include/std/string_view: Likewise.
7710	* include/experimental/string_view: Likewise.
7711	* testsuite/std/ranges/access/begin.cc: Likewise.
7712	* testsuite/std/ranges/access/cbegin.cc: Likewise.
7713	* testsuite/std/ranges/access/cdata.cc: Likewise.
7714	* testsuite/std/ranges/access/cend.cc: Likewise.
7715	* testsuite/std/ranges/access/crbegin.cc: Likewise.
7716	* testsuite/std/ranges/access/crend.cc: Likewise.
7717	* testsuite/std/ranges/access/data.cc: Likewise.
7718	* testsuite/std/ranges/access/end.cc: Likewise.
7719	* testsuite/std/ranges/access/rbegin.cc: Likewise.
7720	* testsuite/std/ranges/access/rend.cc: Likewise.
7721	* testsuite/std/ranges/safe_range.cc: Likewise.
7722	* testsuite/std/ranges/safe_range_types.cc: Likewise.
7723	* testsuite/util/testsuite_iterators.h: Likewise.
7724
7725	* include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
7726	(tuple_element<1, const subrange<I, S, K>>): Add partial
7727	specializations (LWG 3398).
7728	* testsuite/std/ranges/subrange/tuple_like.cc: New test.
7729
7730	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
7731	(__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
7732	(__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
7733
77342020-02-18  Patrick Palka  <ppalka@redhat.com>
7735
7736	P1983R0 Wording for GB301, US296, US292, US291, and US283
7737	* include/std/ranges (filter_view::pred): New member function.
7738	(join_view::_Iterator::_Iterator): Remove now-redundant comment since
7739	P1983R0 fixes the highlighted issue in the same way.
7740	(join_view::_Iterator<_Const>): Add friend
7741	join_view::_Iterator<!_Const>.
7742	(join_view::_M_inner): Remove mutable specifier, effectively reverting
7743	the proposed wording changes of P3278.
7744	(join_view::begin): Refine the condition for when to return a const
7745	iterator.
7746	(split_view::_OuterIter::_OuterIter): Adjust constraints.
7747	* testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
7748	exists and works.
7749
77502020-02-18  Jonathan Wakely  <jwakely@redhat.com>
7751
7752	PR libstdc++/93818
7753	* include/std/ranges (_RangeAdaptor): Add deduction guide.
7754	(filter_view::_Iterator): Add alias _Vp_iter and use in place of
7755	iterator_t<_Vp>.
7756	(filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
7757	(transform_view::_Iterator): Add alias _Base_iter and use in place of
7758	iterator_t<_Base>.
7759	(transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
7760	(join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
7761	(join_view::_Iterator::_S_iter_cat()): Add 'typename'.
7762	(split_view::_InnerIter::_S_iter_cat()): Likewise.
7763
7764	* testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
7765	assumption that long is wider than int.
7766	* testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
7767	* testsuite/20_util/integer_comparisons/less.cc: Likewise.
7768	* testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
7769	* testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
7770
7771	P1976R2 Fixed-size span construction from dynamic range
7772	* include/std/span (__cpp_lib_span): Update value.
7773	(span(It, size_type), span(It, End)): Make conditionally explicit. Add
7774	assertion.
7775	(span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
7776	constraints.
7777	(span::first<Count>(), span::last<Count>()): Use explicit type in
7778	return statement.
7779	(as_bytes, as_writable_bytes): Likewise.
7780	* include/std/version (__cpp_lib_span): Update value.
7781	* testsuite/23_containers/span/1.cc: Check new value.
7782	* testsuite/23_containers/span/2.cc: Check new value.
7783	* testsuite/23_containers/span/explicit.cc: New test.
7784
7785	* include/std/span (span::__is_compatible_array): Simplify alias
7786	template by using requires-clause.
7787	(span::__is_compatible_ref): New alias template for constraining
7788	constructors.
7789	(span::__is_compatible_iterator, span::__is_compatible_range): Remove.
7790	(span(It, size_type), span(It, End)): Use __is_compatible_ref.
7791	(span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
7792	redundant parentheses.
7793	(span(R&&)): Add missing constraints.
7794
7795	* include/std/span (span): Reorder members and rename template
7796	parameters to match declarations in the C++2a working paper.
7797
7798	P2116R0 Remove tuple-like protocol support from fixed-extent span
7799	* include/std/span (get, tuple_size, tuple_element): Remove.
7800	* testsuite/23_containers/span/everything.cc: Remove checks for
7801	tuple-like API.
7802	* testsuite/23_containers/span/get_neg.cc: Remove.
7803	* testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
7804	* testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
7805	* testsuite/23_containers/span/tuple_size_neg.cc: Remove.
7806
78072020-02-17  Patrick Palka  <ppalka@redhat.com>
7808
7809	P2106R0 Alternative wording for GB315 and GB316
7810	* include/bits/ranges_algo.h (in_fun_result): New.
7811	(for_each_result, for_each_n_result): Change into an alias of
7812	in_fun_result.
7813	(in_in_result): New.
7814	(mismatch_result): Change into an alias of in_in_result.
7815	(copy_if_result): Change into an alias of in_out_result.
7816	(swap_ranges_result): Change into an alias of in_in_result.
7817	(unary_transform_result): Change into an alias of in_out_result.
7818	(in_in_out_result): New.
7819	(binary_transform_result): Change into an alias of in_in_out_result.
7820	(replace_copy_result, replace_copy_if_result, remove_copy_if_result,
7821	remove_copy_result, unique_copy_result, reverse_copy_result,
7822	rotate_copy_result, partial_sort_copy_result): Change into an alias of
7823	in_out_result.
7824	(in_out_out_result): New.
7825	(partition_copy_result, merge_result): Change into an alias of
7826	in_out_out_result.
7827	(set_union_result, set_intersection_result): Change into an alias of
7828	in_in_out_result.
7829	(set_difference_result): Change into an alias of in_out_result.
7830	(set_symmetric_difference): Change into an alias of in_in_out_result.
7831	(min_max_result): New.
7832	(minmax_result, minmax_element_result): Change into an alias of
7833	min_max_result.
7834	(in_found_result): New.
7835	(next_permutation_result, prev_permutation_result): Change into an alias
7836	of in_found_result.
7837	(__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
7838	Adjust following changes to next_permutation_result and
7839	prev_permutation_result.
7840	* include/bits/ranges_algobase.h (in_out_result): New.
7841	(copy_result, move_result, move_backward_result, copy_backward_result,
7842	copy_n_result): Change into an alias of in_out_result.
7843	* include/bits/ranges_uninitialized.h (uninitialized_copy_result,
7844	uninitialized_copy_n_result, uninitialized_move_result,
7845	uninitialized_move_n_result): Likewise.
7846	* testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
7847	structured bindings.
7848	* testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
7849
7850	P1243R4 Rangify new algorithms
7851	* include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
7852	for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
7853	* testsuite/25_algorithms/clamp/constrained.cc: New test.
7854	* testsuite/25_algorithms/for_each/constrained.cc: Augment test.
7855	* testsuite/25_algorithms/sample/constrained.cc: New test.
7856
78572020-02-17  Jonathan Wakely  <jwakely@redhat.com>
7858
7859	P1964R2 Wording for boolean-testable
7860	* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
7861	(__adjacent_find_fn): Cast result of predicate to bool.
7862	* include/std/concepts (__boolean): Remove.
7863	(__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
7864	new helper concepts.
7865	(__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
7866	(predicate): Use __boolean_testable instead of boolean.
7867	* libsupc++/compare (__detail::__partially_ordered, _Synth3way):
7868	Likewise.
7869
7870	P1970R2 Consistency for size() functions: Add ranges::ssize
7871	* include/bits/range_access.h (_SSize, ssize): Define for C++20.
7872	* testsuite/std/ranges/access/ssize.cc: New test.
7873
7874	P1956R1 On the names of low-level bit manipulation functions
7875	* include/bits/hashtable_policy.h: Update comment.
7876	* include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
7877	(ispow2, ceil2, floor2, log2p1): Likewise.
7878	(__cpp_lib_int_pow2): Add feature test macro.
7879	* include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
7880	* include/std/memory (assume_aligned): Adjust use of ispow2.
7881	* include/std/version (__cpp_lib_int_pow2): Add.
7882	* libsupc++/new_opa.cc: Adjust use of __ispow2.
7883	* src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
7884	* testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
7885	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
7886	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
7887	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
7888	* testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
7889	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
7890	* testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
7891	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
7892	* testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
7893	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
7894	* testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
7895
7896	* include/std/charconv: Add comment.
7897
7898	PR libstdc++/92546 (partial)
7899	* include/bits/random.h (uniform_random_bit_generator): Move definition
7900	to <bits/uniform_int_dist.h>.
7901	* include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
7902	of <bits/random.h>.
7903	* include/bits/ranges_algobase.h: Do not include <cmath>.
7904	* include/bits/uniform_int_dist.h (uniform_random_bit_generator):
7905	Move here.
7906	* include/std/ranges: Do not include <limits>.
7907	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
7908
7909	PR libstdc++/92546 (partial)
7910	* include/Makefile.am: Add new header.
7911	* include/Makefile.in: Regenerate.
7912	* include/bits/int_limits.h: New header.
7913	* include/bits/parse_numbers.h (__select_int::_Select_int): Replace
7914	numeric_limits with __detail::__int_limits.
7915	* include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
7916	(__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
7917	Likewise.
7918	* include/std/charconv (__to_chars_8, __from_chars_binary)
7919	(__from_chars_alpha_to_num, from_chars): Likewise.
7920	* include/std/memory_resource (polymorphic_allocator::allocate)
7921	(polymorphic_allocator::allocate_object): Likewise.
7922	* include/std/string_view (basic_string_view::_S_compare): Likewise.
7923	* include/std/utility (in_range): Likewise.
7924	* testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
7925	extra error about incomplete type __int_limits<bool>.
7926	* testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
7927	* testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
7928	* testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
7929	* testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
7930	* testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
7931	* testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
7932	* testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
7933	* testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
7934	* testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
7935	* testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
7936	* testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
7937	* testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
7938
7939	* python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
7940	value for partial_ordering::unordered.
7941
7942	* include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
7943	const-qualified expression variations.
7944	* include/std/concepts (copyable): Likewise.
7945
7946	* include/std/type_traits (__is_standard_integer): New helper trait.
7947	* include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
7948	(cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
7949	* include/std/version (__cpp_lib_integer_comparison_functions): Define.
7950	* testsuite/20_util/integer_comparisons/1.cc: New test.
7951	* testsuite/20_util/integer_comparisons/2.cc: New test.
7952	* testsuite/20_util/integer_comparisons/equal.cc: New test.
7953	* testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
7954	* testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
7955	* testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
7956	* testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
7957	* testsuite/20_util/integer_comparisons/in_range.cc: New test.
7958	* testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
7959	* testsuite/20_util/integer_comparisons/less.cc: New test.
7960	* testsuite/20_util/integer_comparisons/less_equal.cc: New test.
7961	* testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
7962	* testsuite/20_util/integer_comparisons/less_neg.cc: New test.
7963	* testsuite/20_util/integer_comparisons/not_equal.cc: New test.
7964	* testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
7965
79662020-02-16  Patrick Palka  <ppalka@redhat.com>
7967
7968	* include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
7969	Move code after an early exit constexpr if to under an else branch.
7970	* include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
7971
79722020-02-15  Patrick Palka  <ppalka@redhat.com>
7973
7974	* include/bits/ranges_algo.h: Adjust whitespace and formatting.
7975	* include/bits/ranges_algobase.h: Likewise.
7976	* include/bits/ranges_uninitialized.h: Likewise.
7977
7978	* include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
7979	binary_search, copy_if, count, count_if, equal_range, find, find_end,
7980	find_first_of, find_if, find_if_not, for_each, generate, generate_n,
7981	includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
7982	is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
7983	lower_bound, make_heap, max, max_element, merge, min, min_element,
7984	minmax, minmax_element, mismatch, next_permutation, none_of,
7985	nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
7986	partition_point, pop_heap, prev_permutation, push_heap, remove,
7987	remove_copy, remove_copy_if, remove_if, replace, replace_copy,
7988	replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
7989	search, search_n, set_difference, set_intersection,
7990	set_symmetric_difference, set_union, shuffle, sort, sort_heap,
7991	stable_partition, stable_sort, swap_ranges, transform, unique,
7992	unique_copy, upper_bound): Convert into function objects.
7993	* include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
7994	fill, move_backward, copy_backward): Likewise.
7995	* include/bits/ranges_uninitialized.h (uninitialized_default_construct,
7996	uninitialized_default_construct_n, uninitialized_value_construct,
7997	uninitialized_value_construct_n, uninitialized_copy,
7998	uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
7999	uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
8000	destroy, destroy_n): Likewise.
8001
8002	* include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
8003	(ranges::find_end): ... here.
8004	(ranges::__lexicographical_compare): Fold into ...
8005	(ranges::lexicographical_compare): ... here.
8006	* include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
8007	(ranges::equal): ... here.
8008
80092020-02-15  Jonathan Wakely  <jwakely@redhat.com>
8010
8011	* include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
8012	* include/std/deque: Likewise.
8013	* include/std/forward_list: Likewise.
8014	* include/std/list: Likewise.
8015	* include/std/string: Likewise.
8016	* include/std/vector: Likewise.
8017	* include/std/version: Likewise.
8018	* testsuite/23_containers/deque/erasure.cc: Test for new value.
8019	* testsuite/23_containers/forward_list/erasure.cc: Likewise.
8020	* testsuite/23_containers/list/erasure.cc: Likewise.
8021	* testsuite/23_containers/map/erasure.cc: Likewise.
8022	* testsuite/23_containers/set/erasure.cc: Likewise.
8023	* testsuite/23_containers/unordered_map/erasure.cc: Likewise.
8024	* testsuite/23_containers/unordered_set/erasure.cc: Likewise.
8025	* testsuite/23_containers/vector/erasure.cc: Likewise.
8026
80272020-02-15  Jonathan Wakely  <jwakely@redhat.com>
8028
8029	* include/bits/random.h (uniform_random_bit_generator): Require min()
8030	and max() to be constant expressions and min() to be less than max().
8031	* testsuite/26_numerics/random/concept.cc: Check additional cases.
8032	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
8033
80342020-02-13  Patrick Palka  <ppalka@redhat.com>
8035
8036	* include/Makefile.am: Add <bits/ranges_uninitialized.h>.
8037	* include/Makefile.in: Regenerate.
8038	* include/bits/ranges_uninitialized.h: New header.
8039	* include/std/memory: Include it.
8040	* testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
8041	test.
8042	* .../uninitialized_copy/constrained.cc: New test.
8043	* .../uninitialized_default_construct/constrained.cc: New test.
8044	* .../uninitialized_fill/constrained.cc: New test.
8045	* .../uninitialized_move/constrained.cc: New test.
8046	* .../uninitialized_value_construct/constrained.cc: New test.
8047
8048	* include/Makefile.am: Add bits/ranges_algobase.h
8049	* include/Makefile.in: Regenerate.
8050	* bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
8051	existing #includes.
8052	(__detail::__is_normal_iterator, __detail::is_reverse_iterator,
8053	__detail::__is_move_iterator, copy_result, move_result,
8054	__equal, equal, copy_result, move_result, move_backward_result,
8055	copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
8056	move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
8057	fill): Split out into ...
8058	* bits/range_algobase.h: ... this new header.
8059
80602020-02-12  Patrick Palka  <ppalka@redhat.com>
8061
8062	LWG 3389 and LWG 3390
8063	* include/bits/stl_iterator.h (move_move_iterator): Use std::move when
8064	constructing the move_iterator with __i.
8065	(counted_iterator::counted_iterator): Use std::move when initializing
8066	M_current with __i.
8067	* testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
8068	* testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
8069
80702020-02-12  Sandra Loosemore  <sandra@codesourcery.com>
8071
8072	PR libstdc++/79193
8073	PR libstdc++/88999
8074
8075	* configure: Regenerated.
8076
80772020-02-12  François Dumont  <fdumont@gcc.gnu.org>
8078
8079	* include/bits/hashtable.h
8080	(_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
8081	missing std namespace qualification to forward call.
8082
80832020-02-09  Jonathan Wakely  <jwakely@redhat.com>
8084
8085	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
8086	comment.
8087	* testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
8088
8089	* include/std/ranges: Fix non-ASCII characters in comment.
8090
8091	* include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
8092	equality comparison to be valid and return bool.
8093	(__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
8094	* testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
8095	type with ambiguous conversion to fundamental types.
8096	* testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
8097
80982020-02-07  Jonathan Wakely  <jwakely@redhat.com>
8099
8100	* include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
8101	Use remove_cvref_t.
8102	(readable_traits): Rename to indirectly_readable_traits.
8103	(readable): Rename to indirectly_readable.
8104	(writable): Rename to indirectly_writable.
8105	(__detail::__iter_exchange_move): Do not use remove_reference_t.
8106	(indirectly_swappable): Adjust requires expression parameter types.
8107	expression.
8108	* include/bits/ranges_algo.h (ranges::transform, ranges::replace)
8109	(ranges::replace_if, ranges::generate_n, ranges::generate)
8110	(ranges::remove): Use new name for writable.
8111	* include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
8112	Use new name for readable.
8113	* include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
8114	new name for readable_traits.
8115	* testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
8116	* testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
8117	new definition of indirectly_readable.
8118
8119	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
8120	to take parameters of common_iterator, instead of the common_iterator
8121	type itself. Fix argument for __common_iter_has_arrow constraint.
8122	(iterator_traits<common_iterator<I, S>>::pointer): Adjust.
8123
81242020-02-07  Jonathan Wakely  <jwakely@redhat.com>
8125
8126	* include/std/ranges (iota_view): Add braces to prevent -Wempty-body
8127	warning.
8128	(basic_istream_view::_Iterator::operator++()): Add missing return.
8129
81302020-02-07  Patrick Palka  <ppalka@redhat.com>
8131
8132	* include/bits/ranges_algo.h: Remove extraneous &&.
8133
8134	* include/std/ranges (ranges::__detail::__stream_extractable,
8135	ranges::basic_istream_view, ranges::istream_view): Define.
8136	* testsuite/std/ranges/istream_view: New test.
8137
8138	Implement C++20 range adaptors
8139	* include/std/ranges: Include <bits/refwrap.h> and <tuple>.
8140	(subrange::_S_store_size): Mark as const instead of constexpr to
8141	avoid what seems to be a bug in GCC.
8142	(__detail::__box): Give it defaulted copy and move constructors.
8143	(ranges::views::_Single::operator()): Mark constexpr.
8144	(ranges::views::_Iota::operator()): Mark constexpr.
8145	(__detail::Empty): Define.
8146	(ranges::views::__closure::_RangeAdaptor,
8147	ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
8148	ranges::views::all, ranges::__detail::find_if,
8149	ranges::__detail::find_if_not, ranges::__detail::mismatch,
8150	ranges::detail::min, filter_view, ranges::views::filter, transform_view,
8151	ranges::views::transform, take_view, ranges::views::take,
8152	take_while_view, ranges::views::take_while, drop_view,
8153	ranges::views::drop, join_view, ranges::views::join,
8154	__detail::require_constant, __detail::tiny_range, split_view,
8155	ranges::views::split, ranges::views::_Counted, ranges::views::counted,
8156	common_view, ranges::views::common, reverse_view,
8157	ranges::views::reverse,
8158	ranges::views::__detail::__is_reversible_subrange,
8159	ranges::views::__detail::__is_reverse_view, reverse_view,
8160	ranges::views::reverse, __detail::__has_tuple_element, elements_view,
8161	ranges::views::elements, ranges::views::keys, ranges::views::values):
8162	Define.
8163	(views): Alias for ranges::views.
8164	(tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
8165	tuple_element<1, ranges::subrange>): New partial specializations.
8166	* testsuite/std/ranges/adaptors/all.cc: New test.
8167	* testsuite/std/ranges/adaptors/common.cc: Likewise.
8168	* testsuite/std/ranges/adaptors/counted.cc: Likewise.
8169	* testsuite/std/ranges/adaptors/drop.cc: Likewise.
8170	* testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
8171	* testsuite/std/ranges/adaptors/elements.cc: Likewise.
8172	* testsuite/std/ranges/adaptors/filter.cc: Likewise.
8173	* testsuite/std/ranges/adaptors/join.cc: Likewise.
8174	* testsuite/std/ranges/adaptors/reverse.cc: Likewise.
8175	* testsuite/std/ranges/adaptors/split.cc: Likewise.
8176	* testsuite/std/ranges/adaptors/take.cc: Likewise.
8177	* testsuite/std/ranges/adaptors/take_while.cc: Likewise.
8178	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
8179
81802020-02-07  Jonathan Wakely  <jwakely@redhat.com>
8181
8182	* libsupc++/compare (__cmp_cat::type): Define typedef for underlying
8183	type of enumerations and comparison category types.
8184	(__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
8185	(__cmp_cat::_Ncmp::unordered): Change value to 2.
8186	(partial_ordering::_M_value, weak_ordering::_M_value)
8187	(strong_ordering::_M_value): Change type to __cmp_cat::type.
8188	(partial_ordering::_M_is_ordered): Remove data member.
8189	(partial_ordering): Use second bit of _M_value for unordered. Adjust
8190	comparison operators.
8191	(weak_ordering::operator partial_ordering): Simplify to remove
8192	branches.
8193	(operator<=>(unspecified, weak_ordering)): Likewise.
8194	(strong_ordering::operator partial_ordering): Likewise.
8195	(strong_ordering::operator weak_ordering): Likewise.
8196	(operator<=>(unspecified, strong_ordering)): Likewise.
8197	* testsuite/18_support/comparisons/categories/partialord.cc: New test.
8198	* testsuite/18_support/comparisons/categories/strongord.cc: New test.
8199	* testsuite/18_support/comparisons/categories/weakord.cc: New test.
8200
8201	* include/std/ranges (iota_view::_Iterator): Fix typo in name of
8202	__cpp_lib_three_way_comparison macro and use deduced return type for
8203	operator<=>.
8204	* testsuite/std/ranges/iota/iterator.cc: New test.
8205
82062020-02-07  Patrick Palka  <ppalka@redhat.com>
8207	    Jonathan Wakely  <jwakely@redhat.com>
8208
8209	Implement C++20 constrained algorithms
8210	* include/Makefile.am: Add new header.
8211	* include/Makefile.in: Regenerate.
8212	* include/std/algorithm: Include <bits/ranges_algo.h>.
8213	* include/bits/ranges_algo.h: New file.
8214	* testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
8215	* testsuite/25_algorithms/all_of/constrained.cc: New test.
8216	* testsuite/25_algorithms/any_of/constrained.cc: New test.
8217	* testsuite/25_algorithms/binary_search/constrained.cc: New test.
8218	* testsuite/25_algorithms/copy/constrained.cc: New test.
8219	* testsuite/25_algorithms/copy_backward/constrained.cc: New test.
8220	* testsuite/25_algorithms/copy_if/constrained.cc: New test.
8221	* testsuite/25_algorithms/copy_n/constrained.cc: New test.
8222	* testsuite/25_algorithms/count/constrained.cc: New test.
8223	* testsuite/25_algorithms/count_if/constrained.cc: New test.
8224	* testsuite/25_algorithms/equal/constrained.cc: New test.
8225	* testsuite/25_algorithms/equal_range/constrained.cc: New test.
8226	* testsuite/25_algorithms/fill/constrained.cc: New test.
8227	* testsuite/25_algorithms/fill_n/constrained.cc: New test.
8228	* testsuite/25_algorithms/find/constrained.cc: New test.
8229	* testsuite/25_algorithms/find_end/constrained.cc: New test.
8230	* testsuite/25_algorithms/find_first_of/constrained.cc: New test.
8231	* testsuite/25_algorithms/find_if/constrained.cc: New test.
8232	* testsuite/25_algorithms/find_if_not/constrained.cc: New test.
8233	* testsuite/25_algorithms/for_each/constrained.cc: New test.
8234	* testsuite/25_algorithms/generate/constrained.cc: New test.
8235	* testsuite/25_algorithms/generate_n/constrained.cc: New test.
8236	* testsuite/25_algorithms/heap/constrained.cc: New test.
8237	* testsuite/25_algorithms/includes/constrained.cc: New test.
8238	* testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
8239	* testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
8240	* testsuite/25_algorithms/is_permutation/constrained.cc: New test.
8241	* testsuite/25_algorithms/is_sorted/constrained.cc: New test.
8242	* testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
8243	* testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
8244	test.
8245	* testsuite/25_algorithms/lower_bound/constrained.cc: New test.
8246	* testsuite/25_algorithms/max/constrained.cc: New test.
8247	* testsuite/25_algorithms/max_element/constrained.cc: New test.
8248	* testsuite/25_algorithms/merge/constrained.cc: New test.
8249	* testsuite/25_algorithms/min/constrained.cc: New test.
8250	* testsuite/25_algorithms/min_element/constrained.cc: New test.
8251	* testsuite/25_algorithms/minmax/constrained.cc: New test.
8252	* testsuite/25_algorithms/minmax_element/constrained.cc: New test.
8253	* testsuite/25_algorithms/mismatch/constrained.cc: New test.
8254	* testsuite/25_algorithms/move/constrained.cc: New test.
8255	* testsuite/25_algorithms/move_backward/constrained.cc: New test.
8256	* testsuite/25_algorithms/next_permutation/constrained.cc: New test.
8257	* testsuite/25_algorithms/none_of/constrained.cc: New test.
8258	* testsuite/25_algorithms/nth_element/constrained.cc: New test.
8259	* testsuite/25_algorithms/partial_sort/constrained.cc: New test.
8260	* testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
8261	* testsuite/25_algorithms/partition/constrained.cc: New test.
8262	* testsuite/25_algorithms/partition_copy/constrained.cc: New test.
8263	* testsuite/25_algorithms/partition_point/constrained.cc: New test.
8264	* testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
8265	* testsuite/25_algorithms/remove/constrained.cc: New test.
8266	* testsuite/25_algorithms/remove_copy/constrained.cc: New test.
8267	* testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
8268	* testsuite/25_algorithms/remove_if/constrained.cc: New test.
8269	* testsuite/25_algorithms/replace/constrained.cc: New test.
8270	* testsuite/25_algorithms/replace_copy/constrained.cc: New test.
8271	* testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
8272	* testsuite/25_algorithms/replace_if/constrained.cc: New test.
8273	* testsuite/25_algorithms/reverse/constrained.cc: New test.
8274	* testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
8275	* testsuite/25_algorithms/rotate/constrained.cc: New test.
8276	* testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
8277	* testsuite/25_algorithms/search/constrained.cc: New test.
8278	* testsuite/25_algorithms/search_n/constrained.cc: New test.
8279	* testsuite/25_algorithms/set_difference/constrained.cc: New test.
8280	* testsuite/25_algorithms/set_intersection/constrained.cc: New test.
8281	* testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
8282	test.
8283	* testsuite/25_algorithms/set_union/constrained.cc: New test.
8284	* testsuite/25_algorithms/shuffle/constrained.cc: New test.
8285	* testsuite/25_algorithms/sort/constrained.cc: New test.
8286	* testsuite/25_algorithms/stable_partition/constrained.cc: New test.
8287	* testsuite/25_algorithms/stable_sort/constrained.cc: New test.
8288	* testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
8289	* testsuite/25_algorithms/transform/constrained.cc: New test.
8290	* testsuite/25_algorithms/unique/constrained.cc: New test.
8291	* testsuite/25_algorithms/unique_copy/constrained.cc: New test.
8292	* testsuite/25_algorithms/upper_bound/constrained.cc: New test.
8293
82942020-02-06  Jonathan Wakely  <jwakely@redhat.com>
8295
8296	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
8297	number in comment. Fix indentation.
8298
8299	* include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
8300	redundant _GLIBCXX20_CONSTEXPR.
8301
8302	* include/std/ranges (viewable_range): Replace decay_t with
8303	remove_cvref_t (LWG 3375).
8304
83052020-02-05  Jonathan Wakely  <jwakely@redhat.com>
8306
8307	* include/bits/iterator_concepts.h (iter_reference_t)
8308	(iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
8309	Remove workarounds for PR c++/67704.
8310	* testsuite/24_iterators/aliases.cc: New test.
8311
83122020-02-05  Patrick Palka  <ppalka@redhat.com>
8313
8314	* include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
8315	when initializing _M_current.
8316	(move_iterator::base): Split into two overloads differing in
8317	ref-qualifiers as in P1207R4 for C++20.
8318
83192020-02-04  Jonathan Wakely  <jwakely@redhat.com>
8320
8321	* include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
8322	use.
8323
8324	PR libstdc++/93562
8325	* include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
8326	(unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
8327	* testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
8328
83292020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
8330
8331	* configure: Regenerate.
8332
83332020-01-31  Patrick Palka  <ppalka@redhat.com>
8334
8335	* testsuite/24_iterators/range_operations/distance.cc: Do not assume
8336	test_range::end() returns the same type as test_range::begin().
8337	* testsuite/24_iterators/range_operations/next.cc: Likewise.
8338	* testsuite/24_iterators/range_operations/prev.cc: Likewise.
8339	* testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
8340	Always return a sentinel<I>.
8341
83422020-01-29  Jonathan Wakely  <jwakely@redhat.com>
8343
8344	PR libstdc++/92895
8345	* include/std/stop_token (stop_token::stop_possible()): Call new
8346	_M_stop_possible() function.
8347	(stop_token::stop_requested()): Do not use stop_possible().
8348	(stop_token::binary_semaphore): New class, as temporary stand-in for
8349	std::binary_semaphore.
8350	(stop_token::_Stop_cb::_M_callback): Add noexcept to type.
8351	(stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
8352	New data members for symchronization with stop_callback destruction.
8353	(stop_token::_Stop_cb::_Stop_cb): Make non-template.
8354	(stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
8355	Remove.
8356	(stop_token::_Stop_cb::_M_run): New member function.
8357	(stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
8358	Remove.
8359	(stop_token::_Stop_state::_M_owners): New data member to track
8360	reference count for ownership.
8361	(stop_token::_Stop_state::_M_value): New data member combining a
8362	spinlock, the stop requested flag, and the reference count for
8363	associated stop_source objects.
8364	(stop_token::_Stop_state::_M_requester): New data member for
8365	synchronization with stop_callback destruction.
8366	(stop_token::_Stop_state::_M_stop_possible()): New member function.
8367	(stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
8368	of _M_value.
8369	(stop_token::_Stop_state::_M_add_owner)
8370	(stop_token::_Stop_state::_M_release_ownership)
8371	(stop_token::_Stop_state::_M_add_ssrc)
8372	(stop_token::_Stop_state::_M_sub_ssrc): New member functions for
8373	updating reference counts.
8374	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
8375	(stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
8376	(stop_token::_Stop_state::_M_try_lock)
8377	(stop_token::_Stop_state::_M_try_lock_and_stop)
8378	(stop_token::_Stop_state::_M_do_try_lock): New member functions for
8379	managing spinlock.
8380	(stop_token::_Stop_state::_M_request_stop): Use atomic operations to
8381	read and update state. Release lock while running callbacks. Use new
8382	data members to synchronize with callback destruction.
8383	(stop_token::_Stop_state::_M_remove_callback): Likewise.
8384	(stop_token::_Stop_state::_M_register_callback): Use atomic operations
8385	to read and update state.
8386	(stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
8387	replacing shared_ptr.
8388	(stop_source::stop_source(const stop_source&)): Update reference count.
8389	(stop_source::operator=(const stop_source&)): Likewise.
8390	(stop_source::~stop_source()): Likewise.
8391	(stop_source::stop_source(stop_source&&)): Define as defaulted.
8392	(stop_source::operator=(stop_source&&)): Establish postcondition on
8393	parameter.
8394	(stop_callback): Enforce preconditions on template parameter. Replace
8395	base class with data member of new _Cb_impl type.
8396	(stop_callback::stop_callback(const stop_token&, Cb&&))
8397	(stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
8398	(stop_callback::_Cb_impl): New type wrapping _Callback member and
8399	defining the _S_execute member function.
8400	* testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
8401	test.
8402	* testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
8403	* testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
8404	* testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
8405	New test.
8406	* testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
8407	test.
8408	* testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
8409	* testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
8410	* testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
8411	test.
8412
8413	* libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
8414	three_way_comparable_with.
8415	(__detail::__3way_cmp_with): Remove workaround for fixed bug.
8416	(compare_three_way::operator()): Remove redundant constraint from
8417	requires-clause.
8418	(__detail::_Synth3way::operator()): Use three_way_comparable_with
8419	instead of workaround.
8420	* testsuite/18_support/comparisons/object/93479.cc: Prune extra
8421	output due to simplified constraints on compare_three_way::operator().
8422
8423	PR libstdc++/93479
8424	* libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
8425	* testsuite/18_support/comparisons/object/93479.cc: New test.
8426
8427	* testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
8428	returns the same type as test_range::begin(). Add comments.
8429	* testsuite/std/ranges/access/rbegin.cc: Likewise.
8430	* testsuite/std/ranges/access/rend.cc: Likewise.
8431	* testsuite/std/ranges/range.cc: Do not assume the sentinel for
8432	test_range is the same as its iterator type.
8433	* testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
8434	operator- overloads to satisfy sized_sentinel_for when the iterator
8435	satisfies random_access_iterator.
8436
84372020-01-28  Jonathan Wakely  <jwakely@redhat.com>
8438
8439	PR libstdc++/93470
8440	* include/bits/refwrap.h (reference_wrapper::operator()): Restrict
8441	static assertion to object types.
8442
8443	PR libstdc++/93325
8444	* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
8445	clock_gettime instead of explicit glibc version check.
8446	* configure: Regenerate.
8447
84482020-01-28  Martin Liska  <mliska@suse.cz>
8449
8450	PR libstdc++/93478
8451	* include/std/atomic: Fix typo.
8452	* include/std/optional: Likewise.
8453
84542020-01-27  Andrew Burgess  <andrew.burgess@embecosm.com>
8455
8456	* configure: Regenerate.
8457
84582020-01-27  Jonathan Wakely  <jwakely@redhat.com>
8459
8460	PR libstdc++/93426
8461	* include/std/span (span): Fix deduction guide.
8462	* testsuite/23_containers/span/deduction.cc: New test.
8463
84642020-01-24  Jonathan Wakely  <jwakely@redhat.com>
8465
8466	* libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
8467	(__cmp_cat::_Ord::equivalent): Add enumerator.
8468	(__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
8469	and greater.
8470	(partial_ordering, weak_ordering, strong_ordering): Remove
8471	constructors taking __cmp_cat::_Eq parameters. Use renamed
8472	enumerators.
8473
84742020-01-24  Maciej W. Rozycki  <macro@wdc.com>
8475
8476	* acinclude.m4: Handle `--with-toolexeclibdir='.
8477	* Makefile.in: Regenerate.
8478	* aclocal.m4: Regenerate.
8479	* configure: Regenerate.
8480	* doc/Makefile.in: Regenerate.
8481	* include/Makefile.in: Regenerate.
8482	* libsupc++/Makefile.in: Regenerate.
8483	* po/Makefile.in: Regenerate.
8484	* python/Makefile.in: Regenerate.
8485	* src/Makefile.in: Regenerate.
8486	* src/c++11/Makefile.in: Regenerate.
8487	* src/c++17/Makefile.in: Regenerate.
8488	* src/c++98/Makefile.in: Regenerate.
8489	* src/filesystem/Makefile.in: Regenerate.
8490	* testsuite/Makefile.in: Regenerate.
8491
84922020-01-23  Alexandre Oliva <oliva@adacore.com>
8493
8494	* crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
8495	* configure: Rebuild.
8496
8497	* testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
8498
84992020-01-23  Jonathan Wakely  <jwakely@redhat.com>
8500
8501	PR libstdc++/91947
8502	* include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
8503	rule.
8504	* include/Makefile.in: Regenerate.
8505
85062020-01-20  Jonathan Wakely  <jwakely@redhat.com>
8507
8508	* doc/xml/faq.xml: Fix grammar.
8509	* doc/xml/manual/appendix_contributing.xml: Improve instructions.
8510	* doc/xml/manual/spine.xml: Update copyright years.
8511	* doc/html/*: Regenerate.
8512
85132020-01-19  Eric S. Raymond <esr@thyrsus.com>
8514
8515	* doc/xml/faq.xml: Update for SVN -> Git transition.
8516	* doc/xml/manual/appendix_contributing.xml: Likewise.
8517	* doc/xml/manual/status_cxx1998.xml: Likewise.
8518	* doc/xml/manual/status_cxx2011.xml: Likewise.
8519	* doc/xml/manual/status_cxx2014.xml: Likewise.
8520	* doc/xml/manual/status_cxx2017.xml: Likewise.
8521	* doc/xml/manual/status_cxx2020.xml: Likewise.
8522	* doc/xml/manual/status_cxxtr1.xml: Likewise.
8523	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
8524
85252020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
8526
8527	* include/Makefile.am: Add coroutine to the std set.
8528	* include/Makefile.in: Regenerated.
8529	* include/std/coroutine: New file.
8530
85312020-01-17  Jonathan Wakely  <jwakely@redhat.com>
8532
8533	PR libstdc++/92376
8534	* include/bits/c++config: Only do PSTL config when the header is
8535	present, to fix freestanding.
8536	* libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
8537	functions if they were detected by configure.
8538
85392020-01-16  Kai-Uwe Eckhardt  <kuehro@gmx.de>
8540	    Matthew Bauer  <mjbauer95@gmail.com>
8541	    Jonathan Wakely  <jwakely@redhat.com>
8542
8543	PR bootstrap/64271 (partial)
8544	* config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
8545	to unsigned short.
8546	(ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
8547	(ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
8548	definitions with NetBSD upstream.
8549	(ctype_base::blank): Use _CTYPE_BL.
8550	* config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
8551	Declaration.
8552	(ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
8553	(ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
8554	parameters to unsigned char.
8555	* config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
8556
85572020-01-16  François Dumont  <fdumont@gcc.gnu.org>
8558
8559	PR libstdc++/91263
8560	* include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
8561	* include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
8562	(_Equality_base): Remove.
8563	(_Equality<>::_M_equal): Review implementation. Use
8564	std::is_permutation.
8565	* testsuite/23_containers/unordered_multiset/operators/1.cc
8566	(Hash, Equal, test02, test03): New.
8567	* testsuite/23_containers/unordered_set/operators/1.cc
8568	(Hash, Equal, test02, test03): New.
8569
85702020-01-15  Jonathan Wakely  <jwakely@redhat.com>
8571
8572	PR libstdc++/93267
8573	* include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
8574	Move here from <bits/range_access.h> and define using __int128 when
8575	available.
8576	(__is_integer_like, __is_signed_integer_like): Move here from
8577	<bits/range_access.h>.
8578	(weakly_incrementable): Use __is_signed_integer_like.
8579	* include/bits/range_access.h (__max_diff_type, __max_size_type)
8580	(__is_integer_like, __is_signed_integer_like): Move to
8581	<bits/iterator_concepts.h>.
8582	(__make_unsigned_like_t): Move here from <ranges>.
8583	* include/std/ranges (__make_unsigned_like_t): Move to
8584	<bits/range_access.h>.
8585	(iota_view): Replace using-directive with using-declarations.
8586	* testsuite/std/ranges/iota/93267.cc: New test.
8587	* testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
8588
85892020-01-13  Jonathan Wakely  <jwakely@redhat.com>
8590
8591	PR libstdc++/93244
8592	* include/bits/fs_path.h (path::generic_string<C,A>)
8593	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
8594	* testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
8595	root-dir is converted to forward slash in generic pathname.
8596	* testsuite/27_io/filesystem/path/generic/utf.cc: New test.
8597	* testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
8598
8599	PR libstdc++/58605
8600	* include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
8601	Define.
8602	(__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
8603	(__atomic_float): Add default member initializer for C++20.
8604	* include/std/atomic (atomic): Likewise.
8605	(atomic::atomic()): Remove noexcept-specifier on default constructor.
8606	* include/std/version (__cpp_lib_atomic_value_initialization): Define.
8607	* testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
8608	number.
8609	* testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
8610	* testsuite/29_atomics/atomic/cons/value_init.cc: New test.
8611	* testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
8612	* testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
8613	expected result for is_trivially_default_constructible.
8614	* testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
8615	* testsuite/29_atomics/atomic_float/value_init.cc: New test.
8616	* testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
8617	* testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
8618	* testsuite/29_atomics/atomic_integral/cons/value_init.cc
8619	* testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
8620	expected results for is_trivially_default_constructible.
8621	* testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
8622	new test generator.
8623
86242020-01-10  Jonathan Wakely  <jwakely@redhat.com>
8625
8626	* testsuite/util/testsuite_iterators.h: Improve comment.
8627
8628	* testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
8629	initialization syntax.
8630
8631	PR libstdc++/92285
8632	* include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
8633	of base class independent of __cplusplus value.
8634	[__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
8635	type defined in the base class
8636	* testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
8637	* testsuite/24_iterators/istreambuf_iterator/requirements/
8638	base_classes.cc: Adjust expected base class for C++98.
8639
86402020-01-09  Olivier Hainque  <hainque@adacore.com>
8641
8642	* doc/xml/manual/appendix_contributing.xml: Document _C2
8643	as a reserved identifier, by VxWorks.
8644	* include/bits/stl_map.h: Rename _C2 template typenames	as _Cmp2.
8645	* include/bits/stl_multimap.h: Likewise.
8646
86472020-01-09  Jonathan Wakely  <jwakely@redhat.com>
8648
8649	* include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
8650	(_ExtPtr_allocator::operator!=): Add missing const qualifiers.
8651	* include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
8652	partial specialization to disambiguate the two constrained
8653	specializations.
8654
8655	* include/experimental/type_traits (experimental::is_pod_v): Disable
8656	-Wdeprecated-declarations warnings around reference to std::is_pod.
8657	* include/std/type_traits (is_pod_v): Likewise.
8658	* testsuite/18_support/max_align_t/requirements/2.cc: Also check
8659	is_standard_layout and is_trivial. Do not check is_pod for C++20.
8660	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
8661	Add -Wno-deprecated for C++20.
8662	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
8663	* testsuite/20_util/is_pod/value.cc: Likewise.
8664	* testsuite/experimental/type_traits/value.cc: Likewise.
8665
86662020-01-09  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
8667
8668	* include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
8669	* include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
8670	* testuite/20_util/is_pod/deprecated-2a.cc: New test.
8671
86722020-01-09  Jonathan Wakely  <jwakely@redhat.com>
8673
8674	PR libstdc++/93205
8675	* include/bits/random.h (operator>>): Check stream operation succeeds.
8676	* include/bits/random.tcc (operator<<): Remove redundant __ostream_type
8677	typedefs.
8678	(operator>>): Remove redundant __istream_type typedefs. Check stream
8679	operations succeed.
8680	(__extract_params): New function to fill a vector from a stream.
8681	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
8682
8683	PR libstdc++/93208
8684	* config/abi/pre/gnu.ver: Add new exports.
8685	* include/std/memory_resource (memory_resource::~memory_resource()):
8686	Do not define inline.
8687	(monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
8688	* src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
8689	Define.
8690	(monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
8691	* testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
8692
86932020-01-09  François Dumont  <fdumont@gcc.gnu.org>
8694
8695	PR libstdc++/92124
8696	* include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
8697	template alias.
8698	(_Hashtable<>::__fwd_value_for): New.
8699	(_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
8700	parameter.
8701	(_Hashtable<>::_M_assign<>): Add _Ht template parameter.
8702	(_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
8703	(_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
8704	with std::move.
8705	(_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
8706	(_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
8707	Adapt.
8708	(_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
8709	Adapt.
8710	* testsuite/23_containers/unordered_set/92124.cc: New.
8711
87122020-01-08  Jonathan Wakely  <jwakely@redhat.com>
8713
8714	PR libstdc++/93201
8715	* src/c++17/fs_ops.cc (do_remove_all): New function implementing more
8716	detailed error reporting for remove_all. Check result of recursive
8717	call before incrementing iterator.
8718	(remove_all(const path&), remove_all(const path&, error_code&)): Use
8719	do_remove_all.
8720	* src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
8721	result of recursive call before incrementing iterator.
8722	* testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
8723	are reported correctly.
8724	* testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
8725
87262020-01-07  Thomas Rodgers  <trodgers@redhat.com>
8727
8728	* include/std/condition_variable
8729	(condition_variable_any::wait_on): Rename to match current draft
8730	standard.
8731	(condition_variable_any::wait_on_until): Likewise.
8732	(condition_variable_any::wait_on_for): Likewise.
8733	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
8734	Adjust tests to account for renamed methods.
8735
87362020-01-07  François Dumont  <fdumont@gcc.gnu.org>
8737
8738	PR libstdc++/92124
8739	* include/bits/stl_tree.h
8740	(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
8741	std::move_if_noexcept by std::move.
8742	* testsuite/23_containers/map/92124.cc: New.
8743	* testsuite/23_containers/set/92124.cc: New.
8744
87452020-01-06  Jonathan Wakely  <jwakely@redhat.com>
8746
8747	* include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
8748	(stop_source): Likewise (LWG 3362).
8749	* testsuite/30_threads/stop_token/stop_source.cc: Test equality
8750	comparisons.
8751
8752	* include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
8753	(lexicographical_compare_three_way): Do not depend on
8754	__cpp_lib_concepts.
8755	* include/std/version (__cpp_lib_three_way_comparison): Only define
8756	when __cpp_lib_concepts is defined.
8757	* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
8758
87592020-01-03  Jonathan Wakely  <jwakely@redhat.com>
8760
8761	* include/bits/stl_algobase.h (lexicographical_compare_three_way):
8762	Only define four-argument overload when __cpp_lib_concepts is defined.
8763
87642020-01-01  John David Anglin  <danglin@gcc.gnu.org>
8765
8766	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
8767
87682020-01-01  Jakub Jelinek  <jakub@redhat.com>
8769
8770	Update copyright years.
8771
8772Copyright (C) 2020 Free Software Foundation, Inc.
8773
8774Copying and distribution of this file, with or without modification,
8775are permitted in any medium without royalty provided the copyright
8776notice and this notice are preserved.
8777