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