Suppress -fstack-protector warning on hppa.
[official-gcc.git] / libstdc++-v3 / ChangeLog
bloba32cff8e421a83cc3a050458b7f23df0ee94a6f8
1 2022-12-15  Jakub Jelinek  <jakub@redhat.com>
3         PR libstdc++/108075
4         * config/abi/pre/gnu.ver (CXXABI_1.3.14): Export
5         _ZTIDF[0-9]*[_bx], _ZTIPDF[0-9]*[_bx] and _ZTIPKDF[0-9]*[_bx].
6         * testsuite/util/testsuite_abi.cc (check_version): Handle
7         CXXABI_1.3.14.
9 2022-12-14  Jonathan Wakely  <jwakely@redhat.com>
11         PR libstdc++/108097
12         * include/std/stacktrace (basic_stracktrace::_Impl): Do not
13         multiply N by sizeof(value_type) when allocating.
15 2022-12-13  Jakub Jelinek  <jakub@redhat.com>
17         * src/libbacktrace/backtrace-rename.h (backtrace_uncompress_zstd):
18         Define.
20 2022-12-12  Jonathan Wakely  <jwakely@redhat.com>
22         * testsuite/20_util/duration/arithmetic/overflow_c++20.cc: New
23         test.
25 2022-12-12  Jonathan Wakely  <jwakely@redhat.com>
27         PR libstdc++/108024
28         * include/std/format (basic_format_string): Fix constraint.
29         * testsuite/std/format/format_string.cc: New test.
31 2022-12-12  Jonathan Wakely  <jwakely@redhat.com>
33         * include/std/chrono (hh_mm_ss): Rename __is_unsigned member to
34         _S_is_unsigned.
35         * include/std/format (basic_format_context): Rename _Out_
36         template parameter to _Out2.
37         * testsuite/17_intro/names.cc: Add Windows SAL annotation
38         macros.
40 2022-12-12  Jonathan Wakely  <jwakely@redhat.com>
42         PR libstdc++/98034
43         * include/std/atomic (__cpp_lib_atomic_lock_free_type_aliases):
44         Define macro.
45         (atomic_signed_lock_free, atomic_unsigned_lock_free): Define
46         aliases.
47         * include/std/version (__cpp_lib_atomic_lock_free_type_aliases):
48         Define macro.
49         * testsuite/29_atomics/atomic/lock_free_aliases.cc: New test.
51 2022-12-12  Jonathan Wakely  <jwakely@redhat.com>
53         * include/std/stacktrace (operator<<): Only output to narrow
54         ostreams (LWG 3515).
55         * testsuite/19_diagnostics/stacktrace/synopsis.cc:
57 2022-12-09  Jonathan Wakely  <jwakely@redhat.com>
59         PR libstdc++/108015
60         * include/std/chrono (hh_mm_ss): Remove digit separators.
62 2022-12-09  Jonathan Wakely  <jwakely@redhat.com>
64         * include/ext/pb_ds/detail/type_utils.hpp (PB_DS_STATIC_ASSERT):
65         Add unused attribute to avoid -Wunused-local-typedef warnings.
66         * testsuite/17_intro/tag_type_explicit_ctor.cc: Add pragma to
67         ignore -Wunused-variable warnings
69 2022-12-09  Jonathan Wakely  <jwakely@redhat.com>
71         * include/bits/chrono.h (duration_cast, floor, round, abs, ceil)
72         (time_point_cast): Add [[nodiscard]] attribute and doxygen
73         comments.
74         (treat_as_floating_point): Add doxygen commen.
76 2022-12-09  Jonathan Wakely  <jwakely@redhat.com>
78         * include/bits/chrono.h (duration, time_point): Change 'struct'
79         to 'class'.
81 2022-12-07  Jonathan Wakely  <jwakely@redhat.com>
82             François Dumont  <frs.dumont@gmail.com>
84         * include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
85         (_Error_formatter::_Error_formatter): Pass error handler to
86         __glibcxx_backtrace_create_state. Pass 1 for threaded argument.
87         (_Error_formatter::_S_err): Define empty function.
88         * src/c++11/debug.cc (_Error_formatter::_M_error): Pass error
89         handler to __glibcxx_backtrace_full.
91 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
93         PR libstdc++/107979
94         * testsuite/17_intro/names.cc: Do not check __unused on old
95         Glibc versions.
97 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
99         PR libstdc++/107871
100         * include/std/format (_Iter_sink::_M_overflow): Add cast to
101         size_t.
102         (_Iter_sink<CharT, contiguous_iterator auto>::_M_make_span): Use
103         typedef instead of decltype.
104         * testsuite/std/format/functions/107871.cc: New test.
106 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
108         * include/std/chrono (chrono::hh_mm_ss): Do not use 64-bit
109         representations for all four duration members. Reorder members.
110         (hh_mm_ss::hh_mm_ss()): Define as defaulted.
111         (hh_mm_ss::hh_mm_ss(Duration)): Delegate to a new private
112         constructor, instead of calling chrono::abs repeatedly.
113         * testsuite/std/time/hh_mm_ss/1.cc: Check floating-point
114         representations. Check default constructor. Check sizes.
116 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
118         PR c++/106434
119         * include/bits/vector.tcc (insert(const_iterator, const T&)):
120         Add assertion and optimization hint that the iterator for the
121         insertion point must be non-null.
123 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
125         * include/bits/std_mutex.h (mutex): Add nodiscard attribute to
126         try_lock member function.
127         * include/bits/unique_lock.h (unique_lock): Likewise for
128         try_lock, try_lock_until, try_lock_for member functions, and
129         owns_lock and mutex member functions.
130         * include/std/mutex (recursive_mutex): Likewise for try_lock
131         member function.
132         (timed_mutex, recursive_timed_mutex, try_lock): Likewise for
133         try_lock, try_lock_until, try_lock_for member functions.
134         (try_lock): Likewise for non-member function.
135         * include/std/shared_mutex (shared_mutex): Likewise for try_lock
136         and try_lock_shared member functions.
137         (shared_timed_mutex): Likewise for try_lock, try_lock_for,
138         try_lock_shared, try_lock_shared_for, try_lock_until, and
139         try_lock_shared_until member functions.
140         (shared_lock): Likewise for try_lock, try_lock, try_lock_for,
141         try_lock_until, owns_lock, and mutex member functions.
142         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc:
143         Cast discarded value expression to void.
144         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
145         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
146         * testsuite/30_threads/shared_lock/locking/clock_neg.cc:
147         Likewise.
148         * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
149         Likewise.
150         * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc:
151         Likewise.
152         * testsuite/30_threads/try_lock/4.cc: Likewise.
153         * testsuite/30_threads/unique_lock/cons/60497.cc: Likewise.
154         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
155         * testsuite/30_threads/unique_lock/locking/clock_neg.cc:
156         Likewise.
158 2022-12-06  Jonathan Wakely  <jwakely@redhat.com>
160         * include/std/format (basic_format_parse_context::next_arg_id):
161         Only check arg-id is in range during constant evaluation.
162         * testsuite/std/format/functions/format.cc: Check "{:#Lx}".
163         * testsuite/std/format/parse_ctx.cc: Adjust expected results for
164         format-strings using an out-of-range arg-id.
166 2022-12-04  Iain Sandoe  <iain@sandoe.co.uk>
168         * config/os/bsd/darwin/os_defines.h
169         (_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC): Limit use of this macro
170         to OS versions that need it.
172 2022-12-04  Iain Sandoe  <iain@sandoe.co.uk>
174         * config/os/bsd/darwin/os_defines.h (_GLIBCXX_WEAK_DEFINITION): Use the
175         implementation namespace for the weak attribute.
177 2022-12-02  Björn Schäpers  <bjoern@hazardy.de>
178             Jonathan Wakely  <jwakely@redhat.com>
180         * include/std/stacktrace (stacktrace_entry::_S_err_handler): New
181         static function.
182         (stacktrace_entry, basic_stacktrace): Pass &_S_err_handler to
183         all calls to libbacktrace.
185 2022-11-29  Jonathan Wakely  <jwakely@redhat.com>
187         PR libstdc++/107852
188         PR libstdc++/106199
189         PR libstdc++/100366
190         * include/bits/vector.tcc (vector::_M_fill_insert): Copy
191         _M_start and _M_finish members before allocating.
192         (vector::_M_default_append): Likewise.
193         (vector::_M_range_insert): Likewise.
195 2022-11-29  Jonathan Wakely  <jwakely@redhat.com>
197         * include/bits/stl_iterator_base_types.h (__iterator_category):
198         Add always_inline attribute.
199         * include/bits/stl_vector.h (assign(Iter, Iter)): Call
200         _M_assign_aux directly, instead of _M_assign_dispatch.
201         (insert(const_iterator, Iter, Iter)): Call _M_range_insert
202         directly instead of _M_insert_dispatch.
204 2022-11-29  Jonathan Wakely  <jwakely@redhat.com>
206         * include/std/format: Rename all variables called __used or
207         __packed.
208         * testsuite/17_intro/badnames.cc: Add no_pch options.
209         * testsuite/17_intro/names.cc: Check __packed, __unused and
210         __used.
212 2022-11-28  François Dumont  <fdumont@gcc.gnu.org>
214         * testsuite/20_util/function/cons/70692.cc: Adapt dg-error message.
216 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
218         PR libstdc++/107801
219         * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type
220         from uint32_t to bitset::size_type. Adjust static assertion.
221         (__pool_resource::_Pool::replenish): Cast to size_t after
222         multiplication instead of before.
223         (__pool_resource::_M_alloc_pools): Ensure both arguments to
224         std::max have type size_t.
226 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
228         * include/std/string_view (basic_string_view::copy) Use explicit
229         template argument for call to std::min<size_t>.
230         (basic_string_view::substr): Likewise.
232 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
234         PR libstdc++/107885
235         * libsupc++/hash_bytes.cc (_Hash_bytes): Convert to size_t
236         instead of implicit integer promotion to 16 bits.
238 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
240         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
241         Replace non-ASCII character.
243 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
245         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
246         Simplify dg-prune-output pattern.
247         * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune "::__8".
249 2022-11-28  Jonathan Wakely  <jwakely@redhat.com>
251         PR libstdc++/107466
252         * include/bits/random.h (subtract_with_carry_engine): Use 32-bit
253         type for default seed. Use 0u as default argument for
254         subtract_with_carry_engine(result_type) constructor and
255         seed(result_type) member function.
256         * include/bits/random.tcc (subtract_with_carry_engine): Use
257         32-bit type for default seed and engine used for initial state.
258         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
259         New test.
261 2022-11-25  Jonathan Wakely  <jwakely@redhat.com>
263         * acinclude.m4 (GLIBCXX_CHECK_UCHAR_H): Don't use AC_MSG_RESULT
264         unless the AC_MSG_CHECKING happened.
265         * configure: Regenerate.
267 2022-11-25  Jonathan Wakely  <jwakely@redhat.com>
269         PR libstdc++/107850
270         * include/bits/erase_if.h (__erase_nodes_if): Use non-const
271         reference to the container.
272         * include/experimental/map (erase_if): Likewise.
273         * include/experimental/set (erase_if): Likewise.
274         * include/experimental/unordered_map (erase_if): Likewise.
275         * include/experimental/unordered_set (erase_if): Likewise.
276         * include/std/map (erase_if): Likewise.
277         * include/std/set (erase_if): Likewise.
278         * include/std/unordered_map (erase_if): Likewise.
279         * include/std/unordered_set (erase_if): Likewise.
280         * testsuite/23_containers/map/erasure.cc: Check with
281         const-incorrect predicate.
282         * testsuite/23_containers/set/erasure.cc: Likewise.
283         * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
284         * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
285         * testsuite/experimental/map/erasure.cc: Likewise.
286         * testsuite/experimental/set/erasure.cc: Likewise.
287         * testsuite/experimental/unordered_map/erasure.cc: Likewise.
288         * testsuite/experimental/unordered_set/erasure.cc: Likewise.
290 2022-11-25  Jonathan Wakely  <jwakely@redhat.com>
292         * include/bits/random.h [three_way_comparison] (operator!=):
293         Do not define inequality operators when C++20 three way
294         comparisons are supported.
295         * include/ext/random [three_way_comparison] (operator!=):
296         Likewise.
298 2022-11-25  Jonathan Wakely  <jwakely@redhat.com>
300         * include/bits/stl_iterator_base_funcs.h (__distance):
301         Add always_inline attribute to overload for random
302         access iterators.
303         (advance, distance, next, prev): Add always_inline attribute to
304         inline functions that just forward to another function.
306 2022-11-25  Jonathan Wakely  <jwakely@redhat.com>
308         * doc/html/manual/bugs.html: Regenerate.
309         * doc/xml/manual/intro.xml: Document LWG 3656 change.
310         * include/std/bit (__bit_width, bit_width): Return int.
311         * testsuite/26_numerics/bit/bit.pow.two/lwg3656.cc: New test.
313 2022-11-24  Jonathan Wakely  <jwakely@redhat.com>
315         PR libstdc++/106201
316         * testsuite/27_io/filesystem/iterators/106201.cc: Improve test.
317         * testsuite/experimental/filesystem/iterators/106201.cc: New test.
319 2022-11-24  Jakub Jelinek  <jakub@redhat.com>
321         PR libstdc++/107468
322         * src/c++17/fast_float/MERGE: Adjust for merge from upstream.
323         * src/c++17/fast_float/fast_float.h: Merge from fast_float
324         2ef9abbcf6a11958b6fa685a89d0150022e82e78 commit.
326 2022-11-24  Jakub Jelinek  <jakub@redhat.com>
328         PR libstdc++/107815
329         * testsuite/20_util/to_chars/float128_c++23.cc (test): Disable
330         __FLT128_MAX__ test on Solaris.  Fix up commented out debugging
331         printouts.
333 2022-11-23  Jakub Jelinek  <jakub@redhat.com>
335         PR libstdc++/107811
336         * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): Guard
337         fast_float uses with #if USE_LIB_FAST_FLOAT and for mantissa_bits and
338         exponent_bits provide a fallback.
340 2022-11-23  Jonathan Wakely  <jwakely@redhat.com>
342         PR libstdc++/107814
343         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
344         Use a static buffer with space after it.
346 2022-11-22  Jonathan Wakely  <jwakely@redhat.com>
348         PR libstdc++/107817
349         * include/std/charconv (__from_chars_alnum_to_val): Add
350         constexpr for C++20.
351         * include/std/format (__is_digit, __is_xdigit): New functions.
352         (_Spec::_S_parse_width_or_precision): Use __is_digit.
353         (__formatter_fp::parse): Use __is_xdigit.
355 2022-11-22  Jonathan Wakely  <jwakely@redhat.com>
357         PR libstdc++/106201
358         * testsuite/27_io/filesystem/iterators/106201.cc: New test.
360 2022-11-22  Jonathan Wakely  <jwakely@redhat.com>
362         PR libstdc++/107801
363         * src/c++17/memory_resource.cc (pool_sizes): Disable large pools
364         for targets with 16-bit int.
366 2022-11-21  Jonathan Wakely  <jwakely@redhat.com>
368         * include/std/functional (_Bind_front0): New class template.
369         (_Bind_front_t): Use _Bind_front0 when there are no bound
370         arguments.
371         * testsuite/20_util/function_objects/bind_front/107784.cc:
372         New test.
374 2022-11-21  Jonathan Wakely  <jwakely@redhat.com>
376         * include/bits/chrono.h (duration): Check preconditions on
377         template arguments before using them.
379 2022-11-21  Jonathan Wakely  <jwakely@redhat.com>
381         * include/std/tuple: Add better Doxygen comments.
383 2022-11-21  Martin Liska  <mliska@suse.cz>
385         * src/experimental/Makefile.in: Re-configure.
387 2022-11-20  François Dumont  <fdumont@gcc.gnu.org>
389         * include/std/format: Add std qualification on isxdigit calls.
391 2022-11-19  Jonathan Wakely  <jwakely@redhat.com>
393         * include/bits/range_access.h: Add always_inline attribute to
394         trivial functions.
396 2022-11-19  Jonathan Wakely  <jwakely@redhat.com>
398         * include/std/format: Fix -Wsign-compare warnings.
400 2022-11-19  Jonathan Wakely  <jwakely@redhat.com>
402         * include/bits/ptr_traits.h (pointer_traits::pointer_to): Rename
403         parameter.
405 2022-11-19  Jonathan Wakely  <jwakely@redhat.com>
407         PR libstdc++/107649
408         * include/std/complex (__complex_proj): Fix requires-clause.
410 2022-11-19  Jeff Chapman II  <jchapman@lock3software.com>
411             Andrew Marmaduke  <amarmaduke@lock3software.com>
412             Jason Merrill   <jason@redhat.com>
414         * acinclude.m4 (glibcxx_SUBDIRS): Add src/experimental.
415         * include/Makefile.am (experimental_headers): Add contract.
416         * include/Makefile.in: Regenerate.
417         * src/Makefile.am (SUBDIRS): Add experimental.
418         * src/Makefile.in: Regenerate.
419         * configure: Regenerate.
420         * src/experimental/contract.cc: New file.
421         * src/experimental/Makefile.am: New file.
422         * src/experimental/Makefile.in: New file.
423         * include/experimental/contract: New file.
425 2022-11-17  Jonathan Wakely  <jwakely@redhat.com>
427         PR libstdc++/107720
428         * include/std/format [_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT]:
429         Declare overloads of std::to_chars for the alternative long
430         double type.
432 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
434         PR libstdc++/107720
435         * include/std/format (__format::_Arg_t): Fix typo in enumerator
436         name.
437         (_Arg_value::_S_get): Fix missing semi-colons.
439 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
441         * include/std/chrono (get_leap_second_info): Optimize.
443 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
445         PR libstdc++/107712
446         * include/std/format (__format::__formatter_int::format): Use
447         std::toupper when __builtin_toupper isn't available.
448         (basic_format_arg::handle): Add 'typename'.
449         * include/std/complex (complex<T>): Add 'typename'.
451 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
453         * include/std/format [__FLT128_DIG__] (_GLIBCXX_FORMAT_F128):
454         Only support formatting _Float128 when glibc provides the
455         functionality needed for accurate std::to_chars.
457 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
459         * testsuite/std/time/clock/utc/1.cc: Check handling across leap
460         second insertion.
462 2022-11-16  Patrick Palka  <ppalka@redhat.com>
464         PR libstdc++/107701
465         * include/std/iostream (__ioinit): Adjust comment.
466         * src/c++98/globals_io.cc: Include "io_base_init.h" here
467         instead of ...
468         * src/c++98/ios_init.cc: ... here.
469         * src/c++98/ios_base_init.h (__ioinit): More comments.
470         * testsuite/17_intro/static.cc: dg-do run instead of just link.
472 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
473             Jonathan Wakely  <jwakely@redhat.com>
475         PR libstdc++/107649
476         * include/std/complex (__complex_abs, __complex_arg, __complex_cos,
477         __complex_cosh, __complex_exp, __complex_log, __complex_sin,
478         __complex_sinh, __complex_sqrt, __complex_tan, __complex_tanh,
479         __complex_pow): Move __complex__ _Float{16,32,64,128} and
480         __complex__ decltype(0.0bf16) overloads earlier in the file.
481         (complex): Fix up requires on the partial specialization for extended
482         float types.
483         (__complex_acos, __complex_asin, __complex_atan, __complex_acosh,
484         __complex_asinh, __complex_atanh): Move
485         __complex__ _Float{16,32,64,128} and __complex__ decltype(0.0bf16)
486         overloads earlier in the file.
488 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
490         * python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Make
491         expansion of std::string in manager name more robust.
493 2022-11-16  Jonathan Wakely  <jwakely@redhat.com>
495         * python/libstdcxx/v6/printers.py (is_specialization_of): Fix
496         incorrect terminology in docstring and describe arguments.
497         (FilteringTypePrinter): Add default argument for new parameter,
498         enhance docstring.
500 2022-11-16  François Dumont  <fdumont@gcc.gnu.org>
502         * python/libstdcxx/v6/printers.py (FilteringTypePrinter): Rename 'match' field
503         'template'. Add self.targ1 to specify the first template parameter of the instantiation
504         to match.
505         (add_one_type_printer): Add targ1 optional parameter, default to None.
506         Use gdb.types.get_basic_type to compare the type to recognize and the type
507         returned from the typedef lookup.
508         (register_type_printers): Adapt calls to add_one_type_printers.
510 2022-11-15  Jonathan Wakely  <jwakely@redhat.com>
512         * testsuite/std/format/functions/format.cc: Do not use
513         std::make_unsigned_t<__int128>.
515 2022-11-15  Jonathan Wakely  <jwakely@redhat.com>
517         * include/std/format (formattable): Only define for C++23/
518         * testsuite/std/format/formatter.cc: Moved to...
519         * testsuite/std/format/formatter/requirements.cc: ...here.
520         * testsuite/std/format/formatter/concept.cc: New test.
521         * testsuite/std/format/functions/format.cc: Replace use of
522         std::formattable in C++20.
524 2022-11-15  Jonathan Wakely  <jwakely@redhat.com>
526         PR libstdc++/107693
527         * include/std/format (_GLIBCXX_FORMAT_F128): Define to 2 when
528         basic_format_arg needs to use its _M_f128 member.
529         (__extended_floating_point, __floating_point): Replace with ...
530         (__formattable_floating_point): New concept.
531         * testsuite/std/format/functions/format.cc: Check whether
532         __float128 is supported. Also test _Float128.
534 2022-11-15  Jonathan Wakely  <jwakely@redhat.com>
536         * doc/xml/manual/documentation_hacking.xml: Document use of
537         Markdown for Doxygen comments. Tweak formatting.
538         * doc/html/manual/documentation_hacking.html: Regenerate.
540 2022-11-14  Jonathan Wakely  <jwakely@redhat.com>
542         * python/Makefile.am (install-data-local): Use mkdirs_p for debug
543         libdir.
544         * python/Makefile.in: Regenerate.
546 2022-11-14  Bernhard Reutner-Fischer  <rep.dot.nop@gmail.com>
548         * src/Makefile.am (install-debug): Remove use of $(debugdir).
549         * src/Makefile.in: Regenerate.
551 2022-11-13  Jonathan Wakely  <jwakely@redhat.com>
553         * include/std/chrono (utc_clock, tai_clock, gps_clock): Define.
554         (clock_time_conversion, clock_cast): Define.
555         (sys_info, local_info): Define structs for timezone information.
556         (nonexistent_local_time, ambiguous_local_time): Define
557         exceptions for invalid times.
558         (time_zone, time_zone_link, leap_second, zoned_traits, tzdb)
559         (tzdb_list): Define classes representing time zones.
560         (get_leap_second_info): Define new function returning leap
561         second offset for a given time point.
562         * testsuite/std/time/clock/gps/1.cc: New test.
563         * testsuite/std/time/clock/tai/1.cc: New test.
564         * testsuite/std/time/clock/utc/1.cc: New test.
566 2022-11-13  Jonathan Wakely  <jwakely@redhat.com>
568         PR libstdc++/104166
569         * include/Makefile.am (std_headers): Add <format>.
570         * include/Makefile.in: Regenerate.
571         * include/precompiled/stdc++.h: Add <format>.
572         * include/std/format: New file.
573         * python/libstdcxx/v6/printers.py (StdFormatArgsPrinter): New
574         printer for std::format_args.
575         * testsuite/std/format/arguments/args.cc: New test.
576         * testsuite/std/format/error.cc: New test.
577         * testsuite/std/format/formatter.cc: New test.
578         * testsuite/std/format/functions/format.cc: New test.
579         * testsuite/std/format/functions/format_to_n.cc: New test.
580         * testsuite/std/format/functions/size.cc: New test.
581         * testsuite/std/format/functions/vformat_to.cc: New test.
582         * testsuite/std/format/parse_ctx.cc: New test.
583         * testsuite/std/format/string.cc: New test.
584         * testsuite/std/format/string_neg.cc: New test.
586 2022-11-13  Jonathan Wakely  <jwakely@redhat.com>
588         * include/bits/charconv.h (__integer_to_chars_is_unsigned):
589         New variable template.
590         (__to_chars_len, __to_chars_10_impl): Use variable template in
591         assertions to allow unsigned __int128 in strict mode.
592         * include/std/charconv (__to_chars, __to_chars_16)
593         (__to_chars_10, __to_chars_8, __to_chars_2): Likewise.
595 2022-11-12  Jakub Jelinek  <jakub@redhat.com>
597         PR libstdc++/107636
598         * include/std/charconv (to_chars): Fix up powerpc64le _Float128
599         overload __extension__ placement.
601 2022-11-12  Jonathan Wakely  <jwakely@redhat.com>
603         * src/Makefile.am: Simplify debug build targets.
604         * src/Makefile.in: Regenerate.
606 2022-11-12  Jonathan Wakely  <jwakely@redhat.com>
608         PR libstdc++/103755
609         * src/c++11/locale-inst-monetary.h: Include new header.
610         * src/c++11/locale-inst-numeric.h: Likewise.
611         * src/c++11/locale-inst.cc: Likewise.
612         (INSTANTIATE_USE_FACET, INSTANTIATE_FACET_ACCESSORS): Move
613         macro definitions to ...
614         * src/c++11/facet_inst_macros.h: New file.
616 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
618         PR libstdc++/95048
619         * include/experimental/bits/fs_path.h (path::_Cvt::_S_wconvert):
620         Construct codecvt directly instead of getting it from the
621         locale.
623 2022-11-11  Nathaniel Shead  <nathanieloshead@gmail.com>
625         PR libstdc++/103295
626         * include/bits/basic_string.h (_M_use_local_data): Set active
627         member to _M_local_buf.
629 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
631         PR libstdc++/95048
632         * include/bits/fs_path.h (path::_Codecvt): New class template
633         that selects the kind of code conversion done.
634         (path::_Codecvt<wchar_t>): Select based on sizeof(wchar_t).
635         (_GLIBCXX_CONV_FROM_UTF8): New macro to allow the same code to
636         be used for Windows and POSIX.
637         (path::_S_convert(const EcharT*, const EcharT*)): Simplify by
638         using _Codecvt and _GLIBCXX_CONV_FROM_UTF8 abstractions.
639         (path::_S_str_convert(basic_string_view<value_type>, const A&)):
640         Simplify nested conditions.
641         * include/experimental/bits/fs_path.h (path::_Cvt): Define
642         nested typedef controlling type of code conversion done.
643         (path::_Cvt::_S_wconvert): Use new typedef.
644         (path::string(const A&)): Likewise.
645         * testsuite/27_io/filesystem/path/construct/95048.cc: New test.
646         * testsuite/experimental/filesystem/path/construct/95048.cc: New
647         test.
649 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
651         * testsuite/20_util/tuple/swap.cc (MoveOnly::operator==): Add
652         const qualifier.
653         * testsuite/26_numerics/valarray/87641.cc (X::operator==):
654         Likewise.
656 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
658         * include/std/charconv (__from_chars_alnum_to_val_table::value):
659         [!__cpp_inline_variables]: Add non-inline definition.
661 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
663         * testsuite/experimental/propagate_const/observers/107525.cc:
664         Use type trait instead of C++17 variable template.
666 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
668         PR libstdc++/103755
669         * config/abi/pre/gnu.ver: Tighten patterns for facets in the
670         base version. Add exports for __try_use_facet.
671         * include/bits/basic_ios.tcc (basic_ios::_M_cache_locale): Use
672         __try_use_facet instead of has_facet and use_facet.
673         * include/bits/fstream.tcc (basic_filebuf::basic_filebuf()):
674         Likewise.
675         (basic_filebuf::imbue): Likewise.
676         * include/bits/locale_classes.h (locale, locale::id)
677         (locale::_Impl): Declare __try_use_facet as a friend.
678         * include/bits/locale_classes.tcc (__try_use_facet): Define new
679         function template with special cases for default facets.
680         (has_facet, use_facet): Call __try_use_facet.
681         * include/bits/locale_facets.tcc (__try_use_facet): Declare
682         explicit instantiations.
683         * include/bits/locale_facets_nonio.tcc (__try_use_facet):
684         Likewise.
685         * src/c++11/locale-inst-monetary.h (INSTANTIATE_FACET_ACCESSORS):
686         Use new macro for facet accessor instantiations.
687         * src/c++11/locale-inst-numeric.h (INSTANTIATE_FACET_ACCESSORS):
688         Likewise.
689         * src/c++11/locale-inst.cc (INSTANTIATE_USE_FACET): Define new
690         macro for instantiating __try_use_facet and use_facet.
691         (INSTANTIATE_FACET_ACCESSORS): Define new macro for also
692         defining has_facet.
693         * src/c++98/compatibility-ldbl.cc (__try_use_facet):
694         Instantiate.
695         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Adjust
696         expected errors.
698 2022-11-10  Jonathan Wakely  <jwakely@redhat.com>
700         * include/std/concepts (__detail::__destructible_impl)
701         (__detail::__destructible): New variable templates.
702         (destructible): Use __detail::__destructible.
703         * testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
704         Add more checks for array and reference types.
706 2022-11-08  Jonathan Wakely  <jwakely@redhat.com>
708         * testsuite/18_support/new_nothrow.cc: Add missing noexcept
709         to operator delete replacements.
710         * testsuite/20_util/any/cons/92156.cc: Disable
711         -Winit-list-lifetime warnings from instantiating invalid
712         specialization of manager function.
713         * testsuite/20_util/any/modifiers/92156.cc: Likewise.
714         * testsuite/20_util/default_delete/void_neg.cc: Prune additional
715         diagnostics.
716         * testsuite/20_util/headers/memory/synopsis.cc: Add missing
717         noexcept.
718         * testsuite/20_util/shared_ptr/cons/void_neg.cc: Prune
719         additional diagnostic.
720         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Add
721         missing noexcept to operator delete replacements.
722         * testsuite/21_strings/basic_string/cons/char/103919.cc:
723         Likewise.
724         * testsuite/23_containers/map/modifiers/emplace/92300.cc:
725         Likewise.
726         * testsuite/23_containers/map/modifiers/insert/92300.cc:
727         Likewise.
728         * testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
729         Add missing noexcept to synopsis declarations.
730         * testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
731         Likewise.
732         * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
733         Likewise.
735 2022-11-08  Jonathan Wakely  <jwakely@redhat.com>
737         * include/bits/stl_tempbuf.h (_Temporary_buffer): Disable
738         warnings about get_temporary_buffer being deprecated.
739         * include/ext/functional (mem_fun1, mem_fun1_ref): Disable
740         warnings about mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t and
741         const_mem_fun1_ref_t being deprecated.
742         * include/std/array (__array_traits<T, 0>): Remove artificial
743         attributes which give warnings about being ignored.
744         * include/std/spanstream (basic_spanbuf::setbuf): Add assertion
745         and adjust to avoid narrowing warning.
746         * libsupc++/exception_ptr.h [!__cpp_rtti && !__cpp_exceptions]
747         (make_exception_ptr): Add missing inline specifier.
749 2022-11-08  Jonathan Wakely  <jwakely@redhat.com>
751         * include/bits/alloc_traits.h (allocator_traits): Add
752         always_inline attribute to all member functions.
753         (__do_alloc_on_copy, __alloc_on_copy, __do_alloc_on_move)
754         (__alloc_on_move, __do_alloc_on_swap, __alloc_on_swap)
755         (_Destroy(FwdIter, FwdIter, allocator<T>&)): : Add
756         always_inline attribute.
757         * include/bits/allocator.h (allocator): Add always_inline
758         attribute to all member functions and equality operators.
759         * include/bits/new_allocator.h (__new_allocator): Likewise.
760         * include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits):
761         Likewise.
763 2022-11-08  Charles-François Natali  <cf.natali@gmail.com>
765         PR libstdc++/63746
766         * include/bits/fstream.tcc (basic_filbuf::xsputn): Remove
767         1024-byte chunking that bypasses the buffer for large writes.
768         * testsuite/27_io/basic_filebuf/sputn/char/63746.cc: New test.
770 2022-11-08  Will Hawkins  <whh8b@obs.cr>
771             Jonathan Wakely  <jwakely@redhat.com>
773         * include/bits/basic_string.h (__str_cat): Add common function
774         that performs single-allocation string concatenation.
775         (operator+): Use __str_cat.
776         * include/bits/basic_string.tcc (operator+): Move to .h and
777         define inline using __str_cat.
779 2022-11-08  Jakub Jelinek  <jakub@redhat.com>
781         * testsuite/20_util/to_chars/float128_c++23.cc (test): Uncomment
782         denorm_min test.
784 2022-11-08  Jonathan Wakely  <jwakely@redhat.com>
786         * doc/xml/authors.xml: Update the blurb listing my doc
787         contributions.
789 2022-11-08  Jonathan Wakely  <jwakely@redhat.com>
791         * doc/xml/authors.xml: Remove empty author element.
792         * doc/xml/manual/spine.xml: Likewise.
793         * doc/html/manual/index.html: Regenerate.
795 2022-11-08  Joseph Myers  <joseph@codesourcery.com>
797         PR libstdc++/107562
798         * src/c++17/floating_from_chars.cc (from_chars_impl): Fix syntax
799         error.
801 2022-11-08  Jason Merrill  <jason@redhat.com>
802             Jakub Jelinek  <jakub@redhat.com>
804         * testsuite/18_support/comparisons/algorithms/fallback.cc: Adjust
805         asserts.
807 2022-11-07  Jakub Jelinek  <jakub@redhat.com>
809         PR libstdc++/107562
810         * src/c++17/floating_from_chars.cc (__strtof128): Put __asm before
811         __attribute__.
812         * src/c++17/floating_to_chars.cc (__strfromf128): Likewise.
814 2022-11-07  Patrick Palka  <ppalka@redhat.com>
816         * include/std/ranges (as_rvalue_view): Define.
817         (enable_borrowed_range<as_rvalue_view>): Define.
818         (views::__detail::__can_as_rvalue_view): Define.
819         (views::_AsRvalue, views::as_rvalue): Define.
820         * testsuite/std/ranges/adaptors/as_rvalue/1.cc: New test.
822 2022-11-07  Patrick Palka  <ppalka@redhat.com>
824         * include/std/ranges (__maybe_const_t): New alias for
825         __detail::__maybe_const_t.
826         (__detail::__cartesian_product_is_random_access): Define.
827         (__detail::__cartesian_product_common_arg): Define.
828         (__detail::__cartesian_product_is_bidirectional): Define.
829         (__detail::__cartesian_product_is_common): Define.
830         (__detail::__cartesian_product_is_sized): Define.
831         (__detail::__cartesian_is_sized_sentinel): Define.
832         (__detail::__cartesian_common_arg_end): Define.
833         (cartesian_product_view): Define.
834         (cartesian_product_view::_Iterator): Define.
835         (views::__detail::__can_cartesian_product_view): Define.
836         (views::_CartesianProduct, views::cartesian_product): Define.
837         * testsuite/std/ranges/cartesian_product/1.cc: New test.
839 2022-11-07  Jakub Jelinek  <jakub@redhat.com>
841         PR libstdc++/107468
842         * src/c++17/fast_float/MERGE: Adjust for merge from upstream.
843         * src/c++17/fast_float/LOCAL_PATCHES: Remove commits that were
844         upstreamed.
845         * src/c++17/fast_float/README.md: Merge from fast_float
846         662497742fea7055f0e0ee27e5a7ddc382c2c38e commit.
847         * src/c++17/fast_float/fast_float.h: Likewise.
848         * testsuite/20_util/from_chars/pr107468.cc: New test.
850 2022-11-07  Jakub Jelinek  <jakub@redhat.com>
852         * include/std/charconv (from_chars, to_chars): Add _Float128
853         overfloads if _GLIBCXX_HAVE_FLOAT128_MATH is defined.
854         * config/abi/pre/gnu.ver (GLIBCXX_3.4.31): Export
855         _ZSt8to_charsPcS_DF128_, _ZSt8to_charsPcS_DF128_St12chars_format,
856         _ZSt8to_charsPcS_DF128_St12chars_formati and
857         _ZSt10from_charsPKcS0_RDF128_St12chars_format.
858         * src/c++17/floating_from_chars.cc (USE_STRTOF128_FOR_FROM_CHARS):
859         Define if needed.
860         (__strtof128): Declare.
861         (from_chars_impl): Handle _Float128.
862         (from_chars): New _Float128 overload if USE_STRTOF128_FOR_FROM_CHARS
863         is define.
864         * src/c++17/floating_to_chars.cc (__strfromf128): Declare.
865         (FLOAT128_TO_CHARS): Define even when _Float128 is supported and
866         wider than long double.
867         (F128_type): Use _Float128 for that case.
868         (floating_type_traits): Specialize for F128_type rather than
869         __float128.
870         (sprintf_ld): Add length argument.  Handle _Float128.
871         (__floating_to_chars_shortest, __floating_to_chars_precision):
872         Pass length to sprintf_ld.
873         (to_chars): Add _Float128 overloads for the F128_type being
874         _Float128 cases.
875         * testsuite/20_util/to_chars/float128_c++23.cc: New test.
877 2022-11-06  Patrick Palka  <ppalka@redhat.com>
879         * include/bits/atomic_wait.h (_detail::__platform_wait_alignment):
880         Declare inline.  Remove redundant static specifier.
881         (__detail::__atomic_spin_count_relax): Declare inline.
882         (__detail::__atomic_spin_count): Likewise.
883         * include/bits/regex_automaton.h (__detail::_S_invalid_state_id):
884         Declare inline for C++17.  Declare constexpr.  Remove
885         redundant const and static specifiers.
886         * include/bits/regex_error.h (regex_constants::error_collate):
887         Declare inline for C++17 as per P0607R0.
888         (regex_constants::error_ctype): Likewise.
889         (regex_constants::error_escape): Likewise.
890         (regex_constants::error_backref): Likewise.
891         (regex_constants::error_brack): Likewise.
892         (regex_constants::error_paren): Likewise.
893         (regex_constants::error_brace): Likewise.
894         (regex_constants::error_badbrace): Likewise.
895         (regex_constants::error_range): Likewise.
896         (regex_constants::error_space): Likewise.
897         (regex_constants::error_badrepeat): Likewise.
898         (regex_constants::error_complexity): Likewise.
899         (regex_constants::error_stack): Likewise.
900         * include/ext/concurrence.h (__gnu_cxx::__default_lock_policy):
901         Likewise.  Remove redundant static specifier.
902         * include/pstl/execution_defs.h (execution::seq): Declare inline
903         for C++17 as per P0607R0.
904         (execution::par): Likewise.
905         (execution::par_unseq): Likewise.
906         (execution::unseq): Likewise.
908 2022-11-06  Patrick Palka  <ppalka@redhat.com>
910         PR libstdc++/44952
911         PR libstdc++/39796
912         PR libstdc++/98108
913         * include/std/iostream (__ioinit): No longer define here if
914         the init_priority attribute is usable.
915         * src/c++98/ios_init.cc (__ioinit): Define here instead if
916         init_priority is usable, via ...
917         * src/c++98/ios_base_init.h: ... this new file.
919 2022-11-05  Jakob Hasse  <0xjakob@users.noreply.github.com>
921         PR libstdc++/105387
922         * libsupc++/pbase_type_info.cc (__do_catch) [!__cpp_rtti]: Add
923         check that the thrown type is actually a pointer.
924         * testsuite/18_support/105387.cc: New test.
925         * testsuite/18_support/105387_memptr.cc: New test.
927 2022-11-05  Jonathan Wakely  <jwakely@redhat.com>
929         PR libstdc++/107525
930         * include/experimental/propagate_const (operator element_type*()):
931         Move into base class that can be partially specilized to iompose
932         constraints.
933         (operator const element_type*()): Likewise.
934         * testsuite/experimental/propagate_const/observers/107525.cc: New test.
936 2022-11-04  Jonathan Wakely  <jwakely@redhat.com>
938         PR libstdc++/107500
939         * libsupc++/eh_globals.cc (eh_globals): Remove immortalizing
940         wrapper.
941         (__cxxabiv1::__cxa_get_globals_fast): Adjust.
942         (__cxxabiv1::__cxa_get_globals): Adjust.
944 2022-11-04  Jonathan Wakely  <jwakely@redhat.com>
946         PR libstdc++/107511
947         * libsupc++/eh_alloc.cc (_GNU_SOURCE): Define.
949 2022-11-03  Jonathan Wakely  <jwakely@redhat.com>
951         * include/bits/ranges_algobase.h (__detail::__copy_or_move):
952         Move output iterator.
953         * testsuite/25_algorithms/copy/constrained.cc: Check copying to
954         move-only output iterator.
956 2022-11-02  Jonathan Wakely  <jwakely@redhat.com>
958         * libsupc++/eh_globals.cc (constant_init::unused): Remove.
959         * src/c++11/system_error.cc (constant_init::unused): Remove.
960         * src/c++17/memory_resource.cc (constant_init::unused): Remove.
962 2022-11-02  Patrick Palka  <ppalka@redhat.com>
964         * src/c++17/floating_from_chars.cc (from_chars_impl): In the
965         ERANGE case, distinguish between a denormal result and true
966         underflow by checking if the return value is 0.
968 2022-11-02  Jonathan Wakely  <jwakely@redhat.com>
970         * include/std/expected (expected::_M_invalid): Remove.
972 2022-11-02  Jonathan Wakely  <jwakely@redhat.com>
974         * include/std/variant (__variant::_Multi_array::__untag_result):
975         Use pragma to suppress warning.
977 2022-11-02  Jakub Jelinek  <jakub@redhat.com>
979         * libsupc++/compare (_Strong_order::_Fp_fmt): Add _Bfloat16.
980         (_Strong_order::_Bfloat16): New static data member.
981         (_Strong_order::_S_fp_fmt): Return _Bfloat16 for std::bfloat16_t.
983 2022-11-02  Jakub Jelinek  <jakub@redhat.com>
985         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex): Drop const
986         from unbiased_exponent.  Canonicalize denormals such that they have
987         the leading bit set by shifting effective mantissa up and decreasing
988         unbiased_exponent.
989         (__floating_to_chars_shortest): Don't instantiate
990         __floating_to_chars_hex for float16_t either and use float instead.
991         * testsuite/20_util/to_chars/float.cc (float_to_chars_test_cases):
992         Adjust testcases for shortest hex denormals.
993         * testsuite/20_util/to_chars/double.cc (double_to_chars_test_cases):
994         Likewise.
996 2022-11-01  Jakub Jelinek  <jakub@redhat.com>
998         * include/std/charconv (__from_chars_float16_t,
999         __from_chars_bfloat16_t): Declare.
1000         (from_chars): Add _Float16 and __gnu_cxx::__bfloat16_t overloads.
1001         * config/abi/pre/gnu.ver (GLIBCXX_3.4.31): Export
1002         _ZSt22__from_chars_float16_tPKcS0_RfSt12chars_format and
1003         _ZSt23__from_chars_bfloat16_tPKcS0_RfSt12chars_format.
1004         * src/c++17/floating_from_chars.cc
1005         (fast_float::floating_type_float16_t,
1006         fast_float::floating_type_bfloat16_t): New classes.
1007         (fast_float::binary_format<floating_type_float16_t>,
1008         fast_float::binary_format<floating_type_bfloat16_t>): New
1009         specializations.
1010         (fast_float::to_float<floating_type_float16_t>,
1011         fast_float::to_float<floating_type_bfloat16_t>,
1012         fast_float::to_extended<floating_type_float16_t>,
1013         fast_float::to_extended<floating_type_bfloat16_t>): Likewise.
1014         (fast_float::from_chars_16): New template function.
1015         (__floating_from_chars_hex): Allow instantiation with
1016         fast_float::floating_type_{,b}float16_t.
1017         (from_chars): Formatting fixes for float/double/long double overloads.
1018         (__from_chars_float16_t, __from_chars_bfloat16_t): New functions.
1019         * testsuite/20_util/to_chars/float16_c++23.cc: New test.
1021 2022-11-01  Jakub Jelinek  <jakub@redhat.com>
1023         * include/std/charconv (__to_chars_float16_t, __to_chars_bfloat16_t):
1024         Declare.
1025         (to_chars): Add _Float16 and __gnu_cxx::__bfloat16_t overloads.
1026         * config/abi/pre/gnu.ver (GLIBCXX_3.4.31): Export
1027         _ZSt20__to_chars_float16_tPcS_fSt12chars_format and
1028         _ZSt21__to_chars_bfloat16_tPcS_fSt12chars_format.
1029         * src/c++17/floating_to_chars.cc (floating_type_float16_t,
1030         floating_type_bfloat16_t): New types.
1031         (floating_type_traits<floating_type_float16_t>,
1032         floating_type_traits<floating_type_bfloat16_t>,
1033         get_ieee_repr<floating_type_float16_t>,
1034         get_ieee_repr<floating_type_bfloat16_t>,
1035         __handle_special_value<floating_type_float16_t>,
1036         __handle_special_value<floating_type_bfloat16_t>): New specializations.
1037         (floating_to_shortest_scientific): Handle floating_type_float16_t
1038         and floating_type_bfloat16_t like IEEE quad.
1039         (__floating_to_chars_shortest): For floating_type_bfloat16_t call
1040         __floating_to_chars_hex<float> rather than
1041         __floating_to_chars_hex<floating_type_bfloat16_t> to avoid
1042         instantiating the latter.
1043         (__to_chars_float16_t, __to_chars_bfloat16_t): New functions.
1045 2022-11-01  Jakub Jelinek  <jakub@redhat.com>
1047         * include/std/charconv (from_chars, to_chars): Add _Float{32,64,128}
1048         overloads for cases where those types match {float,double,long double}.
1049         * include/std/istream (basic_istream::operator>>): Add
1050         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t overloads.
1051         * include/std/ostream (basic_ostream::operator<<): Add
1052         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t overloads.
1053         * testsuite/20_util/from_chars/8.cc: New test.
1054         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc (test):
1055         Formatting fixes.
1056         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc: Add
1057         dg-options "-std=gnu++2b".
1058         (test_functions, main): Formatting fixes.
1059         * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++23.cc:
1060         Add dg-options "-std=gnu++2b".
1062 2022-10-31  Jakub Jelinek  <jakub@redhat.com>
1064         * include/std/complex (complex::complex converting ctor): For C++23
1065         use explicit specifier with constant expression.  Explicitly cast
1066         both parts to _Tp.
1067         (__complex_abs, __complex_arg, __complex_cos, __complex_cosh,
1068         __complex_exp, __complex_log, __complex_sin, __complex_sinh,
1069         __complex_sqrt, __complex_tan, __complex_tanh, __complex_pow): Add
1070         __complex__ _Float{16,32,64,128} and __complex__ decltype(0.0bf16)
1071         overloads.
1072         (complex<float>::complex converting ctor,
1073         complex<double>::complex converting ctor,
1074         complex<long double>::complex converting ctor): For C++23 implement
1075         as template with explicit specifier with constant expression
1076         and explicit casts.
1077         (__complex_type): New template.
1078         (complex): New partial specialization for types with extended floating
1079         point types.
1080         (__complex_acos, __complex_asin, __complex_atan, __complex_acosh,
1081         __complex_asinh, __complex_atanh): Add __complex__ _Float{16,32,64,128}
1082         and __complex__ decltype(0.0bf16) overloads.
1083         (__complex_proj): Likewise.  Add template for complex of extended
1084         floating point types.
1085         * include/bits/cpp_type_traits.h (__is_floating): Specialize for
1086         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t.
1087         * testsuite/26_numerics/complex/ext_c++23.cc: New test.
1089 2022-10-31  Jakub Jelinek  <jakub@redhat.com>
1091         * config/os/gnu-linux/os_defines.h (_GLIBCXX_HAVE_FLOAT128_MATH):
1092         Uncomment.
1093         * include/c_global/cmath (nextafter(_Float16, _Float16)): Make it constexpr.
1094         If std::__is_constant_evaluated() call __builtin_nextafterf16.
1095         (nextafter(__gnu_cxx::__bfloat16_t, __gnu_cxx::__bfloat16_t)): Similarly
1096         but call __builtin_nextafterf16b.
1097         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc (test): Add
1098         static assertions to test constexpr nextafter.
1100 2022-10-28  Jonathan Wakely  <jwakely@redhat.com>
1102         * include/bits/fs_path.h (path::filename()): Fix dangling
1103         reference.
1105 2022-10-28  Arsen Arsenović  <arsen@aarsen.me>
1107         * include/std/functional: Make placeholders inline, if possible.
1109 2022-10-28  Arsen Arsenović  <arsen@aarsen.me>
1111         * configure.ac: Stop generating gstdint.h.
1112         * src/c++11/compatibility-atomic-c++0x.cc: Stop using gstdint.h.
1113         * Makefile.in: Regenerate.
1114         * aclocal.m4: Regenerate.
1115         * config.h.in: Regenerate.
1116         * configure: Regenerate.
1117         * doc/Makefile.in: Regenerate.
1118         * include/Makefile.in: Regenerate.
1119         * libsupc++/Makefile.in: Regenerate.
1120         * po/Makefile.in: Regenerate.
1121         * python/Makefile.in: Regenerate.
1122         * src/Makefile.in: Regenerate.
1123         * src/c++11/Makefile.in: Regenerate.
1124         * src/c++17/Makefile.in: Regenerate.
1125         * src/c++20/Makefile.in: Regenerate.
1126         * src/c++98/Makefile.in: Regenerate.
1127         * src/filesystem/Makefile.in: Regenerate.
1128         * src/libbacktrace/Makefile.in: Regenerate.
1129         * testsuite/Makefile.in: Regenerate.
1131 2022-10-28  Jonathan Wakely  <jwakely@redhat.com>
1133         PR libstdc++/107376
1134         * include/bits/regex_executor.h (_Executor::_Executor): Use same
1135         allocator for _M_cur_results and _M_results.
1136         * include/bits/regex_executor.tcc (_Executor::_M_main_dispatch):
1137         Prevent possibly incorrect allocator propagating to
1138         _M_cur_results.
1139         * testsuite/28_regex/algorithms/regex_match/107376.cc: New test.
1141 2022-10-26  Marek Polacek  <polacek@redhat.com>
1143         PR c++/106393
1144         * include/bits/locale_classes.tcc: Add #pragma to disable
1145         -Wdangling-reference with std::use_facet.
1147 2022-10-21  Arsen Arsenović  <arsen@aarsen.me>
1149         * acinclude.m4: Default hosted to off if building without
1150         headers and without newlib.
1151         * configure: Regenerate.
1153 2022-10-21  Jonathan Wakely  <jwakely@redhat.com>
1155         * include/bits/mofunc_impl.h (move_only_function::__param_t):
1156         Use __is_scalar instead of is_trivially_copyable.
1157         * testsuite/20_util/move_only_function/call.cc: Check parameters
1158         involving incomplete types.
1160 2022-10-20  Patrick Palka  <ppalka@redhat.com>
1162         * include/std/charconv (__detail::__from_chars_alnum_to_val_table):
1163         Redefine as a class template containing the members type, value and
1164         _S_make_table.  Don't use a local class as the table type.
1165         (__detail::__table): Remove.
1166         (__detail::__from_chars_alnum_to_val): Adjust after the above.
1168 2022-10-19  Patrick Palka  <ppalka@redhat.com>
1170         * include/std/ranges (views::__detail::__is_repeat_view): Define
1171         and later define a partial specialization.
1172         (views::__detail::__take_of_repeat_view): Declare and later define.
1173         (views::__detail::__drop_of_repeat_view): Likewise.
1174         (views::_Take::operator()): Return a repeat_view if the argument
1175         is a repeat_view as per P2474R2.
1176         (views::_Drop::operator()): Likewise.
1177         (repeat_view): Befriend __take/drop_of_repeat_view.
1178         * testsuite/std/ranges/repeat/1.cc (test04): New test.
1180 2022-10-19  Patrick Palka  <ppalka@redhat.com>
1182         PR libstdc++/107313
1183         * include/std/ranges (stride_view::_Iterator::operator-): Fix typo.
1184         * testsuite/std/ranges/adaptors/stride/1.cc (test03): New test.
1186 2022-10-19  LIU Hao  <lh_mouse@126.com>
1188         * src/c++11/thread.cc (get_nprocs): Add new implementation
1189         for native Windows targets
1191 2022-10-19  LIU Hao  <lh_mouse@126.com>
1193         * libsupc++/atexit_thread.cc (__cxa_thread_atexit): Use
1194         implementation from mcfgthread if available
1195         * libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_release,
1196         __cxa_guard_abort): Use implementations from mcfgthread if
1197         available
1198         * configure: Regenerate
1200 2022-10-19  Jakub Jelinek  <jakub@redhat.com>
1202         PR c++/106652
1203         * include/std/limits: Fix a typo, 202202L -> 202002L.
1204         (numeric_limits::<_Float16>::radix, numeric_limits::<_Float32>::radix,
1205         numeric_limits::<_Float64>::radix, numeric_limits::<_Float128>::radix,
1206         numeric_limits::<__gnu_cxx::__bfloat16_t>::radix): Use __FLT_RADIX__
1207         macro instead of type specific macros.
1208         * include/c_global/cmath (nextafter(_Float16, _Float16)): New
1209         overload.
1210         (nextafter(__gnu_cxx::__bfloat16_t, __gnu_cxx::__bfloat16_t)):
1211         Likewise.
1212         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc
1213         (test_functions): Uncomment nextafter test.  Fix up sph_neumann call.
1214         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc: New test.
1216 2022-10-18  Patrick Palka  <ppalka@redhat.com>
1218         * include/std/ranges (stride_view): Define.
1219         (stride_view::_Iterator): Define.
1220         (views::__detail::__can_stride_view): Define.
1221         (views::_Stride, views::stride): Define.
1222         * testsuite/std/ranges/adaptors/stride/1.cc: New test.
1224 2022-10-18  Jakub Jelinek  <jakub@redhat.com>
1226         PR c++/106652
1227         * include/std/stdfloat: New file.
1228         * include/std/numbers (__glibcxx_numbers): Define and use it
1229         for __float128 explicit instantiations as well as
1230         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t.
1231         * include/std/atomic (atomic<_Float16>, atomic<_Float32>,
1232         atomic<_Float64>, atomic<_Float128>, atomic<__gnu_cxx::__bfloat16_t>):
1233         New explicit instantiations.
1234         * include/std/type_traits (__is_floating_point_helper<_Float16>,
1235         __is_floating_point_helper<_Float32>,
1236         __is_floating_point_helper<_Float64>,
1237         __is_floating_point_helper<_Float128>,
1238         __is_floating_point_helper<__gnu_cxx::__bfloat16_t>): Likewise.
1239         * include/std/limits (__glibcxx_concat3_, __glibcxx_concat3,
1240         __glibcxx_float_n): Define.
1241         (numeric_limits<_Float16>, numeric_limits<_Float32>,
1242         numeric_limits<_Float64>, numeric_limits<_Float128>,
1243         numeric_limits<__gnu_cxx::__bfloat16_t>): New explicit instantiations.
1244         * include/bits/std_abs.h (abs): New overloads for
1245         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t.
1246         * include/bits/c++config (_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128): Define
1247         if long double is IEEE quad.
1248         (__gnu_cxx::__bfloat16_t): New using.
1249         * include/c_global/cmath (acos, asin, atan, atan2, ceil, cos, cosh,
1250         exp, fabs, floor, fmod, frexp, ldexp, log, log10, modf, pow, sin,
1251         sinh, sqrt, tan, tanh, fpclassify, isfinite, isinf, isnan, isnormal,
1252         signbit, isgreater, isgreaterequal, isless, islessequal,
1253         islessgreater, isunordered, acosh, asinh, atanh, cbrt, copysign, erf,
1254         erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb, lgamma,
1255         llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
1256         nextafter, remainder, rint, round, scalbln, scalbn, tgamma, trunc,
1257         lerp): New overloads with _Float{16,32,64,128} or
1258         __gnu_cxx::__bfloat16_t types.
1259         * config/os/gnu-linux/os_defines.h (_GLIBCXX_HAVE_FLOAT128_MATH):
1260         Prepare for definition if glibc 2.26 and later implements *f128 APIs
1261         but comment out the actual definition for now.
1262         * include/ext/type_traits.h (__promote<_Float16>, __promote<_Float32>,
1263         __promote<_Float64>, __promote<_Float128>,
1264         __promote<__gnu_cxx::__bfloat16_t>): New specializations.
1265         * include/Makefile.am (std_headers): Add stdfloat.
1266         * include/Makefile.in: Regenerated.
1267         * include/precompiled/stdc++.h: Include stdfloat.
1268         * testsuite/18_support/headers/stdfloat/types_std.cc: New test.
1269         * testsuite/18_support/headers/limits/synopsis_cxx23.cc: New test.
1270         * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++23.cc:
1271         New test.
1272         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc: New test.
1273         * testsuite/26_numerics/numbers/4.cc: New test.
1274         * testsuite/29_atomics/atomic_float/requirements_cxx23.cc: New test.
1276 2022-10-17  Jonathan Wakely  <jwakely@redhat.com>
1278         * include/std/charconv (__cpp_lib_constexpr_charconv): Define to
1279         correct value.
1280         * include/std/version (__cpp_lib_constexpr_charconv): Likewise.
1281         * testsuite/20_util/to_chars/constexpr.cc: Check correct value.
1282         * testsuite/20_util/to_chars/version.cc: Likewise.
1284 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
1286         * src/c++11/debug.cc (print_raw): Move inside #if block.
1288 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
1290         * include/bits/charconv.h (__to_chars_10_impl): Add constexpr
1291         for C++23. Remove 'static' from array.
1292         * include/std/charconv (__cpp_lib_constexpr_charconv): Define.
1293         (__to_chars, __to_chars_16): Remove 'static' from array, add
1294         constexpr.
1295         (__to_chars_10, __to_chars_8, __to_chars_2, __to_chars_i)
1296         (to_chars, __raise_and_add, __from_chars_pow2_base)
1297         (__from_chars_alnum, from_chars): Add constexpr.
1298         (__from_chars_alnum_to_val): Avoid local static during constant
1299         evaluation. Add constexpr.
1300         * include/std/version (__cpp_lib_constexpr_charconv): Define.
1301         * testsuite/20_util/from_chars/constexpr.cc: New test.
1302         * testsuite/20_util/to_chars/constexpr.cc: New test.
1303         * testsuite/20_util/to_chars/version.cc: New test.
1305 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
1307         * include/bits/stl_map.h (map::insert(Pair&&)): Use
1308         remove_const_t on argument to __is_pair.
1309         * include/bits/stl_pair.h (__is_pair<const pair<T,U>>): Remove
1310         partial specialization.
1311         * include/bits/uses_allocator_args.h (_Std_pair): Use
1312         remove_cv_t as per LWG 3677.
1313         * testsuite/20_util/uses_allocator/lwg3677.cc: New test.
1315 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
1317         * libsupc++/eh_alloc.cc [USE_POOL]: New macro.
1318         [!USE_POOL] (__gnu_cxx::__freeres, pool): Do not define.
1319         [_GLIBCXX_EH_POOL_STATIC] (pool::arena): Do not use std::max.
1320         (__cxxabiv1::__cxa_allocate_exception) [!USE_POOL]: Do not use
1321         pool.
1322         (__cxxabiv1::__cxa_free_exception) [!USE_POOL]: Likewise.
1323         (__cxxabiv1::__cxa_allocate_dependent_exception) [!USE_POOL]:
1324         Likewise.
1325         (__cxxabiv1::__cxa_free_dependent_exception) [!USE_POOL]:
1326         Likewise.
1328 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
1330         * src/c++11/debug.cc (print_raw): Simplify.
1331         (print_word): Print indentation by calling fprintf directly.
1332         (_Error_formatter::_M_error): Print unindented string by calling
1333         fprintf directly.
1335 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
1337         * include/std/iostream: Use markdown in Doxygen comment.
1339 2022-10-12  François Dumont  <fdumont@gcc.gnu.org>
1341         * include/debug/string: Add using _Base::compare.
1342         (__gnu_debug::basic_string<>::compare(const basic_string<>&)): Remove.
1343         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&)):
1344         Remove.
1345         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&,
1346         size_type, size_type)): Remove.
1347         * testsuite/util/testsuite_string.h [_GLIBCXX_TEST_DEBUG_STRING]: Include <debug/string>.
1348         * testsuite/21_strings/basic_string/operations/compare/char/1.cc: Include testsuite_string.h
1349         and use __gnu_test::string.
1350         * testsuite/21_strings/basic_string/operations/compare/char/13650.cc: Likewise.
1351         * testsuite/21_strings/basic_string/operations/compare/char/2.cc: Likewise.
1352         * testsuite/21_strings/basic_string/operations/rfind/char/1.cc: Likewise.
1353         * testsuite/21_strings/basic_string/operations/rfind/char/2.cc: Likewise.
1354         * testsuite/21_strings/basic_string/operations/rfind/char/3.cc: Likewise.
1355         * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
1356         Include testsuite_string.h
1357         and use __gnu_test::wstring.
1358         * testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc: Likewise.
1359         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: Likewise.
1361 2022-10-12  Patrick Palka  <ppalka@redhat.com>
1363         * include/std/ranges (repeat_view): Define.
1364         (repeat_view::_Iterator): Define.
1365         (views::__detail::__can_repeat_view): Define.
1366         (views::__detail::__can_bounded_repeat_view): Define.
1367         (views::_Repeat, views::repeat): Define.
1368         * testsuite/std/ranges/repeat/1.cc: New test.
1370 2022-10-12  Martin Liska  <mliska@suse.cz>
1372         * configure: Regenerate.
1374 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
1376         PR bootstrap/107221
1377         * libsupc++/eh_alloc.cc (pool): Change preprocessor condition
1378         for using __mutex from __GTHREADS to _GLIBCXX_HOSTED.
1379         (pool::allocate): Remove namespace qualification to use
1380         pool::__scoped_lock instead of __gnu_cxx::__scoped_lock.
1382 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
1384         PR libstdc++/68606
1385         * Makefile.in: Regenerate.
1386         * acinclude.m4 (GLIBCXX_EMERGENCY_EH_ALLOC): New macro.
1387         * configure: Regenerate.
1388         * configure.ac: Use GLIBCXX_EMERGENCY_EH_ALLOC.
1389         * crossconfig.m4: Check for secure_getenv.
1390         * doc/Makefile.in: Regenerate.
1391         * doc/xml/manual/configure.xml: Document new configure options.
1392         * doc/xml/manual/evolution.xml: Document addition of tunables.
1393         * doc/xml/manual/using_exceptions.xml: Document emergency
1394         buffer and tunables.
1395         * doc/html/*: Regenerate.
1396         * include/Makefile.in: Regenerate.
1397         * libsupc++/Makefile.am: Use EH_POOL_FLAGS.
1398         * libsupc++/Makefile.in: Regenerate.
1399         * libsupc++/eh_alloc.cc (EMERGENCY_OBJ_SIZE): Define in units
1400         of sizeof(void*) not including the ABI's exception header.
1401         (EMERGENCY_OBJ_COUNT): Define as target-independent calculation
1402         based on word size.
1403         (MAX_OBJ_COUNT): Define macro for upper limit on pool size.
1404         (pool) [_GLIBCXX_EH_POOL_STATIC]: Use fixed-size buffer.
1405         (pool::buffer_size_in_bytes): New static member function.
1406         (pool::pool): Parse GLIBCXX_TUNABLES environment variable to set
1407         pool size at runtime.
1408         (pool::in_pool): Use std::less<void*> for total order.
1409         (__freeres) [_GLIBCXX_EH_POOL_STATIC]: Do nothing.
1410         (__cxa_free_exception, __cxa_free_dependent_exception): Add
1411         [[unlikely]] attributes.
1412         * po/Makefile.in: Regenerate.
1413         * python/Makefile.in: Regenerate.
1414         * src/Makefile.in: Regenerate.
1415         * src/c++11/Makefile.in: Regenerate.
1416         * src/c++17/Makefile.in: Regenerate.
1417         * src/c++20/Makefile.in: Regenerate.
1418         * src/c++98/Makefile.in: Regenerate.
1419         * src/filesystem/Makefile.in: Regenerate.
1420         * src/libbacktrace/Makefile.in: Regenerate.
1421         * testsuite/Makefile.in: Regenerate.
1423 2022-10-11  Olivier Hainque  <hainque@adacore.com>
1424             Olivier Hainque  <hainque@adacore.com>
1426         * configure: Regenerate.
1428 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
1430         * include/std/type_traits (make_signed, make_unsigned): Remove
1431         constraints on primary template.
1432         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
1433         Undo changes to expected error in C++20 mode.
1434         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
1435         Likewise.
1436         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
1437         Likewise.
1438         * testsuite/20_util/make_signed/requirements/uninstantiated.cc:
1439         New test.
1440         * testsuite/20_util/make_unsigned/requirements/uninstantiated.cc:
1441         New test.
1443 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
1445         * include/std/type_traits (make_signed, make_unsigned): Add
1446         specializations for cv bool. Add requires-clause for C++20 to
1447         improve diagnostics for non-integral, non-enum cases.
1448         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
1449         Check cv bool.
1450         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
1451         Likewise.
1452         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
1453         Adjust expected errors for C++20 and later.
1454         * testsuite/lib/prune.exp: Prune "in requirements  [with ...]"
1455         lines from diagnostics.
1457 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
1459         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Add libstdcxx-hosted
1460         enable arg as an alias for hosted-libstdcxx enable arg.
1461         * configure: Regenerate.
1463 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
1465         * include/bits/std_function.h: Include <new> but do not include
1466         <bits/stl_function.h>.
1467         * include/std/functional: Do not include <new>.
1469 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
1471         * doc/xml/manual/intro.xml: Add role="bold" attribute to
1472         emphasis elements for issue titles.
1473         * doc/html/manual/bugs.html: Regenerate.
1475 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
1477         * include/Makefile.in: Regenerate.
1479 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
1481         * include/bits/invoke.h (__invoke_r): Check
1482         __has_builtin(__reference_converts_from_temporary) before using
1483         built-in.
1485 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1487         * testsuite/std/ranges/adaptors/join_with/1.cc: Remove unused
1488         <sstream header.
1489         (test04): Remove constexpr for old std::string ABI and test at
1490         runtime.
1492 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1494         * include/std/type_traits (remove_cv): Use __remove_cv built-in.
1495         (remove_reference): Use __remove_reference built-in.
1496         (remove_cvref): Use __remove_cvref built-in. Remove inheritance
1497         for fallback implementation.
1499 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1501         * include/bits/random.h (__is_seed_seq): Replace with ...
1502         (_If_seed_seq_for): ... this.
1503         * include/ext/random: Adjust to use _If_seed_seq_for.
1505 2022-10-04  Patrick Palka  <ppalka@redhat.com>
1507         * include/std/ranges (join_with_view::_Iterator::operator*):
1508         Replace use of std::visit with manual visitation.
1509         (join_with_view::_Iterator::operator++): Likewise.
1510         (join_with_view::_Iterator::operator--): Likewise.
1511         (join_with_view::_Iterator::iter_move): Likewise.
1512         (join_with_view::_Iterator::iter_swap): Likewise.
1514 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1516         * testsuite/25_algorithms/stable_sort/mem_check.cc: Do nto run
1517         for freestanding.
1519 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1521         PR libstdc++/107139
1522         * include/std/coroutine: Remove all _GLIBCXXHOSTED preprocessor
1523         conditionals.
1525 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1527         PR libstdc++/107134
1528         * include/c_global/cstdint [!_GLIBCXX_HOSTED]: Include
1529         <stdint-gcc.h> directly.
1531 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
1533         PR libstdc++/107135
1534         * include/bits/functexcept.h [!_GLIBCXX_HOSTED]
1535         (__throw_invalid_argument, __throw_out_of_range)
1536         (__throw_out_of_range_fmt, __throw_runtime_error)
1537         (__throw_overflow_error): Define inline.
1538         * include/std/bitset (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]:
1539         Replace __builtin_abort with __throw_invalid_argument.
1541 2022-10-04  Patrick Palka  <ppalka@redhat.com>
1543         * include/std/ranges: Include <variant> for C++23.
1544         (__detail::__compatible_joinable_ranges): Define.
1545         (__detail::__bidirectional_common): Define.
1546         (join_with_view): Define.
1547         (join_with_view::_Iterator): Define.
1548         (join_with_view::_Sentinel): Define.
1549         (views::__detail::__can_join_with_view): Define.
1550         (views::_JoinWith, views::join_with): Define.
1551         * testsuite/std/ranges/adaptors/join_with/1.cc: New test.
1553 2022-10-04  Arsen Arsenović  <arsen@aarsen.me>
1555         * include/std/iostream: Use ///< for inline documentation.
1556         * include/std/limits: Likewise.
1557         * include/experimental/internet: Likewise.
1559 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1561         * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
1562         * doc/html/manual/status.html: Regenerate.
1564 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1566         PR libstdc++/103626
1567         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc:
1568         Require ET hosted.
1569         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
1570         * testsuite/18_support/new_nothrow.cc: Likewise.
1571         * testsuite/20_util/allocator/105975.cc: Likewise.
1572         * testsuite/20_util/allocator/14176.cc: Likewise.
1573         * testsuite/20_util/allocator/64135.cc: Likewise.
1574         * testsuite/20_util/allocator/89510.cc: Likewise.
1575         * testsuite/20_util/allocator/lwg3190.cc: Likewise.
1576         * testsuite/20_util/allocator/overaligned.cc: Likewise.
1577         * testsuite/20_util/allocator/rebind_c++20.cc: Likewise.
1578         * testsuite/20_util/allocator/requirements/constexpr.cc:
1579         Likewise.
1580         * testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc:
1581         Likewise.
1582         * testsuite/20_util/allocator/requirements/typedefs.cc:
1583         Likewise.
1584         * testsuite/20_util/allocator/requirements/typedefs_c++20.cc:
1585         Likewise.
1586         * testsuite/20_util/allocator/void.cc: Likewise.
1587         * testsuite/20_util/allocator_traits/header-2.cc: Likewise.
1588         * testsuite/20_util/allocator_traits/header.cc: Likewise.
1589         * testsuite/20_util/allocator_traits/members/92878_92947.cc:
1590         Likewise.
1591         * testsuite/20_util/allocator_traits/members/pointers.cc:
1592         Likewise.
1593         * testsuite/20_util/allocator_traits/requirements/typedefs.cc:
1594         Likewise.
1595         * testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
1596         Likewise.
1597         * testsuite/20_util/bind/42593.cc: Likewise.
1598         * testsuite/20_util/bitset/access/dr396.cc: Likewise.
1599         * testsuite/20_util/bitset/access/to_string.cc: Likewise.
1600         * testsuite/20_util/bitset/cons/16020.cc: Likewise.
1601         * testsuite/20_util/bitset/cons/dr1325-2.cc: Likewise.
1602         * testsuite/20_util/bitset/cons/dr396.cc: Likewise.
1603         * testsuite/20_util/bitset/debug/invalidation/1.cc: Likewise.
1604         * testsuite/20_util/bitset/ext/15361.cc: Likewise.
1605         * testsuite/20_util/bitset/operations/13838.cc: Likewise.
1606         * testsuite/20_util/bitset/operations/96303.cc: Likewise.
1607         * testsuite/20_util/bitset/version.cc: Likewise.
1608         * testsuite/20_util/enable_shared_from_this/56383.cc: Likewise.
1609         * testsuite/20_util/enable_shared_from_this/89303.cc: Likewise.
1610         * testsuite/20_util/enable_shared_from_this/members/assign.cc:
1611         Likewise.
1612         * testsuite/20_util/enable_shared_from_this/members/const.cc:
1613         Likewise.
1614         * testsuite/20_util/enable_shared_from_this/members/reinit.cc:
1615         Likewise.
1616         * testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc:
1617         Likewise.
1618         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
1619         Likewise.
1620         * testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc:
1621         Likewise.
1622         * testsuite/20_util/forward/1.cc: Likewise.
1623         * testsuite/20_util/forward/1_neg.cc: Likewise.
1624         * testsuite/20_util/function/1.cc: Likewise.
1625         * testsuite/20_util/function/10.cc: Likewise.
1626         * testsuite/20_util/function/2.cc: Likewise.
1627         * testsuite/20_util/function/3.cc: Likewise.
1628         * testsuite/20_util/function/4.cc: Likewise.
1629         * testsuite/20_util/function/43397.cc: Likewise.
1630         * testsuite/20_util/function/48541.cc: Likewise.
1631         * testsuite/20_util/function/5.cc: Likewise.
1632         * testsuite/20_util/function/58569.cc: Likewise.
1633         * testsuite/20_util/function/6.cc: Likewise.
1634         * testsuite/20_util/function/60594.cc: Likewise.
1635         * testsuite/20_util/function/65760.cc: Likewise.
1636         * testsuite/20_util/function/69222.cc: Likewise.
1637         * testsuite/20_util/function/7.cc: Likewise.
1638         * testsuite/20_util/function/77322.cc: Likewise.
1639         * testsuite/20_util/function/8.cc: Likewise.
1640         * testsuite/20_util/function/9.cc: Likewise.
1641         * testsuite/20_util/function/91456.cc: Likewise.
1642         * testsuite/20_util/function/assign/move.cc: Likewise.
1643         * testsuite/20_util/function/assign/move_target.cc: Likewise.
1644         * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
1645         * testsuite/20_util/function/cons/55320.cc: Likewise.
1646         * testsuite/20_util/function/cons/57465.cc: Likewise.
1647         * testsuite/20_util/function/cons/72820.cc: Likewise.
1648         * testsuite/20_util/function/cons/addressof.cc: Likewise.
1649         * testsuite/20_util/function/cons/callable.cc: Likewise.
1650         * testsuite/20_util/function/cons/deduction.cc: Likewise.
1651         * testsuite/20_util/function/cons/lwg2774.cc: Likewise.
1652         * testsuite/20_util/function/cons/move.cc: Likewise.
1653         * testsuite/20_util/function/cons/move_target.cc: Likewise.
1654         * testsuite/20_util/function/cons/noexcept.cc: Likewise.
1655         * testsuite/20_util/function/cons/non_copyconstructible.cc:
1656         Likewise.
1657         * testsuite/20_util/function/cons/refqual.cc: Likewise.
1658         * testsuite/20_util/function/cons/70692.cc: Likewise.
1659         * testsuite/20_util/function/cons/deduction_c++23.cc: Likewise.
1660         * testsuite/20_util/function/invoke/forwarding.cc: Likewise.
1661         * testsuite/20_util/function/invoke/move_only.cc: Likewise.
1662         * testsuite/20_util/function/null_pointer_comparisons.cc:
1663         Likewise.
1664         * testsuite/20_util/function/requirements/explicit_instantiation.cc:
1665         Likewise.
1666         * testsuite/20_util/function/target_no_rtti.cc: Likewise.
1667         * testsuite/20_util/function_objects/83607.cc: Likewise.
1668         * testsuite/20_util/function_objects/mem_fn/adl.cc: Likewise.
1669         * testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise.
1670         * testsuite/20_util/headers/functional/types_std_c++0x.cc:
1671         Likewise.
1672         * testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise.
1673         * testsuite/20_util/is_function/35637.cc: Likewise.
1674         * testsuite/20_util/move/1.cc: Likewise.
1675         * testsuite/20_util/move_only_function/call.cc: Likewise.
1676         * testsuite/20_util/move_only_function/cons.cc: Likewise.
1677         * testsuite/20_util/move_only_function/move.cc: Likewise.
1678         * testsuite/20_util/move_only_function/version.cc: Likewise.
1679         * testsuite/20_util/owner_less/cmp.cc: Likewise.
1680         * testsuite/20_util/owner_less/noexcept.cc: Likewise.
1681         * testsuite/20_util/owner_less/void.cc: Likewise.
1682         * testsuite/20_util/pointer_safety/1.cc: Likewise.
1683         * testsuite/20_util/scoped_allocator/65279.cc: Likewise.
1684         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
1685         * testsuite/20_util/scoped_allocator/construct_pair.cc:
1686         Likewise.
1687         * testsuite/20_util/scoped_allocator/dr2586.cc: Likewise.
1688         * testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc:
1689         Likewise.
1690         * testsuite/20_util/shared_ptr/assign/assign.cc: Likewise.
1691         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
1692         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
1693         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
1694         Likewise.
1695         * testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
1696         * testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
1697         * testsuite/20_util/shared_ptr/assign/sfinae.cc: Likewise.
1698         * testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
1699         * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc:
1700         Likewise.
1701         * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
1702         Likewise.
1703         * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc:
1704         Likewise.
1705         * testsuite/20_util/shared_ptr/atomic/1.cc: Likewise.
1706         * testsuite/20_util/shared_ptr/atomic/2.cc: Likewise.
1707         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
1708         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
1709         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
1710         * testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise.
1711         * testsuite/20_util/shared_ptr/comparison/86537.cc: Likewise.
1712         * testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
1713         * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc:
1714         Likewise.
1715         * testsuite/20_util/shared_ptr/comparison/dr1401.cc: Likewise.
1716         * testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
1717         * testsuite/20_util/shared_ptr/cons/39405.cc: Likewise.
1718         * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
1719         * testsuite/20_util/shared_ptr/cons/46910.cc: Likewise.
1720         * testsuite/20_util/shared_ptr/cons/51365.cc: Likewise.
1721         * testsuite/20_util/shared_ptr/cons/52924.cc: Likewise.
1722         * testsuite/20_util/shared_ptr/cons/55123.cc: Likewise.
1723         * testsuite/20_util/shared_ptr/cons/58659.cc: Likewise.
1724         * testsuite/20_util/shared_ptr/cons/58839.cc: Likewise.
1725         * testsuite/20_util/shared_ptr/cons/61036.cc: Likewise.
1726         * testsuite/20_util/shared_ptr/cons/79467.cc: Likewise.
1727         * testsuite/20_util/shared_ptr/cons/80229.cc: Likewise.
1728         * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Likewise.
1729         * testsuite/20_util/shared_ptr/cons/alias.cc: Likewise.
1730         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
1731         * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
1732         * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
1733         * testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
1734         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
1735         * testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
1736         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: Likewise.
1737         * testsuite/20_util/shared_ptr/cons/lwg3548.cc: Likewise.
1738         * testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
1739         * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
1740         Likewise.
1741         * testsuite/20_util/shared_ptr/cons/nullptr.cc: Likewise.
1742         * testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
1743         * testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
1744         * testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc:
1745         Likewise.
1746         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc:
1747         Likewise.
1748         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc:
1749         Likewise.
1750         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
1751         Likewise.
1752         * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
1753         * testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
1754         * testsuite/20_util/shared_ptr/creation/36949.cc: Likewise.
1755         * testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc:
1756         Likewise.
1757         * testsuite/20_util/shared_ptr/creation/58594.cc: Likewise.
1758         * testsuite/20_util/shared_ptr/creation/87278.cc: Likewise.
1759         * testsuite/20_util/shared_ptr/creation/92878_92947.cc:
1760         Likewise.
1761         * testsuite/20_util/shared_ptr/creation/99006.cc: Likewise.
1762         * testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
1763         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
1764         * testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
1765         * testsuite/20_util/shared_ptr/creation/no_rtti.cc: Likewise.
1766         * testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise.
1767         * testsuite/20_util/shared_ptr/creation/private.cc: Likewise.
1768         * testsuite/20_util/shared_ptr/creation/single_allocation.cc:
1769         Likewise.
1770         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
1771         Likewise.
1772         * testsuite/20_util/shared_ptr/creation/version.cc: Likewise.
1773         * testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
1774         * testsuite/20_util/shared_ptr/hash/1.cc: Likewise.
1775         * testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
1776         * testsuite/20_util/shared_ptr/misc/42019.cc: Likewise.
1777         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
1778         * testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
1779         * testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
1780         * testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
1781         * testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc:
1782         Likewise.
1783         * testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
1784         * testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
1785         * testsuite/20_util/shared_ptr/observers/array.cc: Likewise.
1786         * testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
1787         * testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
1788         * testsuite/20_util/shared_ptr/observers/owner_before.cc:
1789         Likewise.
1790         * testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
1791         * testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
1792         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc:
1793         Likewise.
1794         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc:
1795         Likewise.
1796         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
1797         Likewise.
1798         * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
1799         Likewise.
1800         * testsuite/20_util/temporary_buffer.cc: Likewise.
1801         * testsuite/20_util/tuple/48476.cc: Likewise.
1802         * testsuite/20_util/tuple/cons/90700.cc: Likewise.
1803         * testsuite/20_util/tuple/cons/96803.cc: Likewise.
1804         * testsuite/20_util/tuple/cons/allocator_with_any.cc: Likewise.
1805         * testsuite/20_util/tuple/cons/allocators.cc: Likewise.
1806         * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc:
1807         Likewise.
1808         * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
1809         * testsuite/20_util/tuple/p2321r2.cc: Likewise.
1810         * testsuite/20_util/unique_ptr/creation/92878_92947.cc:
1811         Likewise.
1812         * testsuite/20_util/unique_ptr/creation/array.cc: Likewise.
1813         * testsuite/20_util/unique_ptr/creation/array_neg.cc: Likewise.
1814         * testsuite/20_util/unique_ptr/creation/constexpr.cc: Likewise.
1815         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc:
1816         Likewise.
1817         * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc:
1818         Likewise.
1819         * testsuite/20_util/unique_ptr/creation/single.cc: Likewise.
1820         * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
1821         * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
1822         * testsuite/20_util/uses_allocator/uninitialized_construct.cc:
1823         Likewise.
1824         * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
1825         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
1826         * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
1827         Likewise.
1828         * testsuite/20_util/weak_ptr/lock/1.cc: Likewise.
1829         * testsuite/20_util/weak_ptr/observers/owner_before.cc:
1830         Likewise.
1831         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
1832         Likewise.
1833         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
1834         Likewise.
1835         * testsuite/21_strings/basic_string/version.cc: Likewise.
1836         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
1837         Likewise.
1838         * testsuite/21_strings/c_strings/char/69626.cc: Likewise.
1839         * testsuite/21_strings/char_traits/requirements/version.cc:
1840         Likewise.
1841         * testsuite/23_containers/vector/requirements/version.cc:
1842         Likewise.
1843         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
1844         Likewise.
1845         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
1846         Likewise.
1847         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
1848         Likewise.
1849         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
1850         Likewise.
1851         * testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise.
1852         * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1853         Likewise.
1854         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
1855         Likewise.
1856         * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
1857         Likewise.
1858         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
1859         Likewise.
1860         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
1861         Likewise.
1862         * testsuite/25_algorithms/constexpr_macro.cc: Likewise.
1863         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
1864         * testsuite/25_algorithms/headers/cstdlib/functions_std.cc:
1865         Likewise.
1866         * testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
1867         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
1868         Likewise.
1869         * testsuite/25_algorithms/make_heap/movable.cc: Likewise.
1870         * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
1871         * testsuite/25_algorithms/random_shuffle/1.cc: Likewise.
1872         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
1873         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
1874         Likewise.
1875         * testsuite/25_algorithms/sort/35588.cc: Likewise.
1876         * testsuite/25_algorithms/stable_partition/1.cc: Likewise.
1877         * testsuite/25_algorithms/stable_partition/constrained.cc:
1878         Likewise.
1879         * testsuite/25_algorithms/stable_partition/mem_check.cc:
1880         Likewise.
1881         * testsuite/25_algorithms/stable_partition/moveable.cc:
1882         Likewise.
1883         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
1884         Likewise.
1885         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
1886         Likewise.
1887         * testsuite/25_algorithms/stable_sort/1.cc: Likewise.
1888         * testsuite/26_numerics/complex/2.cc: Likewise.
1889         * testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise.
1890         * testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise.
1891         * testsuite/26_numerics/headers/cstdlib/60401.cc: Likewise.
1892         * testsuite/26_numerics/headers/cstdlib/dr2192.cc: Likewise.
1893         * testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: Likewise.
1894         * testsuite/26_numerics/headers/cstdlib/dr2735.cc: Likewise.
1895         * testsuite/26_numerics/headers/cstdlib/functions_std.cc:
1896         Likewise.
1897         * testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise.
1898         * testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise.
1899         * testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc:
1900         Likewise.
1901         * testsuite/26_numerics/lerp/version.cc: Likewise.
1902         * testsuite/26_numerics/midpoint/version.cc: Likewise.
1903         * testsuite/27_io/basic_syncbuf/2.cc: Likewise.
1904         * testsuite/27_io/basic_syncstream/2.cc: Likewise.
1905         * testsuite/27_io/fpos/14320-1.cc: Likewise.
1906         * testsuite/27_io/fpos/14320-2.cc: Likewise.
1907         * testsuite/27_io/fpos/14320-3.cc: Likewise.
1908         * testsuite/27_io/fpos/14320-4.cc: Likewise.
1909         * testsuite/27_io/spanstream/version.cc: Likewise.
1910         * testsuite/29_atomics/atomic/lwg3220.cc: Likewise.
1911         * testsuite/29_atomics/atomic/operators/51811.cc: Likewise.
1912         * testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise.
1913         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Likewise.
1914         * testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
1915         * testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise.
1916         * testsuite/30_threads/barrier/2.cc: Likewise.
1917         * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
1918         Likewise.
1919         * testsuite/30_threads/jthread/version.cc: Likewise.
1920         * testsuite/30_threads/latch/2.cc: Likewise.
1921         * testsuite/30_threads/semaphore/2.cc: Likewise.
1922         * testsuite/30_threads/stop_token/2.cc: Likewise.
1923         * testsuite/abi/pr42230.cc: Likewise.
1924         * testsuite/ext/shared_ptr/1.cc: Likewise.
1925         * testsuite/libstdc++-xmethods/shared_ptr.cc: Likewise.
1926         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
1927         * testsuite/std/ranges/adaptors/p1739.cc: Likewise.
1928         * testsuite/std/ranges/iota/lwg3292_neg.cc: Likewise.
1929         * testsuite/std/ranges/p2325.cc: Likewise.
1931 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1933         * include/std/bitset (bitset(const C*, size_type n, C, C))
1934         [!_GLIBCXX_HOSTED]: Remove std::basic_string dependency.
1935         (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]: Abort instead of
1936         throwing.
1938 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1940         PR libstdc++/103626
1941         * include/std/bitset [!_GLIBCXX_HOSTED]: Re-enable std::hash.
1942         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Require ET
1943         hosted.
1944         * testsuite/20_util/bitset/ext/constexpr.cc: Likewise.
1946 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1948         PR libstdc++/103626
1949         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
1950         Also require hosted.
1951         (check_effective_target_hosted): New proc.
1953 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1954             Jonathan Wakely  <jwakely@redhat.com>
1956         PR libstdc++/103626
1957         * testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]:
1958         Do not include C headers that aren't valid for freestanding.
1959         * testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]:
1960         Do not test tag types that aren't defined for freestanding.
1961         * testsuite/18_support/headers/cstdlib/functions_std.cc: Do not
1962         check for std::getenv and std::system for freestanding.
1963         * testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]:
1964         Do not test hosted parts of the standard library.
1965         * testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]:
1966         Likewise.
1967         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]:
1968         Likewise.
1969         * testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]:
1970         Likewise.
1971         * testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise.
1972         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]:
1973         Likewise.
1974         * testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]:
1975         Likewise.
1976         * testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise.
1977         * testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise.
1978         * testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise.
1980 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1982         PR libstdc++/106953
1983         * include/Makefile.am [!_GLIBCXX_HOSTED]: Remove
1984         install-freestanding-headers, unifying it with the usual
1985         install-headers
1986         * include/Makefile.in: Regenerate.
1988 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1989             Jonathan Wakely  <jwakely@redhat.com>
1991         PR libstdc++/103626
1992         * include/Makefile.am: Add new header.
1993         * include/Makefile.in: Regenerate.
1994         * include/bits/requires_hosted.h: New header.
1995         * include/experimental/algorithm: Include
1996         <bits/requires_hosted.h>.
1997         * include/experimental/any: Likewise.
1998         * include/experimental/array: Likewise.
1999         * include/experimental/buffer: Likewise.
2000         * include/experimental/chrono: Likewise.
2001         * include/experimental/deque: Likewise.
2002         * include/experimental/executor: Likewise.
2003         * include/experimental/filesystem: Likewise.
2004         * include/experimental/forward_list: Likewise.
2005         * include/experimental/functional: Likewise.
2006         * include/experimental/internet: Likewise.
2007         * include/experimental/io_context: Likewise.
2008         * include/experimental/iterator: Likewise.
2009         * include/experimental/list: Likewise.
2010         * include/experimental/map: Likewise.
2011         * include/experimental/memory: Likewise.
2012         * include/experimental/memory_resource: Likewise.
2013         * include/experimental/net: Likewise.
2014         * include/experimental/netfwd: Likewise.
2015         * include/experimental/numeric: Likewise.
2016         * include/experimental/optional: Likewise.
2017         * include/experimental/propagate_const: Likewise.
2018         * include/experimental/random: Likewise.
2019         * include/experimental/ratio: Likewise.
2020         * include/experimental/regex: Likewise.
2021         * include/experimental/scope: Likewise.
2022         * include/experimental/set: Likewise.
2023         * include/experimental/simd: Likewise.
2024         * include/experimental/socket: Likewise.
2025         * include/experimental/source_location: Likewise.
2026         * include/experimental/string: Likewise.
2027         * include/experimental/string_view: Likewise.
2028         * include/experimental/system_error: Likewise.
2029         * include/experimental/timer: Likewise.
2030         * include/experimental/tuple: Likewise.
2031         * include/experimental/unordered_map: Likewise.
2032         * include/experimental/unordered_set: Likewise.
2033         * include/experimental/utility: Likewise.
2034         * include/experimental/vector: Likewise.
2035         * include/std/barrier: Likewise.
2036         * include/std/chrono: Likewise.
2037         * include/std/condition_variable: Likewise.
2038         * include/std/deque: Likewise.
2039         * include/std/execution: Likewise.
2040         * include/std/filesystem: Likewise.
2041         * include/std/forward_list: Likewise.
2042         * include/std/fstream: Likewise.
2043         * include/std/future: Likewise.
2044         * include/std/iomanip: Likewise.
2045         * include/std/ios: Likewise.
2046         * include/std/iosfwd: Likewise.
2047         * include/std/iostream: Likewise.
2048         * include/std/istream: Likewise.
2049         * include/std/latch: Likewise.
2050         * include/std/list: Likewise.
2051         * include/std/locale: Likewise.
2052         * include/std/map: Likewise.
2053         * include/std/memory_resource: Likewise.
2054         * include/std/mutex: Likewise.
2055         * include/std/ostream: Likewise.
2056         * include/std/queue: Likewise.
2057         * include/std/random: Likewise.
2058         * include/std/regex: Likewise.
2059         * include/std/semaphore: Likewise.
2060         * include/std/set: Likewise.
2061         * include/std/shared_mutex: Likewise.
2062         * include/std/spanstream: Likewise.
2063         * include/std/sstream: Likewise.
2064         * include/std/stack: Likewise.
2065         * include/std/stacktrace: Likewise.
2066         * include/std/stop_token: Likewise.
2067         * include/std/streambuf: Likewise.
2068         * include/std/string: Likewise.
2069         * include/std/syncstream: Likewise.
2070         * include/std/system_error: Likewise.
2071         * include/std/thread: Likewise.
2072         * include/std/unordered_map: Likewise.
2073         * include/std/unordered_set: Likewise.
2074         * include/std/valarray: Likewise.
2075         * include/std/vector: Likewise.
2076         * include/tr1/array: Likewise.
2077         * include/tr1/ccomplex: Likewise.
2078         * include/tr1/cctype: Likewise.
2079         * include/tr1/cfenv: Likewise.
2080         * include/tr1/cfloat: Likewise.
2081         * include/tr1/cinttypes: Likewise.
2082         * include/tr1/climits: Likewise.
2083         * include/tr1/cmath: Likewise.
2084         * include/tr1/complex: Likewise.
2085         * include/tr1/complex.h: Likewise.
2086         * include/tr1/cstdarg: Likewise.
2087         * include/tr1/cstdbool: Likewise.
2088         * include/tr1/cstdint: Likewise.
2089         * include/tr1/cstdio: Likewise.
2090         * include/tr1/cstdlib: Likewise.
2091         * include/tr1/ctgmath: Likewise.
2092         * include/tr1/ctime: Likewise.
2093         * include/tr1/ctype.h: Likewise.
2094         * include/tr1/cwchar: Likewise.
2095         * include/tr1/cwctype: Likewise.
2096         * include/tr1/fenv.h: Likewise.
2097         * include/tr1/float.h: Likewise.
2098         * include/tr1/functional: Likewise.
2099         * include/tr1/inttypes.h: Likewise.
2100         * include/tr1/limits.h: Likewise.
2101         * include/tr1/math.h: Likewise.
2102         * include/tr1/memory: Likewise.
2103         * include/tr1/random: Likewise.
2104         * include/tr1/regex: Likewise.
2105         * include/tr1/stdarg.h: Likewise.
2106         * include/tr1/stdbool.h: Likewise.
2107         * include/tr1/stdint.h: Likewise.
2108         * include/tr1/stdio.h: Likewise.
2109         * include/tr1/stdlib.h: Likewise.
2110         * include/tr1/tgmath.h: Likewise.
2111         * include/tr1/tuple: Likewise.
2112         * include/tr1/type_traits: Likewise.
2113         * include/tr1/unordered_map: Likewise.
2114         * include/tr1/unordered_set: Likewise.
2115         * include/tr1/utility: Likewise.
2116         * include/tr1/wchar.h: Likewise.
2117         * include/tr1/wctype.h: Likewise.
2118         * include/c_global/cmath: Likewise.
2119         * include/ext/algorithm: Include <bits/requires_hosted.h>.
2120         * include/ext/bitmap_allocator.h: Likewise.
2121         * include/ext/cmath: Likewise.
2122         * include/ext/codecvt_specializations.h: Likewise.
2123         * include/ext/debug_allocator.h: Likewise.
2124         * include/ext/enc_filebuf.h: Likewise.
2125         * include/ext/extptr_allocator.h: Likewise.
2126         * include/ext/functional: Likewise.
2127         * include/ext/malloc_allocator.h: Likewise.
2128         * include/ext/memory: Likewise.
2129         * include/ext/mt_allocator.h: Likewise.
2130         * include/ext/new_allocator.h: Likewise.
2131         * include/ext/numeric: Likewise.
2132         * include/ext/pod_char_traits.h: Likewise.
2133         * include/ext/pool_allocator.h: Likewise.
2134         * include/ext/random: Likewise.
2135         * include/ext/random.tcc: Likewise.
2136         * include/ext/rb_tree: Likewise.
2137         * include/ext/rc_string_base.h: Likewise.
2138         * include/ext/rope: Likewise.
2139         * include/ext/ropeimpl.h: Likewise.
2140         * include/ext/slist: Likewise.
2141         * include/ext/sso_string_base.h: Likewise.
2142         * include/ext/stdio_filebuf.h: Likewise.
2143         * include/ext/stdio_sync_filebuf.h: Likewise.
2144         * include/ext/string_conversions.h: Likewise.
2145         * include/ext/throw_allocator.h: Likewise.
2146         * include/ext/vstring.h: Likewise.
2147         * include/ext/vstring.tcc: Likewise.
2148         * include/ext/vstring_fwd.h: Likewise.
2149         * include/ext/vstring_util.h: Likewise.
2150         * include/std/charconv: Likewise.
2151         (__cpp_lib_to_chars): Do not define for freestanding.
2152         * include/std/version: Adjust which macros get defined in
2153         freestanding.
2154         * include/ext/pointer.h [!_GLIBCXX_HOSTED]: Omit iostream
2155         functionality from freestanding.
2156         * include/std/algorithm [!_GLIBCXX_HOSTED]: Omit PSTL algos.
2157         * include/std/memory [!_GLIBCXX_HOSTED]: Omit
2158         <bits/stl_tempbuf.h> in freestanding
2159         * include/bits/algorithmfwd.h [!_GLIBCXX_HOSTED]: Omit leftover
2160         random_shuffle and stable_partition definition.
2161         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED]: Omit
2162         random_shuffle and stable_partition from freestanding.
2163         * include/bits/ranges_algo.h [!_GLIBCXX_HOSTED]: Omit
2164         stable_partition from freestanding.
2165         * include/bits/concept_check.h: Remove needless HOSTED check.
2166         * include/std/iterator: Include <bits/ranges_base.h>.
2167         * include/std/numeric (__cpp_lib_parallel_algorithms): Do not
2168         define for freestanding.
2169         * include/std/functional (__cpp_lib_boyer_moore_searcher):
2170         Likewise.
2171         * testsuite/lib/prune.exp: Match error for hosted-only libstdc++
2172         tests.
2174 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
2175             Arsen Arsenović  <arsen@aarsen.me>
2177         * include/precompiled/extc++.h [!_GLIBCXX_HOSTED]: Do not
2178         include headers that aren't valid for freestanding.
2179         * include/precompiled/stdc++.h [!_GLIBCXX_HOSTED]: Likewise.
2181 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
2183         * configure.ac: Remove any lines that unconditionally include
2184         <stdio.h> from ac_includes_default, when running Autoconf <2.70.
2185         * configure: Regenerate.
2187 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
2189         PR libstdc++/103626
2190         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Define _GLIBCXX_HOSTED
2191         to __STDC_HOSTED__ for non-freestanding installations.
2192         * configure: Regenerate.
2193         * include/Makefile.am (${host_builddir}/c++config.h): Adjust
2194         grep pattern.
2195         * include/Makefile.in: Regenerate.
2196         * testsuite/lib/libstdc++.exp (v3-build_support): Use
2197         -fno-freestanding.
2198         * testsuite/libstdc++-abi/abi.exp: Likewise.
2200 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
2202         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
2203         Change body of unused operator<< overload to throw if called.
2204         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
2205         Likewise.
2207 2022-10-03  François Dumont  <fdumont@gcc.gnu.org>
2209         * python/libstdcxx/v6/printers.py (Printer.add_version): Do not add version
2210         namespace for __cxx11 symbols.
2211         (add_one_template_type_printer): Likewise.
2212         (add_one_type_printer): Likewise.
2213         (FilteringTypePrinter._recognizer.recognize): Add a workaround for std::string & al
2214         ambiguous typedef matching both std:: and std::__cxx11:: symbols.
2215         * testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete
2216         \#define _GLIBCXX_USE_CXX11_ABI 0.
2217         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise. Adapt test to accept
2218         std::__cxx11::list.
2219         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
2220         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
2221         * testsuite/libstdc++-prettyprinters/80276.cc: Likewise and remove xfail for c++20
2222         and debug mode.
2223         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
2225 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
2227         * testsuite/20_util/bitset/access/to_ulong.cc: Construct bitset
2228         from binary literal instead of using stringstream.
2230 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
2232         * include/std/bitset (operator>>): Use a simple buffer instead
2233         of std::basic_string.
2235 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
2237         * include/std/bitset (_M_copy_from_ptr, _M_copy_from_string)
2238         (_M_copy_to_string): Change access to private.
2239         (_M_copy_from_string(const basic_string&, size_t, size_t)):
2240         Remove.
2241         (_M_copy_to_string(const basic_string&)): Remove.
2243 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
2245         * testsuite/20_util/bind/ref_neg.cc: Fix dg-prune-output
2246         directive.
2248 2022-09-30  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
2249             Yvan ROUX   <yvan.roux@foss.st.com>
2251         * testsuite/20_util/bind/ref_neg.cc: Prune Windows paths too.
2253 2022-09-30  Arsen Arsenović  <arsen@aarsen.me>
2255         * include/std/bitset: Include <bits/stl_algobase.h>.
2257 2022-09-29  François Dumont  <fdumont@gcc.gnu.org>
2259         * python/libstdcxx/v6/printers.py (add_one_template_type_printer): Register
2260         printer for types in std::__debug namespace with template parameters in std::__8
2261         namespace.
2263 2022-09-29  Patrick Palka  <ppalka@redhat.com>
2265         * include/bits/unique_ptr.h (unique_ptr<_Tp[], _Dp>): Remove
2266         __remove_cv and use __remove_cv_t instead.
2268 2022-09-29  Jonathan Wakely  <jwakely@redhat.com>
2270         * include/std/type_traits (__is_invocable_impl): Check
2271         __has_builtin(__reference_converts_from_temporary) before using
2272         built-in.
2274 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
2276         * doc/xml/manual/evolution.xml: Document std::bind API
2277         changes.
2278         * doc/xml/manual/intro.xml: Document LWG 2487 status.
2279         * doc/xml/manual/using.xml: Clarify default value of
2280         _GLIBCXX_USE_DEPRECATED.
2281         * doc/html/*: Regenerate.
2282         * include/std/functional (_Bind::operator()(Args&&...) volatile)
2283         (_Bind::operator()(Args&&...) const volatile)
2284         (_Bind_result::operator()(Args&&...) volatile)
2285         (_Bind_result::operator()(Args&&...) const volatile): Replace
2286         with deleted overload for C++20 and later.
2287         * testsuite/20_util/bind/cv_quals.cc: Check for deprecated
2288         warnings in C++17.
2289         * testsuite/20_util/bind/cv_quals_2.cc: Likewise, and check for
2290         ill-formed in C++20.
2292 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
2294         PR libstdc++/70692
2295         * include/bits/invoke.h [__cplusplus < 201703] (__invoke_r):
2296         Remove is_invocable and is_convertible constraints.
2297         * include/std/type_traits (__is_invocable_impl::_S_conv): Use
2298         non-deduced context for parameter.
2299         (__is_invocable_impl::_S_test): Remove _Check_noex template
2300         parameter and use deduced noexcept value in its place. Add bool
2301         parameter to detect dangling references.
2302         (__is_invocable_impl::type): Adjust call to _S_test to avoid
2303         deducing unnecessary noexcept property..
2304         (__is_invocable_impl::__nothrow_type): Rename to ...
2305         (__is_invocable_impl::__nothrow_conv): ... this. Adjust call
2306         to _S_test to deduce noexcept property.
2307         * testsuite/20_util/bind/dangling_ref.cc: New test.
2308         * testsuite/20_util/function/cons/70692.cc: New test.
2309         * testsuite/20_util/function_objects/invoke/dangling_ref.cc:
2310         New test.
2311         * testsuite/20_util/is_invocable/dangling_ref.cc: New test.
2312         * testsuite/30_threads/packaged_task/cons/dangling_ref.cc:
2313         New test.
2315 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
2317         PR c++/107049
2318         * testsuite/20_util/is_convertible/requirements/access.cc: New
2319         test.
2321 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
2323         PR c++/106651
2324         * include/bits/std_function.h (__function_guide_t): New alias
2325         template.
2326         [__cpp_static_call_operator] (__function_guide_static_helper):
2327         New class template.
2328         (function): Use __function_guide_t in deduction guide.
2329         * include/std/future (packaged_task): Use __function_guide_t in
2330         deduction guide.
2331         * testsuite/20_util/function/cons/deduction_c++23.cc: New test.
2332         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
2333         New test.
2335 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
2337         * include/bits/ptr_traits.h (__ptr_traits_elem) [__cpp_concepts]:
2338         Also define the __ptr_traits_elem class template for the
2339         concepts case.
2340         (pointer_traits<Ptr>): Remove constrained partial
2341         specialization.
2342         * testsuite/20_util/pointer_traits/lwg3545.cc: Check for
2343         ambiguitiy with program-defined partial specialization.
2345 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
2347         * include/std/type_traits (is_convertible, is_convertible_v):
2348         Define using new built-in.
2349         (is_nothrow_convertible is_nothrow_convertible_v): Likewise.
2351 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
2353         PR libstdc++/107037
2354         * include/std/bitset (_Base_bitset::_M_do_reset): Use
2355         preprocessor conditional around non-C++03 code.
2356         * testsuite/20_util/bitset/107037.cc: New test.
2358 2022-09-24  Jonathan Wakely  <jwakely@redhat.com>
2360         * include/bits/alloc_traits.h (allocator_traits::is_always_equal):
2361         Only instantiate is_empty if needed.
2362         * include/bits/ptr_traits.h (__ptr_traits_impl::difference_type)
2363         (__ptr_traits_impl::rebind): Use __detected_or.
2364         * include/experimental/type_traits (is_same_v): Add a partial
2365         specialization instead of instantiating the std::is_same class
2366         template.
2367         (detected_t): Redefine in terms of detected_or_t.
2368         (is_detected, is_detected_v): Redefine in terms of detected_t.
2369         * include/std/type_traits [__cpp_concepts] (__detected_or): Add
2370         new definition using concepts.
2371         (__detector::value_t): Rename to __is_detected.
2372         * testsuite/17_intro/names.cc: Check value_t isn't used.
2374 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
2376         * testsuite/20_util/is_assignable/requirements/access.cc:
2377         New test.
2379 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
2381         PR libstdc++/91456
2382         * include/std/type_traits (__is_nothrow_invocable_lib): Remove.
2383         (__is_invocable_impl::__nothrow_type): New member type which
2384         checks if the conversion can throw.
2385         (__is_nt_invocable_impl): Replace class template with alias
2386         template to __is_nt_invocable_impl::__nothrow_type.
2387         * testsuite/20_util/is_nothrow_invocable/91456.cc: New test.
2388         * testsuite/20_util/is_nothrow_convertible/value.cc: Remove
2389         macro used by value_ext.cc test.
2390         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Remove
2391         test for non-standard __is_nothrow_invocable_lib trait.
2393 2022-09-23  Marek Polacek  <polacek@redhat.com>
2395         PR c++/106784
2396         * include/std/type_traits: Rename __is_nothrow_convertible to
2397         __is_nothrow_convertible_lib.
2398         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Likewise.
2400 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
2402         * include/std/bitset (operator>>): Do not copy for N==0.
2403         * testsuite/20_util/bitset/io/input.cc: Add comment.
2405 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
2407         * include/debug/bitset (__debug::bitset): Add constexpr to all
2408         member functions.
2409         (operator&, operator|, operator^): Add inline and constexpr.
2410         (operator>>, operator<<): Add inline.
2411         * testsuite/20_util/bitset/access/constexpr.cc: Only check using
2412         constexpr std::string for the cxx11 ABI.
2413         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Likewise.
2414         * testsuite/20_util/headers/bitset/synopsis.cc: Check constexpr
2415         for C++23.
2417 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
2419         * include/std/bitset (bitset::_M_copy_to_string): Find set bits
2420         instead of iterating over individual bits.
2422 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
2424         * include/std/bitset (bitset): Add constexpr for C++23. Guard
2425         members using std::string with _GLIBCXX_HOSTED.
2426         * include/std/version (__cpp_lib_constexpr_bitset): Define.
2427         * testsuite/20_util/bitset/access/constexpr.cc: New test.
2428         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: New test.
2429         * testsuite/20_util/bitset/count/constexpr.cc: New test.
2430         * testsuite/20_util/bitset/ext/constexpr.cc: New test.
2431         * testsuite/20_util/bitset/operations/constexpr_c++23.cc: New test.
2432         * testsuite/20_util/bitset/version.cc: New test.
2434 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
2436         * testsuite/23_containers/bitset/18604.cc: Moved to...
2437         * testsuite/20_util/bitset/18604.cc: ...here.
2438         * testsuite/23_containers/bitset/45713.cc: Moved to...
2439         * testsuite/20_util/bitset/45713.cc: ...here.
2440         * testsuite/23_containers/bitset/to_string/dr396.cc: Moved to...
2441         * testsuite/20_util/bitset/access/dr396.cc: ...here.
2442         * testsuite/23_containers/bitset/to_string/1.cc: Moved to...
2443         * testsuite/20_util/bitset/access/to_string.cc: ...here.
2444         * testsuite/23_containers/bitset/to_ullong/1.cc: Moved to...
2445         * testsuite/20_util/bitset/access/to_ullong.cc: ...here.
2446         * testsuite/23_containers/bitset/to_ulong/1.cc: Moved to...
2447         * testsuite/20_util/bitset/access/to_ulong.cc: ...here.
2448         * testsuite/23_containers/bitset/cons/1.cc: Moved to...
2449         * testsuite/20_util/bitset/cons/1.cc: ...here.
2450         * testsuite/23_containers/bitset/cons/16020.cc: Moved to...
2451         * testsuite/20_util/bitset/cons/16020.cc: ...here.
2452         * testsuite/23_containers/bitset/cons/2.cc: Moved to...
2453         * testsuite/20_util/bitset/cons/2.cc: ...here.
2454         * testsuite/23_containers/bitset/cons/3.cc: Moved to...
2455         * testsuite/20_util/bitset/cons/3.cc: ...here.
2456         * testsuite/23_containers/bitset/cons/38244.cc: Moved to...
2457         * testsuite/20_util/bitset/cons/38244.cc: ...here.
2458         * testsuite/23_containers/bitset/cons/50268.cc: Moved to...
2459         * testsuite/20_util/bitset/cons/50268.cc: ...here.
2460         * testsuite/23_containers/bitset/cons/6282.cc: Moved to...
2461         * testsuite/20_util/bitset/cons/6282.cc: ...here.
2462         * testsuite/23_containers/bitset/cons/constexpr.cc: Moved to...
2463         * testsuite/20_util/bitset/cons/constexpr.cc: ...here.
2464         * testsuite/23_containers/bitset/cons/dr1325-1.cc: Moved to...
2465         * testsuite/20_util/bitset/cons/dr1325-1.cc: ...here.
2466         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Moved to...
2467         * testsuite/20_util/bitset/cons/dr1325-2.cc: ...here.
2468         * testsuite/23_containers/bitset/cons/dr396.cc: Moved to...
2469         * testsuite/20_util/bitset/cons/dr396.cc: ...here.
2470         * testsuite/23_containers/bitset/debug/invalidation/1.cc: Moved to...
2471         * testsuite/20_util/bitset/debug/invalidation/1.cc: ...here.
2472         * testsuite/23_containers/bitset/ext/15361.cc: Moved to...
2473         * testsuite/20_util/bitset/ext/15361.cc: ...here.
2474         * testsuite/23_containers/bitset/hash/1.cc: Moved to...
2475         * testsuite/20_util/bitset/hash/1.cc: ...here.
2476         * testsuite/23_containers/bitset/input/1.cc: Moved to...
2477         * testsuite/20_util/bitset/io/input.cc: ...here.
2478         * testsuite/23_containers/bitset/count/6124.cc: Moved to...
2479         * testsuite/20_util/bitset/observers/6124.cc: ...here.
2480         * testsuite/23_containers/bitset/all/1.cc: Moved to...
2481         * testsuite/20_util/bitset/observers/all.cc: ...here.
2482         * testsuite/23_containers/bitset/test/1.cc: Moved to...
2483         * testsuite/20_util/bitset/observers/test.cc: ...here.
2484         * testsuite/23_containers/bitset/operations/1.cc: Moved to...
2485         * testsuite/20_util/bitset/operations/1.cc: ...here.
2486         * testsuite/23_containers/bitset/operations/13838.cc: Moved to...
2487         * testsuite/20_util/bitset/operations/13838.cc: ...here.
2488         * testsuite/23_containers/bitset/operations/2.cc: Moved to...
2489         * testsuite/20_util/bitset/operations/2.cc: ...here.
2490         * testsuite/23_containers/bitset/operations/96303.cc: Moved to...
2491         * testsuite/20_util/bitset/operations/96303.cc: ...here.
2492         * testsuite/23_containers/bitset/operations/constexpr-2.cc: Moved to...
2493         * testsuite/20_util/bitset/operations/constexpr-2.cc: ...here.
2494         * testsuite/23_containers/bitset/operations/constexpr.cc: Moved to...
2495         * testsuite/20_util/bitset/operations/constexpr.cc: ...here.
2496         * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: Moved to...
2497         * testsuite/20_util/bitset/requirements/constexpr_functions.cc: ...here.
2498         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc: Moved to...
2499         * testsuite/20_util/bitset/requirements/explicit_instantiation/1.cc: ...here.
2500         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc: Moved to...
2501         * testsuite/20_util/bitset/requirements/explicit_instantiation/1_c++0x.cc: ...here.
2502         * testsuite/23_containers/headers/bitset/synopsis.cc: Moved to...
2503         * testsuite/20_util/headers/bitset/synopsis.cc: ...here.
2505 2022-09-22  François Dumont  <fdumont@gcc.gnu.org>
2507         * python/libstdcxx/v6/printers.py: Remove ptinter registration for non-existing
2508         types std::__debug::unique_ptr, std::__debug::stack, std::__debug::queue,
2509         std::__debug::priority_queue.
2511 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2513         PR libstdc++/91456
2514         * testsuite/20_util/function/91456.cc: Add comment with PR
2515         number.
2516         * testsuite/20_util/is_invocable/91456.cc: Likewise. Replace
2517         std::function checks with std::is_invocable_r checks.
2519 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2521         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Remove
2522         unnecessary main function.
2523         * testsuite/17_intro/headers/c++2011/all_attributes.cc:
2524         Likewise.
2525         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
2526         Likewise.
2527         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
2528         Likewise.
2529         * testsuite/17_intro/headers/c++2020/all_attributes.cc:
2530         Likewise.
2532 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2534         * testsuite/20_util/headers/memory/synopsis.cc: Add declarations
2535         from C++11 and later.
2537 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2539         * doc/xml/manual/documentation_hacking.xml: Remove trailing
2540         whitespace.
2541         * doc/xml/manual/policy_data_structures.xml: Likewise.
2543 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2545         * include/c_compatibility/stdlib.h [!_GLIBCXX_HOSTED]: Add
2546         using-declaration for _Exit.
2548 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2550         * testsuite/18_support/uncaught_exception/14026.cc: Qualify
2551         call to std::abort.
2553 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
2555         * include/bits/ranges_base.h: Include <initializer_list>.
2557 2022-09-20  Jonathan Wakely  <jwakely@redhat.com>
2559         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (quick_exit): Fix
2560         missing space.
2562 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2564         PR libstdc++/106953
2565         * include/backward/auto_ptr.h [!_GLIBCXX_HOSTED]: Do not define
2566         shared_ptr members.
2567         * include/bits/alloc_traits.h [!_GLIBCXX_HOSTED]: Do not declare
2568         std::allocator_traits<std::allocator<T>> specializations for
2569         freestanding.
2570         * include/bits/memoryfwd.h [!_GLIBCXX_HOSTED] (allocator): Do
2571         not declare for freestanding.
2572         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED] (stable_partition):
2573         Do not define for freestanding.
2574         [!_GLIBCXX_HOSTED] (merge, stable_sort): Do not use temporary
2575         buffers for freestanding.
2576         * include/bits/stl_algobase.h [!_GLIBCXX_HOSTED]: Do not declare
2577         streambuf iterators and overloaded algorithms using them.
2578         * include/bits/stl_uninitialized.h [!_GLIBCXX_HOSTED]: Do not
2579         define specialized overloads for std::allocator.
2580         * include/bits/unique_ptr.h [!_GLIBCXX_HOSTED] (make_unique)
2581         (make_unique_for_overwrite, operator<<): Do not define for
2582         freestanding.
2583         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (_Exit): Declare.
2584         Use _GLIBCXX_NOTHROW instead of throw().
2585         * include/debug/assertions.h [!_GLIBCXX_HOSTED]: Ignore
2586         _GLIBCXX_DEBUG for freestanding.
2587         * include/debug/debug.h [!_GLIBCXX_DEBUG]: Likewise.
2588         * include/std/bit [!_GLIBCXX_HOSTED]: Do not use the custom
2589         __int_traits if <ext/numeric_traits.h> is available.
2590         * include/std/functional [!_GLIBCXX_HOSTED]: Do not include
2591         headers that aren't valid for freestanding.
2592         (boyer_moore_searcher, boyer_moore_horspool_searcher): Do not
2593         define for freestanding.
2594         * include/std/iterator [!_GLIBCXX_HOSTED]: Do not include
2595         headers that aren't valid for freestanding.
2596         * include/std/memory [!_GLIBCXX_HOSTED]: Likewise.
2597         * include/std/ranges [!_GLIBCXX_HOSTED] (istream_view): Do not
2598         define for freestanding.
2599         (views::__detail::__is_basic_string_view) [!_GLIBCXX_HOSTED]:
2600         Do not define partial specialization for freestanding.
2602 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2604         * include/bits/alloc_traits.h (__alloc_swap)
2605         (__shrink_to_fit_aux): Move here, from ...
2606         * include/bits/allocator.h: ... here.
2607         * include/ext/alloc_traits.h: Do not include allocator.h.
2609 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2611         * include/bits/stl_algo.h: Include <bits/stl_algobase.h>.
2612         * include/bits/stl_tempbuf.h: Include headers for __try and
2613         __catch macros, std::pair, and __gnu_cxx::__numeric_traits.
2614         * include/bits/stream_iterator.h: Include <iosfwd> and headers
2615         for std::addressof and std::iterator.
2616         * include/bits/streambuf_iterator.h: Include header for
2617         std::iterator.
2618         * include/std/iterator: Do not include <iosfwd>.
2620 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2622         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
2623         Store value with non-zero padding bits after construction.
2625 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2627         * include/tr1/random.h (__detail::_Adaptor::_BEngine): Remove.
2628         (__detail::_Adaptor::_M_g): Make public.
2629         (__detail::_Adaptor<_Engine*, _Dist>): Remove partial
2630         specialization.
2631         (variate_generate::_Value): New helper to simplify handling of
2632         _Engine* and _Engine& template arguments.
2633         (variate_generate::engine_value_type): Define to underlying
2634         engine type, not adapted type.
2635         (variate_generate::engine()): Return underlying engine instead
2636         of adaptor.
2637         * testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc:
2638         Fix comment.
2639         * testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc:
2640         Check member typedefs have the correct types.
2642 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2644         * include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
2645         (_Error_formatter): Use 0 as null pointer constant.
2647 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2649         * include/bits/allocator.h (__alloc_neq): Remove.
2650         * include/bits/stl_list.h (list::_M_check_equal_allocators):
2651         Compare allocators directly, without __alloc_neq.
2653 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2655         * doc/doxygen/user.cfg.in (PREDEFINED): Remove __allocator_base.
2656         * include/bits/allocator.h: Fix nesting of Doxygen commands.
2658 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
2660         * doc/xml/manual/abi.xml: Document GLIBCXX_3.4.30 and
2661         GLIBCXX_3.4.31 versions.
2662         * doc/html/manual/abi.html: Regenerate.
2664 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
2666         * include/std/memory: Do not include <bits/stl_algobase.h>.
2668 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
2670         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_PRE_LOCK):
2671         Replace with ...
2672         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK): ... this, add try_lock flag.
2673         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK_FAILED): New macro using
2674         try_lock_failed flag
2675         (_GLIBCXX_TSAN_MUTEX_POST_LOCK): Rename to ...
2676         (_GLIBCXX_TSAN_MUTEX_LOCKED): ... this.
2677         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK): Remove invalid flag.
2678         (_GLIBCXX_TSAN_MUTEX_POST_UNLOCK): Remove invalid flag.
2679         (_Sp_atomic::_Atomic_count::lock): Use new macros.
2681 2022-09-15  Patrick Palka  <ppalka@redhat.com>
2683         * include/bits/ranges_algo.h (__adjacent_find_fn, adjacent_find):
2684         Move to ...
2685         * include/bits/ranges_util.h: ... here.
2686         * include/std/ranges (chunk_by_view): Define.
2687         (chunk_by_view::_Iterator): Define.
2688         (__detail::__can_chunk_by_view): Define.
2689         (_ChunkBy, chunk_by): Define.
2690         * testsuite/std/ranges/adaptors/chunk_by/1.cc: New test.
2692 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
2694         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
2695         Adapt dg-prune-output to _GLIBCXX_INLINE_VERSION mode.
2697 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
2699         * config/abi/pre/gnu-versioned-namespace.ver: Remove obsolete std::__detail::__8
2700         symbols.
2702 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
2704         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_DESTROY)
2705         (_GLIBCXX_TSAN_MUTEX_PRE_LOCK, _GLIBCXX_TSAN_MUTEX_POST_LOCK)
2706         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK, _GLIBCXX_TSAN_MUTEX_POST_UNLOCK)
2707         (_GLIBCXX_TSAN_MUTEX_PRE_SIGNAL, _GLIBCXX_TSAN_MUTEX_POST_SIGNAL):
2708         Define macros for TSan annotation functions.
2709         (_Sp_atomic::_Atomic_count): Add annotations.
2711 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
2713         * include/bits/stl_tempbuf.h: Include <new>.
2715 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
2717         * testsuite/17_intro/names.cc: Explain why poison pragma can't
2718         be used.
2720 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
2722         * include/std/future
2723         (_State_baseV2::__setter(exception_ptr&, promise&)): Add
2724         assertion for LWG 2276 precondition.
2725         * testsuite/30_threads/promise/members/set_exception_neg.cc:
2726         New test.
2728 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
2730         * doc/xml/manual/intro.xml: Document LWG 1203.
2731         * doc/html/*: Regenerate.
2733 2022-09-14  Philipp Fent  <fent@in.tum.de>
2735         * python/libstdcxx/v6/printers.py (access_streambuf_ptrs):
2736         New helper function.
2737         (StdStringBufPrinter, StdStringStreamPrinter): New printers.
2738         (build_libstdcxx_dictionary): Register stringstream printers.
2739         * testsuite/libstdc++-prettyprinters/debug.cc: Check string
2740         streams.
2741         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
2742         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
2744 2022-09-13  Patrick Palka  <ppalka@redhat.com>
2746         * include/std/ranges (__detail::__slide_caches_nothing): Define.
2747         (__detail::__slide_caches_last): Define.
2748         (__detail::__slide_caches_first): Define.
2749         (slide_view): Define.
2750         (enable_borrowed_range<slide_view>): Define.
2751         (slide_view::_Iterator): Define.
2752         (slide_view::_Sentinel): Define.
2753         (views::__detail::__can_slide_view): Define.
2754         (views::_Slide, views::slide): Define.
2755         * testsuite/std/ranges/adaptors/slide/1.cc: New test.
2757 2022-09-13  Patrick Palka  <ppalka@redhat.com>
2759         * include/std/ranges (__detail::__div_ceil): Define.
2760         (chunk_view): Define.
2761         (chunk_view::_OuterIter): Define.
2762         (chunk_view::_OuterIter::value_type): Define.
2763         (chunk_view::_InnerIter): Define.
2764         (chunk_view<_Vp>): Define partial specialization for forward
2765         ranges.
2766         (enable_borrowed_range<chunk_view>): Define.
2767         (chunk_view<_Vp>::_Iterator): Define.
2768         (views::__detail::__can_chunk_view): Define.
2769         (views::_Chunk, views::chunk): Define.
2770         * testsuite/std/ranges/adaptors/chunk/1.cc: New test.
2772 2022-09-13  Patrick Palka  <ppalka@redhat.com>
2774         * include/std/ranges (join_view::_Iterator::_M_satisfy):
2775         Adjust resetting _M_inner as per LWG 3569.
2776         (join_view::_Iterator::_M_inner): Wrap in std::optional
2777         as per LWG 3569.
2778         (join_view::_Iterator::_Iterator): Relax constraints as
2779         per LWG 3569.
2780         (join_view::_Iterator::operator*): Adjust as per LWG 3569.
2781         (join_view::_Iterator::operator->): Likewise.
2782         (join_view::_Iterator::operator++): Likewise.
2783         (join_view::_Iterator::operator--): Likewise.
2784         (join_view::_Iterator::iter_move): Likewise.
2785         (join_view::_Iterator::iter_swap): Likewise.
2786         * testsuite/std/ranges/adaptors/join.cc (test14): New test.
2788 2022-09-13  Patrick Palka  <ppalka@redhat.com>
2790         * include/debug/safe_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
2791         Add parentheses to avoid -Wparentheses warning.
2793 2022-09-12  Patrick Palka  <ppalka@redhat.com>
2795         PR libstdc++/106320
2796         * testsuite/std/ranges/adaptors/join.cc (test13): New test.
2798 2022-09-12  Jonathan Wakely  <jwakely@redhat.com>
2800         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: Fix
2801         comments.
2802         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc:
2803         Likewise.
2805 2022-09-12  Jakub Jelinek  <jakub@redhat.com>
2807         PR tree-optimization/105329
2808         * acinclude.m4 (libtool_VERSION): Change to 6:31:0.
2809         * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Don't export
2810         std::basic_string methods with name length of 15.
2811         (GLIBCXX_3.4.31): Export std::basic_string::_M_replace_cold.
2812         * testsuite/util/testsuite_abi.cc (check_version): Handle
2813         GLIBCXX_3.4.31.
2814         * include/bits/basic_string.h (std::basic_string::_M_replace_cold):
2815         Declare.
2816         * include/bits/basic_string.tcc (std::basic_string::_M_replace_cold):
2817         Define and export even for C++20.
2818         (std::basic_string::_M_replace): Use __builtin_expect, outline
2819         the overlapping case to _M_replace_cold.
2820         * configure: Regenerated.
2822 2022-09-09  Jonathan Wakely  <jwakely@redhat.com>
2824         * include/bits/atomic_base.h (__atomic_impl::__compare_exchange):
2825         Rename __weak to __is_weak.
2826         * testsuite/17_intro/names.cc: Add __weak and __strong.
2828 2022-09-09  Patrick Palka  <ppalka@redhat.com>
2830         PR libstdc++/106803
2831         * include/std/ranges (views::_ZipTransform::operator()): Correct
2832         return type in the empty case.
2833         (views::_AdjacentTransform::operator()): Likewise.
2835 2022-09-09  Patrick Palka  <ppalka@redhat.com>
2837         PR libstdc++/106798
2838         * include/std/ranges (adjacent_view::_Iterator::_Iterator): Fix
2839         typo.
2840         * testsuite/std/ranges/adaptors/adjacent/1.cc (test04): New test.
2842 2022-09-09  Patrick Palka  <ppalka@redhat.com>
2844         PR libstdc++/106766
2845         * include/std/ranges (zip_view::_Iterator::operator-): Use
2846         __to_unsigned_like instead of make_unsigned_t.
2847         (zip_view::_Sentinel::operator-): Likewise.
2848         * testsuite/std/ranges/zip/1.cc (test04): New test.
2850 2022-09-08  François Dumont  <fdumont@gcc.gnu.org>
2852         * testsuite/util/testsuite_performance.h (__gnu_test::MallocInfo): New.
2853         (__gnu_test::malloc_info): New, replace mallinfo on current platform
2854         supporting it and use mallinfo2 when glibc >= 2.33.
2856 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
2858         PR c++/106838
2859         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
2860         Prune additional errors from front-end.
2861         * testsuite/20_util/is_move_constructible/incomplete_neg.cc:
2862         Likewise.
2863         * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc:
2864         Likewise.
2865         * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc:
2866         Likewise.
2867         * testsuite/20_util/is_swappable_with/incomplete_neg.cc:
2868         Likewise.
2870 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
2872         * include/c_global/cstddef (byte): Add always_inline attribute
2873         to all operator overloads.
2874         (to_integer): Add always_inline attribute.
2876 2022-09-08  Thomas Rodgers  <trodgers@redhat.com>
2877             Jakub Jelinek  <jakub@redhat.com>
2878             Jonathan Wakely  <jwakely@redhat.com>
2880         * include/bits/atomic_base.h (__atomic_impl::__maybe_has_padding):
2881         New function.
2882         (__atomic_impl::clear_padding): Likewise.
2883         (__atomic_impl::__compare_exchange): Likewise.
2884         (__atomic_impl::compare_exchange_weak): Delegate to
2885         __compare_exchange.
2886         (__atomic_impl::compare_exchange_strong): Likewise.
2887         * include/std/atomic (atomic<T>::atomic(T)): Clear padding when
2888         possible in a constexpr function.
2889         (atomic::store): Clear padding.
2890         (atomic::exchange): Likewise.
2891         (atomic::compare_exchange_weak): Use __compare_exchange.
2892         (atomic::compare_exchange_strong): Likewise.
2893         * testsuite/29_atomics/atomic/compare_exchange_padding.cc: New
2894         test.
2895         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
2896         New test.
2898 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
2900         * include/std/system_error (__adl_only::make_error_code): Add
2901         deleted function.
2902         (__adl_only::make_error_condition): Likewise.
2903         (error_code::error_code(ErrorCodeEnum)): Add using-declaration
2904         for deleted function.
2905         (error_condition::error_condition(ErrorConditionEnum)):
2906         Likewise.
2907         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: New test.
2908         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc: New test.
2910 2022-09-07  Jonathan Wakely  <jwakely@redhat.com>
2912         * include/std/barrier: Add missing runtime exception.
2914 2022-09-07  Patrick Palka  <ppalka@redhat.com>
2916         * include/std/type_traits (is_reference): Make the primary
2917         template derive from false_type.  Define two partial
2918         specializations that derive from true_type.
2920 2022-09-07  Patrick Palka  <ppalka@redhat.com>
2922         * include/std/type_traits (__is_void_helper): Remove.
2923         (is_void): Make the primary template derive from false_type,
2924         and define four explicit specializations that derive from
2925         true_type.
2926         (__is_null_pointer_helper, is_null_pointer): Likewise.
2928 2022-09-07  Jason Merrill  <jason@redhat.com>
2930         * libsupc++/dyncast.cc (__dynamic_cast): Avoid virtual function
2931         call in simple success case.
2933 2022-09-06  Philipp Fent  <fent@in.tum.de>
2935         * testsuite/libstdc++-prettyprinters/48362.cc: Fix expected
2936         tuple indices.
2937         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
2939 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
2941         * include/std/type_traits (__success_type, __failure_type): Move
2942         definitions later in the file.
2944 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
2946         * include/std/type_traits (is_trivial_v, is_trivially_copyable_v)
2947         (is_standard_layout_v, is_pod_v, is_literal_type_v): Use
2948         built-in instead of class template.
2949         (is_same_v): Add partial specialization for true case.
2951 2022-09-02  Patrick Palka  <ppalka@redhat.com>
2953         * include/std/tuple (tuple::_UseOtherCtor): Use ::type when
2954         deriving from __and_, __or_ or __not_.
2955         * include/std/type_traits (negation): Likewise.
2956         (is_unsigned): Likewise.
2957         (__is_implicitly_default_constructible): Likewise.
2958         (is_trivially_destructible): Likewise.
2959         (__is_nt_invocable_impl): Likewise.
2961 2022-09-02  Jonathan Wakely  <jwakely@redhat.com>
2963         * include/std/type_traits (is_constructible_v)
2964         (is_default_constructible_v, is_copy_constructible_v)
2965         (is_move_constructible_v): Define using __is_constructible.
2966         (is_assignable_v, is_copy_assignable_v, is_move_assignable_v):
2967         Define using __is_assignable.
2968         (is_trivially_constructible_v)
2969         (is_trivially_default_constructible_v)
2970         (is_trivially_copy_constructible_v)
2971         (is_trivially_move_constructible_v): Define using
2972         __is_trivially_constructible.
2973         (is_trivially_assignable_v, is_trivially_copy_assignable_v)
2974         (is_trivially_move_assignable_v): Define using
2975         __is_trivially_assignable.
2976         (is_nothrow_constructible_v)
2977         (is_nothrow_default_constructible_v)
2978         (is_nothrow_copy_constructible_v)
2979         (is_nothrow_move_constructible_v): Define using
2980         __is_nothrow_constructible.
2981         (is_nothrow_assignable_v, is_nothrow_copy_assignable_v)
2982         (is_nothrow_move_assignable_v): Define using
2983         __is_nothrow_assignable.
2985 2022-09-02  Patrick Palka  <ppalka@redhat.com>
2987         * include/std/type_traits (__or_, __and_, __not_): Redefine as a
2988         class template instead of as an alias template.
2989         * testsuite/20_util/logical_traits/requirements/short_circuit.cc:
2990         Add more tests for conjunction and disjunction.  Add corresponding
2991         tests for __and_ and __or_.
2993 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
2995         * include/std/ranges (adjacent_transform_view::_Iterator): Add
2996         typename keyword before dependent qualified-id.
2998 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3000         * include/std/type_traits (__is_referenceable): Remove.
3001         (__add_lvalue_reference_helper, __add_rvalue_reference_helper):
3002         Use __void_t instead of __is_referenceable.
3003         (__add_pointer_helper): Likewise.
3004         (add_pointer): Add partial specializations for reference types.
3006 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3008         * include/std/type_traits (__is_constructible_impl): Replace
3009         class template with alias template.
3010         (is_default_constructible, is_nothrow_constructible)
3011         (is_nothrow_constructible): Simplify base-specifier.
3012         (__is_copy_constructible_impl, __is_move_constructible_impl)
3013         (__is_nothrow_copy_constructible_impl)
3014         (__is_nothrow_move_constructible_impl): Remove class templates.
3015         (is_copy_constructible, is_move_constructible)
3016         (is_nothrow_constructible, is_nothrow_default_constructible)
3017         (is_nothrow_copy_constructible, is_nothrow_move_constructible):
3018         Adjust base-specifiers to use __is_constructible_impl.
3019         (__is_copy_assignable_impl, __is_move_assignable_impl)
3020         (__is_nt_copy_assignable_impl, __is_nt_move_assignable_impl):
3021         Remove class templates.
3022         (__is_assignable_impl): New alias template.
3023         (is_assignable, is_copy_assignable, is_move_assignable):
3024         Adjust base-specifiers to use new alias template.
3025         (is_nothrow_copy_assignable, is_nothrow_move_assignable):
3026         Adjust base-specifiers to use existing alias template.
3027         (__is_trivially_constructible_impl): New alias template.
3028         (is_trivially_constructible, is_trivially_default_constructible)
3029         (is_trivially_copy_constructible)
3030         (is_trivially_move_constructible): Adjust base-specifiers to use
3031         new alias template.
3032         (__is_trivially_assignable_impl): New alias template.
3033         (is_trivially_assignable, is_trivially_copy_assignable)
3034         (is_trivially_move_assignable): Adjust base-specifier to use
3035         new alias template.
3036         (__add_lval_ref_t, __add_rval_ref_t): New alias templates.
3037         (add_lvalue_reference, add_rvalue_reference): Use new alias
3038         templates.
3040 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3042         * include/std/type_traits (__decay_selector): Add partial
3043         specializations for array types. Only check for function types
3044         when not dealing with an array.
3045         (decay): Add partial specializations for reference types.
3047 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3049         * include/std/type_traits (is_lvalue_reference_v)
3050         (is_rvalue_reference_v, is_reference_v, is_const_v)
3051         (is_volatile_v): Define using partial specializations instead
3052         of instantiating class templates.
3054 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3056         * include/std/type_traits (is_enum_v, is_class_v, is_union_v)
3057         (is_empty_v, is_polymoprhic_v, is_abstract_v, is_final_v)
3058         (is_base_of_v, is_aggregate_v): Use built-in directly instead of
3059         instantiating class template.
3061 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3063         * include/std/type_traits (is_scoped_enum): Remove workaround.
3065 2022-09-01  Patrick Palka  <ppalka@redhat.com>
3067         * include/std/ranges (__detail::__unarize): Define.
3068         (adjacent_view::_Iterator): Befriend adjacent_transform_view.
3069         (adjacent_transform_view): Define.
3070         (adjacent_transform_view::_Iterator): Define.
3071         (adjacent_transform_view::_Sentinel): Define.
3072         (views::__detail::__can_adjacent_transform_view): Define.
3073         (views::_AdjacentTransform): Define.
3074         (views::adjacent_transform): Define.
3075         (views::pairwise_transform): Define.
3076         * testsuite/std/ranges/adaptors/adjacent_transform/1.cc: New test.
3078 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
3080         * include/std/type_traits (__is_array_known_bounds): Add partial
3081         specialization instead of using std::extent.
3082         (__is_array_unknown_bounds): Likewise.
3083         (extent): Add partial specializations to stop recursion after
3084         the result is found.
3085         (is_array_v): Add partial specializations instead of
3086         instantiating the class template.
3087         (rank_v, extent_v): Likewise.
3088         (is_bounded_array_v, is_unbounded_array_v): Likewise.
3089         (is_bounded_array, is_unbounded_array): Define in terms of the
3090         variable templates.
3092 2022-08-31  Patrick Palka  <ppalka@redhat.com>
3094         * include/bits/ranges_base.h (__advance_fn::operator()): Add
3095         parentheses in assert condition to avoid -Wparentheses warning.
3096         * include/std/ranges: (take_view::take_view): Uglify 'base'.
3097         (take_while_view::take_while_view): Likewise.
3098         (elements_view::elements_view): Likewise.
3099         (views::_Zip::operator()): Adjust position of [[nodiscard]] for
3100         compatibility with -fconcepts-ts.
3101         (zip_transform_view::_Sentinel): Uglify 'OtherConst'.
3102         (views::_ZipTransform::operator()): Adjust position of
3103         [[nodiscard]] for compatibilty with -fconcepts-ts.
3105 2022-08-31  Martin Liska  <mliska@suse.cz>
3107         * configure: Regenerate.
3108         * crossconfig.m4: Remove deprecated ports.
3110 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
3112         * include/debug/debug.h: Use nullptr rather than '0' in checks in post-C++11.
3113         * include/debug/string: Likewise.
3114         * testsuite/21_strings/basic_string/operations/ends_with/char.cc: Use __gnu_test::string.
3115         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc: Likewise.
3116         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc: Likewise.
3117         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc: Likewise.
3118         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc: Likewise.
3119         * testsuite/21_strings/basic_string/operations/starts_with/char.cc: Likewise..
3121 2022-08-31  Patrick Palka  <ppalka@redhat.com>
3123         * include/std/ranges (adjacent_view): Define.
3124         (enable_borrowed_range<adjacent_view>): Define.
3125         (__detail::__repeated_tuple): Define.
3126         (adjacent_view::_Iterator): Define.
3127         (adjacent_view::_Sentinel): Define.
3128         (views::__detail::__can_adjacent_view): Define.
3129         (views::_Adjacent): Define.
3130         (views::adjacent): Define.
3131         (views::pairwise): Define.
3132         * testsuite/std/ranges/adaptors/adjacent/1.cc: New test.
3134 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
3136         * include/debug/formatter.h
3137         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_state): Declare.
3138         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_create_state): Declare.
3139         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_callback): Define.
3140         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_error_callback): Define.
3141         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_func): Define.
3142         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full): Declare.
3143         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_state): New.
3144         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_full): New.
3145         * src/c++11/debug.cc [_GLIBCXX_HAVE_STACKTRACE](print_backtrace): New.
3146         (_Error_formatter::_M_error()): Adapt.
3147         * src/libbacktrace/Makefile.am: Add backtrace.c.
3148         * src/libbacktrace/Makefile.in: Regenerate.
3149         * src/libbacktrace/backtrace-rename.h (backtrace_full): New.
3150         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc: New test.
3151         * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE.
3152         * doc/xml/manual/using.xml: Likewise.
3154 2022-08-31  Patrick Palka  <ppalka@redhat.com>
3156         * testsuite/20_util/logical_traits/requirements/short_circuit.cc: New test.
3158 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
3160         * include/bits/refwrap.h (reference_wrapper::operator()): Add
3161         noexcept-specifier and use __invoke_result instead of result_of.
3162         * testsuite/20_util/reference_wrapper/invoke-noexcept.cc: New test.
3164 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
3166         * testsuite/20_util/reference_wrapper/invoke-2.cc: Improve
3167         comments.
3168         * testsuite/20_util/reference_wrapper/invoke-3.cc: Likewise.
3169         * testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
3171 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
3173         * include/bits/basic_string.h (basic_string): Add nodiscard
3174         attribute to all relevant functions.
3175         * include/std/string_view (basic_string_view): Likewise.
3176         * testsuite/21_strings/basic_string/capacity/1.cc: Cast unused
3177         results to void.
3178         * testsuite/21_strings/basic_string/capacity/char/1.cc:
3179         Likewise.
3180         * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
3181         Likewise.
3182         * testsuite/21_strings/basic_string/cons/char/self_move.cc:
3183         Likewise.
3184         * testsuite/21_strings/basic_string/element_access/char/1.cc:
3185         Likewise.
3186         * testsuite/21_strings/basic_string/element_access/char/21674.cc:
3187         Likewise.
3188         * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc:
3189         Likewise.
3190         * testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
3191         Likewise.
3192         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
3193         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
3194         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc:
3195         Add -Wno-unused-result to options.
3196         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc:
3197         Likewise.
3198         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc:
3199         Likewise.
3200         * testsuite/21_strings/basic_string/operators/char/1.cc: Cast
3201         unused results to void.
3202         * testsuite/21_strings/basic_string/operators/wchar_t/1.cc:
3203         Likewise.
3204         * testsuite/21_strings/basic_string_view/capacity/1.cc:
3205         Likewise.
3206         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
3207         Likewise.
3208         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
3209         Likewise.
3210         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
3211         Likewise.
3212         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
3213         Likewise.
3214         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc:
3215         Likewise.
3216         Add -Wno-unused-result to options.
3217         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc:
3218         Likewise.
3219         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc:
3220         Likewise.
3221         * testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Cast
3222         unused results to void.
3223         * testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc:
3224         Likewise.
3225         * testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise.
3226         * testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc:
3227         Likewise.
3229 2022-08-27  Patrick Palka  <ppalka@redhat.com>
3231         * testsuite/20_util/logical_traits/requirements/base_classes.cc: New test.
3233 2022-08-26  Patrick Palka  <ppalka@redhat.com>
3235         * include/std/ranges (zip_view::_Iterator::operator<): Remove
3236         as per LWG 3692.
3237         (zip_view::_Iterator::operator>): Likewise.
3238         (zip_view::_Iterator::operator<=): Likewise.
3239         (zip_view::_Iterator::operator>=): Likewise.
3240         (zip_view::_Iterator::operator<=>): Remove three_way_comparable
3241         constraint as per LWG 3692.
3242         (zip_transform_view::_Iterator): Ditto as per LWG 3702.
3244 2022-08-26  Patrick Palka  <ppalka@redhat.com>
3246         * include/std/ranges (zip_view::_Iterator): Befriend
3247         zip_transform_view.
3248         (__detail::__range_iter_cat): Define.
3249         (zip_transform_view): Define.
3250         (zip_transform_view::_Iterator): Define.
3251         (zip_transform_view::_Sentinel): Define.
3252         (views::__detail::__can_zip_transform_view): Define.
3253         (views::_ZipTransform): Define.
3254         (views::zip_transform): Define.
3255         * testsuite/std/ranges/zip_transform/1.cc: New test.
3257 2022-08-26  Patrick Palka  <ppalka@redhat.com>
3259         * include/std/type_traits (enable_if, __enable_if_t): Define them
3260         earlier.
3261         (__detail::__first_t): Define.
3262         (__detail::__or_fn, __detail::__and_fn): Declare.
3263         (__or_, __and_): Redefine as alias templates in terms of __or_fn
3264         and __and_fn.
3265         (__not_): Redefine as an alias template.
3266         (__detail::__disjunction_impl, __detail::__conjunction_impl):
3267         Define.
3268         (conjuction, disjunction): Redefine in terms of __disjunction_impl
3269         and __conjunction_impl.
3271 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
3273         * include/std/system_error (error_code::_Check): New alias
3274         template for constructor SFINAE constraint.
3275         (error_code::error_code(ErrorCodeEnum)): Use it.
3276         (error_code::operator=(ErrorCodeEnum)): Remove.
3277         (error_condition::_Check): New alias template for constraint.
3278         (error_condition::error_condition(ErrorConditionEnum)): Use it.
3279         (error_condition::operator=(ErrorConditionEnum)): Remove.
3280         * testsuite/19_diagnostics/error_code/cons/1.cc: Check
3281         constructor taking user-defined error enum.
3282         * testsuite/19_diagnostics/error_condition/cons/1.cc: Likewise.
3284 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
3286         * include/bits/basic_string.h (starts_with, ends_with, contains):
3287         Add nonnull attribute.
3288         * include/bits/cow_string.h (starts_with, ends_with, contains):
3289         Likewise.
3290         * include/std/string_view (starts_with, ends_with, contains):
3291         Likewise.
3292         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc
3293         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc
3294         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc
3295         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc
3296         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc
3297         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc
3299 2022-08-25  Patrick Palka  <ppalka@redhat.com>
3301         * include/std/ranges (lazy_split_view::_OuterIter::_M_current):
3302         Remove redundant comment.
3303         (lazy_split_view::_M_current): Likewise.
3304         (common_view::common_view): Remove commented out view-converting
3305         constructor as per LWG3405.
3306         (elements_view::_Iterator::_Iterator): Uglify 'current' and 'i'.
3308 2022-08-24  Patrick Palka  <ppalka@redhat.com>
3310         * include/bits/ranges_algo.h (__min_fn, min): Move to ...
3311         * include/bits/ranges_util.h: ... here, in order to avoid
3312         including all of ranges_algo.h from <ranges>.
3313         * include/std/ranges (__detail::__zip_is_common): Define for
3314         C++23 as per P2321R2.
3315         (__detail::__tuple_or_pair): Likewise.
3316         (__detail::__tuple_or_pair_t): Likewise.
3317         (__detail::__tuple_transform): Likewise.
3318         (__detail::__tuple_for_each): Likewise.
3319         (zip_view): Likewise.
3320         (enable_borrowed_range<zip_view>): Likewise.
3321         (__detail::__all_random_access): Likewise.
3322         (__detail::__all_bidirectional): Likewise.
3323         (__detail::__all_forward): Likewise.
3324         (__detail::__zip_view_iter_cat): Likewise.
3325         (zip_view::_Iterator): Likewise.
3326         (zip_view::_Sentinel): Likewise.
3327         * testsuite/std/ranges/zip/1.cc: New test.
3329 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
3331         Revert:
3332         2022-08-24  Will Hawkins  <whh8b@obs.cr>
3334         * include/bits/basic_string.h (operator+(const string&, const char*)):
3335         Remove naive implementation.
3336         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
3337         Add single-allocation implementation.
3339 2022-08-24  Patrick Palka  <ppalka@redhat.com>
3341         * include/bits/stl_pair.h (pair::swap const): Add non-standard
3342         is_swappable_v constraints.
3343         * include/std/tuple (tuple::swap const): Likewise.
3344         * testsuite/20_util/tuple/cons/noexcept_specs.cc: Correct some
3345         asserts in C++23 mode.
3347 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
3349         * include/bits/stl_algo.h (__stable_sort): Cast size to
3350         iterator's difference type.
3351         * testsuite/25_algorithms/stable_sort/4.cc: New test.
3353 2022-08-24  Will Hawkins  <whh8b@obs.cr>
3355         * include/bits/basic_string.h (operator+(const string&, const char*)):
3356         Remove naive implementation.
3357         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
3358         Add single-allocation implementation.
3360 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
3362         * testsuite/20_util/duration_cast/rounding.cc: Check abs with
3363         non-reduced duration.
3365 2022-08-23  Patrick Palka  <ppalka@redhat.com>
3367         * include/bits/stl_bvector.h (_Bit_reference::operator=): Define
3368         const overload for C++23 as per P2321R2.
3369         * include/bits/stl_pair.h (pair::swap): Likewise.
3370         (pair::pair): Define additional converting constructors for
3371         C++23 as per P2321R2.
3372         (pair::operator=): Define const overloads for C++23 as per
3373         P2321R2.
3374         (swap): Define overload taking const pair& for C++23 as per
3375         P2321R2.
3376         (basic_common_reference): Define partial specialization for
3377         pair for C++23 as per P2321R2.
3378         (common_type): Likewise.
3379         * include/bits/uses_allocator_args.h
3380         (uses_allocator_construction_args): Define additional pair
3381         overloads for C++23 as per P2321R2.
3382         * include/std/tuple (_Tuple_impl::_Tuple_impl): Define
3383         additional converting constructors for C++23 as per P2321R2.
3384         (_Tuple_impl::_M_assign): Define const overloads for C++23
3385         as per P2321R2.
3386         (_Tuple_impl::_M_swap): Likewise.
3387         (tuple::__constructible): Define as a convenient renaming of
3388         _TCC<true>::__constructible.
3389         (tuple::__convertible): As above but for _TCC<true>::__convertible.
3390         (tuple::tuple): Define additional converting constructors for
3391         C++23 as per P2321R2.
3392         (tuple::operator=): Define const overloads for C++23 as per
3393         P2321R2.
3394         (tuple::swap): Likewise.
3395         (basic_common_reference): Define partial specialization for
3396         tuple for C++23 as per P2321R2.
3397         (common_type): Likewise.
3398         * testsuite/20_util/pair/p2321r2.cc: New test.
3399         * testsuite/20_util/tuple/p2321r2.cc: New test.
3400         * testsuite/23_containers/vector/bool/element_access/1.cc: New test.
3402 2022-08-23  Patrick Palka  <ppalka@redhat.com>
3404         * include/std/tuple (_TupleConstraints::__convertible): Define.
3405         (_TupleConstraints::__constructible): Define.
3406         (_TupleConstraints::__is_explicitly_constructible): Redefine this
3407         in terms of __convertible and __constructible.
3408         (_TupleConstraints::__is_implicitly_constructible): Likewise.
3410 2022-08-23  Jonathan Wakely  <jwakely@redhat.com>
3412         PR libstdc++/106589
3413         * include/std/variant (__do_visit): Handle is_void<R> for zero
3414         argument case.
3415         * testsuite/20_util/variant/visit_r.cc: Check std::visit<void>(v).
3417 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
3419         PR libstdc++/105678
3420         * doc/xml/manual/using.xml: Document -lstdc++_libbacktrace
3421         requirement for using std::stacktrace. Also adjust -frtti and
3422         -fexceptions to document non-default (i.e. negative) forms.
3423         * doc/html/*: Regenerate.
3425 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
3427         PR libstdc++/106695
3428         * include/bits/std_thread.h (thread::_State_impl): Forward
3429         individual arguments to _Invoker constructor.
3430         (thread::_Invoker): Add constructor. Delete copies.
3431         * include/std/future (__future_base::_Deferred_state): Forward
3432         individual arguments to _Invoker constructor.
3433         (__future_base::_Async_state_impl): Likewise.
3434         * testsuite/30_threads/async/106695.cc: New test.
3435         * testsuite/30_threads/thread/106695.cc: New test.
3437 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
3439         PR libstdc++/106607
3440         * include/bits/regex_compiler.tcc (_Compiler::_M_cur_int_value):
3441         Use built-ins to check for integer overflow in back-reference
3442         number.
3443         * testsuite/28_regex/basic_regex/106607.cc: New test.
3445 2022-08-17  Keef Aragon  <keef.aragon@konscious.net>
3447         * libsupc++/eh_alloc.cc (pool::free): Inverse comparison.
3449 2022-08-08  François Dumont  <fdumont@gcc.gnu.org>
3451         * include/debug/formatter.h (__singular_value_init): New _Iterator_state enum entry.
3452         (_Parameter<>(const _Safe_iterator<>&, const char*, _Is_iterator)): Check if iterator
3453         parameter is value-initialized.
3454         (_Parameter<>(const _Safe_local_iterator<>&, const char*, _Is_iterator)): Likewise.
3455         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_value_initialized()): New. Adapt
3456         checks.
3457         * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_M_value_initialized()): New.
3458         Adapt checks.
3459         * src/c++11/debug.cc (_Safe_iterator_base::_M_reset): Do not reset _M_version.
3460         (print_field(PrintContext&, const _Parameter&, const char*)): Adapt state_names.
3461         * testsuite/23_containers/deque/debug/iterator1_neg.cc: New test.
3462         * testsuite/23_containers/deque/debug/iterator2_neg.cc: New test.
3463         * testsuite/23_containers/forward_list/debug/iterator1_neg.cc: New test.
3464         * testsuite/23_containers/forward_list/debug/iterator2_neg.cc: New test.
3465         * testsuite/23_containers/forward_list/debug/iterator3_neg.cc: New test.
3467 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
3469         * include/experimental/scope (__cpp_lib_experimental_scope):
3470         Define.
3471         * testsuite/experimental/scopeguard/uniqueres.cc: Check macro.
3473 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
3475         * include/Makefile.am: Add new header.
3476         * include/Makefile.in: Regenerate.
3477         * include/experimental/scope: New file.
3478         * testsuite/experimental/scopeguard/uniqueres.cc: New test.
3479         * testsuite/experimental/scopeguard/exit.cc: New test.
3481 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
3483         * include/std/string_view (basic_string_view(Range&&)): Add
3484         explicit as per P2499R0.
3485         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
3486         Adjust implicit conversions. Check implicit conversions fail.
3487         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
3488         Likewise.
3490 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
3492         * include/bits/fs_dir.h (directory_iterator): Add comparison
3493         with std::default_sentinel_t. Remove redundant operator!= for
3494         C++20.
3495         * (recursive_directory_iterator): Likewise.
3496         * include/bits/iterator_concepts.h [!__cpp_lib_concepts]
3497         (default_sentinel_t, default_sentinel): Define even if concepts
3498         are not supported.
3499         * include/bits/regex.h (regex_iterator): Add comparison with
3500         std::default_sentinel_t. Remove redundant operator!= for C++20.
3501         (regex_token_iterator): Likewise.
3502         (regex_token_iterator::_M_end_of_seq()): Add noexcept.
3503         * testsuite/27_io/filesystem/iterators/lwg3719.cc: New test.
3504         * testsuite/28_regex/iterators/regex_iterator/lwg3719.cc:
3505         New test.
3506         * testsuite/28_regex/iterators/regex_token_iterator/lwg3719.cc:
3507         New test.
3509 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
3511         * include/std/expected (unexpected::_M_val): Rename to _M_unex.
3512         (bad_expected_access::_M_val): Likewise.
3514 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
3516         * include/bits/ios_base.h (__cpp_lib_ios_noreplace): Update
3517         value to 202207L.
3518         * include/std/version (__cpp_lib_ios_noreplace): Likewise.
3519         * testsuite/27_io/basic_ofstream/open/char/noreplace.cc: Check
3520         for new value.
3521         * testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc:
3522         Likewise.
3524 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
3526         PR libstdc++/106183
3527         * include/bits/atomic_wait.h (__waiter_pool_base::_M_notify):
3528         Move increment of _M_ver here.
3529         [!_GLIBCXX_HAVE_PLATFORM_WAIT]: Lock mutex around increment.
3530         Use relaxed memory order and always notify all waiters.
3531         (__waiter_base::_M_do_wait) [!_GLIBCXX_HAVE_PLATFORM_WAIT]:
3532         Check value again after locking mutex.
3533         (__waiter_base::_M_notify): Remove increment of _M_ver.
3535 2022-08-04  Ulrich Drepper  <drepper@gmail.com>
3537         * python/libstdcxx/v6/printers.py (class StdTuplePrinter): Use
3538         zero-based indeces just like std:get takes.
3540 2022-07-29  Jonathan Wakely  <jwakely@redhat.com>
3542         PR libstdc++/104443
3543         * include/bits/stl_iterator.h (common_iterator::operator->):
3544         Change return type to just auto.
3546 2022-07-26  Thomas Rodgers  <trodgers@redhat.com>
3548         * include/bits/atomic_wait.h (__atomic_spin): Merge spin loops.
3550 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
3552         PR libstdc++/100823
3553         * include/bits/stl_iterator.h (common_iterator): Define
3554         destructor, copy constructor and move constructor as trivial
3555         when the underlying types allow.
3556         * testsuite/24_iterators/common_iterator/100823.cc: Check
3557         triviality of special members.
3559 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
3561         PR libstdc++/100823
3562         * include/bits/stl_iterator.h (common_iterator): Define move
3563         constructor and move assignment operator.
3564         (common_iterator::_M_assign): New function implementing
3565         assignment.
3566         (common_iterator::operator=): Use _M_assign.
3567         (common_iterator::_S_valueless): New constant.
3568         * testsuite/24_iterators/common_iterator/100823.cc: New test.
3570 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
3572         * include/bits/stl_iterator.h (common_iterator): Fix incorrect
3573         uses of is_nothrow_assignable_v. Fix inconsistent constraints on
3574         friend declaration. Do not move argument in copy constructor.
3575         * testsuite/24_iterators/common_iterator/1.cc: Check for
3576         noexcept constructibnle/assignable.
3578 2022-07-19  François Dumont  <fdumont@gcc.gnu.org>
3580         * include/debug/debug.h [_GLIBCXX_DEBUG](__glibcxx_requires_string): Define
3581         using _GLIBCXX_DEBUG_PEDASSERT.
3582         [_GLIBCXX_DEBUG](__glibcxx_requires_string_len): Likewise.
3583         * include/debug/macros.h
3584         (__glibcxx_check_string, __glibcxx_check_string_len): Move...
3585         * include/debug/string
3586         (__glibcxx_check_string, __glibcxx_check_string_len): ...here. And define depending
3587         on _GLIBCXX_DEBUG_PEDANTIC no matter if _GLIBCXX_DEBUG is defined.
3588         Add using of std::string find, rfind, find_first_of, find_last_of, find_first_not_of
3589         and find_last_not_of. Remove debug implementations having no debug assertion.
3590         * testsuite/util/testsuite_string.h: New file. Provides __gnu_test::string and
3591         __gnu_test::wtring which definition depends on _GLIBCXX_DEBUG.
3592         * testsuite/21_strings/basic_string/debug/find1_neg.cc: New test case.
3593         * testsuite/21_strings/basic_string/debug/find2_neg.cc: New test case.
3594         * testsuite/21_strings/basic_string/operations/find/char/1.cc:
3595         Include <testsuite_string.h> and use __gnu_test::string.
3596         * testsuite/21_strings/basic_string/operations/find/char/2.cc: Likewise.
3597         * testsuite/21_strings/basic_string/operations/find/char/3.cc: Likewise.
3598         * testsuite/21_strings/basic_string/operations/find/char/4.cc: Likewise.
3599         * testsuite/21_strings/basic_string/operations/find/char/5.cc: Likewise.
3600         * testsuite/21_strings/basic_string/operations/find/char/6.cc: Likewise.
3601         * testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc:
3602         Include <testsuite_string.h> and use __gnu_test::wstring.
3603         * testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc: Likewise.
3604         * testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc: Likewise.
3605         * testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc: Likewise.
3606         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: Likewise.
3607         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: Likewise.
3609 2022-07-19  Jonathan Wakely  <jwakely@redhat.com>
3611         * include/std/type_traits (__cpp_lib_reference_from_temporary)
3612         (reference_constructs_from_temporary)
3613         (reference_converts_from_temporary): Only define when the
3614         built-ins are available.
3616 2022-07-19  Marco Falke  <falke.marco@gmail.com>
3618         * include/std/charconv (__from_chars_alnum_to_val): Replace
3619         implicit conversion from int to unsigned char with explicit
3620         cast.
3622 2022-07-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
3624         * configure: Regnerate.
3625         * configure.ac (newlib, *-rtems*): Remove HAVE_POLL.
3627 2022-07-18  François Dumont  <fdumont@gcc.gnu.org>
3629         * include/bits/stl_algo.h
3630         (__merge_adaptive): Adapt to merge only when buffer is large enough..
3631         (__merge_adaptive_resize): New, adapt merge when buffer is too small.
3632         (__inplace_merge): Adapt, use latter.
3633         (__stable_sort_adaptive): Adapt to sort only when buffer is large enough.
3634         (__stable_sort_adaptive_resize): New, adapt sort when buffer is too small.
3635         (__stable_sort): Adapt, use latter.
3637 2022-07-15  Marek Polacek  <polacek@redhat.com>
3639         PR c++/104477
3640         * include/std/type_traits (reference_constructs_from_temporary,
3641         reference_converts_from_temporary): New class templates.
3642         (reference_constructs_from_temporary_v,
3643         reference_converts_from_temporary_v): New variable templates.
3644         (__cpp_lib_reference_from_temporary): Define for C++23.
3645         * include/std/version (__cpp_lib_reference_from_temporary): Define for
3646         C++23.
3647         * testsuite/20_util/variable_templates_for_traits.cc: Test
3648         reference_constructs_from_temporary_v and
3649         reference_converts_from_temporary_v.
3650         * testsuite/20_util/reference_from_temporary/value.cc: New test.
3651         * testsuite/20_util/reference_from_temporary/value2.cc: New test.
3652         * testsuite/20_util/reference_from_temporary/version.cc: New test.
3654 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
3656         PR libstdc++/106248
3657         * include/std/istream [C++17] (operator>>(istream&, char*)):
3658         Set eofbit if we stopped extracting at EOF.
3659         * testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc:
3660         New test.
3661         * testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc:
3662         New test.
3664 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
3666         * include/bits/stl_iterator.h (__iter_to_alloc_t): Replace
3667         add_const_t with const-qualifier.
3668         * include/bits/utility.h (tuple_element<N, cv T>): Likewise for
3669         all cv-qualifiers.
3670         * include/std/type_traits (add_const, add_volatile): Replace
3671         typedef-declaration with using-declaration.
3672         (add_cv): Replace add_const and add_volatile with cv-qualifiers.
3673         * include/std/variant (variant_alternative<N, cv T>): Replace
3674         add_const_t, add_volatile_t and add_cv_t etc. with cv-qualifiers.
3676 2022-07-09  François Dumont  <fdumont@gcc.gnu.org>
3678         * include/std/string: Remove obsolete comment about char_traits.h including
3679         stl_algobase.h.
3681 2022-07-07  Jonathan Wakely  <jwakely@redhat.com>
3683         PR c++/89074
3684         * include/bits/char_traits.h (__gnu_cxx::char_traits::move):
3685         Remove workaround for front-end bug.
3687 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
3689         * testsuite/util/testsuite_fs.h (nonexistent_path): Explain
3690         why we need the typecast.
3692 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
3694         * testsuite/util/testsuite_fs.h (nonexistent_path): Convert
3695         the getpid result to an integral type.
3697 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
3699         PR libstdc++/106162
3700         * include/Makefile.am (largefile-config.h): Add
3701         stamp-${host_alias} prerequisite.
3702         * include/Makefile.in: Regenerate.
3704 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
3706         * include/bits/fs_ops.h: Add nodiscard to all pure functions.
3707         * include/experimental/bits/fs_ops.h: Likewise.
3708         * testsuite/27_io/filesystem/operations/all.cc: Do not discard
3709         results of absolute and canonical.
3710         * testsuite/27_io/filesystem/operations/absolute.cc: Cast
3711         discarded result to void.
3712         * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
3713         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
3714         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
3715         * testsuite/27_io/filesystem/operations/read_symlink.cc:
3716         Likewise.
3717         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
3718         * testsuite/27_io/filesystem/operations/symlink_status.cc:
3719         Likewise.
3720         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3721         Likewise.
3722         * testsuite/experimental/filesystem/operations/canonical.cc:
3723         Likewise.
3724         * testsuite/experimental/filesystem/operations/exists.cc:
3725         Likewise.
3726         * testsuite/experimental/filesystem/operations/is_empty.cc:
3727         Likewise.
3728         * testsuite/experimental/filesystem/operations/read_symlink.cc:
3729         Likewise.
3730         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3731         Likewise.
3733 2022-07-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
3735         * configure: Regnerate.
3736         * configure.ac (newlib, *-rtems*): Enable TLS support for all RTEMS
3737         targets except bfin, lm32, mips, moxie, or1k, and v850.
3738         For all RTEMS targets, define HAVE_ALIGNED_ALLOC, HAVE_AT_QUICK_EXIT,
3739         HAVE_LINK, HAVE_POLL, HAVE_QUICK_EXIT, HAVE_READLINK, HAVE_SETENV,
3740         HAVE_SLEEP, HAVE_SOCKATMARK, HAVE_STRERROR_L, HAVE_SYMLINK,
3741         HAVE_TRUNCATE, and HAVE_USLEEP.
3742         * crossconfig.m4 (*-rtems*): Remove.
3744 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
3746         * include/bits/utility.h: Fix comment typos.
3748 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
3750         * src/c++17/fs_ops.cc (fs::temp_directory_path()): Include path
3751         in exception.
3752         (fs::temp_directory_path(error_code&)): Rearrange to more
3753         closely match the structure of the first overload.
3754         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
3755         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
3756         Check that exception contains the path.
3757         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3758         Likewise.
3760 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
3762         PR libstdc++/88881
3763         * src/filesystem/ops.cc (has_trailing_slash): New helper
3764         function.
3765         (fs::status): Strip trailing slashes.
3766         (fs::symlink_status): Likewise.
3767         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
3768         Clean the environment before each test and use TMP instead of
3769         TMPDIR so the test passes on Windows.
3771 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
3773         * src/filesystem/dir-common.h (_Dir_base::_At_path):
3774         Use char_type consistently for paths.
3776 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
3778         * src/c++17/fs_dir.cc (_Dir::dir_and_pathname):: Replace with
3779         current() returning _At_path.
3780         (_Dir::_Dir, _Dir::open_subdir, _Dir::do_unlink): Adjust.
3781         * src/filesystem/dir-common.h (_Dir_base::_At_path): New class.
3782         (_Dir_base::_Dir_Base, _Dir_base::openat): Use _At_path.
3783         * src/filesystem/dir.cc (_Dir::dir_and_pathname): Replace with
3784         current() returning _At_path.
3785         (_Dir::_Dir, _Dir::open_subdir): Adjust.
3787 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
3789         * src/c++17/fs_dir.cc (_Dir::_Dir) [!_GLIBCXX_HAVE_OPENAT]:
3790         Always store pathname if we don't have openat or unlinkat,
3791         because the full path is needed to open sub-directories and
3792         remove entries.
3794 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
3796         * testsuite/20_util/from_chars/4.cc: Only use log2 if C99 math
3797         functions are available.
3799 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3801         * testsuite/20_util/to_chars/long_double.cc: Use cmath
3802         long double overloads for nexttoward and ldexp.
3804 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3806         * testsuite/experimental/simd/standard_abi_usable.cc: Require
3807         cmath support.
3808         * testsuite/experimental/simd/standard_abi_usable_2.cc:
3809         Likewise.
3811 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3813         * testsuite/26_numerics/complex/proj.cc: Skip test in the
3814         circumstances in which the implementation of proj is known to
3815         be broken.
3817 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3819         * src/c++17/fs_dir.cc (dir_and_pathname): Use dirfd if
3820         _GLIBCXX_HAVE_OPENAT.
3822 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3824         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
3825         (test06): Don't create symlinks when NO_SYMLINKS is defined.
3827 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
3829         * testsuite/lib/dg-options.exp (add_options_for_net_ts):
3830         Add -Wl,--gc-sections for RTEMS targets.
3831         * testsuite/experimental/net/timer/waitable/dest.cc: Link-time
3832         xfail on RTEMS.
3833         * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
3834         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
3835         Execution-time xfail on RTEMS.
3836         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
3837         Likewise.
3839 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
3841         * testsuite/ext/mt_allocator/22309_thread.cc: Include <string>.
3843 2022-06-27  Joel Brobecker  <brobecker@adacore.com>
3844             Jonathan Wakely  <jwakely@redhat.com>
3846         * testsuite/util/testsuite_fs.h (__gnu_test::nonexistent_path):
3847         Always include a counter in the filename returned.
3849 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
3851         * include/bits/move_only_function.h (_Never_valueless_alt):
3852         Define partial specialization for std::move_only_function.
3854 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
3856         * include/std/variant (_Build_FUN::_S_fun): Define fallback case
3857         as deleted.
3858         (__accepted_index, _Extra_visit_slot_needed): Replace class
3859         templates with variable templates.
3861 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
3863         * include/bits/fs_path.h (__is_path_iter_src): Replace class
3864         template with variable template.
3866 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
3868         * include/bits/chrono.h (is_clock_v): Define to false.
3869         (is_clock_v<T>): Define partial specialization for true cases.
3870         (is_clock): Define in terms of is_clock_v.
3872 2022-06-24  Xi Ruoyao  <xry111@xry111.site>
3874         * scripts/extract_symvers.in: Use grep -E instead of egrep.
3875         * scripts/run_doxygen: Likewise.
3877 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3879         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
3880         openat.
3881         * configure, config.h.in: Rebuilt.
3882         * src/filesystem/dir-common.h (openat): Use ::openat if
3883         _GLIBCXX_HAVE_OPENAT.
3884         * src/filesystem/dir.cc (dir_and_pathname): Use dirfd if
3885         _GLIBCXX_HAVE_OPENAT.
3887 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3889         * testsuite/27_io/filesystem/operations/rename.cc: xfail on
3890         rtems.
3891         * testsuite/experimental/filesystem/operations/rename.cc:
3892         Likewise.
3894 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3896         * testsuite/util/testsuite_fs.h (NO_LAST_WRITE_TIME): Define
3897         when appropriate.
3898         * testsuite/lib/libstdc++.exp
3899         (check_v3_target_fs_last_write_time): New.
3900         * testsuite/lib/dg-options.exp (dg-require-target-fs-lwt):
3901         New.
3902         * testsuite/27_io/filesystem/operations/last_write_time.cc:
3903         Skip the test if the features are unavailable.
3904         * testsuite/experimental/filesystem/operations/last_write_time.cc:
3905         Likewise.
3907 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3909         * testsuite/util/testsuite_fs.h (NO_SPACE): Define if
3910         appropriate.
3911         * testsuite/lib/libstdc++.exp (check_v3_target_fs_space): New.
3912         * testsuite/lib/dg-options.exp (dg-require-target-fs-space):
3913         New.
3914         * testsuite/27_io/filesystem/operations/space.cc: Require
3915         target-fs-space.
3916         * testsuite/experimental/filesystem/operations/space.cc:
3917         Likewise.
3919 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3921         * testsuite/util/testsuite_fs.h (NO_SYMLINKS): Define on
3922         mingw and when create_symlink is a dummy.
3923         * testsuite/27_io/filesystem/operations/symlink_status.cc:
3924         Drop mingw xfail.
3925         (test01, test02): Don't create symlinks when NO_SYMLINKS is
3926         defined.
3927         * testsuite/27_io/filesystem/operations/canonical.cc (test03):
3928         Likewise.
3929         * testsuite/27_io/filesystem/operations/copy.cc (test02):
3930         Likewise.
3931         * testsuite/27_io/filesystem/operations/create_directories.cc
3932         (test04): Likewise.
3933         * testsuite/27_io/filesystem/operations/create_directory.cc
3934         (test01): Likewise.
3935         * testsuite/27_io/filesystem/operations/permissions.cc
3936         (test03, test04): Likewise.
3937         * testsuite/27_io/filesystem/operations/remove.cc (test01):
3938         Likewise.
3939         * testsuite/27_io/filesystem/operations/remove_all.cc (test01):
3940         Likewise.
3941         * testsuite/27_io/filesystem/operations/rename.cc
3942         (test_symlinks): Likewise.
3943         * testsuite/27_io/filesystem/operations/weakly_canonical.cc
3944         (test01): Likewise.
3945         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
3946         (test06): Likewise.
3947         * testsuite/experimental/filesystem/operations/copy.cc
3948         (test01): Likewise.
3949         * testsuite/experimental/filesystem/operations/create_directories.cc
3950         (test04): Likewise.
3951         * testsuite/experimental/filesystem/operations/create_directory.cc
3952         (test01): Likewise.
3953         * testsuite/experimental/filesystem/operations/permissions.cc
3954         (test03, test04): Likewise.
3955         * testsuite/experimental/filesystem/operations/remove.cc
3956         (test01): Likewise.
3957         * testsuite/experimental/filesystem/operations/remove_all.cc
3958         (test01): Likewise.
3959         * testsuite/experimental/filesystem/operations/rename.cc
3960         (test01): Likewise.
3961         * testsuite/lib/libstdc++.exp
3962         (v3_check_preprocessor_condition): Add optional inc parameter.
3963         Add it to the test program after include bits/c++config.h.
3964         (check_v3_target_fs_symlinks): New.
3965         * testsuite/lib/dg-options.exp
3966         (dg-require-target-fs-symlinks): New.
3967         * testsuite/27_io/filesystem/operations/read_symlink.cc:
3968         Replace mingw xfail with require target-fs-symlinks.
3969         * testsuite/experimental/filesystem/operations/read_symlink.cc:
3970         Likewise.
3972 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3974         * testsuite/27_io/filesystem/operations/copy.cc (test02):
3975         Select TO after creating FROM.
3976         (test03, test04): Likewise.
3977         * testsuite/experimental/filesystem/operations/copy.cc
3978         (test02, test03, test04): Likewise.
3980 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3982         * testsuite/30_threads/thread/native_handle/cancel.cc: Add an
3983         explicit cancellation point in case sleep_for lacks one.
3985 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
3987         * testsuite/lib/dg-options.exp (add_options_for_net_ts): Add
3988         -lbsd for RTEMS targets.
3990 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
3992         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
3993         rmdir to remove directories.
3994         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
3995         Likewise.
3997 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
3999         * testsuite/26_numerics/random/random_device/entropy.cc: Use
4000         numeric_limits<unsigned>::digits.
4002 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
4004         * libsupc++/eh_globals.cc [!_GLIBCXX_HAVE_TLS]
4005         (__eh_globals_init::~__eh_globals_init): Clear _S_init first.
4007 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
4009         * testsuite/30_threads/this_thread/60421.cc (test02): Call
4010         sched_yield.
4012 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
4014         * testsuite/20_util/to_chars/long_double.cc: Require cmath.
4016 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
4018         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Work around
4019         global struct bitset.
4020         * testsuite/23_containers/bitset/ext/15361.cc: Likewise.
4021         * testsuite/23_containers/bitset/input/1.cc: Likewise.
4022         * testsuite/23_containers/bitset/to_string/1.cc: Likewise.
4023         * testsuite/23_containers/bitset/to_string/dr396.cc: Likewise.
4025 2022-06-17  Jonathan Wakely  <jwakely@redhat.com>
4027         * testsuite/21_strings/basic_string/cons/char/105995.cc: Add
4028         missing #include.
4030 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
4032         PR libstdc++/105995
4033         * include/bits/basic_string.h (_M_use_local_data): Initialize
4034         the entire SSO buffer.
4035         * testsuite/21_strings/basic_string/cons/char/105995.cc: New test.
4037 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
4039         PR libstdc++/101482
4040         * include/ext/vstring.h (operator==): Always check lengths
4041         before comparing.
4043 2022-06-15  François Dumont  <fdumont@gcc.gnu.org>
4045         PR libstdc++/105717
4046         * include/bits/hashtable_policy.h (_ConvertToValueType): New.
4047         * include/bits/hashtable.h (_Hashtable<>::_M_insert_unique_aux): New.
4048         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Use latters.
4049         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, false_type)): Likewise.
4050         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
4051         const allocator_type&, true_type)): Use this.insert range.
4052         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
4053         const allocator_type&, false_type)): Use _M_insert.
4054         * testsuite/23_containers/unordered_map/cons/56112.cc: Check how many times conversion
4055         is done.
4056         * testsuite/23_containers/unordered_map/insert/105717.cc: New test.
4057         * testsuite/23_containers/unordered_set/insert/105717.cc: New test.
4059 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
4061         PR libstdc++/62187
4062         * include/bits/basic_string.h (operator==): Always compare
4063         lengths before checking string contents.
4064         [!__cpp_lib_three_way_comparison] (operator==, operator!=):
4065         Reorder arguments.
4067 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
4069         PR libstdc++/59048
4070         * include/bits/basic_string.h (compare): Define inline.
4071         * include/bits/basic_string.tcc (compare): Remove out-of-line
4072         definitions.
4073         * include/bits/cow_string.h (compare): Define inline.
4074         * testsuite/21_strings/basic_string/operations/compare/char/3.cc:
4075         New test.
4077 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
4079         * include/bits/new_allocator.h: Fix indentation.
4080         * include/ext/malloc_allocator.h: Likewise.
4082 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
4084         PR libstdc++/105957
4085         * include/bits/allocator.h (allocator::allocate): Check for
4086         overflow in constexpr allocation.
4087         * testsuite/20_util/allocator/105975.cc: New test.
4089 2022-06-13  Mark Mentovai  <mark@mentovai.com>
4091         * include/experimental/bits/fs_path.h (__detail::__null_terminated):
4092         Rename to __nul_terminated to avoid colliding with a macro in
4093         Apple's SDK.
4095 2022-06-13  Jonathan Wakely  <jwakely@redhat.com>
4097         * include/std/atomic (__atomic_val_t): Use __type_identity_t
4098         instead of atomic<T>::value_type, as per LWG 3220.
4099         * testsuite/29_atomics/atomic/lwg3220.cc: New test.
4101 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
4103         PR libstdc++/105844
4104         * include/experimental/numeric (experimental::gcd): Simplify
4105         assertions. Use __abs_r instead of __absu.
4106         (experimental::lcm): Likewise. Remove use of __detail::__lcm so
4107         overflow can be detected.
4108         * include/std/numeric (__detail::__absu): Rename to __abs_r and
4109         change to allow signed result type, so overflow can be detected.
4110         (__detail::__lcm): Remove.
4111         (gcd): Simplify assertions. Use __abs_r instead of __absu.
4112         (lcm): Likewise. Remove use of __detail::__lcm so overflow can
4113         be detected.
4114         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
4115         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
4116         * testsuite/26_numerics/gcd/105844.cc: New test.
4117         * testsuite/26_numerics/lcm/105844.cc: New test.
4119 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
4121         PR libstdc++/105880
4122         * libsupc++/eh_globals.cc (eh_globals): Ensure constant init and
4123         prevent destruction during termination.
4124         (__eh_globals_init::_M_init): Replace with static member _S_init.
4125         (__cxxabiv1::__cxa_get_globals_fast): Update.
4126         (__cxxabiv1::__cxa_get_globals): Likewise.
4128 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
4130         * include/bits/basic_string.h (__hash_str_base): New class
4131         template.
4132         (hash<basic_string<C, char_traits<C>, A>>): Define partial
4133         specialization for each of the standard character types.
4134         (hash<string>, hash<wstring>, hash<u8string>, hash<u16string>)
4135         (hash<u32string>): Remove explicit specializations.
4136         * include/std/string (__hash_string_base): Remove class
4137         template.
4138         (hash<pmr::string>, hash<pmr::wstring>, hash<pmr::u8string>)
4139         (hash<pmr::u16string>, hash<pmr::u32string>): Remove explicit
4140         specializations.
4141         * testsuite/21_strings/basic_string/hash/hash.cc: Test with
4142         custom allocators.
4143         * testsuite/21_strings/basic_string/hash/hash_char8_t.cc:
4144         Likewise.
4146 2022-05-27  Jonathan Wakely  <jwakely@redhat.com>
4148         PR libstdc++/105671
4149         * include/std/sstream (basic_stringbuf::_M_high_mark): Add
4150         always_inline attribute.
4152 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4154         PR libstdc++/105681
4155         * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp:
4156         Limit ga_sizes array to values that fit in size_t.
4157         * include/ext/random [__SIZE_WIDTH < 32] (sfmt86243)
4158         (sfmt86243_64, sfmt132049, sfmt132049_64, sfmt216091)
4159         (sfmt216091_64): Do not declare.
4161 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4163         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Make
4164         lookup for ios_errc and future_errc check versioned namespace.
4165         (StdAtomicPrinter): Strip versioned namespace from typename.
4167 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4169         * src/c++11/Makefile.am: Add new source file.
4170         * src/c++11/Makefile.in: Regenerate.
4171         * src/c++11/cxx11-ios_failure.cc (iostream_category):
4172         Move to ...
4173         * src/c++11/ios_errcat.cc: New file.
4174         * testsuite/27_io/ios_base/failure/error_code.cc: Check that
4175         std::iostream_category() is defined and used for std::io_errc.
4177 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4179         * include/bits/stl_iterator.h (counted_iterator::operator++(int)):
4180         Add 'constexpr' as per LWG 3643.
4181         * testsuite/24_iterators/counted_iterator/lwg3643.cc: New test.
4183 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4185         * include/bits/functional_hash.h (__is_fast_hash): Add doxygen
4186         comment.
4187         * include/bits/hashtable.h: Do not include <bits/stl_function.h>
4188         here.
4189         * include/bits/hashtable_policy.h: Include <bits/stl_pair.h> and
4190         <bits/functional_hash.h>.
4191         * include/bits/unordered_map.h: Include required headers.
4192         * include/bits/unordered_set.h: Likewise.
4193         * include/std/unordered_map: Do not include headers for indirect
4194         dependencies.
4195         * include/std/unordered_set: Likewise.
4197 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4199         * include/bits/ranges_algobase.h: Do not include
4200         <bits/stl_iterator_base_types.h>.
4201         * include/std/string: Likewise.
4202         * include/std/variant: Likewise.
4204 2022-05-26  Nathan Sidwell  <nathan@acm.org>
4206         * include/bits/hashtable.h: Include required headers.
4207         * include/bits/hashtable_policy.h: Likewise.
4208         * include/bits/stl_heap.h: Likewise.
4209         * include/bits/stl_iterator_base_funcs.h: Likewise.
4211 2022-05-26  François Dumont  <fdumont@gcc.gnu.org>
4213         * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
4214         Strip typename from version namespace.
4216 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4218         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Strip
4219         versioned namespace from the template argument too.
4221 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4223         * testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc:
4224         Moved to...
4225         * testsuite/21_strings/basic_string/modifiers/pop_back/char.cc:
4226         ...here.
4227         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc:
4228         Moved to...
4229         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t.cc:
4230         ...here.
4231         * testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc:
4232         Moved to...
4233         * testsuite/21_strings/basic_string/modifiers/swap/constexpr-wchar_t.cc:
4234         ...here.
4235         * testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc:
4236         Moved to...
4237         * testsuite/21_strings/basic_string/modifiers/swap/constexpr.cc:
4238         ...here.
4239         * testsuite/21_strings/basic_string/operations/contains/char/1.cc:
4240         Moved to...
4241         * testsuite/21_strings/basic_string/operations/contains/char.cc:
4242         ...here.
4243         * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc:
4244         Moved to...
4245         * testsuite/21_strings/basic_string/operations/contains/wchar_t.cc:
4246         ...here.
4247         * testsuite/21_strings/basic_string/operations/data/char/1.cc:
4248         Moved to...
4249         * testsuite/21_strings/basic_string/operations/data/char.cc:
4250         ...here.
4251         * testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc:
4252         Moved to...
4253         * testsuite/21_strings/basic_string/operations/data/wchar_t.cc:
4254         ...here.
4255         * testsuite/21_strings/basic_string/operations/ends_with/char/1.cc:
4256         Moved to...
4257         * testsuite/21_strings/basic_string/operations/ends_with/char.cc:
4258         ...here.
4259         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc:
4260         Moved to...
4261         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc:
4262         ...here.
4263         * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc:
4264         Moved to...
4265         * testsuite/21_strings/basic_string/operations/starts_with/char.cc:
4266         ...here.
4267         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc:
4268         Moved to...
4269         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc:
4270         ...here.
4271         * testsuite/21_strings/basic_string/operations/substr/char/1.cc:
4272         Moved to...
4273         * testsuite/21_strings/basic_string/operations/substr/char.cc:
4274         ...here.
4275         * testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc:
4276         Moved to...
4277         * testsuite/21_strings/basic_string/operations/substr/wchar_t.cc:
4278         ...here.
4279         * testsuite/21_strings/basic_string/range_access/char/1.cc:
4280         Moved to...
4281         * testsuite/21_strings/basic_string/range_access/char.cc:
4282         ...here.
4283         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
4284         Moved to...
4285         * testsuite/21_strings/basic_string/range_access/wchar_t.cc:
4286         ...here.
4287         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
4288         Moved to...
4289         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char.cc:
4290         ...here.
4291         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
4292         Moved to...
4293         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t.cc:
4294         ...here.
4295         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
4296         Moved to...
4297         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char.cc:
4298         ...here.
4299         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
4300         Moved to...
4301         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t.cc:
4302         ...here.
4303         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
4304         Moved to...
4305         * testsuite/21_strings/basic_string_view/modifiers/swap/char.cc:
4306         ...here.
4307         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
4308         Moved to...
4309         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t.cc:
4310         ...here.
4311         * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc:
4312         Moved to...
4313         * testsuite/21_strings/basic_string_view/operations/contains/char.cc:
4314         ...here.
4315         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc:
4316         Moved to...
4317         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t.cc:
4318         ...here.
4319         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
4320         Moved to...
4321         * testsuite/21_strings/basic_string_view/operations/data/char.cc:
4322         ...here.
4323         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
4324         Moved to...
4325         * testsuite/21_strings/basic_string_view/operations/data/wchar_t.cc:
4326         ...here.
4327         * testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc:
4328         Moved to...
4329         * testsuite/21_strings/basic_string_view/operations/ends_with/char.cc:
4330         ...here.
4331         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc:
4332         Moved to...
4333         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t.cc:
4334         ...here.
4335         * testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc:
4336         Moved to...
4337         * testsuite/21_strings/basic_string_view/operations/starts_with/char.cc:
4338         ...here.
4339         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc:
4340         Moved to...
4341         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t.cc:
4342         ...here.
4343         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
4344         Moved to...
4345         * testsuite/21_strings/basic_string_view/operations/substr/char.cc:
4346         ...here.
4347         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
4348         Moved to...
4349         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc:
4350         ...here.
4351         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
4352         Moved to...
4353         * testsuite/21_strings/basic_string_view/range_access/char.cc:
4354         ...here.
4355         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
4356         Moved to...
4357         * testsuite/21_strings/basic_string_view/range_access/wchar_t.cc:
4358         ...here.
4359         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
4360         Moved to...
4361         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char.cc:
4362         ...here.
4363         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
4364         Moved to...
4365         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t.cc:
4366         ...here.
4367         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
4368         Moved to...
4369         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t.cc:
4370         ...here.
4371         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
4372         Moved to...
4373         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t.cc:
4374         ...here.
4375         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc:
4376         Moved to...
4377         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/int.cc:
4378         ...here.
4379         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
4380         Moved to...
4381         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t.cc:
4382         ...here.
4383         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
4384         Moved to...
4385         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char.cc:
4386         ...here.
4387         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
4388         Moved to...
4389         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t.cc:
4390         ...here.
4391         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
4392         Moved to...
4393         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t.cc:
4394         ...here.
4395         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
4396         Moved to...
4397         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t.cc:
4398         ...here.
4399         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
4400         Moved to...
4401         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/int.cc:
4402         ...here.
4403         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
4404         Moved to...
4405         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t.cc:
4406         ...here.
4407         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc:
4408         Moved to...
4409         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char.cc:
4410         ...here.
4411         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc:
4412         Moved to...
4413         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t.cc:
4414         ...here.
4415         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc:
4416         Moved to...
4417         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t.cc:
4418         ...here.
4419         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc:
4420         Moved to...
4421         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t.cc:
4422         ...here.
4423         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc:
4424         Moved to...
4425         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short.cc:
4426         ...here.
4427         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc:
4428         Moved to...
4429         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t.cc:
4430         ...here.
4432 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
4434         * testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc:
4435         Moved to...
4436         * testsuite/20_util/duration/requirements/explicit_instantiation.cc: ...here.
4437         * testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc:
4438         Moved to...
4439         * testsuite/20_util/time_point/requirements/explicit_instantiation.cc: ...here.
4440         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc:
4441         Moved to...
4442         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation.cc: ...here.
4444 2022-05-25  Jason Merrill  <jason@redhat.com>
4446         * testsuite/20_util/function_objects/constexpr_searcher.cc: Add
4447         constexpr.
4449 2022-05-20  Jonathan Wakely  <jwakely@redhat.com>
4451         * testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc:
4452         Run fewer iterations for simulator targets.
4453         * testsuite/26_numerics/random/binomial_distribution/operators/values.cc:
4454         Likewise.
4455         * testsuite/26_numerics/random/discrete_distribution/operators/values.cc:
4456         Likewise.
4457         * testsuite/26_numerics/random/geometric_distribution/operators/values.cc:
4458         Likewise.
4459         * testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc:
4460         Likewise.
4461         * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
4462         Likewise.
4463         * testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc:
4464         Likewise.
4466 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
4468         * include/bits/char_traits.h: Only include <cstdint> when
4469         necessary.
4470         * include/std/stacktrace: Use __UINTPTR_TYPE__ instead of
4471         uintptr_t.
4472         * src/c++11/cow-stdexcept.cc: Include <stdint.h>.
4473         * src/c++17/floating_to_chars.cc: Likewise.
4474         * testsuite/20_util/assume_aligned/1.cc: Include <cstdint>.
4475         * testsuite/20_util/assume_aligned/3.cc: Likewise.
4476         * testsuite/20_util/shared_ptr/creation/array.cc: Likewise.
4478 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
4480         * include/bits/basic_string.h: Do not include <ext/atomicity.h>
4481         here.
4482         * include/bits/cow_string.h: Include it here.
4484 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
4486         * include/Makefile.am: Add new header.
4487         * include/Makefile.in: Regenerate.
4488         * include/bits/memory_resource.h: New file.
4489         * include/std/deque: Include <bits/memory_resource.h>.
4490         * include/std/forward_list: Likewise.
4491         * include/std/list: Likewise.
4492         * include/std/map: Likewise.
4493         * include/std/memory_resource (pmr::memory_resource): Move to
4494         new <bits/memory_resource.h> header.
4495         (pmr::polymorphic_allocator): Likewise.
4496         * include/std/regex: Likewise.
4497         * include/std/set: Likewise.
4498         * include/std/stacktrace: Likewise.
4499         * include/std/string: Likewise.
4500         * include/std/unordered_map: Likewise.
4501         * include/std/unordered_set: Likewise.
4502         * include/std/vector: Likewise.
4503         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
4504         Remove <memory_resource> header and check construction.
4505         * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
4506         * testsuite/23_containers/forward_list/pmr_typedefs.cc:
4507         Likewise.
4508         * testsuite/23_containers/list/pmr_typedefs.cc: Likewise.
4509         * testsuite/23_containers/map/pmr_typedefs.cc: Likewise.
4510         * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise.
4511         * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
4512         * testsuite/23_containers/set/pmr_typedefs.cc: Likewise.
4513         * testsuite/23_containers/unordered_map/pmr_typedefs.cc:
4514         Likewise.
4515         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
4516         Likewise.
4517         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
4518         Likewise.
4519         * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
4520         Likewise.
4521         * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
4522         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
4524 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
4526         * include/std/memory_resource (polymorphic_allocator): Add
4527         non-template equality operator, as proposed for LWG 3683.
4528         * testsuite/20_util/polymorphic_allocator/lwg3683.cc: New test.
4530 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
4532         * src/c++17/memory_resource.cc (set_default_resource): Use
4533         memory_order_acq_rel.
4534         (get_default_resource): Use memory_order_acquire.
4536 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
4538         * include/std/memory_resource (new_delete_resource): Add
4539         nodiscard, returns_nonnull and const attributes.
4540         (null_memory_resource): Likewise.
4541         (set_default_resource, get_default_resource): Add returns_nonnull
4542         attribute.
4543         (memory_resource::is_equal): Add nodiscard attribute.
4544         (operator==, operator!=): Likewise.
4546 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
4548         * include/bits/ios_base.h (io_category): Add const and nodiscard
4549         attributes.
4550         (make_error_code, make_error_condition): Add nodiscard.
4551         * include/std/future (future_category): Add const and nodiscard.
4552         (make_error_code, make_error_condition): Add nodiscard.
4553         * include/std/system_error (generic_category system_category):
4554         Add nodiscard. Replace _GLIBCXX_CONST with C++11 attribute.
4555         (error_code::value, error_code::category, error_code::operator bool)
4556         (error_condition::value, error_condition::category)
4557         (error_condition::operator bool, make_error_code)
4558         (make_error_condition, operator==, operator!=, operator<=>): Add
4559         nodiscard.
4561 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
4563         * testsuite/20_util/expected/synopsis.cc: Skip for versioned
4564         namespace.
4565         * testsuite/27_io/headers/iosfwd/synopsis.cc: Likewise.
4567 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
4569         * src/Makefile.am [ENABLE_SYMVERS_GNU_NAMESPACE] (cxx11_sources):
4570         Do not build the compatibility*-c++0x.cc objects.
4571         * src/Makefile.in: Regenerate.
4572         * src/c++11/compatibility-c++0x.cc [_GLIBCXX_INLINE_VERSION]:
4573         Refuse to build for the versioned namespace.
4574         * src/c++11/compatibility-chrono.cc: Likewise.
4575         * src/c++11/compatibility-condvar.cc: Likewise.
4576         * src/c++11/compatibility-thread-c++0x.cc: Likewise.
4577         * src/c++11/chrono.cc (system_clock, steady_clock):
4578         Use macros to define in inline namespace _V2, matching the
4579         declarations in <system_error>.
4580         * src/c++11/system_error.cc (system_category, generic_category):
4581         Likewise.
4583 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
4585         * doc/xml/manual/prerequisites.xml: Fix attributes for external
4586         hyperlink.
4587         * doc/html/manual/setup.html: Regenerate.
4589 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
4591         * doc/xml/manual/status_cxx2023.xml: Update with gcc-12 support.
4592         * doc/html/*: Regenerate.
4594 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
4596         * doc/xml/manual/intro.xml: Include new chapter.
4597         * doc/xml/manual/status_cxx2020.xml: Tweak release numbers.
4598         * doc/xml/manual/status_cxx2023.xml: New file.
4599         * doc/html/*: Regenerate.
4601 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
4603         * doc/html/manual/status.html: Regenerate.
4604         * doc/xml/manual/status_cxx2020.xml: Fix supported version for
4605         C++20 bit operations.
4607 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4609         * include/bits/std_thread.h (thread::_State, thread::_State_ptr):
4610         Declare as private unless _GLIBCXX_THREAD_IMPL is defined.
4611         * src/c++11/thread.cc (_GLIBCXX_THREAD_IMPL): Define.
4613 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4615         * include/std/future (launch): Make operators noexcept.
4617 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4619         * doc/doxygen/user.cfg.in (PREDEFINED): Replace __exception_ptr
4620         with "__unspecified__".
4621         * libsupc++/exception_ptr.h: Improve doxygen docs.
4622         (__exception_ptr::swap): Also declare in namespace std.
4624 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4626         * libsupc++/nested_exception.h (throw_with_nested) [C++17]: Use
4627         if-constexpr instead of tag dispatching.
4628         (rethrow_if_nested) [C++17]: Likewise.
4629         (rethrow_if_nested) [!__cpp_rtti]: Do not use dynamic_cast if it
4630         would require RTTI.
4631         * testsuite/18_support/nested_exception/rethrow_if_nested-term.cc:
4632         New test.
4634 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4636         * doc/doxygen/user.cfg.in (PREDEFINED): Define
4637         _GTHREAD_USE_MUTEX_TIMEDLOCK macro.
4638         * include/bits/std_mutex.h (mutex, lock_guard): Use @since and
4639         @headerfile.
4640         * include/bits/unique_lock.h (unique_lock): Likewise.
4641         * include/std/mutex (recursive_mutex, timed_mutex)
4642         (recursive_timed_mutex, scoped_lock): Likewise.
4644 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4646         * doc/doxygen/user.cfg.in (PREDEFINED): Define
4647         _GLIBCXX23_CONSTEXPR macro.
4648         * include/backward/auto_ptr.h (auto_ptr): Use @deprecated.
4649         * include/bits/unique_ptr.h (default_delete): Use @since and
4650         @headerfile.
4651         * include/std/scoped_allocator: Remove @ingroup from @file
4652         block.
4654 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4656         * include/bits/std_thread.h (thread, thread::id): Improve
4657         doxygen docs.
4658         * include/std/future: Likewise.
4659         * include/std/thread (jthread): Likewise.
4661 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4663         * include/bits/ostream_insert.h: Mark helper functions as
4664         undocumented by Doxygen.
4665         * include/bits/stl_algo.h: Use markdown for formatting and mark
4666         helper functions as undocumented.
4667         * include/bits/stl_numeric.h:  Likewise.
4668         * include/bits/stl_pair.h (pair): Add @headerfile.
4670 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4672         * doc/doxygen/user.cfg.in (PREDEFINED): Define __allocator_base
4673         so that Doxygen shows the right base-class for std::allocator.
4674         * include/bits/alloc_traits.h: Improve doxygen docs.
4675         * include/bits/allocator.h: Likewise.
4676         * include/bits/new_allocator.h: Likewise.
4677         * include/ext/new_allocator.h: Likewise.
4679 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4681         * doc/doxygen/user.cfg.in (PREDEFINED): Define macro
4682         _GLIBCXX_DOXYGEN_ONLY to expand its argument.
4683         * include/bits/c++config (_GLIBCXX_DOXYGEN_ONLY): Define.
4684         * include/bits/regex.h: Improve doxygen docs.
4685         * include/bits/regex_constants.h: Likewise.
4686         * include/bits/regex_error.h: Likewise.
4688 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4690         * include/std/atomic: Suppress doxygen docs for
4691         implementation details.
4692         * include/bits/atomic_base.h: Likewise.
4693         * include/bits/shared_ptr_atomic.h: Use markdown. Fix grouping
4694         so that std::atomic is not added to the pointer abstractions
4695         group.
4697 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4699         * include/std/system_error: Improve doxygen comments.
4701 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4703         * include/bits/ptr_traits.h: Add some doxygen comments.
4705 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4707         * doc/doxygen/user.cfg.in (PREDEFINED): Expand new macros to
4708         nothing.
4709         * include/bits/c++config (_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE)
4710         (_GLIBCXX_END_INLINE_ABI_NAMESPACE): Define new macros.
4711         * include/bits/algorithmfwd.h (_V2::__rotate): Use new macros
4712         for the namespace.
4713         * include/bits/chrono.h (chrono::_V2::system_clock): Likewise.
4714         * include/bits/stl_algo.h (_V2::__rotate): Likewise.
4715         * include/std/condition_variable (_V2::condition_variable_any):
4716         Likewise.
4717         * include/std/system_error (_V2::error_category): Likewise.
4719 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4721         * include/bits/mofunc_impl.h: Fix doxygen command.
4723 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
4725         * doc/doxygen/user.cfg.in (GROUP_NESTED_COMPOUNDS): Set to NO.
4726         (CLASS_DIAGRAMS): Remove obsolete option.
4728 2022-05-12  Jonathan Wakely  <jwakely@redhat.com>
4730         * config/locale/dragonfly/numeric_members.cc: Remove whitespace.
4731         * config/locale/gnu/numeric_members.cc: Likewise.
4732         * include/bits/locale_facets_nonio.h: Likewise.
4733         * libsupc++/typeinfo: Likewise.
4735 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
4737         PR libstdc++/105284
4738         * include/std/iosfwd: Add declarations for <spanstream> class
4739         templates and typedefs.
4740         * include/std/spanstream (basic_spanbuf, basic_ispanstream)
4741         (basic_ospanstream, basic_spanstream): Remove default template
4742         arguments.
4743         * testsuite/27_io/headers/iosfwd/synopsis.cc: Add <spanstream>
4744         declarations.
4745         * testsuite/27_io/headers/iosfwd/types.cc: Check <spanstream>
4746         default arguments.
4748 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
4750         PR libstdc++/105284
4751         * include/std/iosfwd: Add declarations for <synstream> class
4752         templates and typedefs.
4753         * include/std/syncstream (basic_syncbuf, basic_osyncstream):
4754         Remove default template arguments.
4755         * testsuite/27_io/headers/iosfwd/synopsis.cc: New test.
4756         * testsuite/27_io/headers/iosfwd/types.cc: New test.
4758 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4760         * include/bits/random.tcc (operator==): Only check
4761         normal_distribution::_M_saved_available once.
4762         * testsuite/26_numerics/random/normal_distribution/operators/equal.cc:
4763         Check equality after state changes.
4764         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
4765         lineno.
4767 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4769         PR libstdc++/105502
4770         * include/bits/random.tcc
4771         (operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
4772         Update state when __state_avail is false.
4773         * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
4774         Check that deserialized object equals serialized one.
4776 2022-05-06  Alexandre Oliva  <oliva@adacore.com>
4778         * include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX
4779         for double, long long, and 64-bit long intrinsic types.
4780         [__ALTIVEC__] (__intrinsic_type): Mention 128-bit in
4781         preexisting long double diagnostic, adjust no-VSX double
4782         diagnostic to cover 64-bit long double as well.
4784 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4786         PR libstdc++/104731
4787         * testsuite/27_io/filesystem/iterators/error_reporting.cc:
4788         Use a trailing char array as storage for dirent::d_name.
4790 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4792         * include/std/stacktrace: Do not include <cxxabi.h>.
4793         (__cxa_demangle): Declare.
4795 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4797         PR libstdc++/99871
4798         * include/bits/specfun.h: Use visibility attribute on namespace,
4799         instead of pragma push/pop.
4800         * libsupc++/compare: Likewise.
4801         * libsupc++/exception: Likewise.
4802         * libsupc++/exception.h: Likewise.
4803         * libsupc++/exception_ptr.h: Likewise.
4804         * libsupc++/initializer_list: Likewise.
4805         * libsupc++/nested_exception.h: Likewise.
4807 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
4809         * doc/xml/manual/test.xml: Remove requirement for copyright and
4810         GPL notice in tests.
4811         * doc/html/manual/test.html: Regenerate.
4813 2022-05-05  Jonathan Wakely  <jwakely@redhat.com>
4815         * include/experimental/memory_resource [!__cpp_rtti]
4816         (__resource_adaptor_imp::do_is_equal): Do not use dynamic_cast
4817         when RTTI is disabled.
4818         * testsuite/17_intro/freestanding.cc: Require RTTI.
4819         * testsuite/18_support/exception/38732.cc: Likewise.
4820         * testsuite/18_support/exception_ptr/rethrow_exception.cc:
4821         Likewise.
4822         * testsuite/18_support/nested_exception/68139.cc: Likewise.
4823         * testsuite/18_support/nested_exception/rethrow_if_nested.cc:
4824         Likewise.
4825         * testsuite/18_support/type_info/103240.cc: Likewise.
4826         * testsuite/18_support/type_info/fundamental.cc: Likewise.
4827         * testsuite/18_support/type_info/hash_code.cc: Likewise.
4828         * testsuite/20_util/any/assign/emplace.cc: Likewise.
4829         * testsuite/20_util/any/cons/in_place.cc: Likewise.
4830         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
4831         * testsuite/20_util/any/observers/type.cc: Likewise.
4832         * testsuite/20_util/function/1.cc: Likewise.
4833         * testsuite/20_util/function/2.cc: Likewise.
4834         * testsuite/20_util/function/3.cc: Likewise.
4835         * testsuite/20_util/function/4.cc: Likewise.
4836         * testsuite/20_util/function/5.cc: Likewise.
4837         * testsuite/20_util/function/6.cc: Likewise.
4838         * testsuite/20_util/function/7.cc: Likewise.
4839         * testsuite/20_util/function/8.cc: Likewise.
4840         * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
4841         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
4842         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
4843         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
4844         Likewise.
4845         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
4846         * testsuite/20_util/typeindex/comparison_operators.cc: Likewise.
4847         * testsuite/20_util/typeindex/comparison_operators_c++20.cc:
4848         Likewise.
4849         * testsuite/20_util/typeindex/hash.cc: Likewise.
4850         * testsuite/20_util/typeindex/hash_code.cc: Likewise.
4851         * testsuite/20_util/typeindex/name.cc: Likewise.
4852         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
4853         * testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
4854         Likewise.
4855         * testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
4856         Likewise.
4857         * testsuite/22_locale/locale/13630.cc: Check type without using
4858         RTTI.
4859         * testsuite/23_containers/array/requirements/non_default_constructible.cc:
4860         Require RTTI.
4861         * testsuite/27_io/basic_ostream/emit/1.cc: Likewise.
4862         * testsuite/27_io/fpos/14320-1.cc: Check type without using RTTI.
4863         * testsuite/27_io/fpos/mbstate_t/12065.cc: Require RTTI.
4864         * testsuite/27_io/ios_base/failure/dual_abi.cc: Likewise.
4865         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
4866         * testsuite/experimental/any/observers/type.cc: Likewise.
4867         * testsuite/experimental/memory_resource/resource_adaptor.cc:
4868         Likewise.
4869         * testsuite/lib/libstdc++.exp (check_effective_target_rtti):
4870         Define new proc.
4871         * testsuite/tr1/3_function_objects/function/1.cc: Likewise.
4872         * testsuite/tr1/3_function_objects/function/2.cc: Likewise.
4873         * testsuite/tr1/3_function_objects/function/3.cc: Likewise.
4874         * testsuite/tr1/3_function_objects/function/4.cc: Likewise.
4875         * testsuite/tr1/3_function_objects/function/5.cc: Likewise.
4876         * testsuite/tr1/3_function_objects/function/6.cc: Likewise.
4877         * testsuite/tr1/3_function_objects/function/7.cc: Likewise.
4878         * testsuite/tr1/3_function_objects/function/8.cc: Likewise.
4879         * testsuite/tr2/bases/value.cc: Likewise.
4880         * testsuite/tr2/direct_bases/value.cc: Likewise.
4881         * testsuite/util/exception/safety.h [!__cpp_rtti]: Don't print
4882         types without RTTI.
4884 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
4886         PR libstdc++/104719
4887         * include/std/array (array::size(), array::max_size())
4888         (array::empty(), array::data()): Add  always_inline attribute.
4890 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
4892         PR libstdc++/104719
4893         * include/std/array (__array_traits::_S_ref): Remove.
4894         (__array_traits::_S_ptr): Remove.
4895         (__array_traits<T, 0>::_Type): Define operator[] and operator T*
4896         to provide an array-like API.
4897         (array::_AT_Type): Remove public typeef.
4898         (array::operator[], array::at, array::front, array::back): Use
4899         index operator to access _M_elems instead of _S_ref.
4900         (array::data): Use implicit conversion from _M_elems to pointer.
4901         (swap(array&, array&)): Use __enable_if_t helper.
4902         (get<I>): Use index operator to access _M_elems.
4903         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
4904         Adjust dg-error line numbers.
4906 2022-05-03  Alexandre Oliva  <oliva@adacore.com>
4908         PR c++/105324
4909         * testsuite/20_util/from_chars/pr105324.cc: Guard test body
4910         with conditional for floating-point overloads of from_char.
4912 2022-05-02  Patrick Palka  <ppalka@redhat.com>
4914         PR libstdc++/103911
4915         * src/c++17/floating_from_chars.cc (find_end_of_float): Accept
4916         two delimeters for the exponent part in the form of a possibly
4917         NULL string of length two.  Don't use std::tolower.
4918         (pattern): Adjust calls to find_end_of_float accordingly.
4920 2022-05-02  Patrick Palka  <ppalka@redhat.com>
4922         PR libstdc++/105441
4923         * src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
4924         Also accept 'P' as the start of the exponent.
4925         * testsuite/20_util/from_chars/7.cc: Add corresponding testcase.
4927 2022-04-29  Jonathan Wakely  <jwakely@redhat.com>
4929         PR libstdc++/105417
4930         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
4931         Regenerate.
4932         * src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]:
4933         Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I>
4934         symbols as aliases for corresponding symbols without abi-tag.
4936 2022-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4938         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
4939         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
4940         Likewise.
4941         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
4942         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
4943         Likewise.
4945 2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
4947         PR libstdc++/99290
4948         * src/c++17/fs_ops.cc (fs::copy): Pass error_code to
4949         directory_iterator constructor, and check on each iteration.
4950         * src/filesystem/ops.cc (fs::copy): Likewise.
4951         * testsuite/27_io/filesystem/operations/copy.cc: Check for
4952         errors during recursion.
4953         * testsuite/experimental/filesystem/operations/copy.cc:
4954         Likewise.
4956 2022-04-28  François Dumont  <fdumont@gcc.gnu.org>
4958         * config/abi/pre/gnu-versioned-namespace.ver: Remove
4959         std::random_device::* pattern.
4961 2022-04-27  Jakub Jelinek  <jakub@redhat.com>
4963         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
4964         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
4965         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
4966         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
4967         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
4968         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
4969         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
4970         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
4972 2022-04-27  Jonathan Wakely  <jwakely@redhat.com>
4974         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Add
4975         support for atomic<shared_ptr<T>> and atomic<weak_ptr<T>>.
4976         (StdAtomicPrinter): New printer.
4977         (build_libstdcxx_dictionary): Register new printer.
4978         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test std::atomic.
4979         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test atomic smart
4980         pointers.
4982 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
4984         * include/bits/shared_ptr_atomic.h (atomic<shared_ptr>): Add
4985         constructor for constant initialization from nullptr_t.
4986         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
4987         Check for new constructor.
4989 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
4991         * include/bits/fs_path.h (hash<filesystem::path>): Define.
4992         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
4993         Check std::hash specialization.
4995 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
4997         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define
4998         conditionally.
4999         * include/bits/unique_ptr.h (__cpp_lib_constexpr_memory):
5000         Define for C++23.
5001         (default_delete, default_delete<T[]>, __uniq_ptr_impl)
5002         (unique_ptr, unique_ptr<T[], D>): Add constexpr to all member
5003         functions.
5004         * include/std/version (__cpp_lib_constexpr_memory): Define new
5005         value for C++23.
5006         * testsuite/20_util/unique_ptr/assign/constexpr.cc: New test.
5007         * testsuite/20_util/unique_ptr/comparison/constexpr.cc: New test.
5008         * testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc: New test.
5009         * testsuite/20_util/unique_ptr/creation/constexpr.cc: New test.
5010         * testsuite/20_util/unique_ptr/modifiers/constexpr.cc: New test.
5011         * testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc:
5012         New test.
5014 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
5016         PR libstdc++/105375
5017         * include/std/future (packaged_task): Add deduction guides.
5018         * testsuite/30_threads/packaged_task/cons/deduction.cc: New test.
5020 2022-04-25  Philipp Fent  <fent@in.tum.de>
5022         * python/libstdcxx/v6/printers.py (StdSpanPrinter._iterator):
5023         Rename as iterator.
5024         (StdInitializerListPrinter): Define new printer.
5025         (build_libstdcxx_dictionary): Register new printer.
5026         * testsuite/libstdc++-prettyprinters/cxx11.cc: Check printer for
5027         initializer_list.
5029 2022-04-22  Thomas W Rodgers  <trodgers@redhat.com>
5031         PR libstdc++/102994
5032         * include/bits/atomic_base.h (atomic_flag::notify_one,
5033         notify_all): Remove const qualification.
5034         (__atomic_base::notify_one, notify_all): Likewise.
5035         * include/std/atomic (atomic<bool>::notify_one, notify_all):
5036         Likewise.
5037         (atomic::notify_one, notify_all): Likewise.
5038         (atomic<T*>::notify_one, notify_all): Likewise.
5039         (atomic_notify_one, atomic_notify_all): Likewise.
5040         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Adjust test
5041         to account for change in notify_one/notify_all signature.
5043 2022-04-21  Patrick Palka  <ppalka@redhat.com>
5045         * include/std/charconv (__from_chars_alnum_to_val_table):
5046         Simplify initialization of __lower/__upper_letters.
5047         (__from_chars_alnum_to_val): Default the template parameter to
5048         false.
5049         * src/c++17/floating_from_chars.cc (starts_with_ci): Don't
5050         assume the uppercase and lowercase letters are contiguous.
5051         (__floating_from_chars_hex): Likewise.
5053 2022-04-21  Patrick Palka  <ppalka@redhat.com>
5055         PR c++/105297
5056         PR c++/105322
5057         * include/std/charconv (__from_chars_alnum_to_val): Make
5058         initializer for __table dependent in an artificial way.
5060 2022-04-21  Jonathan Wakely  <jwakely@redhat.com>
5062         PR libstdc++/105324
5063         * src/c++17/floating_from_chars.cc (buffer_resource::do_allocate):
5064         Remove assertion.
5065         * testsuite/20_util/from_chars/pr105324.cc: New test.
5067 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
5069         * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
5070         Check correct feature test macro.
5072 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
5074         PR libstdc++/93602
5075         * doc/xml/manual/prerequisites.xml: Document libiconv
5076         workarounds.
5077         * doc/html/manual/setup.html: Regenerate.
5078         * src/Makefile.am (CXXLINK): Add $(LTLIBICONV).
5079         * src/Makefile.in: Regenerate.
5081 2022-04-19  Patrick Palka  <ppalka@redhat.com>
5083         * src/c++17/floating_to_chars.cc (_GLIBCXX_ASSERTIONS): Don't
5084         define.
5085         (__floating_to_chars_shortest): Add __builtin_unreachable calls to
5086         squelch false-positive -Wmaybe-uninitialized and -Wreturn-type
5087         warnings.
5088         (__floating_to_chars_precision): Likewise.
5090 2022-04-19  Philipp Fent  <fent@in.tum.de>
5092         * python/libstdcxx/v6/printers.py (StdSpanPrinter): Define.
5093         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test it.
5095 2022-04-19  Jonathan Wakely  <jwakely@redhat.com>
5097         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Fix shell operators.
5098         * configure: Regenerate.
5100 2022-04-18  Patrick Palka  <ppalka@redhat.com>
5102         * include/std/charconv (__from_chars_pow2_base): Manually
5103         unroll the first iteration of the main loop and simplify
5104         accordingly.
5106 2022-04-15  Patrick Palka  <ppalka@redhat.com>
5108         PR libstdc++/104858
5109         * include/bits/ranges_algo.h (__minmax_fn): Avoid dereferencing
5110         __first twice at the start.
5111         * testsuite/25_algorithms/minmax/constrained.cc (test06): New test.
5113 2022-04-15  Patrick Palka  <ppalka@redhat.com>
5115         * include/std/charconv (__from_chars_alnum_to_val_table): Define.
5116         (__from_chars_alnum_to_val): Define.
5117         (__from_chars_binary): Rename to ...
5118         (__from_chars_pow2_base): ... this.  Generalize to handle any
5119         power-of-two base using __from_chars_alnum_to_val.
5120         (__from_chars_digit): Optimize digit recognition to a single
5121         test instead of two tests.  Use [[__unlikely___]] attribute.
5122         (__from_chars_alpha_to_num): Remove.
5123         (__from_chars_alnum): Use __from_chars_alnum_to_val.  Use a
5124         nested loop for the overflow case.  Maintain a lower bound
5125         on the number of available bits in the result and use it to
5126         omit the overflow check.
5127         (from_chars): Adjust appropriately.
5128         * src/c++17/floating_from_chars.cc (ascii_to_hexit): Remove.
5129         (__floating_from_chars_hex): Use __from_chars_alnum_to_val
5130         to recognize a hex digit instead.
5132 2022-04-14  Palmer Dabbelt  <palmer@rivosinc.com>
5134         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Force auto to mutex
5135         for RISC-V.
5136         * configure: Regenerate.
5138 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
5140         * doc/xml/manual/intro.xml: Fix comment.
5142 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
5144         * include/precompiled/stdc++.h: Include <stacktrace> and
5145         <stdatomic.h> for C++23.
5147 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
5149         PR libstdc++/105269
5150         * include/bits/stl_vector.h (__cpp_lib_constexpr_vector):
5151         Define.
5152         * include/c_compatibility/stdatomic.h (__cpp_lib_stdatomic_h):
5153         Define.
5154         * include/std/optional (__cpp_lib_optional): Define new value
5155         for C++23.
5156         (__cpp_lib_monadic_optional): Remove.
5157         * include/std/version (__cpp_lib_constexpr_vector): Define.
5158         (__cpp_lib_stdatomic_h): Define.
5159         (__cpp_lib_optional): Define new value for C++23.
5160         (__cpp_lib_monadic_optional): Remove.
5161         * testsuite/20_util/optional/monadic/and_then.cc: Adjust.
5162         * testsuite/20_util/optional/requirements.cc: Adjust for C++23.
5163         * testsuite/20_util/optional/version.cc: Likewise.
5164         * testsuite/23_containers/vector/cons/constexpr.cc: Check
5165         feature test macro.
5166         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
5167         Likewise.
5168         * testsuite/20_util/optional/monadic/version.cc: Removed.
5169         * testsuite/23_containers/vector/requirements/version.cc: New test.
5170         * testsuite/29_atomics/headers/stdatomic.h/version.cc: New test.
5172 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
5174         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Check for mmap.
5175         * config.h.in: Regenerate.
5176         * configure: Regenerate.
5178 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
5180         * include/std/stacktrace (basic_stacktrace::current): Reallocate
5181         a smaller container if the unused capacity is larger than the
5182         used size.
5184 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
5186         * include/std/stacktrace (basic_stacktrace): Use _Impl::_M_clone
5187         or _Impl::_M_assign to initialize elements in allocated storage.
5188         (basic_stacktrace::_M_clear()): Use _Impl::_M_resize instead of
5189         _Impl::_M_destroy.
5190         (basic_stacktrace::_Impl::_M_destroy()): Replace with ...
5191         (basic_stacktrace::_Impl::_M_resize(size_type, allocator&)): New
5192         function.
5193         (basic_stacktrace::_Impl::_M_push_back): Use _M_xclone. Construct
5194         new element using allocator.
5195         (basic_stacktrace::_Impl::_M_clone): New function.
5196         (basic_stacktrace::_Impl::_M_xclone): New function.
5197         (basic_stacktrace::_Impl::_M_assign): New function.
5199 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
5201         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
5202         Use nothrow new instead of try block for std::allocator.
5203         (basic_stacktrace::_Impl::_M_deallocate): Use delete for
5204         std::allocator.
5206 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
5208         * include/std/stacktrace (basic_stacktrace::current): Replace
5209         calls to _M_reserve and _S_curr_cb with call to _M_prepare.
5210         Check return value of backtrace_simple when max depth given.
5211         (basic_stacktrace::_M_reserve): Remove.
5212         (basic_stacktrace::_S_curr_cb): Remove.
5213         (basic_stacktrace::_M_prepare(size_type)): New function to
5214         reserve initial capacity and return callback.
5215         (basic_stacktrace::_Impl::_M_allocate): Remove check for 0 < n
5216         and remove redundant zeroing of _M_frames and _M_capacity.
5217         (basic_stacktrace::_Impl::_M_push_back): Add [[unlikely]]
5218         attribute. Assign _Impl instead of swapping.
5219         * testsuite/19_diagnostics/stacktrace/current.cc: New test.
5221 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
5223         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
5224         Change [[unlikely]] attribute to [[likely]].
5226 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
5228         PR libstdc++/105031
5229         * include/std/stacktrace (basic_stacktrace::basic_stacktrace):
5230         Fix allocator usage in constructors.
5231         (basic_stacktrace::operator=(const basic_stacktrace&)): Do not
5232         try to reallocate using const allocator.
5233         (basic_stacktrace::operator=(basic_stacktrace&&)): Fix
5234         if-constexpr with non-constant condition. Do not allocate new
5235         storage if allocator propagates. Do not set _M_size if
5236         allocation fails.
5237         (basic_stacktrace::swap(basic_stacktrace&)): Fix typo. Add
5238         assertion that non-propagating allocators are equal.
5239         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: New test.
5241 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
5243         * include/std/stacktrace (basic_stacktrace::current): Duplicate
5244         implementation into each overload. Add noinline attribute and
5245         skip current frame.
5246         (basic_stacktrace::max_size()): Call _Impl::_S_max_size.
5247         (basic_stacktrace::_S_curr_cb()): New function defining lambda.
5248         (basic_stacktrace::_Impl::_S_max_size): New function defining
5249         maximum size in terms of allocator and size_type.
5250         (basic_stacktrace::_Impl::_M_allocate): Check against
5251         max_size().
5252         * testsuite/19_diagnostics/stacktrace/entry.cc: Call function
5253         for non-constexpr checks. Check line number is correct.
5255 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
5257         * testsuite/20_util/stacktrace/entry.cc: Moved to...
5258         * testsuite/19_diagnostics/stacktrace/entry.cc: ...here.
5259         * testsuite/20_util/stacktrace/synopsis.cc: Moved to...
5260         * testsuite/19_diagnostics/stacktrace/synopsis.cc: ...here.
5261         * testsuite/20_util/stacktrace/version.cc: Moved to...
5262         * testsuite/19_diagnostics/stacktrace/version.cc: ...here.
5264 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
5266         * include/experimental/bits/fs_path.h (path): Define special
5267         members after path::_Cmpt is complete.
5269 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
5271         PR libstdc++/105153
5272         * include/std/expected
5273         (expected<void,E>::expected(expected<U,G>&&)): Fix constraints.
5274         * testsuite/20_util/expected/cons.cc: Check constructor.
5276 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
5278         PR libstdc++/105154
5279         * include/std/expected (expected<void, E>::swap): Set
5280         _M_has_value to false for objects that previously had a value.
5281         * testsuite/20_util/expected/swap.cc: Fix test to check void
5282         specialization.
5284 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
5286         PR libstdc++/105146
5287         * include/std/expected (bad_expected_access): Move constructor
5288         parameter.
5289         * testsuite/20_util/expected/bad.cc: New test.
5291 2022-04-07  Hans-Peter Nilsson  <hp@axis.com>
5293         * testsuite/20_util/expected/requirements.cc: Correct minimal-size
5294         test.
5296 2022-04-02  Jakub Jelinek  <jakub@redhat.com>
5298         PR libstdc++/105128
5299         * include/std/source_location (std::source_location::__impl): Move
5300         definition before using __builtin_ret_type.
5302 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
5304         * include/std/utility (unreachable): Define for C++23.
5305         * include/std/version (__cpp_lib_unreachable): Define.
5306         * src/c++11/debug.cc (__glibcxx_assert_fail): Check for valid
5307         arguments. Handle only the function being given.
5308         * testsuite/20_util/unreachable/1.cc: New test.
5309         * testsuite/20_util/unreachable/version.cc: New test.
5311 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
5313         * include/experimental/bits/fs_fwd.h (copy_file): Remove
5314         incorrect noexcept from declaration.
5315         * include/experimental/bits/fs_path.h (path::begin, path::end):
5316         Add noexcept to declarations, to match definitions.
5318 2022-04-01  Timm Bäder  <tbaeder@redhat.com>
5320         * include/bits/fs_ops.h: Fix filename in Doxygen comment.
5321         * include/experimental/bits/fs_ops.h: Likewise.
5323 2022-03-31  Jonathan Wakely  <jwakely@redhat.com>
5325         * libsupc++/new_opa.cc (aligned_alloc): Add comment.
5327 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
5329         * testsuite/18_support/exception/38732.cc: Disable for C++23.
5330         * testsuite/18_support/headers/exception/synopsis.cc: Likewise.
5331         * testsuite/18_support/unexpected_handler.cc: Likewise.
5333 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
5335         * libsupc++/compare (_Strong_order) [!__cpp_using_enum]: Add
5336         static data members for _Fp_fmt enumerators.
5338 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
5340         * include/std/version (__cpp_lib_variant): Fix conditions to
5341         match <variant>.
5342         (__cpp_lib_expected): Fix condition to match <expected>.
5344 2022-03-28  Jonathan Wakely  <jwakely@redhat.com>
5346         * testsuite/20_util/optional/monadic/and_then.cc: Fix typo.
5347         * testsuite/20_util/optional/monadic/transform.cc: Likewise.
5348         * testsuite/22_locale/codecvt/always_noconv/char/1.cc: Likewise.
5349         * testsuite/22_locale/codecvt/encoding/char/1.cc: Likewise.
5350         * testsuite/22_locale/codecvt/in/char/1.cc: Likewise.
5351         * testsuite/22_locale/codecvt/max_length/char/1.cc: Likewise.
5352         * testsuite/22_locale/codecvt/out/char/1.cc: Likewise.
5353         * testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
5355 2022-03-27  Jonathan Wakely  <jwakely@redhat.com>
5357         * doc/doxygen/user.cfg.in: Add new header.
5358         * include/Makefile.am: Likewise.
5359         * include/Makefile.in: Regenerate.
5360         * include/precompiled/stdc++.h: Add new header.
5361         * include/std/version (__cpp_lib_expected): Define.
5362         * libsupc++/exception [__cplusplus > 202002] (unexpected)
5363         (unexpected_handler, set_unexpected): Do not declare for C++23.
5364         * include/std/expected: New file.
5365         * testsuite/20_util/expected/assign.cc: New test.
5366         * testsuite/20_util/expected/cons.cc: New test.
5367         * testsuite/20_util/expected/illformed_neg.cc: New test.
5368         * testsuite/20_util/expected/observers.cc: New test.
5369         * testsuite/20_util/expected/requirements.cc: New test.
5370         * testsuite/20_util/expected/swap.cc: New test.
5371         * testsuite/20_util/expected/synopsis.cc: New test.
5372         * testsuite/20_util/expected/unexpected.cc: New test.
5373         * testsuite/20_util/expected/version.cc: New test.
5375 2022-03-25  Jonathan Wakely  <jwakely@redhat.com>
5377         * include/std/bit (bit_cast, byteswap, endian): Add doxygen
5378         comments.
5380 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
5382         PR libstdc++/105027
5383         * include/std/bit (bit_cast): Add constraints.
5384         * testsuite/26_numerics/bit/bit.cast/105027.cc: New test.
5386 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
5388         * include/std/version [!_GLIBCXX_HOSTED]
5389         (__cpp_lib_hardware_interference_size): Define for freestanding.
5390         (__cpp_lib_bit_cast): Likewise.
5391         (__cpp_lib_is_layout_compatible): Likewise.
5392         (__cpp_lib_is_pointer_interconvertible): Likewise.
5393         (__cpp_lib_adaptor_iterator_pair_constructor): Do not define for
5394         freestanding.
5395         (__cpp_lib_invoke_r): Likewise.
5396         (__cpp_lib_ios_noreplace): Likewise.
5397         (__cpp_lib_monadic_optional): Likewise.
5398         (__cpp_lib_move_only_function): Likewise.
5399         (__cpp_lib_spanstream): Likewise.
5400         (__cpp_lib_stacktrace): Likewise.
5401         (__cpp_lib_string_contains): Likewise.
5402         (__cpp_lib_string_resize_and_overwrite): Likewise.
5403         (__cpp_lib_to_underlying): Likewise.
5405 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
5407         PR libstdc++/105021
5408         * include/bits/atomic_base.h [!_GLIBCXX_HOSTED]: Do not include
5409         <bits/atomic_wait.h> for freestanding.
5411 2022-03-22  Hans-Peter Nilsson  <hp@axis.com>
5413         * testsuite/20_util/from_chars/6.cc (test01) [FE_DOWNWARD]:
5414         Conditionalize call to fesetround.
5416 2022-03-21  Jakub Jelinek  <jakub@redhat.com>
5418         PR libstdc++/104990
5419         * include/bits/locale_facets_nonio.tcc (get): Don't check if do_get
5420         isn't overloaded if __clang__ is defined.
5422 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
5424         PR libstdc++/104242
5425         * include/std/any (any(T&&)): Revert change to constraints.
5426         * testsuite/20_util/any/cons/104242.cc: New test.
5428 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
5430         PR libstdc++/92546
5431         * include/pstl/glue_algorithm_defs.h: Replace <functional> with
5432         <bits/stl_pair.h>.
5433         * include/pstl/utils.h: Replace <iterator> with <type_traits>.
5434         (__pstl::__internal::__except_handler): Use std::__terminate
5435         instead of std::terminate.
5436         * src/c++17/fs_path.cc: Include <array>.
5437         * testsuite/25_algorithms/adjacent_find/constexpr.cc: Include
5438         <functional>.
5439         * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
5440         * testsuite/25_algorithms/clamp/constrained.cc: Likewise.
5441         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
5442         * testsuite/25_algorithms/for_each/constrained.cc: Likewise.
5443         * testsuite/25_algorithms/includes/constrained.cc: Likewise.
5444         * testsuite/25_algorithms/is_heap/constexpr.cc: Likewise.
5445         * testsuite/25_algorithms/is_heap_until/constexpr.cc: Likewise.
5446         * testsuite/25_algorithms/is_permutation/constrained.cc: Include
5447         <iterator>.
5448         * testsuite/25_algorithms/is_sorted/constexpr.cc: Include
5449         <functional>.
5450         * testsuite/25_algorithms/is_sorted_until/constexpr.cc:
5451         Likewise.
5452         * testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
5453         Likewise.
5454         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
5455         Likewise.
5456         * testsuite/25_algorithms/lexicographical_compare_three_way/1.cc:
5457         Include <array>.
5458         * testsuite/25_algorithms/lower_bound/constexpr.cc: Include
5459         <functional>.
5460         * testsuite/25_algorithms/max/constrained.cc: Likewise.
5461         * testsuite/25_algorithms/max_element/constrained.cc: Likewise.
5462         * testsuite/25_algorithms/min/constrained.cc: Likewise.
5463         * testsuite/25_algorithms/min_element/constrained.cc: Likewise.
5464         * testsuite/25_algorithms/minmax_element/constrained.cc:
5465         Likewise.
5466         * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
5467         * testsuite/25_algorithms/move/93872.cc: Likewise.
5468         * testsuite/25_algorithms/move_backward/93872.cc: Include
5469         <iterator>.
5470         * testsuite/25_algorithms/nth_element/constexpr.cc: Include
5471         <functional>.
5472         * testsuite/25_algorithms/partial_sort/constexpr.cc: Likewise.
5473         * testsuite/25_algorithms/partial_sort_copy/constexpr.cc:
5474         Likewise.
5475         * testsuite/25_algorithms/search/constexpr.cc: Likewise.
5476         * testsuite/25_algorithms/search_n/constrained.cc: Likewise.
5477         * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
5478         * testsuite/25_algorithms/set_difference/constrained.cc:
5479         Likewise.
5480         * testsuite/25_algorithms/set_intersection/constexpr.cc:
5481         Likewise.
5482         * testsuite/25_algorithms/set_intersection/constrained.cc:
5483         Likewise.
5484         * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
5485         Likewise.
5486         * testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
5487         * testsuite/25_algorithms/set_union/constrained.cc: Likewise.
5488         * testsuite/25_algorithms/sort/constexpr.cc: Likewise.
5489         * testsuite/25_algorithms/sort_heap/constexpr.cc: Likewise.
5490         * testsuite/25_algorithms/transform/constrained.cc: Likewise.
5491         * testsuite/25_algorithms/unique/constexpr.cc: Likewise.
5492         * testsuite/25_algorithms/unique/constrained.cc: Likewise.
5493         * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
5494         * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
5495         * testsuite/std/ranges/adaptors/elements.cc: Include <vector>.
5496         * testsuite/std/ranges/adaptors/lazy_split.cc: Likewise.
5497         * testsuite/std/ranges/adaptors/split.cc: Likewise.
5499 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
5501         PR libstdc++/92546
5502         * include/bits/fs_path.h (path::make_preferred): Use
5503         handwritten loop instead of std::replace.
5505 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
5507         PR middle-end/104966
5508         * include/bits/locale_facets_nonio.tcc
5509         (__moneypunct_cache::_M_cache): Replace try-catch with RAII and
5510         make all string copies before any stores to *this.
5512 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
5514         * testsuite/util/testsuite_character.h: Fix comment.
5516 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
5518         PR libstdc++/103407
5519         * config/abi/pre/gnu.ver: Make version for std::from_chars
5520         depend on HAVE_USELOCALE macro.
5521         * testsuite/util/testsuite_abi.cc (compare_symbols): Treat
5522         std::from_chars for floating-point types as undesignated if
5523         not found in the baseline symbols file.
5525 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
5527         * include/std/charconv (__cpp_lib_to_chars): Only define when
5528         both from_chars and to_chars are supported for floating-point
5529         types.
5530         (from_chars, to_chars): Adjust preprocessor conditions guarding
5531         declarations.
5532         * include/std/version (__cpp_lib_to_chars): Adjust condition to
5533         match <charconv> definition.
5534         * src/c++17/floating_from_chars.cc (from_chars_strtod): New
5535         function template.
5536         (from_chars): Simplify preprocessor checks and use
5537         from_chars_strtod when appropriate.
5539 2022-03-14  Jonathan Wakely  <jwakely@redhat.com>
5541         PR libstdc++/104875
5542         * src/c++11/codecvt.cc (read_utf8_code_point): Use char32_t to
5543         hold octets that will be left-shifted.
5545 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
5547         PR libstdc++/104870
5548         * src/c++17/floating_from_chars.cc: Check __SIZE_WIDTH__ >= 32
5549         before using fast_float.
5551 2022-03-10  Detlef Vollmann  <dv@vollmann.ch>
5553         PR libstdc++/104866
5554         * include/bits/this_thread_sleep.h: Fix order of #endif and
5555         closing brace of namespace.
5557 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
5559         * libsupc++/compare (_Strong_order::_S_fp_cmp) [__vax__]:
5560         Handle NaN.
5562 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
5564         * libsupc++/compare (_Strong_ordering::_S_fp_cmp) [__vax__]: Use
5565         <=> comparison.
5567 2022-03-09  Patrick Palka  <ppalka@redhat.com>
5569         PR libstdc++/104859
5570         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
5571         Be explicit when narrowing the shifted effective_mantissa,
5572         since it may have an integer-class type.
5574 2022-03-08  Jonathan Wakely  <jwakely@redhat.com>
5576         * include/bits/uses_allocator_args.h: Remove incorrect copyright
5577         notice.
5579 2022-03-07  Jonathan Wakely  <jwakely@redhat.com>
5581         PR libstdc++/104807
5582         * include/bits/c++config (__terminate, __glibcxx_assert_fail):
5583         Replace _GLIBCXX_VISIBILITY on function with visibility pragma.
5584         (__is_constant_evaluated): Add visibility pragma.
5586 2022-03-07  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
5588         * config/locale/vxworks/ctype_members.cc: Remove <iostream>
5589         include.
5591 2022-03-05  Jonathan Wakely  <jwakely@redhat.com>
5593         * include/bits/c++config (__glibcxx_assert_fail): Add visibility
5594         attribute.
5595         (__terminate): Likewise.
5597 2022-03-04  Jonathan Wakely  <jwakely@redhat.com>
5599         * libsupc++/compare (strong_order::_S_fp_cmp): Move typedef
5600         inside #if condition.
5602 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
5604         PR libstdc++/104748
5605         * testsuite/std/ranges/adaptors/all.cc: Use non-debug vector for
5606         constexpr test.
5608 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
5610         * testsuite/17_intro/names.cc (func): Undef on AIX.
5612 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
5614         PR libstdc++/96526
5615         * libsupc++/compare (strong_order): Add missing support for
5616         floating-point types.
5617         * testsuite/18_support/comparisons/algorithms/strong_order_floats.cc:
5618         New test.
5620 2022-03-01  Jonathan Wakely  <jwakely@redhat.com>
5622         PR middle-end/103984
5623         * include/bits/regex_compiler.h (_BracketMatcher::_M_char): Use
5624         default member initializer.
5626 2022-02-24  Jonathan Wakely  <jwakely@redhat.com>
5628         PR libstdc++/104602
5629         * include/std/source_location (source_location::current): Use
5630         deduced type of __builtin_source_location().
5632 2022-02-22  Patrick Palka  <ppalka@redhat.com>
5634         * include/bits/ranges_base.h (__detail::__is_initializer_list):
5635         Define.
5636         (viewable_range): Adjust as per P2415R2.
5637         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
5638         * include/std/ranges (owning_view): Define as per P2415R2.
5639         (enable_borrowed_range<owning_view>): Likewise.
5640         (views::__detail::__can_subrange): Replace with ...
5641         (views::__detail::__can_owning_view): ... this.
5642         (views::_All::_S_noexcept): Sync with operator().
5643         (views::_All::operator()): Use owning_view instead of subrange
5644         as per P2415R2.
5645         * include/std/version (__cpp_lib_ranges): Adjust value.
5646         * testsuite/std/ranges/adaptors/all.cc (test06): Adjust now that
5647         views::all uses owning_view instead of subrange.
5648         (test08): New test.
5649         * testsuite/std/ranges/adaptors/lazy_split.cc (test09): Adjust
5650         now that rvalue non-view non-borrowed ranges are viewable.
5651         * testsuite/std/ranges/adaptors/split.cc (test06): Likewise.
5653 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
5655         PR libstdc++/104559
5656         * doc/xml/manual/evolution.xml: Document deprecation.
5657         * doc/html/manual/api.html: Regenerate.
5658         * include/bits/stl_bvector.h (insert(const_iterator, const bool&)):
5659         Remove default argument.
5660         (insert(const_iterator)): New overload with deprecated attribute.
5661         * testsuite/23_containers/vector/bool/modifiers/insert/104559.cc:
5662         New test.
5664 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
5666         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Replace
5667         code that call cat->name() on std::error_category objects.
5668         Identify known categories by symbol name and use a hardcoded
5669         name. Print error code values as enumerators where appopriate.
5670         * testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected
5671         name of custom category. Check io_errc and future_errc errors.
5673 2022-02-15  Jonathan Wakely  <jwakely@redhat.com>
5675         PR libstdc++/104542
5676         * include/bits/uses_allocator_args.h (make_obj_using_allocator)
5677         (uninitialized_construct_using_allocator): Add constexpr.
5678         * testsuite/20_util/uses_allocator/make_obj.cc: Check constexpr.
5679         * testsuite/20_util/uses_allocator/uninitialized_construct.cc: New test.
5681 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
5683         PR libstdc++/100912
5684         * config/locale/gnu/c_locale.h (__convert_from_v): Use inline
5685         namespace for IEEE128 long double mode.
5686         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Add new symbol
5687         version and export __gnu_cxx_ieee128::__convert_from_v.
5688         * include/bits/locale_facets_nonio.tcc (money_put::__do_put):
5689         Make __ibm128 overload use snprintf directly
5690         * testsuite/util/testsuite_abi.cc: Add new symbol version.
5691         Remove stable IEEE128/LDBL versions.
5693 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
5695         PR libstdc++/103891
5696         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
5697         Remove.
5698         * include/std/variant: Check feature test macros instead.
5699         * include/std/version: Likewise.
5701 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
5703         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
5704         Fix typo.
5706 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
5708         * src/c++17/floating_to_chars.cc (FLOAT128_TO_CHARS): Depend on
5709         LONG_DOUBLE_ALT128_COMPAT instead of USE_FLOAT128.
5711 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
5713         * testsuite/20_util/temporary_buffer.cc: Fix dg-warning target
5714         selector.
5716 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
5718         * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
5719         Ignore -Walloc-larger-than warning.
5720         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
5721         Likewise.
5722         * testsuite/29_atomics/atomic/cons/user_pod.cc: Compile with -O1
5723         to avoid linker error for __atomic_is_lock_free.
5725 2022-02-10  Thomas Rodgers  <rodgert@appliantology.com>
5727         * include/bits/atomic_wait.h (__waiter_base::_S_do_spin,
5728         __waiter_base::_S_do_spin_v): Change memory order from relaxed
5729         to acquire.
5731 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
5733         * include/c_compatibility/stdatomic.h (atomic_fetch_xor): Add
5734         using-declaration.
5735         (atomic_fetch_xor_explicit): Likewise.
5736         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Check
5737         arithmetic and logical operations for atomic_int.
5739 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
5741         * src/filesystem/dir-common.h (_GLIBCXX_HAVE_DIRFD): Undefine
5742         when <dirent.h> is not available.
5743         (_GLIBCXX_HAVE_UNLINKAT):  Likewise.
5745 2022-02-09  Thomas Rodgers  <rodgert@appliantology.com>
5747         PR libstdc++/104442
5748         * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): Move spin
5749         loop inside do loop so that threads failing the wait, reload
5750         _M_ver.
5752 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
5754         * src/c++17/fs_dir.cc (_Dir(DIR*, const path&)): Change first
5755         parameter to _Dir_base&&.
5756         * src/filesystem/dir-common.h (_Dir_base(DIR*)): Remove.
5757         * src/filesystem/dir.cc (_Dir(DIR*, const path&)): Change first
5758         parameter to _Dir_base&&.
5760 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
5762         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Add comment about
5763         checking for CAS on correct word size.
5765 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
5767         * testsuite/experimental/filesystem/operations/create_directories.cc:
5768         Adjust expected results for Windows.
5770 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
5772         PR libstdc++/104161
5773         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::__erase):
5774         [i_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Refresh entry._M_type member,
5775         instead of checking for errno values indicating a directory.
5776         * src/c++17/fs_ops.cc (fs::remove_all(const path&)): Use similar
5777         logic to non-throwing overload.
5778         (fs::remove_all(const path&, error_code&)): Add comments.
5779         * src/filesystem/ops-common.h: Likewise.
5781 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
5783         * src/filesystem/dir-common.h (_Dir_base::openat): Change return
5784         type to use portable posix::DIR alias.
5786 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
5788         * include/c_compatibility/stdatomic.h [__clang__]: Use
5789         #include_next <stdatomic.h>.
5791 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
5793         * include/experimental/bits/fs_ops.h (fs::copy_file): Remove
5794         noexcept.
5795         (fs::create_directories): Likewise.
5796         (fs::remove_all): Likewise.
5797         * src/filesystem/ops.cc (fs::copy_file): Remove noexcept.
5798         (fs::create_directories): Likewise.
5799         (fs::remove_all): Likewise.
5801 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
5803         PR libstdc++/104161
5804         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for dirfd
5805         and unlinkat.
5806         * config.h.in: Regenerate.
5807         * configure: Regenerate.
5808         * include/bits/fs_dir.h (recursive_directory_iterator): Declare
5809         remove_all overloads as friends.
5810         (recursive_directory_iterator::__erase): Declare new member
5811         function.
5812         * include/bits/fs_fwd.h (remove, remove_all): Declare.
5813         * src/c++17/fs_dir.cc (_Dir): Add filename_only parameter to
5814         constructor. Pass file descriptor argument to base constructor.
5815         (_Dir::dir_and_pathname, _Dir::open_subdir, _Dir::do_unlink)
5816         (_Dir::unlink, _Dir::rmdir): Define new member functions.
5817         (directory_iterator): Pass filename_only argument to _Dir
5818         constructor.
5819         (recursive_directory_iterator::_Dir_stack): Adjust constructor
5820         parameters to take a _Dir rvalue instead of creating one.
5821         (_Dir_stack::orig): Add data member for storing original path.
5822         (_Dir_stack::report_error): Define new member function.
5823         (__directory_iterator_nofollow): Move here from dir-common.h and
5824         fix value to be a power of two.
5825         (__directory_iterator_filename_only): Define new constant.
5826         (recursive_directory_iterator): Construct _Dir object and move
5827         into _M_dirs stack. Pass skip_permission_denied argument to first
5828         advance call.
5829         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
5830         (recursive_directory_iterator::__erase): Define new member
5831         function.
5832         * src/c++17/fs_ops.cc (ErrorReporter, do_remove_all): Remove.
5833         (fs::remove_all): Use new recursive_directory_iterator::__erase
5834         member function.
5835         * src/filesystem/dir-common.h (_Dir_base): Add int parameter to
5836         constructor and use openat to implement nofollow semantics.
5837         (_Dir_base::fdcwd, _Dir_base::set_close_on_exec, _Dir_base::openat):
5838         Define new member functions.
5839         (__directory_iterator_nofollow): Move to fs_dir.cc.
5840         * src/filesystem/dir.cc (_Dir): Pass file descriptor argument to
5841         base constructor.
5842         (_Dir::dir_and_pathname, _Dir::open_subdir): Define new member
5843         functions.
5844         (recursive_directory_iterator::_Dir_stack): Adjust constructor
5845         parameters to take a _Dir rvalue instead of creating one.
5846         (recursive_directory_iterator): Check for new nofollow option.
5847         Construct _Dir object and move into _M_dirs stack. Pass
5848         skip_permission_denied argument to first advance call.
5849         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
5850         * src/filesystem/ops.cc (fs::remove_all): Use C++17 remove_all.
5852 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
5854         * include/bits/allocator.h: Qualify std::allocator_traits in
5855         deprecated warnings.
5856         * libsupc++/exception (uncaught_exception): Add suggestion to
5857         deprecated warning.
5859 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
5861         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::pop):
5862         Add [[maybe_unused]] attribute.
5863         * src/filesystem/dir.cc (fs::recursive_directory_iterator::pop):
5864         Likewise.
5866 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
5868         * testsuite/23_containers/multiset/operators/cmp_c++20.cc: Use
5869         custom comparison function for multiset.
5870         * testsuite/23_containers/set/operators/cmp_c++20.cc: Use custom
5871         comparison function for set.
5873 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
5875         * include/bits/boost_concept_check.h (_OutputIteratorConcept):
5876         Change member function to data member of function pointer type.
5878 2022-02-02  Martin Sebor  <msebor@redhat.com>
5880         PR libstdc++/101831
5881         * include/std/array (begin): Declare const member function attribute
5882         const.
5883         (end, rbegin, rend, size, max_size, empty, data): Same.
5884         * testsuite/23_containers/array/capacity/empty.cc: Add test cases.
5885         * testsuite/23_containers/array/capacity/max_size.cc: Same.
5886         * testsuite/23_containers/array/capacity/size.cc: Same.
5887         * testsuite/23_containers/array/iterators/begin_end.cc: New test.
5889 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
5891         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
5892         autoconf macro to check whether d_type is present.
5893         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
5894         Likewise.
5896 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
5898         * testsuite/27_io/filesystem/iterators/97731.cc: New test.
5899         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
5900         Check follow_directory_symlink option.
5901         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
5902         Likewise.
5904 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
5906         * src/c++17/fs_dir.cc (recursive_directory_iterator::increment):
5907         Reset state to past-the-end iterator on error.
5908         (fs::recursive_directory_iterator::pop(error_code&)): Likewise.
5909         (fs::recursive_directory_iterator::pop()): Check _M_dirs before
5910         it might get reset.
5911         * src/filesystem/dir.cc (recursive_directory_iterator): Likewise,
5912         for the TS implementation.
5913         * testsuite/27_io/filesystem/iterators/error_reporting.cc: New test.
5914         * testsuite/experimental/filesystem/iterators/error_reporting.cc: New test.
5916 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
5918         * include/bits/fs_fwd.h (filesystem::perms): Fix comment.
5920 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
5922         PR libstdc++/104301
5923         * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Print different messages
5924         for stdio_pure and stdio_posix options.
5925         * configure: Regenerate.
5927 2022-02-01  Thomas Rodgers  <rodgert@appliantology.com>
5929         * include/bits/atomic_wait.h: Change memory order from
5930         Acquire/Release with relaxed loads to SeqCst+Release for
5931         accesses to the waiter's count.
5933 2022-01-31  Martin Liska  <mliska@suse.cz>
5935         * acinclude.m4: Detect *_ld_is_mold and use it.
5936         * configure: Regenerate.
5938 2022-01-30  Hans-Peter Nilsson  <hp@axis.com>
5940         * testsuite/27_io/basic_istream/get/char/lwg3464.cc: Don't run on
5941         simulator targets.
5942         * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: Likewise.
5944 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
5946         PR libstdc++/100516
5947         * include/bits/deque.tcc (_M_range_initialize<ForwardIterator>):
5948         Add __builtin_unreachable to loop.
5949         * testsuite/23_containers/deque/100516.cc: New test.
5951 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
5953         * include/bits/ranges_base.h (ranges::advance): Avoid signed
5954         overflow. Do nothing if already equal to desired result.
5955         * testsuite/24_iterators/range_operations/advance_overflow.cc:
5956         New test.
5958 2022-01-27  Martin Liska  <mliska@suse.cz>
5960         PR libstdc++/104259
5961         * acinclude.m4: Fix typo.
5962         * configure: Regenerate.
5964 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
5966         PR libstdc++/104019
5967         * include/bits/istream.tcc (basic_istream::sentry): Add braces
5968         around try-block.
5969         * include/bits/shared_ptr_base.h (_Sp_counted_array_base::_M_init):
5970         Add pragmas to disable bogus warnings from PR 61596.
5972 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
5974         PR libstdc++/104217
5975         * src/c++17/fs_ops.cc (_GNU_SOURCE): Define.
5976         * src/filesystem/dir.cc (_GNU_SOURCE): Define.
5977         * src/filesystem/ops.cc (_GNU_SOURCE): Define.
5979 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
5981         PR libstdc++/104161
5982         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
5983         fdopendir.
5984         * config.h.in: Regenerate.
5985         * configure: Regenerate.
5986         * src/c++17/fs_dir.cc (_Dir): Add nofollow flag to constructor
5987         and pass it to base class constructor.
5988         (directory_iterator): Pass nofollow flag to _Dir constructor.
5989         (fs::recursive_directory_iterator::increment): Likewise.
5990         * src/c++17/fs_ops.cc (do_remove_all): Use nofollow option for
5991         directory_iterator constructor. Move error check outside loop.
5992         * src/filesystem/dir-common.h (_Dir_base): Add nofollow flag to
5993         constructor and when it's set use ::open with O_NOFOLLOW and
5994         O_DIRECTORY.
5995         * src/filesystem/dir.cc (_Dir): Add nofollow flag to constructor
5996         and pass it to base class constructor.
5997         (directory_iterator): Pass nofollow flag to _Dir constructor.
5998         (fs::recursive_directory_iterator::increment): Likewise.
5999         * src/filesystem/ops.cc (remove_all): Use nofollow option for
6000         directory_iterator constructor. Move error check outside loop.
6002 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
6004         PR libstdc++/104032
6005         * include/std/spanstream (basic_spanbuf(basic_spanbuf&&)): Use
6006         mem-initializer for _M_buf.
6007         (basic_spanbuf::Operator=(basic_spanbuf&&)): Fix ill-formed
6008         member access.
6009         * testsuite/27_io/spanstream/2.cc: New test.
6011 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
6013         * src/c++17/floating_from_chars.cc (USE_STRTOD_FOR_FROM_CHARS):
6014         Define macro for case where std::from_chars is implemented in
6015         terms of strtod, strtof or strtold.
6016         (buffer_resource, valid_fmt, find_end_of_float, pattern)
6017         (from_chars_impl, make_result, reserve_string): Do not define
6018         unless USE_STRTOD_FOR_FROM_CHARS is defined.
6019         (from_chars): Define when at least one of USE_LIB_FAST_FLOAT and
6020         USE_STRTOD_FOR_FROM_CHARS is defined, instead of
6021         _GLIBCXX_HAVE_USELOCALE. Use fast_float for long double when it
6022         is binary64.
6024 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
6026         PR libstdc++/104174
6027         * include/bits/hashtable_policy.h (_Map_base): Add partial
6028         specialization for maps with const key types.
6029         * testsuite/23_containers/unordered_map/104174.cc: New test.
6031 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
6033         PR libstdc++/104019
6034         * include/bits/shared_ptr_base.h (_Sp_counted_base<>::_M_release):
6035         Set members to zero without type punning.
6037 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
6039         * testsuite/20_util/shared_ptr/cons/array.cc: Fix comment.
6041 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
6043         PR libstdc++/87193
6044         PR libstdc++/104019
6045         * include/bits/alloc_traits.h (__cpp_lib_allocator_traits_is_always_equal):
6046         Define as type long.
6047         * include/bits/allocator.h (__cpp_lib_incomplete_container_elements):
6048         Likewise.
6049         * include/bits/basic_string.h (__cpp_lib_string_udls): Likewise.
6050         * include/bits/chrono.h (__cpp_lib_chrono): Likewise.
6051         (__cpp_lib_chrono_udls): Likewise.
6052         * include/bits/move.h (__cpp_lib_addressof_constexpr): Likewise.
6053         * include/bits/node_handle.h (__cpp_lib_node_extract): Likewise.
6054         * include/bits/range_access.h (__cpp_lib_nonmember_container_access):
6055         Likewise.
6056         * include/bits/shared_ptr.h (__cpp_lib_enable_shared_from_this):
6057         Likewise.
6058         * include/bits/stl_algo.h (__cpp_lib_clamp): Likewise.
6059         (__cpp_lib_sample): Likewise.
6060         * include/bits/stl_algobase.h (__cpp_lib_robust_nonmodifying_seq_ops):
6061         Likewise.
6062         * include/bits/stl_function.h (__cpp_lib_transparent_operators):
6063         Likewise.
6064         * include/bits/stl_iterator.h (__cpp_lib_make_reverse_iterator):
6065         Likewise.
6066         * include/bits/stl_map.h (__cpp_lib_map_try_emplace):
6067         Likewise.
6068         * include/bits/stl_tree.h (__cpp_lib_generic_associative_lookup):
6069         Likewise.
6070         * include/bits/unique_ptr.h (__cpp_lib_make_unique):
6071         Likewise.
6072         * include/bits/unordered_map.h (__cpp_lib_unordered_map_try_emplace):
6073         Likewise.
6074         * include/c_global/cmath (__cpp_lib_hypot): Likewise.
6075         * include/c_global/cstddef (__cpp_lib_byte): Likewise.
6076         * include/std/atomic (__cpp_lib_atomic_is_always_lock_free):
6077         Likewise.
6078         * include/std/complex (__cpp_lib_complex_udls): Likewise.
6079         * include/std/filesystem (__cpp_lib_filesystem): Likewise.
6080         * include/std/functional (__cpp_lib_not_fn): Likewise.
6081         (__cpp_lib_boyer_moore_searcher): Likewise.
6082         * include/std/iomanip (__cpp_lib_quoted_string_io): Likewise.
6083         * include/std/mutex (__cpp_lib_scoped_lock): Likewise.
6084         * include/std/numeric (__cpp_lib_gcd_lcm): Likewise.
6085         (__cpp_lib_gcd, __cpp_lib_lcm): Likewise.
6086         * include/std/tuple (__cpp_lib_apply): Likewise.
6087         (__cpp_lib_make_from_tuple): Likewise.
6088         * include/std/type_traits (__cpp_lib_integral_constant_callable)
6089         (__cpp_lib_bool_constant, __cpp_lib_logical_traits)
6090         (__cpp_lib_is_null_pointer, __cpp_lib_transformation_trait_aliases)
6091         (__cpp_lib_result_of_sfinae, __cpp_lib_void_t)
6092         (__cpp_lib_is_swappable, __cpp_lib_is_invocable)
6093         (__cpp_lib_has_unique_object_representations)
6094         (__cpp_lib_is_aggregate): Likewise.
6095         * include/std/version: Likewise.
6096         * libsupc++/new (__cpp_lib_launder): Likewise.
6098 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
6100         * include/std/version (__cpp_lib_shared_ptr_arrays): Fix
6101         condition for C++17 definition.
6103 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
6105         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count):
6106         Add constexpr.
6107         (_Sp_atomic::_M_ptr): Add default member-initializer.
6108         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
6109         Check constant initialization.
6110         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: Likewise.
6112 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
6114         * src/c++11/cxx11-ios_failure.cc (__constinit): Define as
6115         equivalent attribute for Clang.
6116         * src/c++11/future.cc (__constinit): Likewise.
6117         * src/c++11/system_error.cc (__constinit): Likewise.
6118         * src/c++17/memory_resource.cc (__constinit): Likewise.
6120 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
6122         * scripts/testsuite_flags.in: Only add src/filesystem/.libs and
6123         src/libbacktrace/.libs to LDFLAGS if those directories exist.
6125 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6127         * configure.ac (GLIBCXX_ENABLE_DEBUG_FLAGS): Remove -gdwarf-4
6128         from default flags.
6129         * configure: Regenerate.
6131 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6133         PR libstdc++/104123
6134         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Include
6135         <stddef.h>.
6137 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6139         * scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
6140         linker search paths.
6141         * src/Makefile.am: Fix src/debug/libbacktrace build.
6142         * src/Makefile.in: Regenerate.
6143         * src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
6144         variable. Use symlinks for the source files.
6145         * src/libbacktrace/Makefile.in: Regenerate.
6147 2022-01-19  Matthias Kretz  <m.kretz@gsi.de>
6149         * include/experimental/bits/simd.h (__floating_point_flags): Do
6150         not rely on math_errhandling to expand to a constant expression.
6152 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6154         * doc/xml/manual/evolution.xml: Document deprecations.
6155         * doc/xml/manual/status_cxx2017.xml: Update status.
6156         * doc/html/*: Regenerate.
6158 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6160         * include/bits/stl_tempbuf.h (get_temporary_buffer): Change
6161         _GLIBCXX14_DEPRECATED to _GLIBCXX17_DEPRECATED.
6163 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6165         * include/bits/stl_pair.h (_PCC::_DeprConsPair): Remove unused
6166         function.
6168 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
6170         PR libstdc++/104101
6171         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count::lock):
6172         Only use __thread_relax if __cpp_lib_atomic_wait is defined.
6174 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6176         PR libstdc++/104099
6177         * include/bits/basic_string.h (basic_string(nullptr_t)): Only
6178         define for C++23.
6179         (operator=(nullptr_t)): Likewise.
6180         * include/bits/cow_string.h: Likewise.
6181         * include/std/string_view (basic_string_view(nullptr_t)):
6182         Likewise.
6183         * testsuite/21_strings/basic_string/cons/char/nullptr.cc: Adjust
6184         expected error. Add examples that become ill-formed in C++23.
6185         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
6186         Adjust expected errors.
6187         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
6188         Likewise.
6190 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6192         PR libstdc++/104098
6193         * include/bits/stl_iterator.h (reverse_iterator): Check
6194         __cpp_lib_concepts instead of __cplusplus.
6196 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6198         PR libstdc++/101124
6199         * include/bits/stl_pair.h (pair): Adjust constraints on
6200         deprecated constructors accepting literal zero as null pointer
6201         constant. Improve wording of deprecated attribute.
6202         * testsuite/20_util/pair/cons/99957.cc: Check that deprecated
6203         constructors do not cause ambiguities for copyable types.
6205 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6207         * include/bits/stl_function.h (ptr_fun): Fix suggestion for
6208         non-deprecated alternative.
6210 2022-01-18  Tom Honermann  <tom@honermann.net>
6212         * acinclude.m4: Define config macros if uchar.h provides
6213         c8rtomb() and mbrtoc8().
6214         * config.h.in: Regenerate.
6215         * configure: Regenerate.
6216         * include/c_compatibility/uchar.h (c8rtomb, mbrtoc8): Define.
6217         * include/c_global/cuchar (c8rtomb, mbrtoc8): Likewise.
6218         * include/c_std/cuchar (c8rtomb, mbrtoc8): Likewise.
6219         * testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc:
6220         New test.
6221         * testsuite/21_strings/headers/cuchar/functions_std_fchar8_t.cc:
6222         New test.
6224 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6226         * include/Makefile.am: Install new header.
6227         * include/Makefile.in: Regenerate.
6228         * include/c_compatibility/stdatomic.h: New file.
6229         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: New test.
6231 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6233         PR libstdc++/104080
6234         * src/c++17/fast_float/LOCAL_PATCHES: Update.
6235         * src/c++17/fast_float/fast_float.h (FASTFLOAT_IS_BIG_ENDIAN):
6236         Define in terms of __BYTE_ORDER__.
6238 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6240         PR libstdc++/104080
6241         * src/c++17/fast_float/LOCAL_PATCHES: UPDATE.
6242         * src/c++17/fast_float/fast_float.h (round): Use explicit
6243         template argument list for std::min.
6245 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6247         * doc/xml/manual/status_cxx2017.xml: Update C++17 status.
6248         * doc/xml/manual/status_cxx2020.xml: Use 12.1 instead of 12 for
6249         upcoming release.
6250         * doc/html/manual/status.html: Regenerate.
6252 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
6254         * acinclude.m4 (GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING): Improve
6255         comments.
6256         * configure: Regenerate.
6258 2022-01-17  Patrick Palka  <ppalka@redhat.com>
6260         * src/c++17/floating_from_chars.cc: (USE_LIB_FAST_FLOAT):
6261         Conditionally define, and use it to conditionally include
6262         fast_float.
6263         (from_chars): Use fast_float for float and double when
6264         USE_LIB_FAST_FLOAT.
6266 2022-01-17  Patrick Palka  <ppalka@redhat.com>
6268         * src/c++17/fast_float/LOCAL_PATCHES: Update.
6269         * src/c++17/fast_float/fast_float.h (from_chars_advanced): In
6270         case of over/underflow, return errc::result_out_of_range and don't
6271         modify 'value'.
6273 2022-01-17  Patrick Palka  <ppalka@redhat.com>
6275         * src/c++17/fast_float/LOCAL_PATCHES: Update.
6276         * src/c++17/fast_float/fast_float.h: Apply local modifications.
6278 2022-01-17  Patrick Palka  <ppalka@redhat.com>
6280         * src/c++17/fast_float/LOCAL_PATCHES: New file.
6281         * src/c++17/fast_float/MERGE: New file.
6282         * src/c++17/fast_float/README.md: New file, copied from the
6283         fast_float repository.
6284         * src/c++17/fast_float/fast_float.h: New file, an amalgamation
6285         of the fast_float library.
6287 2022-01-17  Patrick Palka  <ppalka@redhat.com>
6289         * src/c++17/floating_from_chars.cc: Include <bit>.
6290         (ascii_to_hexit, starts_with_ci): Conditionally define.
6291         (__floating_from_chars_hex):  Conditionally define.
6292         (from_chars): Use __floating_from_chars_hex for
6293         chars_format::hex parsing of binary32/64 float/double.
6294         (testsuite/20_util/from_chars/7.cc): New test.
6295         * testsuite/20_util/from_chars/7.cc: New file.
6297 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6299         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): New macro.
6300         * configure.ac: Use GLIBCXX_ENABLE_BACKTRACE.
6301         * include/Makefile.am: Add new header.
6302         * include/Makefile.in: Regenerate.
6303         * include/std/stacktrace: New header.
6304         * include/std/version (__cpp_lib_stacktrace): Define.
6305         * Makefile.in: Regenerate.
6306         * config.h.in: Regenerate.
6307         * configure: Regenerate.
6308         * doc/Makefile.in: Regenerate.
6309         * libsupc++/Makefile.in: Regenerate.
6310         * po/Makefile.in: Regenerate.
6311         * python/Makefile.in: Regenerate.
6312         * src/Makefile.am: Regenerate.
6313         * src/Makefile.in: Regenerate.
6314         * src/c++11/Makefile.in: Regenerate.
6315         * src/c++17/Makefile.in: Regenerate.
6316         * src/c++20/Makefile.in: Regenerate.
6317         * src/c++98/Makefile.in: Regenerate.
6318         * src/filesystem/Makefile.in: Regenerate.
6319         * testsuite/Makefile.in: Regenerate.
6320         * src/libbacktrace/Makefile.am: New file.
6321         * src/libbacktrace/Makefile.in: New file.
6322         * src/libbacktrace/backtrace-rename.h: New file.
6323         * src/libbacktrace/backtrace-supported.h.in: New file.
6324         * src/libbacktrace/config.h.in: New file.
6325         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
6326         New proc.
6327         * testsuite/20_util/stacktrace/entry.cc: New test.
6328         * testsuite/20_util/stacktrace/synopsis.cc: New test.
6329         * testsuite/20_util/stacktrace/version.cc: New test.
6331 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6333         * doc/xml/manual/status_cxx2020.xml: Use final C++20 option
6334         names.
6335         * doc/html/manual/status.html: Regenerate.
6337 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6339         PR libstdc++/103650
6340         * include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS.
6341         * include/Makefile.in: Regenerate.
6342         * testsuite/17_intro/headers/c++1998/103650.cc: New test.
6344 2022-01-17  Matthias Kretz  <m.kretz@gsi.de>
6346         * include/experimental/bits/simd.h (__floating_point_flags): Do
6347         not rely on the presence of the math_errhandling macro.
6349 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6351         * include/bits/shared_ptr_atomic.h (_Sp_atomic): Add typename
6352         to qualified-id for dependent type.
6354 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6356         * doc/xml/manual/status_cxx2020.xml: Update.
6357         * doc/html/manual/status.html: Regenerate.
6359 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
6360             Thomas Rodgers  <trodgers@redhat.com>
6362         * include/bits/shared_ptr_atomic.h (__cpp_lib_atomic_shared_ptr):
6363         New macro.
6364         (_Sp_atomic): New class template.
6365         (atomic<shared_ptr<T>>, atomic<weak_ptr<T>>): New partial
6366         specializations.
6367         * include/bits/shared_ptr_base.h (__shared_count, __weak_count)
6368         (__shared_ptr, __weak_ptr): Declare _Sp_atomic as a friend.
6369         * include/std/version (__cpp_lib_atomic_shared_ptr): New macro.
6370         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc: New
6371         test.
6372         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: New test.
6374 2022-01-15  Matthias Kretz  <m.kretz@gsi.de>
6376         * include/experimental/bits/simd.h: Move feature detection bools
6377         and add __have_avx512bitalg, __have_avx512vbmi2,
6378         __have_avx512vbmi, __have_avx512ifma, __have_avx512cd,
6379         __have_avx512vnni, __have_avx512vpopcntdq.
6380         (__detail::__machine_flags): New function which returns a unique
6381         uint64 depending on relevant -m and -f flags.
6382         (__detail::__odr_helper): New type alias for either an anonymous
6383         type or a type specialized with the __machine_flags number.
6384         (_SimdIntOperators): Change template parameters from _Impl to
6385         _Tp, _Abi because _Impl now has an __odr_helper parameter which
6386         may be _OdrEnforcer from the anonymous namespace, which makes
6387         for a bad base class.
6388         (many): Either add __odr_helper template parameter or mark as
6389         always_inline.
6390         * include/experimental/bits/simd_detail.h: Add defines for
6391         AVX512BITALG, AVX512VBMI2, AVX512VBMI, AVX512IFMA, AVX512CD,
6392         AVX512VNNI, AVX512VPOPCNTDQ, and AVX512VP2INTERSECT.
6393         * include/experimental/bits/simd_builtin.h: Add __odr_helper
6394         template parameter or mark as always_inline.
6395         * include/experimental/bits/simd_fixed_size.h: Ditto.
6396         * include/experimental/bits/simd_math.h: Ditto.
6397         * include/experimental/bits/simd_scalar.h: Ditto.
6398         * include/experimental/bits/simd_neon.h: Add __odr_helper
6399         template parameter.
6400         * include/experimental/bits/simd_ppc.h: Ditto.
6401         * include/experimental/bits/simd_x86.h: Ditto.
6403 2022-01-14  Uroš Bizjak  <ubizjak@gmail.com>
6405         * testsuite/22_locale/numpunct/members/char/3.cc:
6406         Require pt_PT locale instead of nl_NL.
6407         (test02): Use pt_PT locale instead of nl_NL.
6409 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
6411         PR libstdc++/91260
6412         PR libstdc++/91383
6413         PR libstdc++/95065
6414         * include/backward/binders.h (bind1st, bind2nd): Add deprecated
6415         attribute.
6416         * include/bits/refwrap.h (_Maybe_unary_or_binary_function):
6417         Disable deprecated warnings for base classes.
6418         (_Reference_wrapper_base): Likewise.
6419         * include/bits/shared_ptr_base.h (_Sp_owner_less): Likewise.
6420         * include/bits/stl_bvector.h (_Bit_iterator_base): Likewise.
6421         * include/bits/stl_function.h (unary_function, binary_function):
6422         Add deprecated attribute.
6423         (unary_negate, not1, binary_negate, not2, ptr_fun)
6424         (pointer_to_unary_function, pointer_to_binary_function)
6425         (mem_fun_t, const_mem_fun_t, mem_fun_ref_t, const_mem_fun_ref_t)
6426         (mem_fun1_t, const_mem_fun1_t, mem_fun_ref1_t)
6427         (const_mem_fun1_ref_t, mem_fun, mem_fun_ref): Add deprecated
6428         attributes.
6429         * include/bits/stl_iterator.h: Disable deprecated warnings for
6430         std::iterator base classes.
6431         * include/bits/stl_iterator_base_types.h (iterator): Add
6432         deprecated attribute.
6433         * include/bits/stl_map.h (map::value_compare): Disable
6434         deprecated warnings for base class.
6435         * include/bits/stl_multimap.h (multimap::value_compare):
6436         Likewise.
6437         * include/bits/stl_raw_storage_iter.h (raw_storage_iterator):
6438         Add deprecated attribute.
6439         * include/bits/stl_tempbuf.h (get_temporary_buffer): Likewise.
6440         * include/bits/stream_iterator.h: Disable deprecated warnings.
6441         * include/bits/streambuf_iterator.h: Likewise.
6442         * include/ext/bitmap_allocator.h: Remove unary_function base
6443         classes.
6444         * include/ext/functional: Disable deprecated warnings.
6445         * include/ext/rope: Likewise.
6446         * include/ext/throw_allocator.h: Likewise.
6447         * include/std/type_traits (result_of): Add deprecated attribute.
6448         * include/tr1/functional: Disable deprecated warnings.
6449         * include/tr1/functional_hash.h: Likewise.
6450         * testsuite/20_util/function_objects/binders/1.cc: Add
6451         -Wno-disable-deprecations.
6452         * testsuite/20_util/function_objects/binders/3113.cc: Likewise.
6453         * testsuite/20_util/function_objects/constexpr.cc: Add
6454         dg-warning.
6455         * testsuite/20_util/raw_storage_iterator/base.cc: Likewise.
6456         * testsuite/20_util/raw_storage_iterator/dr2127.cc: Likewise.
6457         * testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc:
6458         Likewise.
6459         * testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc:
6460         Likewise.
6461         * testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc:
6462         Likewise.
6463         * testsuite/20_util/reference_wrapper/24803.cc:
6464         Likewise.
6465         * testsuite/20_util/reference_wrapper/typedefs.cc: Enable for
6466         C++20 and check for absence of nested types.
6467         * testsuite/20_util/shared_ptr/comparison/less.cc: Remove
6468         std::binary_function base class.
6469         * testsuite/20_util/temporary_buffer.cc: Add dg-warning.
6470         * testsuite/21_strings/basic_string/cons/char/69092.cc: Remove
6471         std::iterator base class.
6472         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
6473         Likewise.
6474         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
6475         Likewise.
6476         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
6477         Likewise.
6478         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
6479         Likewise.
6480         * testsuite/24_iterators/istreambuf_iterator/92285.cc:
6481         Likewise.
6482         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
6483         Likewise.
6484         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
6485         Likewise.
6486         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
6487         Likewise.
6488         * testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc:
6489         Likewise.
6490         * testsuite/25_algorithms/copy/34595.cc:
6491         Likewise.
6492         * testsuite/25_algorithms/minmax/3.cc: Remove std::binary_function
6493         base class.
6494         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc:
6495         Disable deprecated warnings.
6496         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc:
6497         Likewise.
6498         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc:
6499         Likewise.
6500         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc:
6501         Likewise.
6502         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc:
6503         Likewise.
6504         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc:
6505         Likewise.
6506         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc:
6507         Likewise.
6508         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc:
6509         Likewise.
6510         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc:
6511         Likewise.
6512         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc:
6513         Likewise.
6514         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc:
6515         Likewise.
6516         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc:
6517         Likewise.
6518         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc:
6519         Likewise.
6520         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc:
6521         Likewise.
6522         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc:
6523         Likewise.
6524         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc:
6525         Likewise.
6526         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc:
6527         Likewise.
6528         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc:
6529         Likewise.
6530         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc:
6531         Likewise.
6532         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc:
6533         Likewise.
6534         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc:
6535         Likewise.
6536         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc:
6537         Likewise.
6538         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc:
6539         Likewise.
6540         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc:
6541         Likewise.
6542         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc:
6543         Likewise.
6544         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc:
6545         Likewise.
6546         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc:
6547         Likewise.
6548         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc:
6549         Likewise.
6550         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc:
6551         Likewise.
6552         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc:
6553         Likewise.
6554         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
6555         Likewise.
6556         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
6557         Likewise.
6558         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc:
6559         Likewise.
6560         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc:
6561         Likewise.
6562         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc:
6563         Likewise.
6564         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc:
6565         Likewise.
6566         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc:
6567         Likewise.
6568         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc:
6569         Likewise.
6570         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc:
6571         Likewise.
6572         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc:
6573         Likewise.
6574         * testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc:
6575         Likewise.
6576         * testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc:
6577         Likewise.
6578         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc:
6579         Likewise.
6580         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc:
6581         Likewise.
6582         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
6583         Likewise.
6584         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
6585         Likewise.
6586         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc:
6587         Likewise.
6588         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc:
6589         Likewise.
6590         * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Add
6591         dg-warning.
6592         * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
6593         Likewise.
6594         * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
6595         Likewise.
6596         * testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
6597         Disable deprecated warnings.
6598         * testsuite/tr1/6_containers/hash/requirements/base_classes.cc:
6599         Likewise.
6600         * testsuite/util/regression/trait/erase_if_fn.hpp: Remove
6601         std::unary_function base classes.
6602         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
6603         Remove std::iterator base classes.
6605 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
6607         * include/bits/shared_ptr.h (__cpp_lib_shared_ptr_weak_type):
6608         Correct type of macro value.
6609         (shared_ptr): Add additional friend declarations.
6610         (make_shared, allocate_shared): Constrain existing overloads and
6611         remove static_assert.
6612         * include/bits/shared_ptr_base.h (__cpp_lib_smart_ptr_for_overwrite):
6613         New macro.
6614         (_Sp_counted_ptr_inplace<T, Alloc, Lp>): New partial
6615         specialization for use with make_shared_for_overwrite.
6616         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
6617         (_Sp_counted_array_base): New class template.
6618         (_Sp_counted_array): New class template.
6619         (__shared_count(_Tp*&, const _Sp_counted_array_base&, _Init)):
6620         New constructor for allocating shared arrays.
6621         (__shared_ptr(const _Sp_counted_array_base&, _Init)): Likewise.
6622         * include/std/version (__cpp_lib_shared_ptr_weak_type): Correct
6623         type.
6624         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
6625         (__cpp_lib_smart_ptr_for_overwrite): New macro.
6626         * testsuite/20_util/shared_ptr/creation/99006.cc: Adjust
6627         expected errors.
6628         * testsuite/20_util/shared_ptr/creation/array.cc: New test.
6629         * testsuite/20_util/shared_ptr/creation/overwrite.cc: New test.
6630         * testsuite/20_util/shared_ptr/creation/version.cc: New test.
6631         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Check
6632         feature test macro. Test non-trivial default-initialization.
6634 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
6636         * include/bits/stl_construct.h (_Construct, _Construct_novalue):
6637         Also cast away cv-qualifiers when converting pointer to void.
6638         * testsuite/20_util/allocator/void.cc: Test construct function
6639         with cv-qualified types.
6641 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
6643         PR libstdc++/103992
6644         * include/bits/stl_iterator.h (common_iterator): Use
6645         std::construct_at instead of placement new.
6646         * testsuite/24_iterators/common_iterator/1.cc: Check copy
6647         construction is usable in constant expressions.
6649 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
6651         * doc/xml/manual/status_cxx2011.xml: Document new tokens
6652         accepted by std::random_device constructor.
6653         * doc/html/manual/status.html: Regenerate.
6655 2022-01-12  Patrick Palka  <ppalka@redhat.com>
6657         * testsuite/20_util/to_chars/103955.cc: Add explicit dg-do
6658         directive.
6660 2022-01-12  Patrick Palka  <ppalka@redhat.com>
6662         PR libstdc++/103955
6663         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
6664         Track the excess precision separately from the effective
6665         precision.  Avoid overflow in bounds check by splitting it into
6666         two checks.
6667         (__floating_to_chars_precision): Avoid overflow in bounds checks
6668         similarly.
6669         * testsuite/20_util/to_chars/103955.cc: New test.
6671 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6673         PR libstdc++/103726
6674         * include/Makefile.am: Install <source_location> for
6675         freestanding.
6676         * include/Makefile.in: Regenerate.
6677         * include/std/version (__cpp_lib_source_location): Define for
6678         freestanding.
6680 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6682         * include/std/ranges (ranges::lazy_split_view::_InnerIter::end()):
6683         Add neoxcept (LWG 3593).
6685 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6687         * include/std/ranges (ranges::__detail::__box): Add constexpr to
6688         assignment operators (LWG 3572).
6689         * testsuite/std/ranges/adaptors/filter.cc: Check assignment of a
6690         view that uses copyable-box.
6692 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6694         PR libstdc++/103726
6695         * include/Makefile.am: Install <coroutine> for freestanding.
6696         * include/Makefile.in: Regenerate.
6697         * include/std/coroutine: Adjust headers and preprocessor
6698         conditions.
6699         (__coroutine_traits_impl): Use concepts when available.
6700         [_GLIBCXX_HOSTED] (hash<coroutine_handle>): Define.
6702 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6704         * include/std/ostream (operator<<(basic_ostream&, charT)):
6705         Use unformatted input if no padding is needed.
6706         (operator<<(basic_ostream<char>&, char)): Likewise.
6708 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6710         PR libstdc++/103891
6711         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
6712         Define.
6713         * include/std/variant (__cpp_lib_variant): Only define C++20
6714         value when the compiler is known to support conditionally
6715         trivial destructors.
6716         * include/std/version (__cpp_lib_variant): Likewise.
6718 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
6720         * include/bits/stl_iterator.h (common_iterator): Add constexpr
6721         to all member functions (LWG 3574).
6722         * testsuite/24_iterators/common_iterator/1.cc: Evaluate some
6723         tests as constant expressions.
6724         * testsuite/24_iterators/common_iterator/2.cc: Likewise.
6726 2022-01-10  Jakub Jelinek  <jakub@redhat.com>
6728         PR libstdc++/77760
6729         * include/bits/locale_facets_nonio.h (__time_get_state): New struct.
6730         (time_get::_M_extract_via_format): Declare new method with
6731         __time_get_state& as an extra argument.
6732         * include/bits/locale_facets_nonio.tcc (_M_extract_via_format): Add
6733         __state argument, set various fields in it while parsing.  Handle %j,
6734         %U, %w and %W, fix up handling of %y, %Y and %C, don't adjust tm_hour
6735         for %p immediately.  Add a wrapper around the method without the
6736         __state argument for backwards compatibility.
6737         (_M_extract_num): Remove all __len == 4 special cases.
6738         (time_get::do_get_time, time_get::do_get_date, time_get::do_get): Zero
6739         initialize __state, pass it to _M_extract_via_format and finalize it
6740         at the end.
6741         (do_get_year): For 1-2 digit parsed years, map 0-68 to 2000-2068,
6742         69-99 to 1969-1999.  For 3-4 digit parsed years use that as year.
6743         (get): If do_get isn't overloaded from the locale_facets_nonio.tcc
6744         version, don't call do_get but call _M_extract_via_format instead to
6745         pass around state.
6746         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export _M_extract_via_format
6747         with extra __time_get_state and __time_get_state::_M_finalize_state.
6748         * src/c++98/locale_facets.cc (is_leap, day_of_the_week,
6749         day_of_the_year): New functions in anon namespace.
6750         (mon_yday): New var in anon namespace.
6751         (__time_get_state::_M_finalize_state): Define.
6752         * testsuite/22_locale/time_get/get/char/4.cc: New test.
6753         * testsuite/22_locale/time_get/get/wchar_t/4.cc: New test.
6754         * testsuite/22_locale/time_get/get_year/char/1.cc (test01): Parse 197
6755         as year 197AD instead of error.
6756         * testsuite/22_locale/time_get/get_year/char/5.cc (test01): Parse 1 as
6757         year 2001 instead of error.
6758         * testsuite/22_locale/time_get/get_year/char/6.cc: New test.
6759         * testsuite/22_locale/time_get/get_year/wchar_t/1.cc (test01): Parse
6760         197 as year 197AD instead of error.
6761         * testsuite/22_locale/time_get/get_year/wchar_t/5.cc (test01): Parse
6762         1 as year 2001 instead of error.
6763         * testsuite/22_locale/time_get/get_year/wchar_t/6.cc: New test.
6765 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
6767         PR libstdc++/103866
6768         * acinclude.m4 (GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS): Do
6769         nothing for freestanding builds.
6770         (GLIBCXX_ENABLE_HOSTED): Define FREESTANDING_FLAGS.
6771         * configure.ac: Do not use AC_LIBTOOL_DLOPEN when configured
6772         with --without-headers.  Do not use GCC_HEADER_STDINT for
6773         freestanding builds.
6774         * libsupc++/Makefile.am (HOSTED_CXXFLAGS): Use -ffreestanding
6775         for freestanding builds.
6776         * configure: Regenerate.
6777         * Makefile.in: Regenerate.
6778         * doc/Makefile.in: Regenerate.
6779         * include/Makefile.in: Regenerate.
6780         * libsupc++/Makefile.in: Regenerate.
6781         * po/Makefile.in: Regenerate.
6782         * python/Makefile.in: Regenerate.
6783         * src/Makefile.in: Regenerate.
6784         * src/c++11/Makefile.in: Regenerate.
6785         * src/c++17/Makefile.in: Regenerate.
6786         * src/c++20/Makefile.in: Regenerate.
6787         * src/c++98/Makefile.in: Regenerate.
6788         * src/filesystem/Makefile.in: Regenerate.
6789         * testsuite/Makefile.in: Regenerate.
6791 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
6793         * testsuite/28_regex/algorithms/regex_replace/char/103664.cc:
6794         Add dg-timeout-factor directive.
6795         * testsuite/28_regex/basic_regex/84110.cc: Likewise.
6796         * testsuite/28_regex/basic_regex/ctors/char/other.cc: Likewise.
6797         * testsuite/28_regex/match_results/102667.cc: Likewise.
6799 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
6801         * doc/xml/manual/using.xml: Update documentation around default
6802         -std option.
6803         * doc/html/*: Regenerate.
6805 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
6807         PR libstdc++/100017
6808         * src/c++17/Makefile.am (AM_CXXFLAGS): Add -nostdinc++.
6809         * src/c++17/Makefile.in: Regenerate.
6811 2022-01-09  Sandra Loosemore  <sandra@codesourcery.com>
6813         * testsuite/18_support/type_info/constexpr.cc: Add explicit
6814         -fdelete-null-pointer-checks option.
6816 2022-01-06  Pavel I. Kryukov  <pavel.kryukov@phystech.edu>
6817             Jonathan Wakely  <jwakely@redhat.com>
6819         PR libstdc++/103853
6820         * include/bits/forward_list.tcc (forward_list::merge): Check for
6821         self-merge.
6822         * testsuite/23_containers/forward_list/operations/merge.cc: New test.
6824 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
6826         * include/bits/regex.h (basic_regex, match_results): Qualify
6827         name in friend declaration, to work around Clang bug.
6829 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
6831         * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor.
6833 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
6835         PR libstdc++/103911
6836         * include/std/charconv (__from_chars_alpha_to_num): Return
6837         char instead of unsigned char. Change invalid return value to
6838         127 instead of using numeric trait.
6839         (__from_chars_alnum): Fix comment. Do not use std::isdigit.
6840         Change type of variable to char.
6842 2022-01-05  François Dumont  <fdumont@gcc.gnu.org>
6844         PR libstdc++/68303
6845         * include/bits/hashtable_policy.h
6846         (_Hashtable_hash_traits<_Hash>): New.
6847         (_Hash_code_base<>::_M_hash_code(const _Hash_node_value<>&)): New.
6848         (_Hashtable_base<>::_M_key_equals): New.
6849         (_Hashtable_base<>::_M_equals): Use latter.
6850         (_Hashtable_base<>::_M_key_equals_tr): New.
6851         (_Hashtable_base<>::_M_equals_tr): Use latter.
6852         * include/bits/hashtable.h
6853         (_Hashtable<>::__small_size_threshold()): New, use _Hashtable_hash_traits.
6854         (_Hashtable<>::find): Loop through elements to look for key if size is lower
6855         than __small_size_threshold().
6856         (_Hashtable<>::_M_emplace(true_type, _Args&&...)): Likewise.
6857         (_Hashtable<>::_M_insert_unique(_Kt&&, _Args&&, const _NodeGenerator&)): Likewise.
6858         (_Hashtable<>::_M_compute_hash_code(const_iterator, const key_type&)): New.
6859         (_Hashtable<>::_M_emplace(const_iterator, false_type, _Args&&...)): Use latter.
6860         (_Hashtable<>::_M_find_before_node(const key_type&)): New.
6861         (_Hashtable<>::_M_erase(true_type, const key_type&)): Use latter.
6862         (_Hashtable<>::_M_erase(false_type, const key_type&)): Likewise.
6863         * src/c++11/hashtable_c++0x.cc: Include <bits/functional_hash.h>.
6864         * testsuite/util/testsuite_performance.h
6865         (report_performance): Use 9 width to display memory.
6866         * testsuite/performance/23_containers/insert_erase/unordered_small_size.cc:
6867         New performance test case.
6869 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6871         PR libstdc++/103919
6872         * include/bits/basic_string.h (basic_string(const T&, size_t, size_t)):
6873         Relax constraints on string_view parameter.
6874         * include/bits/cow_string.h (basic_string(const T&, size_t, size_t)):
6875         Likewise.
6876         * testsuite/21_strings/basic_string/cons/char/103919.cc: New test.
6878 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6880         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export new symbol for
6881         ARM EABI.
6882         * include/bits/c++config (_GLIBCXX23_CONSTEXPR): Define.
6883         * include/std/version (__cpp_lib_constexpr_typeinfo): Define.
6884         * libsupc++/tinfo.cc: Add #error to ensure non-inline definition
6885         is emitted.
6886         (type_info::__equal): Define alias symbol.
6887         * libsupc++/typeinfo (type_info::before): Combine different
6888         implementations into one.
6889         (type_info::operator==): Likewise. Use address equality for
6890         constant evaluation. Call __equal for targets that require the
6891         definition to be non-inline.
6892         * testsuite/18_support/type_info/constexpr.cc: New test.
6894 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6896         * src/c++11/cxx11-ios_failure.cc (io_error_category): Define
6897         class and virtual functions as 'final'.
6898         (io_category_instance): Use constinit union to make the object
6899         immortal.
6900         * src/c++11/future.cc (future_error_category): Define class and
6901         virtual functions as 'final'.
6902         (future_category_instance): Use constinit union.
6904 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6906         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip
6907         versioned namespace from the type name that is printed.
6909 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6911         * python/libstdcxx/v6/printers.py (StdRegexStatePrinter): New
6912         printer for std::regex NFA states.
6914 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6916         * testsuite/23_containers/forward_list/operations/1.cc: Fill in
6917         placeholders in comments.
6918         * testsuite/23_containers/forward_list/operations/2.cc:
6919         Likewise.
6920         * testsuite/23_containers/forward_list/operations/3.cc:
6921         Likewise.
6922         * testsuite/23_containers/forward_list/operations/4.cc:
6923         Likewise.
6924         * testsuite/23_containers/forward_list/operations/5.cc:
6925         Likewise.
6926         * testsuite/23_containers/forward_list/operations/6.cc:
6927         Likewise.
6928         * testsuite/23_containers/forward_list/operations/7.cc:
6929         Likewise.
6931 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6933         PR libstdc++/103848
6934         * include/bits/stl_deque.h (operator-): Do not use 0 as null
6935         pointer constant.
6937 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6939         * include/bits/alloc_traits.h (allocator_traits<allocator<void>>):
6940         Use std::_Construct for construct.
6942 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6944         PR libstdc++/103877
6945         * doc/xml/faq.xml: Add '-x c++' to preprocessor command.
6946         * doc/html/faq.html: Regenerate.
6948 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6950         * include/bits/regex.h (__regex_algo_impl): Change __policy and
6951         __match_mode template parameters to be function parameters.
6952         (regex_match, regex_search): Pass policy and match mode as
6953         function arguments.
6954         * include/bits/regex.tcc (__regex_algo_impl): Change template
6955         parameters to function parameters.
6956         * include/bits/regex_compiler.h (_RegexTranslatorBase): Use
6957         'if constexpr' for conditions using template parameters.
6958         (_RegexTranslator): Likewise.
6959         * include/bits/regex_executor.tcc (_Executor::_M_handle_accept):
6960         Likewise.
6961         * testsuite/util/testsuite_regex.h (regex_match_debug)
6962         (regex_search_debug): Move template arguments to function
6963         arguments.
6965 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6967         * testsuite/util/testsuite_regex.h (regex_match_debug): Compare
6968         results even if the match failed.
6970 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
6972         * include/bits/regex_compiler.tcc: Adjust all calls to
6973         __throw_regex_error.
6974         * include/bits/regex_error.h (__throw_regex_error): Add noreturn
6975         attribute.
6976         * include/bits/regex_scanner.tcc: Likewise.
6977         * src/c++11/regex.cc (desc): New helper function.
6978         (regex_error::regex_error(error_type)): Use desc to get a string
6979         corresponding to the error code.
6982 Copyright (C) 2022 Free Software Foundation, Inc.
6984 Copying and distribution of this file, with or without modification,
6985 are permitted in any medium without royalty provided the copyright
6986 notice and this notice are preserved.