c++: improve failed constexpr assume diagnostic
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobb668b930f7445e088d587607fa5c728b937b19ce
1 2022-10-21  Arsen Arsenović  <arsen@aarsen.me>
3         * acinclude.m4: Default hosted to off if building without
4         headers and without newlib.
5         * configure: Regenerate.
7 2022-10-21  Jonathan Wakely  <jwakely@redhat.com>
9         * include/bits/mofunc_impl.h (move_only_function::__param_t):
10         Use __is_scalar instead of is_trivially_copyable.
11         * testsuite/20_util/move_only_function/call.cc: Check parameters
12         involving incomplete types.
14 2022-10-20  Patrick Palka  <ppalka@redhat.com>
16         * include/std/charconv (__detail::__from_chars_alnum_to_val_table):
17         Redefine as a class template containing the members type, value and
18         _S_make_table.  Don't use a local class as the table type.
19         (__detail::__table): Remove.
20         (__detail::__from_chars_alnum_to_val): Adjust after the above.
22 2022-10-19  Patrick Palka  <ppalka@redhat.com>
24         * include/std/ranges (views::__detail::__is_repeat_view): Define
25         and later define a partial specialization.
26         (views::__detail::__take_of_repeat_view): Declare and later define.
27         (views::__detail::__drop_of_repeat_view): Likewise.
28         (views::_Take::operator()): Return a repeat_view if the argument
29         is a repeat_view as per P2474R2.
30         (views::_Drop::operator()): Likewise.
31         (repeat_view): Befriend __take/drop_of_repeat_view.
32         * testsuite/std/ranges/repeat/1.cc (test04): New test.
34 2022-10-19  Patrick Palka  <ppalka@redhat.com>
36         PR libstdc++/107313
37         * include/std/ranges (stride_view::_Iterator::operator-): Fix typo.
38         * testsuite/std/ranges/adaptors/stride/1.cc (test03): New test.
40 2022-10-19  LIU Hao  <lh_mouse@126.com>
42         * src/c++11/thread.cc (get_nprocs): Add new implementation
43         for native Windows targets
45 2022-10-19  LIU Hao  <lh_mouse@126.com>
47         * libsupc++/atexit_thread.cc (__cxa_thread_atexit): Use
48         implementation from mcfgthread if available
49         * libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_release,
50         __cxa_guard_abort): Use implementations from mcfgthread if
51         available
52         * configure: Regenerate
54 2022-10-19  Jakub Jelinek  <jakub@redhat.com>
56         PR c++/106652
57         * include/std/limits: Fix a typo, 202202L -> 202002L.
58         (numeric_limits::<_Float16>::radix, numeric_limits::<_Float32>::radix,
59         numeric_limits::<_Float64>::radix, numeric_limits::<_Float128>::radix,
60         numeric_limits::<__gnu_cxx::__bfloat16_t>::radix): Use __FLT_RADIX__
61         macro instead of type specific macros.
62         * include/c_global/cmath (nextafter(_Float16, _Float16)): New
63         overload.
64         (nextafter(__gnu_cxx::__bfloat16_t, __gnu_cxx::__bfloat16_t)):
65         Likewise.
66         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc
67         (test_functions): Uncomment nextafter test.  Fix up sph_neumann call.
68         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc: New test.
70 2022-10-18  Patrick Palka  <ppalka@redhat.com>
72         * include/std/ranges (stride_view): Define.
73         (stride_view::_Iterator): Define.
74         (views::__detail::__can_stride_view): Define.
75         (views::_Stride, views::stride): Define.
76         * testsuite/std/ranges/adaptors/stride/1.cc: New test.
78 2022-10-18  Jakub Jelinek  <jakub@redhat.com>
80         PR c++/106652
81         * include/std/stdfloat: New file.
82         * include/std/numbers (__glibcxx_numbers): Define and use it
83         for __float128 explicit instantiations as well as
84         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t.
85         * include/std/atomic (atomic<_Float16>, atomic<_Float32>,
86         atomic<_Float64>, atomic<_Float128>, atomic<__gnu_cxx::__bfloat16_t>):
87         New explicit instantiations.
88         * include/std/type_traits (__is_floating_point_helper<_Float16>,
89         __is_floating_point_helper<_Float32>,
90         __is_floating_point_helper<_Float64>,
91         __is_floating_point_helper<_Float128>,
92         __is_floating_point_helper<__gnu_cxx::__bfloat16_t>): Likewise.
93         * include/std/limits (__glibcxx_concat3_, __glibcxx_concat3,
94         __glibcxx_float_n): Define.
95         (numeric_limits<_Float16>, numeric_limits<_Float32>,
96         numeric_limits<_Float64>, numeric_limits<_Float128>,
97         numeric_limits<__gnu_cxx::__bfloat16_t>): New explicit instantiations.
98         * include/bits/std_abs.h (abs): New overloads for
99         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t.
100         * include/bits/c++config (_GLIBCXX_LDOUBLE_IS_IEEE_BINARY128): Define
101         if long double is IEEE quad.
102         (__gnu_cxx::__bfloat16_t): New using.
103         * include/c_global/cmath (acos, asin, atan, atan2, ceil, cos, cosh,
104         exp, fabs, floor, fmod, frexp, ldexp, log, log10, modf, pow, sin,
105         sinh, sqrt, tan, tanh, fpclassify, isfinite, isinf, isnan, isnormal,
106         signbit, isgreater, isgreaterequal, isless, islessequal,
107         islessgreater, isunordered, acosh, asinh, atanh, cbrt, copysign, erf,
108         erfc, exp2, expm1, fdim, fma, fmax, fmin, hypot, ilogb, lgamma,
109         llrint, llround, log1p, log2, logb, lrint, lround, nearbyint,
110         nextafter, remainder, rint, round, scalbln, scalbn, tgamma, trunc,
111         lerp): New overloads with _Float{16,32,64,128} or
112         __gnu_cxx::__bfloat16_t types.
113         * config/os/gnu-linux/os_defines.h (_GLIBCXX_HAVE_FLOAT128_MATH):
114         Prepare for definition if glibc 2.26 and later implements *f128 APIs
115         but comment out the actual definition for now.
116         * include/ext/type_traits.h (__promote<_Float16>, __promote<_Float32>,
117         __promote<_Float64>, __promote<_Float128>,
118         __promote<__gnu_cxx::__bfloat16_t>): New specializations.
119         * include/Makefile.am (std_headers): Add stdfloat.
120         * include/Makefile.in: Regenerated.
121         * include/precompiled/stdc++.h: Include stdfloat.
122         * testsuite/18_support/headers/stdfloat/types_std.cc: New test.
123         * testsuite/18_support/headers/limits/synopsis_cxx23.cc: New test.
124         * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++23.cc:
125         New test.
126         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc: New test.
127         * testsuite/26_numerics/numbers/4.cc: New test.
128         * testsuite/29_atomics/atomic_float/requirements_cxx23.cc: New test.
130 2022-10-17  Jonathan Wakely  <jwakely@redhat.com>
132         * include/std/charconv (__cpp_lib_constexpr_charconv): Define to
133         correct value.
134         * include/std/version (__cpp_lib_constexpr_charconv): Likewise.
135         * testsuite/20_util/to_chars/constexpr.cc: Check correct value.
136         * testsuite/20_util/to_chars/version.cc: Likewise.
138 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
140         * src/c++11/debug.cc (print_raw): Move inside #if block.
142 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
144         * include/bits/charconv.h (__to_chars_10_impl): Add constexpr
145         for C++23. Remove 'static' from array.
146         * include/std/charconv (__cpp_lib_constexpr_charconv): Define.
147         (__to_chars, __to_chars_16): Remove 'static' from array, add
148         constexpr.
149         (__to_chars_10, __to_chars_8, __to_chars_2, __to_chars_i)
150         (to_chars, __raise_and_add, __from_chars_pow2_base)
151         (__from_chars_alnum, from_chars): Add constexpr.
152         (__from_chars_alnum_to_val): Avoid local static during constant
153         evaluation. Add constexpr.
154         * include/std/version (__cpp_lib_constexpr_charconv): Define.
155         * testsuite/20_util/from_chars/constexpr.cc: New test.
156         * testsuite/20_util/to_chars/constexpr.cc: New test.
157         * testsuite/20_util/to_chars/version.cc: New test.
159 2022-10-15  Jonathan Wakely  <jwakely@redhat.com>
161         * include/bits/stl_map.h (map::insert(Pair&&)): Use
162         remove_const_t on argument to __is_pair.
163         * include/bits/stl_pair.h (__is_pair<const pair<T,U>>): Remove
164         partial specialization.
165         * include/bits/uses_allocator_args.h (_Std_pair): Use
166         remove_cv_t as per LWG 3677.
167         * testsuite/20_util/uses_allocator/lwg3677.cc: New test.
169 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
171         * libsupc++/eh_alloc.cc [USE_POOL]: New macro.
172         [!USE_POOL] (__gnu_cxx::__freeres, pool): Do not define.
173         [_GLIBCXX_EH_POOL_STATIC] (pool::arena): Do not use std::max.
174         (__cxxabiv1::__cxa_allocate_exception) [!USE_POOL]: Do not use
175         pool.
176         (__cxxabiv1::__cxa_free_exception) [!USE_POOL]: Likewise.
177         (__cxxabiv1::__cxa_allocate_dependent_exception) [!USE_POOL]:
178         Likewise.
179         (__cxxabiv1::__cxa_free_dependent_exception) [!USE_POOL]:
180         Likewise.
182 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
184         * src/c++11/debug.cc (print_raw): Simplify.
185         (print_word): Print indentation by calling fprintf directly.
186         (_Error_formatter::_M_error): Print unindented string by calling
187         fprintf directly.
189 2022-10-14  Jonathan Wakely  <jwakely@redhat.com>
191         * include/std/iostream: Use markdown in Doxygen comment.
193 2022-10-12  François Dumont  <fdumont@gcc.gnu.org>
195         * include/debug/string: Add using _Base::compare.
196         (__gnu_debug::basic_string<>::compare(const basic_string<>&)): Remove.
197         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&)):
198         Remove.
199         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&,
200         size_type, size_type)): Remove.
201         * testsuite/util/testsuite_string.h [_GLIBCXX_TEST_DEBUG_STRING]: Include <debug/string>.
202         * testsuite/21_strings/basic_string/operations/compare/char/1.cc: Include testsuite_string.h
203         and use __gnu_test::string.
204         * testsuite/21_strings/basic_string/operations/compare/char/13650.cc: Likewise.
205         * testsuite/21_strings/basic_string/operations/compare/char/2.cc: Likewise.
206         * testsuite/21_strings/basic_string/operations/rfind/char/1.cc: Likewise.
207         * testsuite/21_strings/basic_string/operations/rfind/char/2.cc: Likewise.
208         * testsuite/21_strings/basic_string/operations/rfind/char/3.cc: Likewise.
209         * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
210         Include testsuite_string.h
211         and use __gnu_test::wstring.
212         * testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc: Likewise.
213         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: Likewise.
215 2022-10-12  Patrick Palka  <ppalka@redhat.com>
217         * include/std/ranges (repeat_view): Define.
218         (repeat_view::_Iterator): Define.
219         (views::__detail::__can_repeat_view): Define.
220         (views::__detail::__can_bounded_repeat_view): Define.
221         (views::_Repeat, views::repeat): Define.
222         * testsuite/std/ranges/repeat/1.cc: New test.
224 2022-10-12  Martin Liska  <mliska@suse.cz>
226         * configure: Regenerate.
228 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
230         PR bootstrap/107221
231         * libsupc++/eh_alloc.cc (pool): Change preprocessor condition
232         for using __mutex from __GTHREADS to _GLIBCXX_HOSTED.
233         (pool::allocate): Remove namespace qualification to use
234         pool::__scoped_lock instead of __gnu_cxx::__scoped_lock.
236 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
238         PR libstdc++/68606
239         * Makefile.in: Regenerate.
240         * acinclude.m4 (GLIBCXX_EMERGENCY_EH_ALLOC): New macro.
241         * configure: Regenerate.
242         * configure.ac: Use GLIBCXX_EMERGENCY_EH_ALLOC.
243         * crossconfig.m4: Check for secure_getenv.
244         * doc/Makefile.in: Regenerate.
245         * doc/xml/manual/configure.xml: Document new configure options.
246         * doc/xml/manual/evolution.xml: Document addition of tunables.
247         * doc/xml/manual/using_exceptions.xml: Document emergency
248         buffer and tunables.
249         * doc/html/*: Regenerate.
250         * include/Makefile.in: Regenerate.
251         * libsupc++/Makefile.am: Use EH_POOL_FLAGS.
252         * libsupc++/Makefile.in: Regenerate.
253         * libsupc++/eh_alloc.cc (EMERGENCY_OBJ_SIZE): Define in units
254         of sizeof(void*) not including the ABI's exception header.
255         (EMERGENCY_OBJ_COUNT): Define as target-independent calculation
256         based on word size.
257         (MAX_OBJ_COUNT): Define macro for upper limit on pool size.
258         (pool) [_GLIBCXX_EH_POOL_STATIC]: Use fixed-size buffer.
259         (pool::buffer_size_in_bytes): New static member function.
260         (pool::pool): Parse GLIBCXX_TUNABLES environment variable to set
261         pool size at runtime.
262         (pool::in_pool): Use std::less<void*> for total order.
263         (__freeres) [_GLIBCXX_EH_POOL_STATIC]: Do nothing.
264         (__cxa_free_exception, __cxa_free_dependent_exception): Add
265         [[unlikely]] attributes.
266         * po/Makefile.in: Regenerate.
267         * python/Makefile.in: Regenerate.
268         * src/Makefile.in: Regenerate.
269         * src/c++11/Makefile.in: Regenerate.
270         * src/c++17/Makefile.in: Regenerate.
271         * src/c++20/Makefile.in: Regenerate.
272         * src/c++98/Makefile.in: Regenerate.
273         * src/filesystem/Makefile.in: Regenerate.
274         * src/libbacktrace/Makefile.in: Regenerate.
275         * testsuite/Makefile.in: Regenerate.
277 2022-10-11  Olivier Hainque  <hainque@adacore.com>
278             Olivier Hainque  <hainque@adacore.com>
280         * configure: Regenerate.
282 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
284         * include/std/type_traits (make_signed, make_unsigned): Remove
285         constraints on primary template.
286         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
287         Undo changes to expected error in C++20 mode.
288         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
289         Likewise.
290         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
291         Likewise.
292         * testsuite/20_util/make_signed/requirements/uninstantiated.cc:
293         New test.
294         * testsuite/20_util/make_unsigned/requirements/uninstantiated.cc:
295         New test.
297 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
299         * include/std/type_traits (make_signed, make_unsigned): Add
300         specializations for cv bool. Add requires-clause for C++20 to
301         improve diagnostics for non-integral, non-enum cases.
302         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
303         Check cv bool.
304         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
305         Likewise.
306         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
307         Adjust expected errors for C++20 and later.
308         * testsuite/lib/prune.exp: Prune "in requirements  [with ...]"
309         lines from diagnostics.
311 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
313         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Add libstdcxx-hosted
314         enable arg as an alias for hosted-libstdcxx enable arg.
315         * configure: Regenerate.
317 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
319         * include/bits/std_function.h: Include <new> but do not include
320         <bits/stl_function.h>.
321         * include/std/functional: Do not include <new>.
323 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
325         * doc/xml/manual/intro.xml: Add role="bold" attribute to
326         emphasis elements for issue titles.
327         * doc/html/manual/bugs.html: Regenerate.
329 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
331         * include/Makefile.in: Regenerate.
333 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
335         * include/bits/invoke.h (__invoke_r): Check
336         __has_builtin(__reference_converts_from_temporary) before using
337         built-in.
339 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
341         * testsuite/std/ranges/adaptors/join_with/1.cc: Remove unused
342         <sstream header.
343         (test04): Remove constexpr for old std::string ABI and test at
344         runtime.
346 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
348         * include/std/type_traits (remove_cv): Use __remove_cv built-in.
349         (remove_reference): Use __remove_reference built-in.
350         (remove_cvref): Use __remove_cvref built-in. Remove inheritance
351         for fallback implementation.
353 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
355         * include/bits/random.h (__is_seed_seq): Replace with ...
356         (_If_seed_seq_for): ... this.
357         * include/ext/random: Adjust to use _If_seed_seq_for.
359 2022-10-04  Patrick Palka  <ppalka@redhat.com>
361         * include/std/ranges (join_with_view::_Iterator::operator*):
362         Replace use of std::visit with manual visitation.
363         (join_with_view::_Iterator::operator++): Likewise.
364         (join_with_view::_Iterator::operator--): Likewise.
365         (join_with_view::_Iterator::iter_move): Likewise.
366         (join_with_view::_Iterator::iter_swap): Likewise.
368 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
370         * testsuite/25_algorithms/stable_sort/mem_check.cc: Do nto run
371         for freestanding.
373 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
375         PR libstdc++/107139
376         * include/std/coroutine: Remove all _GLIBCXXHOSTED preprocessor
377         conditionals.
379 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
381         PR libstdc++/107134
382         * include/c_global/cstdint [!_GLIBCXX_HOSTED]: Include
383         <stdint-gcc.h> directly.
385 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
387         PR libstdc++/107135
388         * include/bits/functexcept.h [!_GLIBCXX_HOSTED]
389         (__throw_invalid_argument, __throw_out_of_range)
390         (__throw_out_of_range_fmt, __throw_runtime_error)
391         (__throw_overflow_error): Define inline.
392         * include/std/bitset (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]:
393         Replace __builtin_abort with __throw_invalid_argument.
395 2022-10-04  Patrick Palka  <ppalka@redhat.com>
397         * include/std/ranges: Include <variant> for C++23.
398         (__detail::__compatible_joinable_ranges): Define.
399         (__detail::__bidirectional_common): Define.
400         (join_with_view): Define.
401         (join_with_view::_Iterator): Define.
402         (join_with_view::_Sentinel): Define.
403         (views::__detail::__can_join_with_view): Define.
404         (views::_JoinWith, views::join_with): Define.
405         * testsuite/std/ranges/adaptors/join_with/1.cc: New test.
407 2022-10-04  Arsen Arsenović  <arsen@aarsen.me>
409         * include/std/iostream: Use ///< for inline documentation.
410         * include/std/limits: Likewise.
411         * include/experimental/internet: Likewise.
413 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
415         * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
416         * doc/html/manual/status.html: Regenerate.
418 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
420         PR libstdc++/103626
421         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc:
422         Require ET hosted.
423         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
424         * testsuite/18_support/new_nothrow.cc: Likewise.
425         * testsuite/20_util/allocator/105975.cc: Likewise.
426         * testsuite/20_util/allocator/14176.cc: Likewise.
427         * testsuite/20_util/allocator/64135.cc: Likewise.
428         * testsuite/20_util/allocator/89510.cc: Likewise.
429         * testsuite/20_util/allocator/lwg3190.cc: Likewise.
430         * testsuite/20_util/allocator/overaligned.cc: Likewise.
431         * testsuite/20_util/allocator/rebind_c++20.cc: Likewise.
432         * testsuite/20_util/allocator/requirements/constexpr.cc:
433         Likewise.
434         * testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc:
435         Likewise.
436         * testsuite/20_util/allocator/requirements/typedefs.cc:
437         Likewise.
438         * testsuite/20_util/allocator/requirements/typedefs_c++20.cc:
439         Likewise.
440         * testsuite/20_util/allocator/void.cc: Likewise.
441         * testsuite/20_util/allocator_traits/header-2.cc: Likewise.
442         * testsuite/20_util/allocator_traits/header.cc: Likewise.
443         * testsuite/20_util/allocator_traits/members/92878_92947.cc:
444         Likewise.
445         * testsuite/20_util/allocator_traits/members/pointers.cc:
446         Likewise.
447         * testsuite/20_util/allocator_traits/requirements/typedefs.cc:
448         Likewise.
449         * testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
450         Likewise.
451         * testsuite/20_util/bind/42593.cc: Likewise.
452         * testsuite/20_util/bitset/access/dr396.cc: Likewise.
453         * testsuite/20_util/bitset/access/to_string.cc: Likewise.
454         * testsuite/20_util/bitset/cons/16020.cc: Likewise.
455         * testsuite/20_util/bitset/cons/dr1325-2.cc: Likewise.
456         * testsuite/20_util/bitset/cons/dr396.cc: Likewise.
457         * testsuite/20_util/bitset/debug/invalidation/1.cc: Likewise.
458         * testsuite/20_util/bitset/ext/15361.cc: Likewise.
459         * testsuite/20_util/bitset/operations/13838.cc: Likewise.
460         * testsuite/20_util/bitset/operations/96303.cc: Likewise.
461         * testsuite/20_util/bitset/version.cc: Likewise.
462         * testsuite/20_util/enable_shared_from_this/56383.cc: Likewise.
463         * testsuite/20_util/enable_shared_from_this/89303.cc: Likewise.
464         * testsuite/20_util/enable_shared_from_this/members/assign.cc:
465         Likewise.
466         * testsuite/20_util/enable_shared_from_this/members/const.cc:
467         Likewise.
468         * testsuite/20_util/enable_shared_from_this/members/reinit.cc:
469         Likewise.
470         * testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc:
471         Likewise.
472         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
473         Likewise.
474         * testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc:
475         Likewise.
476         * testsuite/20_util/forward/1.cc: Likewise.
477         * testsuite/20_util/forward/1_neg.cc: Likewise.
478         * testsuite/20_util/function/1.cc: Likewise.
479         * testsuite/20_util/function/10.cc: Likewise.
480         * testsuite/20_util/function/2.cc: Likewise.
481         * testsuite/20_util/function/3.cc: Likewise.
482         * testsuite/20_util/function/4.cc: Likewise.
483         * testsuite/20_util/function/43397.cc: Likewise.
484         * testsuite/20_util/function/48541.cc: Likewise.
485         * testsuite/20_util/function/5.cc: Likewise.
486         * testsuite/20_util/function/58569.cc: Likewise.
487         * testsuite/20_util/function/6.cc: Likewise.
488         * testsuite/20_util/function/60594.cc: Likewise.
489         * testsuite/20_util/function/65760.cc: Likewise.
490         * testsuite/20_util/function/69222.cc: Likewise.
491         * testsuite/20_util/function/7.cc: Likewise.
492         * testsuite/20_util/function/77322.cc: Likewise.
493         * testsuite/20_util/function/8.cc: Likewise.
494         * testsuite/20_util/function/9.cc: Likewise.
495         * testsuite/20_util/function/91456.cc: Likewise.
496         * testsuite/20_util/function/assign/move.cc: Likewise.
497         * testsuite/20_util/function/assign/move_target.cc: Likewise.
498         * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
499         * testsuite/20_util/function/cons/55320.cc: Likewise.
500         * testsuite/20_util/function/cons/57465.cc: Likewise.
501         * testsuite/20_util/function/cons/72820.cc: Likewise.
502         * testsuite/20_util/function/cons/addressof.cc: Likewise.
503         * testsuite/20_util/function/cons/callable.cc: Likewise.
504         * testsuite/20_util/function/cons/deduction.cc: Likewise.
505         * testsuite/20_util/function/cons/lwg2774.cc: Likewise.
506         * testsuite/20_util/function/cons/move.cc: Likewise.
507         * testsuite/20_util/function/cons/move_target.cc: Likewise.
508         * testsuite/20_util/function/cons/noexcept.cc: Likewise.
509         * testsuite/20_util/function/cons/non_copyconstructible.cc:
510         Likewise.
511         * testsuite/20_util/function/cons/refqual.cc: Likewise.
512         * testsuite/20_util/function/cons/70692.cc: Likewise.
513         * testsuite/20_util/function/cons/deduction_c++23.cc: Likewise.
514         * testsuite/20_util/function/invoke/forwarding.cc: Likewise.
515         * testsuite/20_util/function/invoke/move_only.cc: Likewise.
516         * testsuite/20_util/function/null_pointer_comparisons.cc:
517         Likewise.
518         * testsuite/20_util/function/requirements/explicit_instantiation.cc:
519         Likewise.
520         * testsuite/20_util/function/target_no_rtti.cc: Likewise.
521         * testsuite/20_util/function_objects/83607.cc: Likewise.
522         * testsuite/20_util/function_objects/mem_fn/adl.cc: Likewise.
523         * testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise.
524         * testsuite/20_util/headers/functional/types_std_c++0x.cc:
525         Likewise.
526         * testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise.
527         * testsuite/20_util/is_function/35637.cc: Likewise.
528         * testsuite/20_util/move/1.cc: Likewise.
529         * testsuite/20_util/move_only_function/call.cc: Likewise.
530         * testsuite/20_util/move_only_function/cons.cc: Likewise.
531         * testsuite/20_util/move_only_function/move.cc: Likewise.
532         * testsuite/20_util/move_only_function/version.cc: Likewise.
533         * testsuite/20_util/owner_less/cmp.cc: Likewise.
534         * testsuite/20_util/owner_less/noexcept.cc: Likewise.
535         * testsuite/20_util/owner_less/void.cc: Likewise.
536         * testsuite/20_util/pointer_safety/1.cc: Likewise.
537         * testsuite/20_util/scoped_allocator/65279.cc: Likewise.
538         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
539         * testsuite/20_util/scoped_allocator/construct_pair.cc:
540         Likewise.
541         * testsuite/20_util/scoped_allocator/dr2586.cc: Likewise.
542         * testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc:
543         Likewise.
544         * testsuite/20_util/shared_ptr/assign/assign.cc: Likewise.
545         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
546         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
547         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
548         Likewise.
549         * testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
550         * testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
551         * testsuite/20_util/shared_ptr/assign/sfinae.cc: Likewise.
552         * testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
553         * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc:
554         Likewise.
555         * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
556         Likewise.
557         * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc:
558         Likewise.
559         * testsuite/20_util/shared_ptr/atomic/1.cc: Likewise.
560         * testsuite/20_util/shared_ptr/atomic/2.cc: Likewise.
561         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
562         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
563         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
564         * testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise.
565         * testsuite/20_util/shared_ptr/comparison/86537.cc: Likewise.
566         * testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
567         * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc:
568         Likewise.
569         * testsuite/20_util/shared_ptr/comparison/dr1401.cc: Likewise.
570         * testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
571         * testsuite/20_util/shared_ptr/cons/39405.cc: Likewise.
572         * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
573         * testsuite/20_util/shared_ptr/cons/46910.cc: Likewise.
574         * testsuite/20_util/shared_ptr/cons/51365.cc: Likewise.
575         * testsuite/20_util/shared_ptr/cons/52924.cc: Likewise.
576         * testsuite/20_util/shared_ptr/cons/55123.cc: Likewise.
577         * testsuite/20_util/shared_ptr/cons/58659.cc: Likewise.
578         * testsuite/20_util/shared_ptr/cons/58839.cc: Likewise.
579         * testsuite/20_util/shared_ptr/cons/61036.cc: Likewise.
580         * testsuite/20_util/shared_ptr/cons/79467.cc: Likewise.
581         * testsuite/20_util/shared_ptr/cons/80229.cc: Likewise.
582         * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Likewise.
583         * testsuite/20_util/shared_ptr/cons/alias.cc: Likewise.
584         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
585         * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
586         * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
587         * testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
588         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
589         * testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
590         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: Likewise.
591         * testsuite/20_util/shared_ptr/cons/lwg3548.cc: Likewise.
592         * testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
593         * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
594         Likewise.
595         * testsuite/20_util/shared_ptr/cons/nullptr.cc: Likewise.
596         * testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
597         * testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
598         * testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc:
599         Likewise.
600         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc:
601         Likewise.
602         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc:
603         Likewise.
604         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
605         Likewise.
606         * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
607         * testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
608         * testsuite/20_util/shared_ptr/creation/36949.cc: Likewise.
609         * testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc:
610         Likewise.
611         * testsuite/20_util/shared_ptr/creation/58594.cc: Likewise.
612         * testsuite/20_util/shared_ptr/creation/87278.cc: Likewise.
613         * testsuite/20_util/shared_ptr/creation/92878_92947.cc:
614         Likewise.
615         * testsuite/20_util/shared_ptr/creation/99006.cc: Likewise.
616         * testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
617         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
618         * testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
619         * testsuite/20_util/shared_ptr/creation/no_rtti.cc: Likewise.
620         * testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise.
621         * testsuite/20_util/shared_ptr/creation/private.cc: Likewise.
622         * testsuite/20_util/shared_ptr/creation/single_allocation.cc:
623         Likewise.
624         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
625         Likewise.
626         * testsuite/20_util/shared_ptr/creation/version.cc: Likewise.
627         * testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
628         * testsuite/20_util/shared_ptr/hash/1.cc: Likewise.
629         * testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
630         * testsuite/20_util/shared_ptr/misc/42019.cc: Likewise.
631         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
632         * testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
633         * testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
634         * testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
635         * testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc:
636         Likewise.
637         * testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
638         * testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
639         * testsuite/20_util/shared_ptr/observers/array.cc: Likewise.
640         * testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
641         * testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
642         * testsuite/20_util/shared_ptr/observers/owner_before.cc:
643         Likewise.
644         * testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
645         * testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
646         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc:
647         Likewise.
648         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc:
649         Likewise.
650         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
651         Likewise.
652         * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
653         Likewise.
654         * testsuite/20_util/temporary_buffer.cc: Likewise.
655         * testsuite/20_util/tuple/48476.cc: Likewise.
656         * testsuite/20_util/tuple/cons/90700.cc: Likewise.
657         * testsuite/20_util/tuple/cons/96803.cc: Likewise.
658         * testsuite/20_util/tuple/cons/allocator_with_any.cc: Likewise.
659         * testsuite/20_util/tuple/cons/allocators.cc: Likewise.
660         * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc:
661         Likewise.
662         * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
663         * testsuite/20_util/tuple/p2321r2.cc: Likewise.
664         * testsuite/20_util/unique_ptr/creation/92878_92947.cc:
665         Likewise.
666         * testsuite/20_util/unique_ptr/creation/array.cc: Likewise.
667         * testsuite/20_util/unique_ptr/creation/array_neg.cc: Likewise.
668         * testsuite/20_util/unique_ptr/creation/constexpr.cc: Likewise.
669         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc:
670         Likewise.
671         * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc:
672         Likewise.
673         * testsuite/20_util/unique_ptr/creation/single.cc: Likewise.
674         * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
675         * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
676         * testsuite/20_util/uses_allocator/uninitialized_construct.cc:
677         Likewise.
678         * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
679         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
680         * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
681         Likewise.
682         * testsuite/20_util/weak_ptr/lock/1.cc: Likewise.
683         * testsuite/20_util/weak_ptr/observers/owner_before.cc:
684         Likewise.
685         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
686         Likewise.
687         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
688         Likewise.
689         * testsuite/21_strings/basic_string/version.cc: Likewise.
690         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
691         Likewise.
692         * testsuite/21_strings/c_strings/char/69626.cc: Likewise.
693         * testsuite/21_strings/char_traits/requirements/version.cc:
694         Likewise.
695         * testsuite/23_containers/vector/requirements/version.cc:
696         Likewise.
697         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
698         Likewise.
699         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
700         Likewise.
701         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
702         Likewise.
703         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
704         Likewise.
705         * testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise.
706         * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
707         Likewise.
708         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
709         Likewise.
710         * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
711         Likewise.
712         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
713         Likewise.
714         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
715         Likewise.
716         * testsuite/25_algorithms/constexpr_macro.cc: Likewise.
717         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
718         * testsuite/25_algorithms/headers/cstdlib/functions_std.cc:
719         Likewise.
720         * testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
721         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
722         Likewise.
723         * testsuite/25_algorithms/make_heap/movable.cc: Likewise.
724         * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
725         * testsuite/25_algorithms/random_shuffle/1.cc: Likewise.
726         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
727         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
728         Likewise.
729         * testsuite/25_algorithms/sort/35588.cc: Likewise.
730         * testsuite/25_algorithms/stable_partition/1.cc: Likewise.
731         * testsuite/25_algorithms/stable_partition/constrained.cc:
732         Likewise.
733         * testsuite/25_algorithms/stable_partition/mem_check.cc:
734         Likewise.
735         * testsuite/25_algorithms/stable_partition/moveable.cc:
736         Likewise.
737         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
738         Likewise.
739         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
740         Likewise.
741         * testsuite/25_algorithms/stable_sort/1.cc: Likewise.
742         * testsuite/26_numerics/complex/2.cc: Likewise.
743         * testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise.
744         * testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise.
745         * testsuite/26_numerics/headers/cstdlib/60401.cc: Likewise.
746         * testsuite/26_numerics/headers/cstdlib/dr2192.cc: Likewise.
747         * testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: Likewise.
748         * testsuite/26_numerics/headers/cstdlib/dr2735.cc: Likewise.
749         * testsuite/26_numerics/headers/cstdlib/functions_std.cc:
750         Likewise.
751         * testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise.
752         * testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise.
753         * testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc:
754         Likewise.
755         * testsuite/26_numerics/lerp/version.cc: Likewise.
756         * testsuite/26_numerics/midpoint/version.cc: Likewise.
757         * testsuite/27_io/basic_syncbuf/2.cc: Likewise.
758         * testsuite/27_io/basic_syncstream/2.cc: Likewise.
759         * testsuite/27_io/fpos/14320-1.cc: Likewise.
760         * testsuite/27_io/fpos/14320-2.cc: Likewise.
761         * testsuite/27_io/fpos/14320-3.cc: Likewise.
762         * testsuite/27_io/fpos/14320-4.cc: Likewise.
763         * testsuite/27_io/spanstream/version.cc: Likewise.
764         * testsuite/29_atomics/atomic/lwg3220.cc: Likewise.
765         * testsuite/29_atomics/atomic/operators/51811.cc: Likewise.
766         * testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise.
767         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Likewise.
768         * testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
769         * testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise.
770         * testsuite/30_threads/barrier/2.cc: Likewise.
771         * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
772         Likewise.
773         * testsuite/30_threads/jthread/version.cc: Likewise.
774         * testsuite/30_threads/latch/2.cc: Likewise.
775         * testsuite/30_threads/semaphore/2.cc: Likewise.
776         * testsuite/30_threads/stop_token/2.cc: Likewise.
777         * testsuite/abi/pr42230.cc: Likewise.
778         * testsuite/ext/shared_ptr/1.cc: Likewise.
779         * testsuite/libstdc++-xmethods/shared_ptr.cc: Likewise.
780         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
781         * testsuite/std/ranges/adaptors/p1739.cc: Likewise.
782         * testsuite/std/ranges/iota/lwg3292_neg.cc: Likewise.
783         * testsuite/std/ranges/p2325.cc: Likewise.
785 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
787         * include/std/bitset (bitset(const C*, size_type n, C, C))
788         [!_GLIBCXX_HOSTED]: Remove std::basic_string dependency.
789         (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]: Abort instead of
790         throwing.
792 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
794         PR libstdc++/103626
795         * include/std/bitset [!_GLIBCXX_HOSTED]: Re-enable std::hash.
796         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Require ET
797         hosted.
798         * testsuite/20_util/bitset/ext/constexpr.cc: Likewise.
800 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
802         PR libstdc++/103626
803         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
804         Also require hosted.
805         (check_effective_target_hosted): New proc.
807 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
808             Jonathan Wakely  <jwakely@redhat.com>
810         PR libstdc++/103626
811         * testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]:
812         Do not include C headers that aren't valid for freestanding.
813         * testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]:
814         Do not test tag types that aren't defined for freestanding.
815         * testsuite/18_support/headers/cstdlib/functions_std.cc: Do not
816         check for std::getenv and std::system for freestanding.
817         * testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]:
818         Do not test hosted parts of the standard library.
819         * testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]:
820         Likewise.
821         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]:
822         Likewise.
823         * testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]:
824         Likewise.
825         * testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise.
826         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]:
827         Likewise.
828         * testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]:
829         Likewise.
830         * testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise.
831         * testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise.
832         * testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise.
834 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
836         PR libstdc++/106953
837         * include/Makefile.am [!_GLIBCXX_HOSTED]: Remove
838         install-freestanding-headers, unifying it with the usual
839         install-headers
840         * include/Makefile.in: Regenerate.
842 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
843             Jonathan Wakely  <jwakely@redhat.com>
845         PR libstdc++/103626
846         * include/Makefile.am: Add new header.
847         * include/Makefile.in: Regenerate.
848         * include/bits/requires_hosted.h: New header.
849         * include/experimental/algorithm: Include
850         <bits/requires_hosted.h>.
851         * include/experimental/any: Likewise.
852         * include/experimental/array: Likewise.
853         * include/experimental/buffer: Likewise.
854         * include/experimental/chrono: Likewise.
855         * include/experimental/deque: Likewise.
856         * include/experimental/executor: Likewise.
857         * include/experimental/filesystem: Likewise.
858         * include/experimental/forward_list: Likewise.
859         * include/experimental/functional: Likewise.
860         * include/experimental/internet: Likewise.
861         * include/experimental/io_context: Likewise.
862         * include/experimental/iterator: Likewise.
863         * include/experimental/list: Likewise.
864         * include/experimental/map: Likewise.
865         * include/experimental/memory: Likewise.
866         * include/experimental/memory_resource: Likewise.
867         * include/experimental/net: Likewise.
868         * include/experimental/netfwd: Likewise.
869         * include/experimental/numeric: Likewise.
870         * include/experimental/optional: Likewise.
871         * include/experimental/propagate_const: Likewise.
872         * include/experimental/random: Likewise.
873         * include/experimental/ratio: Likewise.
874         * include/experimental/regex: Likewise.
875         * include/experimental/scope: Likewise.
876         * include/experimental/set: Likewise.
877         * include/experimental/simd: Likewise.
878         * include/experimental/socket: Likewise.
879         * include/experimental/source_location: Likewise.
880         * include/experimental/string: Likewise.
881         * include/experimental/string_view: Likewise.
882         * include/experimental/system_error: Likewise.
883         * include/experimental/timer: Likewise.
884         * include/experimental/tuple: Likewise.
885         * include/experimental/unordered_map: Likewise.
886         * include/experimental/unordered_set: Likewise.
887         * include/experimental/utility: Likewise.
888         * include/experimental/vector: Likewise.
889         * include/std/barrier: Likewise.
890         * include/std/chrono: Likewise.
891         * include/std/condition_variable: Likewise.
892         * include/std/deque: Likewise.
893         * include/std/execution: Likewise.
894         * include/std/filesystem: Likewise.
895         * include/std/forward_list: Likewise.
896         * include/std/fstream: Likewise.
897         * include/std/future: Likewise.
898         * include/std/iomanip: Likewise.
899         * include/std/ios: Likewise.
900         * include/std/iosfwd: Likewise.
901         * include/std/iostream: Likewise.
902         * include/std/istream: Likewise.
903         * include/std/latch: Likewise.
904         * include/std/list: Likewise.
905         * include/std/locale: Likewise.
906         * include/std/map: Likewise.
907         * include/std/memory_resource: Likewise.
908         * include/std/mutex: Likewise.
909         * include/std/ostream: Likewise.
910         * include/std/queue: Likewise.
911         * include/std/random: Likewise.
912         * include/std/regex: Likewise.
913         * include/std/semaphore: Likewise.
914         * include/std/set: Likewise.
915         * include/std/shared_mutex: Likewise.
916         * include/std/spanstream: Likewise.
917         * include/std/sstream: Likewise.
918         * include/std/stack: Likewise.
919         * include/std/stacktrace: Likewise.
920         * include/std/stop_token: Likewise.
921         * include/std/streambuf: Likewise.
922         * include/std/string: Likewise.
923         * include/std/syncstream: Likewise.
924         * include/std/system_error: Likewise.
925         * include/std/thread: Likewise.
926         * include/std/unordered_map: Likewise.
927         * include/std/unordered_set: Likewise.
928         * include/std/valarray: Likewise.
929         * include/std/vector: Likewise.
930         * include/tr1/array: Likewise.
931         * include/tr1/ccomplex: Likewise.
932         * include/tr1/cctype: Likewise.
933         * include/tr1/cfenv: Likewise.
934         * include/tr1/cfloat: Likewise.
935         * include/tr1/cinttypes: Likewise.
936         * include/tr1/climits: Likewise.
937         * include/tr1/cmath: Likewise.
938         * include/tr1/complex: Likewise.
939         * include/tr1/complex.h: Likewise.
940         * include/tr1/cstdarg: Likewise.
941         * include/tr1/cstdbool: Likewise.
942         * include/tr1/cstdint: Likewise.
943         * include/tr1/cstdio: Likewise.
944         * include/tr1/cstdlib: Likewise.
945         * include/tr1/ctgmath: Likewise.
946         * include/tr1/ctime: Likewise.
947         * include/tr1/ctype.h: Likewise.
948         * include/tr1/cwchar: Likewise.
949         * include/tr1/cwctype: Likewise.
950         * include/tr1/fenv.h: Likewise.
951         * include/tr1/float.h: Likewise.
952         * include/tr1/functional: Likewise.
953         * include/tr1/inttypes.h: Likewise.
954         * include/tr1/limits.h: Likewise.
955         * include/tr1/math.h: Likewise.
956         * include/tr1/memory: Likewise.
957         * include/tr1/random: Likewise.
958         * include/tr1/regex: Likewise.
959         * include/tr1/stdarg.h: Likewise.
960         * include/tr1/stdbool.h: Likewise.
961         * include/tr1/stdint.h: Likewise.
962         * include/tr1/stdio.h: Likewise.
963         * include/tr1/stdlib.h: Likewise.
964         * include/tr1/tgmath.h: Likewise.
965         * include/tr1/tuple: Likewise.
966         * include/tr1/type_traits: Likewise.
967         * include/tr1/unordered_map: Likewise.
968         * include/tr1/unordered_set: Likewise.
969         * include/tr1/utility: Likewise.
970         * include/tr1/wchar.h: Likewise.
971         * include/tr1/wctype.h: Likewise.
972         * include/c_global/cmath: Likewise.
973         * include/ext/algorithm: Include <bits/requires_hosted.h>.
974         * include/ext/bitmap_allocator.h: Likewise.
975         * include/ext/cmath: Likewise.
976         * include/ext/codecvt_specializations.h: Likewise.
977         * include/ext/debug_allocator.h: Likewise.
978         * include/ext/enc_filebuf.h: Likewise.
979         * include/ext/extptr_allocator.h: Likewise.
980         * include/ext/functional: Likewise.
981         * include/ext/malloc_allocator.h: Likewise.
982         * include/ext/memory: Likewise.
983         * include/ext/mt_allocator.h: Likewise.
984         * include/ext/new_allocator.h: Likewise.
985         * include/ext/numeric: Likewise.
986         * include/ext/pod_char_traits.h: Likewise.
987         * include/ext/pool_allocator.h: Likewise.
988         * include/ext/random: Likewise.
989         * include/ext/random.tcc: Likewise.
990         * include/ext/rb_tree: Likewise.
991         * include/ext/rc_string_base.h: Likewise.
992         * include/ext/rope: Likewise.
993         * include/ext/ropeimpl.h: Likewise.
994         * include/ext/slist: Likewise.
995         * include/ext/sso_string_base.h: Likewise.
996         * include/ext/stdio_filebuf.h: Likewise.
997         * include/ext/stdio_sync_filebuf.h: Likewise.
998         * include/ext/string_conversions.h: Likewise.
999         * include/ext/throw_allocator.h: Likewise.
1000         * include/ext/vstring.h: Likewise.
1001         * include/ext/vstring.tcc: Likewise.
1002         * include/ext/vstring_fwd.h: Likewise.
1003         * include/ext/vstring_util.h: Likewise.
1004         * include/std/charconv: Likewise.
1005         (__cpp_lib_to_chars): Do not define for freestanding.
1006         * include/std/version: Adjust which macros get defined in
1007         freestanding.
1008         * include/ext/pointer.h [!_GLIBCXX_HOSTED]: Omit iostream
1009         functionality from freestanding.
1010         * include/std/algorithm [!_GLIBCXX_HOSTED]: Omit PSTL algos.
1011         * include/std/memory [!_GLIBCXX_HOSTED]: Omit
1012         <bits/stl_tempbuf.h> in freestanding
1013         * include/bits/algorithmfwd.h [!_GLIBCXX_HOSTED]: Omit leftover
1014         random_shuffle and stable_partition definition.
1015         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED]: Omit
1016         random_shuffle and stable_partition from freestanding.
1017         * include/bits/ranges_algo.h [!_GLIBCXX_HOSTED]: Omit
1018         stable_partition from freestanding.
1019         * include/bits/concept_check.h: Remove needless HOSTED check.
1020         * include/std/iterator: Include <bits/ranges_base.h>.
1021         * include/std/numeric (__cpp_lib_parallel_algorithms): Do not
1022         define for freestanding.
1023         * include/std/functional (__cpp_lib_boyer_moore_searcher):
1024         Likewise.
1025         * testsuite/lib/prune.exp: Match error for hosted-only libstdc++
1026         tests.
1028 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1029             Arsen Arsenović  <arsen@aarsen.me>
1031         * include/precompiled/extc++.h [!_GLIBCXX_HOSTED]: Do not
1032         include headers that aren't valid for freestanding.
1033         * include/precompiled/stdc++.h [!_GLIBCXX_HOSTED]: Likewise.
1035 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
1037         * configure.ac: Remove any lines that unconditionally include
1038         <stdio.h> from ac_includes_default, when running Autoconf <2.70.
1039         * configure: Regenerate.
1041 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1043         PR libstdc++/103626
1044         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Define _GLIBCXX_HOSTED
1045         to __STDC_HOSTED__ for non-freestanding installations.
1046         * configure: Regenerate.
1047         * include/Makefile.am (${host_builddir}/c++config.h): Adjust
1048         grep pattern.
1049         * include/Makefile.in: Regenerate.
1050         * testsuite/lib/libstdc++.exp (v3-build_support): Use
1051         -fno-freestanding.
1052         * testsuite/libstdc++-abi/abi.exp: Likewise.
1054 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
1056         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
1057         Change body of unused operator<< overload to throw if called.
1058         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
1059         Likewise.
1061 2022-10-03  François Dumont  <fdumont@gcc.gnu.org>
1063         * python/libstdcxx/v6/printers.py (Printer.add_version): Do not add version
1064         namespace for __cxx11 symbols.
1065         (add_one_template_type_printer): Likewise.
1066         (add_one_type_printer): Likewise.
1067         (FilteringTypePrinter._recognizer.recognize): Add a workaround for std::string & al
1068         ambiguous typedef matching both std:: and std::__cxx11:: symbols.
1069         * testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete
1070         \#define _GLIBCXX_USE_CXX11_ABI 0.
1071         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise. Adapt test to accept
1072         std::__cxx11::list.
1073         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1074         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
1075         * testsuite/libstdc++-prettyprinters/80276.cc: Likewise and remove xfail for c++20
1076         and debug mode.
1077         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
1079 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
1081         * testsuite/20_util/bitset/access/to_ulong.cc: Construct bitset
1082         from binary literal instead of using stringstream.
1084 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
1086         * include/std/bitset (operator>>): Use a simple buffer instead
1087         of std::basic_string.
1089 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
1091         * include/std/bitset (_M_copy_from_ptr, _M_copy_from_string)
1092         (_M_copy_to_string): Change access to private.
1093         (_M_copy_from_string(const basic_string&, size_t, size_t)):
1094         Remove.
1095         (_M_copy_to_string(const basic_string&)): Remove.
1097 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
1099         * testsuite/20_util/bind/ref_neg.cc: Fix dg-prune-output
1100         directive.
1102 2022-09-30  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
1103             Yvan ROUX   <yvan.roux@foss.st.com>
1105         * testsuite/20_util/bind/ref_neg.cc: Prune Windows paths too.
1107 2022-09-30  Arsen Arsenović  <arsen@aarsen.me>
1109         * include/std/bitset: Include <bits/stl_algobase.h>.
1111 2022-09-29  François Dumont  <fdumont@gcc.gnu.org>
1113         * python/libstdcxx/v6/printers.py (add_one_template_type_printer): Register
1114         printer for types in std::__debug namespace with template parameters in std::__8
1115         namespace.
1117 2022-09-29  Patrick Palka  <ppalka@redhat.com>
1119         * include/bits/unique_ptr.h (unique_ptr<_Tp[], _Dp>): Remove
1120         __remove_cv and use __remove_cv_t instead.
1122 2022-09-29  Jonathan Wakely  <jwakely@redhat.com>
1124         * include/std/type_traits (__is_invocable_impl): Check
1125         __has_builtin(__reference_converts_from_temporary) before using
1126         built-in.
1128 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
1130         * doc/xml/manual/evolution.xml: Document std::bind API
1131         changes.
1132         * doc/xml/manual/intro.xml: Document LWG 2487 status.
1133         * doc/xml/manual/using.xml: Clarify default value of
1134         _GLIBCXX_USE_DEPRECATED.
1135         * doc/html/*: Regenerate.
1136         * include/std/functional (_Bind::operator()(Args&&...) volatile)
1137         (_Bind::operator()(Args&&...) const volatile)
1138         (_Bind_result::operator()(Args&&...) volatile)
1139         (_Bind_result::operator()(Args&&...) const volatile): Replace
1140         with deleted overload for C++20 and later.
1141         * testsuite/20_util/bind/cv_quals.cc: Check for deprecated
1142         warnings in C++17.
1143         * testsuite/20_util/bind/cv_quals_2.cc: Likewise, and check for
1144         ill-formed in C++20.
1146 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
1148         PR libstdc++/70692
1149         * include/bits/invoke.h [__cplusplus < 201703] (__invoke_r):
1150         Remove is_invocable and is_convertible constraints.
1151         * include/std/type_traits (__is_invocable_impl::_S_conv): Use
1152         non-deduced context for parameter.
1153         (__is_invocable_impl::_S_test): Remove _Check_noex template
1154         parameter and use deduced noexcept value in its place. Add bool
1155         parameter to detect dangling references.
1156         (__is_invocable_impl::type): Adjust call to _S_test to avoid
1157         deducing unnecessary noexcept property..
1158         (__is_invocable_impl::__nothrow_type): Rename to ...
1159         (__is_invocable_impl::__nothrow_conv): ... this. Adjust call
1160         to _S_test to deduce noexcept property.
1161         * testsuite/20_util/bind/dangling_ref.cc: New test.
1162         * testsuite/20_util/function/cons/70692.cc: New test.
1163         * testsuite/20_util/function_objects/invoke/dangling_ref.cc:
1164         New test.
1165         * testsuite/20_util/is_invocable/dangling_ref.cc: New test.
1166         * testsuite/30_threads/packaged_task/cons/dangling_ref.cc:
1167         New test.
1169 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
1171         PR c++/107049
1172         * testsuite/20_util/is_convertible/requirements/access.cc: New
1173         test.
1175 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
1177         PR c++/106651
1178         * include/bits/std_function.h (__function_guide_t): New alias
1179         template.
1180         [__cpp_static_call_operator] (__function_guide_static_helper):
1181         New class template.
1182         (function): Use __function_guide_t in deduction guide.
1183         * include/std/future (packaged_task): Use __function_guide_t in
1184         deduction guide.
1185         * testsuite/20_util/function/cons/deduction_c++23.cc: New test.
1186         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
1187         New test.
1189 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
1191         * include/bits/ptr_traits.h (__ptr_traits_elem) [__cpp_concepts]:
1192         Also define the __ptr_traits_elem class template for the
1193         concepts case.
1194         (pointer_traits<Ptr>): Remove constrained partial
1195         specialization.
1196         * testsuite/20_util/pointer_traits/lwg3545.cc: Check for
1197         ambiguitiy with program-defined partial specialization.
1199 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
1201         * include/std/type_traits (is_convertible, is_convertible_v):
1202         Define using new built-in.
1203         (is_nothrow_convertible is_nothrow_convertible_v): Likewise.
1205 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
1207         PR libstdc++/107037
1208         * include/std/bitset (_Base_bitset::_M_do_reset): Use
1209         preprocessor conditional around non-C++03 code.
1210         * testsuite/20_util/bitset/107037.cc: New test.
1212 2022-09-24  Jonathan Wakely  <jwakely@redhat.com>
1214         * include/bits/alloc_traits.h (allocator_traits::is_always_equal):
1215         Only instantiate is_empty if needed.
1216         * include/bits/ptr_traits.h (__ptr_traits_impl::difference_type)
1217         (__ptr_traits_impl::rebind): Use __detected_or.
1218         * include/experimental/type_traits (is_same_v): Add a partial
1219         specialization instead of instantiating the std::is_same class
1220         template.
1221         (detected_t): Redefine in terms of detected_or_t.
1222         (is_detected, is_detected_v): Redefine in terms of detected_t.
1223         * include/std/type_traits [__cpp_concepts] (__detected_or): Add
1224         new definition using concepts.
1225         (__detector::value_t): Rename to __is_detected.
1226         * testsuite/17_intro/names.cc: Check value_t isn't used.
1228 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1230         * testsuite/20_util/is_assignable/requirements/access.cc:
1231         New test.
1233 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1235         PR libstdc++/91456
1236         * include/std/type_traits (__is_nothrow_invocable_lib): Remove.
1237         (__is_invocable_impl::__nothrow_type): New member type which
1238         checks if the conversion can throw.
1239         (__is_nt_invocable_impl): Replace class template with alias
1240         template to __is_nt_invocable_impl::__nothrow_type.
1241         * testsuite/20_util/is_nothrow_invocable/91456.cc: New test.
1242         * testsuite/20_util/is_nothrow_convertible/value.cc: Remove
1243         macro used by value_ext.cc test.
1244         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Remove
1245         test for non-standard __is_nothrow_invocable_lib trait.
1247 2022-09-23  Marek Polacek  <polacek@redhat.com>
1249         PR c++/106784
1250         * include/std/type_traits: Rename __is_nothrow_convertible to
1251         __is_nothrow_convertible_lib.
1252         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Likewise.
1254 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1256         * include/std/bitset (operator>>): Do not copy for N==0.
1257         * testsuite/20_util/bitset/io/input.cc: Add comment.
1259 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1261         * include/debug/bitset (__debug::bitset): Add constexpr to all
1262         member functions.
1263         (operator&, operator|, operator^): Add inline and constexpr.
1264         (operator>>, operator<<): Add inline.
1265         * testsuite/20_util/bitset/access/constexpr.cc: Only check using
1266         constexpr std::string for the cxx11 ABI.
1267         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Likewise.
1268         * testsuite/20_util/headers/bitset/synopsis.cc: Check constexpr
1269         for C++23.
1271 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1273         * include/std/bitset (bitset::_M_copy_to_string): Find set bits
1274         instead of iterating over individual bits.
1276 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
1278         * include/std/bitset (bitset): Add constexpr for C++23. Guard
1279         members using std::string with _GLIBCXX_HOSTED.
1280         * include/std/version (__cpp_lib_constexpr_bitset): Define.
1281         * testsuite/20_util/bitset/access/constexpr.cc: New test.
1282         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: New test.
1283         * testsuite/20_util/bitset/count/constexpr.cc: New test.
1284         * testsuite/20_util/bitset/ext/constexpr.cc: New test.
1285         * testsuite/20_util/bitset/operations/constexpr_c++23.cc: New test.
1286         * testsuite/20_util/bitset/version.cc: New test.
1288 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
1290         * testsuite/23_containers/bitset/18604.cc: Moved to...
1291         * testsuite/20_util/bitset/18604.cc: ...here.
1292         * testsuite/23_containers/bitset/45713.cc: Moved to...
1293         * testsuite/20_util/bitset/45713.cc: ...here.
1294         * testsuite/23_containers/bitset/to_string/dr396.cc: Moved to...
1295         * testsuite/20_util/bitset/access/dr396.cc: ...here.
1296         * testsuite/23_containers/bitset/to_string/1.cc: Moved to...
1297         * testsuite/20_util/bitset/access/to_string.cc: ...here.
1298         * testsuite/23_containers/bitset/to_ullong/1.cc: Moved to...
1299         * testsuite/20_util/bitset/access/to_ullong.cc: ...here.
1300         * testsuite/23_containers/bitset/to_ulong/1.cc: Moved to...
1301         * testsuite/20_util/bitset/access/to_ulong.cc: ...here.
1302         * testsuite/23_containers/bitset/cons/1.cc: Moved to...
1303         * testsuite/20_util/bitset/cons/1.cc: ...here.
1304         * testsuite/23_containers/bitset/cons/16020.cc: Moved to...
1305         * testsuite/20_util/bitset/cons/16020.cc: ...here.
1306         * testsuite/23_containers/bitset/cons/2.cc: Moved to...
1307         * testsuite/20_util/bitset/cons/2.cc: ...here.
1308         * testsuite/23_containers/bitset/cons/3.cc: Moved to...
1309         * testsuite/20_util/bitset/cons/3.cc: ...here.
1310         * testsuite/23_containers/bitset/cons/38244.cc: Moved to...
1311         * testsuite/20_util/bitset/cons/38244.cc: ...here.
1312         * testsuite/23_containers/bitset/cons/50268.cc: Moved to...
1313         * testsuite/20_util/bitset/cons/50268.cc: ...here.
1314         * testsuite/23_containers/bitset/cons/6282.cc: Moved to...
1315         * testsuite/20_util/bitset/cons/6282.cc: ...here.
1316         * testsuite/23_containers/bitset/cons/constexpr.cc: Moved to...
1317         * testsuite/20_util/bitset/cons/constexpr.cc: ...here.
1318         * testsuite/23_containers/bitset/cons/dr1325-1.cc: Moved to...
1319         * testsuite/20_util/bitset/cons/dr1325-1.cc: ...here.
1320         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Moved to...
1321         * testsuite/20_util/bitset/cons/dr1325-2.cc: ...here.
1322         * testsuite/23_containers/bitset/cons/dr396.cc: Moved to...
1323         * testsuite/20_util/bitset/cons/dr396.cc: ...here.
1324         * testsuite/23_containers/bitset/debug/invalidation/1.cc: Moved to...
1325         * testsuite/20_util/bitset/debug/invalidation/1.cc: ...here.
1326         * testsuite/23_containers/bitset/ext/15361.cc: Moved to...
1327         * testsuite/20_util/bitset/ext/15361.cc: ...here.
1328         * testsuite/23_containers/bitset/hash/1.cc: Moved to...
1329         * testsuite/20_util/bitset/hash/1.cc: ...here.
1330         * testsuite/23_containers/bitset/input/1.cc: Moved to...
1331         * testsuite/20_util/bitset/io/input.cc: ...here.
1332         * testsuite/23_containers/bitset/count/6124.cc: Moved to...
1333         * testsuite/20_util/bitset/observers/6124.cc: ...here.
1334         * testsuite/23_containers/bitset/all/1.cc: Moved to...
1335         * testsuite/20_util/bitset/observers/all.cc: ...here.
1336         * testsuite/23_containers/bitset/test/1.cc: Moved to...
1337         * testsuite/20_util/bitset/observers/test.cc: ...here.
1338         * testsuite/23_containers/bitset/operations/1.cc: Moved to...
1339         * testsuite/20_util/bitset/operations/1.cc: ...here.
1340         * testsuite/23_containers/bitset/operations/13838.cc: Moved to...
1341         * testsuite/20_util/bitset/operations/13838.cc: ...here.
1342         * testsuite/23_containers/bitset/operations/2.cc: Moved to...
1343         * testsuite/20_util/bitset/operations/2.cc: ...here.
1344         * testsuite/23_containers/bitset/operations/96303.cc: Moved to...
1345         * testsuite/20_util/bitset/operations/96303.cc: ...here.
1346         * testsuite/23_containers/bitset/operations/constexpr-2.cc: Moved to...
1347         * testsuite/20_util/bitset/operations/constexpr-2.cc: ...here.
1348         * testsuite/23_containers/bitset/operations/constexpr.cc: Moved to...
1349         * testsuite/20_util/bitset/operations/constexpr.cc: ...here.
1350         * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: Moved to...
1351         * testsuite/20_util/bitset/requirements/constexpr_functions.cc: ...here.
1352         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc: Moved to...
1353         * testsuite/20_util/bitset/requirements/explicit_instantiation/1.cc: ...here.
1354         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc: Moved to...
1355         * testsuite/20_util/bitset/requirements/explicit_instantiation/1_c++0x.cc: ...here.
1356         * testsuite/23_containers/headers/bitset/synopsis.cc: Moved to...
1357         * testsuite/20_util/headers/bitset/synopsis.cc: ...here.
1359 2022-09-22  François Dumont  <fdumont@gcc.gnu.org>
1361         * python/libstdcxx/v6/printers.py: Remove ptinter registration for non-existing
1362         types std::__debug::unique_ptr, std::__debug::stack, std::__debug::queue,
1363         std::__debug::priority_queue.
1365 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1367         PR libstdc++/91456
1368         * testsuite/20_util/function/91456.cc: Add comment with PR
1369         number.
1370         * testsuite/20_util/is_invocable/91456.cc: Likewise. Replace
1371         std::function checks with std::is_invocable_r checks.
1373 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1375         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Remove
1376         unnecessary main function.
1377         * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1378         Likewise.
1379         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1380         Likewise.
1381         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1382         Likewise.
1383         * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1384         Likewise.
1386 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1388         * testsuite/20_util/headers/memory/synopsis.cc: Add declarations
1389         from C++11 and later.
1391 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1393         * doc/xml/manual/documentation_hacking.xml: Remove trailing
1394         whitespace.
1395         * doc/xml/manual/policy_data_structures.xml: Likewise.
1397 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1399         * include/c_compatibility/stdlib.h [!_GLIBCXX_HOSTED]: Add
1400         using-declaration for _Exit.
1402 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1404         * testsuite/18_support/uncaught_exception/14026.cc: Qualify
1405         call to std::abort.
1407 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1409         * include/bits/ranges_base.h: Include <initializer_list>.
1411 2022-09-20  Jonathan Wakely  <jwakely@redhat.com>
1413         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (quick_exit): Fix
1414         missing space.
1416 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1418         PR libstdc++/106953
1419         * include/backward/auto_ptr.h [!_GLIBCXX_HOSTED]: Do not define
1420         shared_ptr members.
1421         * include/bits/alloc_traits.h [!_GLIBCXX_HOSTED]: Do not declare
1422         std::allocator_traits<std::allocator<T>> specializations for
1423         freestanding.
1424         * include/bits/memoryfwd.h [!_GLIBCXX_HOSTED] (allocator): Do
1425         not declare for freestanding.
1426         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED] (stable_partition):
1427         Do not define for freestanding.
1428         [!_GLIBCXX_HOSTED] (merge, stable_sort): Do not use temporary
1429         buffers for freestanding.
1430         * include/bits/stl_algobase.h [!_GLIBCXX_HOSTED]: Do not declare
1431         streambuf iterators and overloaded algorithms using them.
1432         * include/bits/stl_uninitialized.h [!_GLIBCXX_HOSTED]: Do not
1433         define specialized overloads for std::allocator.
1434         * include/bits/unique_ptr.h [!_GLIBCXX_HOSTED] (make_unique)
1435         (make_unique_for_overwrite, operator<<): Do not define for
1436         freestanding.
1437         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (_Exit): Declare.
1438         Use _GLIBCXX_NOTHROW instead of throw().
1439         * include/debug/assertions.h [!_GLIBCXX_HOSTED]: Ignore
1440         _GLIBCXX_DEBUG for freestanding.
1441         * include/debug/debug.h [!_GLIBCXX_DEBUG]: Likewise.
1442         * include/std/bit [!_GLIBCXX_HOSTED]: Do not use the custom
1443         __int_traits if <ext/numeric_traits.h> is available.
1444         * include/std/functional [!_GLIBCXX_HOSTED]: Do not include
1445         headers that aren't valid for freestanding.
1446         (boyer_moore_searcher, boyer_moore_horspool_searcher): Do not
1447         define for freestanding.
1448         * include/std/iterator [!_GLIBCXX_HOSTED]: Do not include
1449         headers that aren't valid for freestanding.
1450         * include/std/memory [!_GLIBCXX_HOSTED]: Likewise.
1451         * include/std/ranges [!_GLIBCXX_HOSTED] (istream_view): Do not
1452         define for freestanding.
1453         (views::__detail::__is_basic_string_view) [!_GLIBCXX_HOSTED]:
1454         Do not define partial specialization for freestanding.
1456 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1458         * include/bits/alloc_traits.h (__alloc_swap)
1459         (__shrink_to_fit_aux): Move here, from ...
1460         * include/bits/allocator.h: ... here.
1461         * include/ext/alloc_traits.h: Do not include allocator.h.
1463 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1465         * include/bits/stl_algo.h: Include <bits/stl_algobase.h>.
1466         * include/bits/stl_tempbuf.h: Include headers for __try and
1467         __catch macros, std::pair, and __gnu_cxx::__numeric_traits.
1468         * include/bits/stream_iterator.h: Include <iosfwd> and headers
1469         for std::addressof and std::iterator.
1470         * include/bits/streambuf_iterator.h: Include header for
1471         std::iterator.
1472         * include/std/iterator: Do not include <iosfwd>.
1474 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1476         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
1477         Store value with non-zero padding bits after construction.
1479 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1481         * include/tr1/random.h (__detail::_Adaptor::_BEngine): Remove.
1482         (__detail::_Adaptor::_M_g): Make public.
1483         (__detail::_Adaptor<_Engine*, _Dist>): Remove partial
1484         specialization.
1485         (variate_generate::_Value): New helper to simplify handling of
1486         _Engine* and _Engine& template arguments.
1487         (variate_generate::engine_value_type): Define to underlying
1488         engine type, not adapted type.
1489         (variate_generate::engine()): Return underlying engine instead
1490         of adaptor.
1491         * testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc:
1492         Fix comment.
1493         * testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc:
1494         Check member typedefs have the correct types.
1496 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1498         * include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
1499         (_Error_formatter): Use 0 as null pointer constant.
1501 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1503         * include/bits/allocator.h (__alloc_neq): Remove.
1504         * include/bits/stl_list.h (list::_M_check_equal_allocators):
1505         Compare allocators directly, without __alloc_neq.
1507 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1509         * doc/doxygen/user.cfg.in (PREDEFINED): Remove __allocator_base.
1510         * include/bits/allocator.h: Fix nesting of Doxygen commands.
1512 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1514         * doc/xml/manual/abi.xml: Document GLIBCXX_3.4.30 and
1515         GLIBCXX_3.4.31 versions.
1516         * doc/html/manual/abi.html: Regenerate.
1518 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
1520         * include/std/memory: Do not include <bits/stl_algobase.h>.
1522 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
1524         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_PRE_LOCK):
1525         Replace with ...
1526         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK): ... this, add try_lock flag.
1527         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK_FAILED): New macro using
1528         try_lock_failed flag
1529         (_GLIBCXX_TSAN_MUTEX_POST_LOCK): Rename to ...
1530         (_GLIBCXX_TSAN_MUTEX_LOCKED): ... this.
1531         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK): Remove invalid flag.
1532         (_GLIBCXX_TSAN_MUTEX_POST_UNLOCK): Remove invalid flag.
1533         (_Sp_atomic::_Atomic_count::lock): Use new macros.
1535 2022-09-15  Patrick Palka  <ppalka@redhat.com>
1537         * include/bits/ranges_algo.h (__adjacent_find_fn, adjacent_find):
1538         Move to ...
1539         * include/bits/ranges_util.h: ... here.
1540         * include/std/ranges (chunk_by_view): Define.
1541         (chunk_by_view::_Iterator): Define.
1542         (__detail::__can_chunk_by_view): Define.
1543         (_ChunkBy, chunk_by): Define.
1544         * testsuite/std/ranges/adaptors/chunk_by/1.cc: New test.
1546 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
1548         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
1549         Adapt dg-prune-output to _GLIBCXX_INLINE_VERSION mode.
1551 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
1553         * config/abi/pre/gnu-versioned-namespace.ver: Remove obsolete std::__detail::__8
1554         symbols.
1556 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1558         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_DESTROY)
1559         (_GLIBCXX_TSAN_MUTEX_PRE_LOCK, _GLIBCXX_TSAN_MUTEX_POST_LOCK)
1560         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK, _GLIBCXX_TSAN_MUTEX_POST_UNLOCK)
1561         (_GLIBCXX_TSAN_MUTEX_PRE_SIGNAL, _GLIBCXX_TSAN_MUTEX_POST_SIGNAL):
1562         Define macros for TSan annotation functions.
1563         (_Sp_atomic::_Atomic_count): Add annotations.
1565 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1567         * include/bits/stl_tempbuf.h: Include <new>.
1569 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1571         * testsuite/17_intro/names.cc: Explain why poison pragma can't
1572         be used.
1574 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1576         * include/std/future
1577         (_State_baseV2::__setter(exception_ptr&, promise&)): Add
1578         assertion for LWG 2276 precondition.
1579         * testsuite/30_threads/promise/members/set_exception_neg.cc:
1580         New test.
1582 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1584         * doc/xml/manual/intro.xml: Document LWG 1203.
1585         * doc/html/*: Regenerate.
1587 2022-09-14  Philipp Fent  <fent@in.tum.de>
1589         * python/libstdcxx/v6/printers.py (access_streambuf_ptrs):
1590         New helper function.
1591         (StdStringBufPrinter, StdStringStreamPrinter): New printers.
1592         (build_libstdcxx_dictionary): Register stringstream printers.
1593         * testsuite/libstdc++-prettyprinters/debug.cc: Check string
1594         streams.
1595         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
1596         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1598 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1600         * include/std/ranges (__detail::__slide_caches_nothing): Define.
1601         (__detail::__slide_caches_last): Define.
1602         (__detail::__slide_caches_first): Define.
1603         (slide_view): Define.
1604         (enable_borrowed_range<slide_view>): Define.
1605         (slide_view::_Iterator): Define.
1606         (slide_view::_Sentinel): Define.
1607         (views::__detail::__can_slide_view): Define.
1608         (views::_Slide, views::slide): Define.
1609         * testsuite/std/ranges/adaptors/slide/1.cc: New test.
1611 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1613         * include/std/ranges (__detail::__div_ceil): Define.
1614         (chunk_view): Define.
1615         (chunk_view::_OuterIter): Define.
1616         (chunk_view::_OuterIter::value_type): Define.
1617         (chunk_view::_InnerIter): Define.
1618         (chunk_view<_Vp>): Define partial specialization for forward
1619         ranges.
1620         (enable_borrowed_range<chunk_view>): Define.
1621         (chunk_view<_Vp>::_Iterator): Define.
1622         (views::__detail::__can_chunk_view): Define.
1623         (views::_Chunk, views::chunk): Define.
1624         * testsuite/std/ranges/adaptors/chunk/1.cc: New test.
1626 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1628         * include/std/ranges (join_view::_Iterator::_M_satisfy):
1629         Adjust resetting _M_inner as per LWG 3569.
1630         (join_view::_Iterator::_M_inner): Wrap in std::optional
1631         as per LWG 3569.
1632         (join_view::_Iterator::_Iterator): Relax constraints as
1633         per LWG 3569.
1634         (join_view::_Iterator::operator*): Adjust as per LWG 3569.
1635         (join_view::_Iterator::operator->): Likewise.
1636         (join_view::_Iterator::operator++): Likewise.
1637         (join_view::_Iterator::operator--): Likewise.
1638         (join_view::_Iterator::iter_move): Likewise.
1639         (join_view::_Iterator::iter_swap): Likewise.
1640         * testsuite/std/ranges/adaptors/join.cc (test14): New test.
1642 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1644         * include/debug/safe_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
1645         Add parentheses to avoid -Wparentheses warning.
1647 2022-09-12  Patrick Palka  <ppalka@redhat.com>
1649         PR libstdc++/106320
1650         * testsuite/std/ranges/adaptors/join.cc (test13): New test.
1652 2022-09-12  Jonathan Wakely  <jwakely@redhat.com>
1654         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: Fix
1655         comments.
1656         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc:
1657         Likewise.
1659 2022-09-12  Jakub Jelinek  <jakub@redhat.com>
1661         PR tree-optimization/105329
1662         * acinclude.m4 (libtool_VERSION): Change to 6:31:0.
1663         * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Don't export
1664         std::basic_string methods with name length of 15.
1665         (GLIBCXX_3.4.31): Export std::basic_string::_M_replace_cold.
1666         * testsuite/util/testsuite_abi.cc (check_version): Handle
1667         GLIBCXX_3.4.31.
1668         * include/bits/basic_string.h (std::basic_string::_M_replace_cold):
1669         Declare.
1670         * include/bits/basic_string.tcc (std::basic_string::_M_replace_cold):
1671         Define and export even for C++20.
1672         (std::basic_string::_M_replace): Use __builtin_expect, outline
1673         the overlapping case to _M_replace_cold.
1674         * configure: Regenerated.
1676 2022-09-09  Jonathan Wakely  <jwakely@redhat.com>
1678         * include/bits/atomic_base.h (__atomic_impl::__compare_exchange):
1679         Rename __weak to __is_weak.
1680         * testsuite/17_intro/names.cc: Add __weak and __strong.
1682 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1684         PR libstdc++/106803
1685         * include/std/ranges (views::_ZipTransform::operator()): Correct
1686         return type in the empty case.
1687         (views::_AdjacentTransform::operator()): Likewise.
1689 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1691         PR libstdc++/106798
1692         * include/std/ranges (adjacent_view::_Iterator::_Iterator): Fix
1693         typo.
1694         * testsuite/std/ranges/adaptors/adjacent/1.cc (test04): New test.
1696 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1698         PR libstdc++/106766
1699         * include/std/ranges (zip_view::_Iterator::operator-): Use
1700         __to_unsigned_like instead of make_unsigned_t.
1701         (zip_view::_Sentinel::operator-): Likewise.
1702         * testsuite/std/ranges/zip/1.cc (test04): New test.
1704 2022-09-08  François Dumont  <fdumont@gcc.gnu.org>
1706         * testsuite/util/testsuite_performance.h (__gnu_test::MallocInfo): New.
1707         (__gnu_test::malloc_info): New, replace mallinfo on current platform
1708         supporting it and use mallinfo2 when glibc >= 2.33.
1710 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1712         PR c++/106838
1713         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
1714         Prune additional errors from front-end.
1715         * testsuite/20_util/is_move_constructible/incomplete_neg.cc:
1716         Likewise.
1717         * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc:
1718         Likewise.
1719         * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc:
1720         Likewise.
1721         * testsuite/20_util/is_swappable_with/incomplete_neg.cc:
1722         Likewise.
1724 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1726         * include/c_global/cstddef (byte): Add always_inline attribute
1727         to all operator overloads.
1728         (to_integer): Add always_inline attribute.
1730 2022-09-08  Thomas Rodgers  <trodgers@redhat.com>
1731             Jakub Jelinek  <jakub@redhat.com>
1732             Jonathan Wakely  <jwakely@redhat.com>
1734         * include/bits/atomic_base.h (__atomic_impl::__maybe_has_padding):
1735         New function.
1736         (__atomic_impl::clear_padding): Likewise.
1737         (__atomic_impl::__compare_exchange): Likewise.
1738         (__atomic_impl::compare_exchange_weak): Delegate to
1739         __compare_exchange.
1740         (__atomic_impl::compare_exchange_strong): Likewise.
1741         * include/std/atomic (atomic<T>::atomic(T)): Clear padding when
1742         possible in a constexpr function.
1743         (atomic::store): Clear padding.
1744         (atomic::exchange): Likewise.
1745         (atomic::compare_exchange_weak): Use __compare_exchange.
1746         (atomic::compare_exchange_strong): Likewise.
1747         * testsuite/29_atomics/atomic/compare_exchange_padding.cc: New
1748         test.
1749         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
1750         New test.
1752 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1754         * include/std/system_error (__adl_only::make_error_code): Add
1755         deleted function.
1756         (__adl_only::make_error_condition): Likewise.
1757         (error_code::error_code(ErrorCodeEnum)): Add using-declaration
1758         for deleted function.
1759         (error_condition::error_condition(ErrorConditionEnum)):
1760         Likewise.
1761         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: New test.
1762         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc: New test.
1764 2022-09-07  Jonathan Wakely  <jwakely@redhat.com>
1766         * include/std/barrier: Add missing runtime exception.
1768 2022-09-07  Patrick Palka  <ppalka@redhat.com>
1770         * include/std/type_traits (is_reference): Make the primary
1771         template derive from false_type.  Define two partial
1772         specializations that derive from true_type.
1774 2022-09-07  Patrick Palka  <ppalka@redhat.com>
1776         * include/std/type_traits (__is_void_helper): Remove.
1777         (is_void): Make the primary template derive from false_type,
1778         and define four explicit specializations that derive from
1779         true_type.
1780         (__is_null_pointer_helper, is_null_pointer): Likewise.
1782 2022-09-07  Jason Merrill  <jason@redhat.com>
1784         * libsupc++/dyncast.cc (__dynamic_cast): Avoid virtual function
1785         call in simple success case.
1787 2022-09-06  Philipp Fent  <fent@in.tum.de>
1789         * testsuite/libstdc++-prettyprinters/48362.cc: Fix expected
1790         tuple indices.
1791         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
1793 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
1795         * include/std/type_traits (__success_type, __failure_type): Move
1796         definitions later in the file.
1798 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
1800         * include/std/type_traits (is_trivial_v, is_trivially_copyable_v)
1801         (is_standard_layout_v, is_pod_v, is_literal_type_v): Use
1802         built-in instead of class template.
1803         (is_same_v): Add partial specialization for true case.
1805 2022-09-02  Patrick Palka  <ppalka@redhat.com>
1807         * include/std/tuple (tuple::_UseOtherCtor): Use ::type when
1808         deriving from __and_, __or_ or __not_.
1809         * include/std/type_traits (negation): Likewise.
1810         (is_unsigned): Likewise.
1811         (__is_implicitly_default_constructible): Likewise.
1812         (is_trivially_destructible): Likewise.
1813         (__is_nt_invocable_impl): Likewise.
1815 2022-09-02  Jonathan Wakely  <jwakely@redhat.com>
1817         * include/std/type_traits (is_constructible_v)
1818         (is_default_constructible_v, is_copy_constructible_v)
1819         (is_move_constructible_v): Define using __is_constructible.
1820         (is_assignable_v, is_copy_assignable_v, is_move_assignable_v):
1821         Define using __is_assignable.
1822         (is_trivially_constructible_v)
1823         (is_trivially_default_constructible_v)
1824         (is_trivially_copy_constructible_v)
1825         (is_trivially_move_constructible_v): Define using
1826         __is_trivially_constructible.
1827         (is_trivially_assignable_v, is_trivially_copy_assignable_v)
1828         (is_trivially_move_assignable_v): Define using
1829         __is_trivially_assignable.
1830         (is_nothrow_constructible_v)
1831         (is_nothrow_default_constructible_v)
1832         (is_nothrow_copy_constructible_v)
1833         (is_nothrow_move_constructible_v): Define using
1834         __is_nothrow_constructible.
1835         (is_nothrow_assignable_v, is_nothrow_copy_assignable_v)
1836         (is_nothrow_move_assignable_v): Define using
1837         __is_nothrow_assignable.
1839 2022-09-02  Patrick Palka  <ppalka@redhat.com>
1841         * include/std/type_traits (__or_, __and_, __not_): Redefine as a
1842         class template instead of as an alias template.
1843         * testsuite/20_util/logical_traits/requirements/short_circuit.cc:
1844         Add more tests for conjunction and disjunction.  Add corresponding
1845         tests for __and_ and __or_.
1847 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1849         * include/std/ranges (adjacent_transform_view::_Iterator): Add
1850         typename keyword before dependent qualified-id.
1852 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1854         * include/std/type_traits (__is_referenceable): Remove.
1855         (__add_lvalue_reference_helper, __add_rvalue_reference_helper):
1856         Use __void_t instead of __is_referenceable.
1857         (__add_pointer_helper): Likewise.
1858         (add_pointer): Add partial specializations for reference types.
1860 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1862         * include/std/type_traits (__is_constructible_impl): Replace
1863         class template with alias template.
1864         (is_default_constructible, is_nothrow_constructible)
1865         (is_nothrow_constructible): Simplify base-specifier.
1866         (__is_copy_constructible_impl, __is_move_constructible_impl)
1867         (__is_nothrow_copy_constructible_impl)
1868         (__is_nothrow_move_constructible_impl): Remove class templates.
1869         (is_copy_constructible, is_move_constructible)
1870         (is_nothrow_constructible, is_nothrow_default_constructible)
1871         (is_nothrow_copy_constructible, is_nothrow_move_constructible):
1872         Adjust base-specifiers to use __is_constructible_impl.
1873         (__is_copy_assignable_impl, __is_move_assignable_impl)
1874         (__is_nt_copy_assignable_impl, __is_nt_move_assignable_impl):
1875         Remove class templates.
1876         (__is_assignable_impl): New alias template.
1877         (is_assignable, is_copy_assignable, is_move_assignable):
1878         Adjust base-specifiers to use new alias template.
1879         (is_nothrow_copy_assignable, is_nothrow_move_assignable):
1880         Adjust base-specifiers to use existing alias template.
1881         (__is_trivially_constructible_impl): New alias template.
1882         (is_trivially_constructible, is_trivially_default_constructible)
1883         (is_trivially_copy_constructible)
1884         (is_trivially_move_constructible): Adjust base-specifiers to use
1885         new alias template.
1886         (__is_trivially_assignable_impl): New alias template.
1887         (is_trivially_assignable, is_trivially_copy_assignable)
1888         (is_trivially_move_assignable): Adjust base-specifier to use
1889         new alias template.
1890         (__add_lval_ref_t, __add_rval_ref_t): New alias templates.
1891         (add_lvalue_reference, add_rvalue_reference): Use new alias
1892         templates.
1894 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1896         * include/std/type_traits (__decay_selector): Add partial
1897         specializations for array types. Only check for function types
1898         when not dealing with an array.
1899         (decay): Add partial specializations for reference types.
1901 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1903         * include/std/type_traits (is_lvalue_reference_v)
1904         (is_rvalue_reference_v, is_reference_v, is_const_v)
1905         (is_volatile_v): Define using partial specializations instead
1906         of instantiating class templates.
1908 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1910         * include/std/type_traits (is_enum_v, is_class_v, is_union_v)
1911         (is_empty_v, is_polymoprhic_v, is_abstract_v, is_final_v)
1912         (is_base_of_v, is_aggregate_v): Use built-in directly instead of
1913         instantiating class template.
1915 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1917         * include/std/type_traits (is_scoped_enum): Remove workaround.
1919 2022-09-01  Patrick Palka  <ppalka@redhat.com>
1921         * include/std/ranges (__detail::__unarize): Define.
1922         (adjacent_view::_Iterator): Befriend adjacent_transform_view.
1923         (adjacent_transform_view): Define.
1924         (adjacent_transform_view::_Iterator): Define.
1925         (adjacent_transform_view::_Sentinel): Define.
1926         (views::__detail::__can_adjacent_transform_view): Define.
1927         (views::_AdjacentTransform): Define.
1928         (views::adjacent_transform): Define.
1929         (views::pairwise_transform): Define.
1930         * testsuite/std/ranges/adaptors/adjacent_transform/1.cc: New test.
1932 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1934         * include/std/type_traits (__is_array_known_bounds): Add partial
1935         specialization instead of using std::extent.
1936         (__is_array_unknown_bounds): Likewise.
1937         (extent): Add partial specializations to stop recursion after
1938         the result is found.
1939         (is_array_v): Add partial specializations instead of
1940         instantiating the class template.
1941         (rank_v, extent_v): Likewise.
1942         (is_bounded_array_v, is_unbounded_array_v): Likewise.
1943         (is_bounded_array, is_unbounded_array): Define in terms of the
1944         variable templates.
1946 2022-08-31  Patrick Palka  <ppalka@redhat.com>
1948         * include/bits/ranges_base.h (__advance_fn::operator()): Add
1949         parentheses in assert condition to avoid -Wparentheses warning.
1950         * include/std/ranges: (take_view::take_view): Uglify 'base'.
1951         (take_while_view::take_while_view): Likewise.
1952         (elements_view::elements_view): Likewise.
1953         (views::_Zip::operator()): Adjust position of [[nodiscard]] for
1954         compatibility with -fconcepts-ts.
1955         (zip_transform_view::_Sentinel): Uglify 'OtherConst'.
1956         (views::_ZipTransform::operator()): Adjust position of
1957         [[nodiscard]] for compatibilty with -fconcepts-ts.
1959 2022-08-31  Martin Liska  <mliska@suse.cz>
1961         * configure: Regenerate.
1962         * crossconfig.m4: Remove deprecated ports.
1964 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
1966         * include/debug/debug.h: Use nullptr rather than '0' in checks in post-C++11.
1967         * include/debug/string: Likewise.
1968         * testsuite/21_strings/basic_string/operations/ends_with/char.cc: Use __gnu_test::string.
1969         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc: Likewise.
1970         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc: Likewise.
1971         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc: Likewise.
1972         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc: Likewise.
1973         * testsuite/21_strings/basic_string/operations/starts_with/char.cc: Likewise..
1975 2022-08-31  Patrick Palka  <ppalka@redhat.com>
1977         * include/std/ranges (adjacent_view): Define.
1978         (enable_borrowed_range<adjacent_view>): Define.
1979         (__detail::__repeated_tuple): Define.
1980         (adjacent_view::_Iterator): Define.
1981         (adjacent_view::_Sentinel): Define.
1982         (views::__detail::__can_adjacent_view): Define.
1983         (views::_Adjacent): Define.
1984         (views::adjacent): Define.
1985         (views::pairwise): Define.
1986         * testsuite/std/ranges/adaptors/adjacent/1.cc: New test.
1988 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
1990         * include/debug/formatter.h
1991         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_state): Declare.
1992         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_create_state): Declare.
1993         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_callback): Define.
1994         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_error_callback): Define.
1995         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_func): Define.
1996         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full): Declare.
1997         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_state): New.
1998         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_full): New.
1999         * src/c++11/debug.cc [_GLIBCXX_HAVE_STACKTRACE](print_backtrace): New.
2000         (_Error_formatter::_M_error()): Adapt.
2001         * src/libbacktrace/Makefile.am: Add backtrace.c.
2002         * src/libbacktrace/Makefile.in: Regenerate.
2003         * src/libbacktrace/backtrace-rename.h (backtrace_full): New.
2004         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc: New test.
2005         * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE.
2006         * doc/xml/manual/using.xml: Likewise.
2008 2022-08-31  Patrick Palka  <ppalka@redhat.com>
2010         * testsuite/20_util/logical_traits/requirements/short_circuit.cc: New test.
2012 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
2014         * include/bits/refwrap.h (reference_wrapper::operator()): Add
2015         noexcept-specifier and use __invoke_result instead of result_of.
2016         * testsuite/20_util/reference_wrapper/invoke-noexcept.cc: New test.
2018 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
2020         * testsuite/20_util/reference_wrapper/invoke-2.cc: Improve
2021         comments.
2022         * testsuite/20_util/reference_wrapper/invoke-3.cc: Likewise.
2023         * testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
2025 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
2027         * include/bits/basic_string.h (basic_string): Add nodiscard
2028         attribute to all relevant functions.
2029         * include/std/string_view (basic_string_view): Likewise.
2030         * testsuite/21_strings/basic_string/capacity/1.cc: Cast unused
2031         results to void.
2032         * testsuite/21_strings/basic_string/capacity/char/1.cc:
2033         Likewise.
2034         * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
2035         Likewise.
2036         * testsuite/21_strings/basic_string/cons/char/self_move.cc:
2037         Likewise.
2038         * testsuite/21_strings/basic_string/element_access/char/1.cc:
2039         Likewise.
2040         * testsuite/21_strings/basic_string/element_access/char/21674.cc:
2041         Likewise.
2042         * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc:
2043         Likewise.
2044         * testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
2045         Likewise.
2046         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
2047         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
2048         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc:
2049         Add -Wno-unused-result to options.
2050         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc:
2051         Likewise.
2052         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc:
2053         Likewise.
2054         * testsuite/21_strings/basic_string/operators/char/1.cc: Cast
2055         unused results to void.
2056         * testsuite/21_strings/basic_string/operators/wchar_t/1.cc:
2057         Likewise.
2058         * testsuite/21_strings/basic_string_view/capacity/1.cc:
2059         Likewise.
2060         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
2061         Likewise.
2062         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
2063         Likewise.
2064         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
2065         Likewise.
2066         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
2067         Likewise.
2068         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc:
2069         Likewise.
2070         Add -Wno-unused-result to options.
2071         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc:
2072         Likewise.
2073         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc:
2074         Likewise.
2075         * testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Cast
2076         unused results to void.
2077         * testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc:
2078         Likewise.
2079         * testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise.
2080         * testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc:
2081         Likewise.
2083 2022-08-27  Patrick Palka  <ppalka@redhat.com>
2085         * testsuite/20_util/logical_traits/requirements/base_classes.cc: New test.
2087 2022-08-26  Patrick Palka  <ppalka@redhat.com>
2089         * include/std/ranges (zip_view::_Iterator::operator<): Remove
2090         as per LWG 3692.
2091         (zip_view::_Iterator::operator>): Likewise.
2092         (zip_view::_Iterator::operator<=): Likewise.
2093         (zip_view::_Iterator::operator>=): Likewise.
2094         (zip_view::_Iterator::operator<=>): Remove three_way_comparable
2095         constraint as per LWG 3692.
2096         (zip_transform_view::_Iterator): Ditto as per LWG 3702.
2098 2022-08-26  Patrick Palka  <ppalka@redhat.com>
2100         * include/std/ranges (zip_view::_Iterator): Befriend
2101         zip_transform_view.
2102         (__detail::__range_iter_cat): Define.
2103         (zip_transform_view): Define.
2104         (zip_transform_view::_Iterator): Define.
2105         (zip_transform_view::_Sentinel): Define.
2106         (views::__detail::__can_zip_transform_view): Define.
2107         (views::_ZipTransform): Define.
2108         (views::zip_transform): Define.
2109         * testsuite/std/ranges/zip_transform/1.cc: New test.
2111 2022-08-26  Patrick Palka  <ppalka@redhat.com>
2113         * include/std/type_traits (enable_if, __enable_if_t): Define them
2114         earlier.
2115         (__detail::__first_t): Define.
2116         (__detail::__or_fn, __detail::__and_fn): Declare.
2117         (__or_, __and_): Redefine as alias templates in terms of __or_fn
2118         and __and_fn.
2119         (__not_): Redefine as an alias template.
2120         (__detail::__disjunction_impl, __detail::__conjunction_impl):
2121         Define.
2122         (conjuction, disjunction): Redefine in terms of __disjunction_impl
2123         and __conjunction_impl.
2125 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
2127         * include/std/system_error (error_code::_Check): New alias
2128         template for constructor SFINAE constraint.
2129         (error_code::error_code(ErrorCodeEnum)): Use it.
2130         (error_code::operator=(ErrorCodeEnum)): Remove.
2131         (error_condition::_Check): New alias template for constraint.
2132         (error_condition::error_condition(ErrorConditionEnum)): Use it.
2133         (error_condition::operator=(ErrorConditionEnum)): Remove.
2134         * testsuite/19_diagnostics/error_code/cons/1.cc: Check
2135         constructor taking user-defined error enum.
2136         * testsuite/19_diagnostics/error_condition/cons/1.cc: Likewise.
2138 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
2140         * include/bits/basic_string.h (starts_with, ends_with, contains):
2141         Add nonnull attribute.
2142         * include/bits/cow_string.h (starts_with, ends_with, contains):
2143         Likewise.
2144         * include/std/string_view (starts_with, ends_with, contains):
2145         Likewise.
2146         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc
2147         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc
2148         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc
2149         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc
2150         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc
2151         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc
2153 2022-08-25  Patrick Palka  <ppalka@redhat.com>
2155         * include/std/ranges (lazy_split_view::_OuterIter::_M_current):
2156         Remove redundant comment.
2157         (lazy_split_view::_M_current): Likewise.
2158         (common_view::common_view): Remove commented out view-converting
2159         constructor as per LWG3405.
2160         (elements_view::_Iterator::_Iterator): Uglify 'current' and 'i'.
2162 2022-08-24  Patrick Palka  <ppalka@redhat.com>
2164         * include/bits/ranges_algo.h (__min_fn, min): Move to ...
2165         * include/bits/ranges_util.h: ... here, in order to avoid
2166         including all of ranges_algo.h from <ranges>.
2167         * include/std/ranges (__detail::__zip_is_common): Define for
2168         C++23 as per P2321R2.
2169         (__detail::__tuple_or_pair): Likewise.
2170         (__detail::__tuple_or_pair_t): Likewise.
2171         (__detail::__tuple_transform): Likewise.
2172         (__detail::__tuple_for_each): Likewise.
2173         (zip_view): Likewise.
2174         (enable_borrowed_range<zip_view>): Likewise.
2175         (__detail::__all_random_access): Likewise.
2176         (__detail::__all_bidirectional): Likewise.
2177         (__detail::__all_forward): Likewise.
2178         (__detail::__zip_view_iter_cat): Likewise.
2179         (zip_view::_Iterator): Likewise.
2180         (zip_view::_Sentinel): Likewise.
2181         * testsuite/std/ranges/zip/1.cc: New test.
2183 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
2185         Revert:
2186         2022-08-24  Will Hawkins  <whh8b@obs.cr>
2188         * include/bits/basic_string.h (operator+(const string&, const char*)):
2189         Remove naive implementation.
2190         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
2191         Add single-allocation implementation.
2193 2022-08-24  Patrick Palka  <ppalka@redhat.com>
2195         * include/bits/stl_pair.h (pair::swap const): Add non-standard
2196         is_swappable_v constraints.
2197         * include/std/tuple (tuple::swap const): Likewise.
2198         * testsuite/20_util/tuple/cons/noexcept_specs.cc: Correct some
2199         asserts in C++23 mode.
2201 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
2203         * include/bits/stl_algo.h (__stable_sort): Cast size to
2204         iterator's difference type.
2205         * testsuite/25_algorithms/stable_sort/4.cc: New test.
2207 2022-08-24  Will Hawkins  <whh8b@obs.cr>
2209         * include/bits/basic_string.h (operator+(const string&, const char*)):
2210         Remove naive implementation.
2211         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
2212         Add single-allocation implementation.
2214 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
2216         * testsuite/20_util/duration_cast/rounding.cc: Check abs with
2217         non-reduced duration.
2219 2022-08-23  Patrick Palka  <ppalka@redhat.com>
2221         * include/bits/stl_bvector.h (_Bit_reference::operator=): Define
2222         const overload for C++23 as per P2321R2.
2223         * include/bits/stl_pair.h (pair::swap): Likewise.
2224         (pair::pair): Define additional converting constructors for
2225         C++23 as per P2321R2.
2226         (pair::operator=): Define const overloads for C++23 as per
2227         P2321R2.
2228         (swap): Define overload taking const pair& for C++23 as per
2229         P2321R2.
2230         (basic_common_reference): Define partial specialization for
2231         pair for C++23 as per P2321R2.
2232         (common_type): Likewise.
2233         * include/bits/uses_allocator_args.h
2234         (uses_allocator_construction_args): Define additional pair
2235         overloads for C++23 as per P2321R2.
2236         * include/std/tuple (_Tuple_impl::_Tuple_impl): Define
2237         additional converting constructors for C++23 as per P2321R2.
2238         (_Tuple_impl::_M_assign): Define const overloads for C++23
2239         as per P2321R2.
2240         (_Tuple_impl::_M_swap): Likewise.
2241         (tuple::__constructible): Define as a convenient renaming of
2242         _TCC<true>::__constructible.
2243         (tuple::__convertible): As above but for _TCC<true>::__convertible.
2244         (tuple::tuple): Define additional converting constructors for
2245         C++23 as per P2321R2.
2246         (tuple::operator=): Define const overloads for C++23 as per
2247         P2321R2.
2248         (tuple::swap): Likewise.
2249         (basic_common_reference): Define partial specialization for
2250         tuple for C++23 as per P2321R2.
2251         (common_type): Likewise.
2252         * testsuite/20_util/pair/p2321r2.cc: New test.
2253         * testsuite/20_util/tuple/p2321r2.cc: New test.
2254         * testsuite/23_containers/vector/bool/element_access/1.cc: New test.
2256 2022-08-23  Patrick Palka  <ppalka@redhat.com>
2258         * include/std/tuple (_TupleConstraints::__convertible): Define.
2259         (_TupleConstraints::__constructible): Define.
2260         (_TupleConstraints::__is_explicitly_constructible): Redefine this
2261         in terms of __convertible and __constructible.
2262         (_TupleConstraints::__is_implicitly_constructible): Likewise.
2264 2022-08-23  Jonathan Wakely  <jwakely@redhat.com>
2266         PR libstdc++/106589
2267         * include/std/variant (__do_visit): Handle is_void<R> for zero
2268         argument case.
2269         * testsuite/20_util/variant/visit_r.cc: Check std::visit<void>(v).
2271 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2273         PR libstdc++/105678
2274         * doc/xml/manual/using.xml: Document -lstdc++_libbacktrace
2275         requirement for using std::stacktrace. Also adjust -frtti and
2276         -fexceptions to document non-default (i.e. negative) forms.
2277         * doc/html/*: Regenerate.
2279 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2281         PR libstdc++/106695
2282         * include/bits/std_thread.h (thread::_State_impl): Forward
2283         individual arguments to _Invoker constructor.
2284         (thread::_Invoker): Add constructor. Delete copies.
2285         * include/std/future (__future_base::_Deferred_state): Forward
2286         individual arguments to _Invoker constructor.
2287         (__future_base::_Async_state_impl): Likewise.
2288         * testsuite/30_threads/async/106695.cc: New test.
2289         * testsuite/30_threads/thread/106695.cc: New test.
2291 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2293         PR libstdc++/106607
2294         * include/bits/regex_compiler.tcc (_Compiler::_M_cur_int_value):
2295         Use built-ins to check for integer overflow in back-reference
2296         number.
2297         * testsuite/28_regex/basic_regex/106607.cc: New test.
2299 2022-08-17  Keef Aragon  <keef.aragon@konscious.net>
2301         * libsupc++/eh_alloc.cc (pool::free): Inverse comparison.
2303 2022-08-08  François Dumont  <fdumont@gcc.gnu.org>
2305         * include/debug/formatter.h (__singular_value_init): New _Iterator_state enum entry.
2306         (_Parameter<>(const _Safe_iterator<>&, const char*, _Is_iterator)): Check if iterator
2307         parameter is value-initialized.
2308         (_Parameter<>(const _Safe_local_iterator<>&, const char*, _Is_iterator)): Likewise.
2309         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_value_initialized()): New. Adapt
2310         checks.
2311         * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_M_value_initialized()): New.
2312         Adapt checks.
2313         * src/c++11/debug.cc (_Safe_iterator_base::_M_reset): Do not reset _M_version.
2314         (print_field(PrintContext&, const _Parameter&, const char*)): Adapt state_names.
2315         * testsuite/23_containers/deque/debug/iterator1_neg.cc: New test.
2316         * testsuite/23_containers/deque/debug/iterator2_neg.cc: New test.
2317         * testsuite/23_containers/forward_list/debug/iterator1_neg.cc: New test.
2318         * testsuite/23_containers/forward_list/debug/iterator2_neg.cc: New test.
2319         * testsuite/23_containers/forward_list/debug/iterator3_neg.cc: New test.
2321 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
2323         * include/experimental/scope (__cpp_lib_experimental_scope):
2324         Define.
2325         * testsuite/experimental/scopeguard/uniqueres.cc: Check macro.
2327 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
2329         * include/Makefile.am: Add new header.
2330         * include/Makefile.in: Regenerate.
2331         * include/experimental/scope: New file.
2332         * testsuite/experimental/scopeguard/uniqueres.cc: New test.
2333         * testsuite/experimental/scopeguard/exit.cc: New test.
2335 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2337         * include/std/string_view (basic_string_view(Range&&)): Add
2338         explicit as per P2499R0.
2339         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
2340         Adjust implicit conversions. Check implicit conversions fail.
2341         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
2342         Likewise.
2344 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2346         * include/bits/fs_dir.h (directory_iterator): Add comparison
2347         with std::default_sentinel_t. Remove redundant operator!= for
2348         C++20.
2349         * (recursive_directory_iterator): Likewise.
2350         * include/bits/iterator_concepts.h [!__cpp_lib_concepts]
2351         (default_sentinel_t, default_sentinel): Define even if concepts
2352         are not supported.
2353         * include/bits/regex.h (regex_iterator): Add comparison with
2354         std::default_sentinel_t. Remove redundant operator!= for C++20.
2355         (regex_token_iterator): Likewise.
2356         (regex_token_iterator::_M_end_of_seq()): Add noexcept.
2357         * testsuite/27_io/filesystem/iterators/lwg3719.cc: New test.
2358         * testsuite/28_regex/iterators/regex_iterator/lwg3719.cc:
2359         New test.
2360         * testsuite/28_regex/iterators/regex_token_iterator/lwg3719.cc:
2361         New test.
2363 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2365         * include/std/expected (unexpected::_M_val): Rename to _M_unex.
2366         (bad_expected_access::_M_val): Likewise.
2368 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2370         * include/bits/ios_base.h (__cpp_lib_ios_noreplace): Update
2371         value to 202207L.
2372         * include/std/version (__cpp_lib_ios_noreplace): Likewise.
2373         * testsuite/27_io/basic_ofstream/open/char/noreplace.cc: Check
2374         for new value.
2375         * testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc:
2376         Likewise.
2378 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2380         PR libstdc++/106183
2381         * include/bits/atomic_wait.h (__waiter_pool_base::_M_notify):
2382         Move increment of _M_ver here.
2383         [!_GLIBCXX_HAVE_PLATFORM_WAIT]: Lock mutex around increment.
2384         Use relaxed memory order and always notify all waiters.
2385         (__waiter_base::_M_do_wait) [!_GLIBCXX_HAVE_PLATFORM_WAIT]:
2386         Check value again after locking mutex.
2387         (__waiter_base::_M_notify): Remove increment of _M_ver.
2389 2022-08-04  Ulrich Drepper  <drepper@gmail.com>
2391         * python/libstdcxx/v6/printers.py (class StdTuplePrinter): Use
2392         zero-based indeces just like std:get takes.
2394 2022-07-29  Jonathan Wakely  <jwakely@redhat.com>
2396         PR libstdc++/104443
2397         * include/bits/stl_iterator.h (common_iterator::operator->):
2398         Change return type to just auto.
2400 2022-07-26  Thomas Rodgers  <trodgers@redhat.com>
2402         * include/bits/atomic_wait.h (__atomic_spin): Merge spin loops.
2404 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2406         PR libstdc++/100823
2407         * include/bits/stl_iterator.h (common_iterator): Define
2408         destructor, copy constructor and move constructor as trivial
2409         when the underlying types allow.
2410         * testsuite/24_iterators/common_iterator/100823.cc: Check
2411         triviality of special members.
2413 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2415         PR libstdc++/100823
2416         * include/bits/stl_iterator.h (common_iterator): Define move
2417         constructor and move assignment operator.
2418         (common_iterator::_M_assign): New function implementing
2419         assignment.
2420         (common_iterator::operator=): Use _M_assign.
2421         (common_iterator::_S_valueless): New constant.
2422         * testsuite/24_iterators/common_iterator/100823.cc: New test.
2424 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2426         * include/bits/stl_iterator.h (common_iterator): Fix incorrect
2427         uses of is_nothrow_assignable_v. Fix inconsistent constraints on
2428         friend declaration. Do not move argument in copy constructor.
2429         * testsuite/24_iterators/common_iterator/1.cc: Check for
2430         noexcept constructibnle/assignable.
2432 2022-07-19  François Dumont  <fdumont@gcc.gnu.org>
2434         * include/debug/debug.h [_GLIBCXX_DEBUG](__glibcxx_requires_string): Define
2435         using _GLIBCXX_DEBUG_PEDASSERT.
2436         [_GLIBCXX_DEBUG](__glibcxx_requires_string_len): Likewise.
2437         * include/debug/macros.h
2438         (__glibcxx_check_string, __glibcxx_check_string_len): Move...
2439         * include/debug/string
2440         (__glibcxx_check_string, __glibcxx_check_string_len): ...here. And define depending
2441         on _GLIBCXX_DEBUG_PEDANTIC no matter if _GLIBCXX_DEBUG is defined.
2442         Add using of std::string find, rfind, find_first_of, find_last_of, find_first_not_of
2443         and find_last_not_of. Remove debug implementations having no debug assertion.
2444         * testsuite/util/testsuite_string.h: New file. Provides __gnu_test::string and
2445         __gnu_test::wtring which definition depends on _GLIBCXX_DEBUG.
2446         * testsuite/21_strings/basic_string/debug/find1_neg.cc: New test case.
2447         * testsuite/21_strings/basic_string/debug/find2_neg.cc: New test case.
2448         * testsuite/21_strings/basic_string/operations/find/char/1.cc:
2449         Include <testsuite_string.h> and use __gnu_test::string.
2450         * testsuite/21_strings/basic_string/operations/find/char/2.cc: Likewise.
2451         * testsuite/21_strings/basic_string/operations/find/char/3.cc: Likewise.
2452         * testsuite/21_strings/basic_string/operations/find/char/4.cc: Likewise.
2453         * testsuite/21_strings/basic_string/operations/find/char/5.cc: Likewise.
2454         * testsuite/21_strings/basic_string/operations/find/char/6.cc: Likewise.
2455         * testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc:
2456         Include <testsuite_string.h> and use __gnu_test::wstring.
2457         * testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc: Likewise.
2458         * testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc: Likewise.
2459         * testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc: Likewise.
2460         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: Likewise.
2461         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: Likewise.
2463 2022-07-19  Jonathan Wakely  <jwakely@redhat.com>
2465         * include/std/type_traits (__cpp_lib_reference_from_temporary)
2466         (reference_constructs_from_temporary)
2467         (reference_converts_from_temporary): Only define when the
2468         built-ins are available.
2470 2022-07-19  Marco Falke  <falke.marco@gmail.com>
2472         * include/std/charconv (__from_chars_alnum_to_val): Replace
2473         implicit conversion from int to unsigned char with explicit
2474         cast.
2476 2022-07-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2478         * configure: Regnerate.
2479         * configure.ac (newlib, *-rtems*): Remove HAVE_POLL.
2481 2022-07-18  François Dumont  <fdumont@gcc.gnu.org>
2483         * include/bits/stl_algo.h
2484         (__merge_adaptive): Adapt to merge only when buffer is large enough..
2485         (__merge_adaptive_resize): New, adapt merge when buffer is too small.
2486         (__inplace_merge): Adapt, use latter.
2487         (__stable_sort_adaptive): Adapt to sort only when buffer is large enough.
2488         (__stable_sort_adaptive_resize): New, adapt sort when buffer is too small.
2489         (__stable_sort): Adapt, use latter.
2491 2022-07-15  Marek Polacek  <polacek@redhat.com>
2493         PR c++/104477
2494         * include/std/type_traits (reference_constructs_from_temporary,
2495         reference_converts_from_temporary): New class templates.
2496         (reference_constructs_from_temporary_v,
2497         reference_converts_from_temporary_v): New variable templates.
2498         (__cpp_lib_reference_from_temporary): Define for C++23.
2499         * include/std/version (__cpp_lib_reference_from_temporary): Define for
2500         C++23.
2501         * testsuite/20_util/variable_templates_for_traits.cc: Test
2502         reference_constructs_from_temporary_v and
2503         reference_converts_from_temporary_v.
2504         * testsuite/20_util/reference_from_temporary/value.cc: New test.
2505         * testsuite/20_util/reference_from_temporary/value2.cc: New test.
2506         * testsuite/20_util/reference_from_temporary/version.cc: New test.
2508 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
2510         PR libstdc++/106248
2511         * include/std/istream [C++17] (operator>>(istream&, char*)):
2512         Set eofbit if we stopped extracting at EOF.
2513         * testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc:
2514         New test.
2515         * testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc:
2516         New test.
2518 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
2520         * include/bits/stl_iterator.h (__iter_to_alloc_t): Replace
2521         add_const_t with const-qualifier.
2522         * include/bits/utility.h (tuple_element<N, cv T>): Likewise for
2523         all cv-qualifiers.
2524         * include/std/type_traits (add_const, add_volatile): Replace
2525         typedef-declaration with using-declaration.
2526         (add_cv): Replace add_const and add_volatile with cv-qualifiers.
2527         * include/std/variant (variant_alternative<N, cv T>): Replace
2528         add_const_t, add_volatile_t and add_cv_t etc. with cv-qualifiers.
2530 2022-07-09  François Dumont  <fdumont@gcc.gnu.org>
2532         * include/std/string: Remove obsolete comment about char_traits.h including
2533         stl_algobase.h.
2535 2022-07-07  Jonathan Wakely  <jwakely@redhat.com>
2537         PR c++/89074
2538         * include/bits/char_traits.h (__gnu_cxx::char_traits::move):
2539         Remove workaround for front-end bug.
2541 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
2543         * testsuite/util/testsuite_fs.h (nonexistent_path): Explain
2544         why we need the typecast.
2546 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
2548         * testsuite/util/testsuite_fs.h (nonexistent_path): Convert
2549         the getpid result to an integral type.
2551 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
2553         PR libstdc++/106162
2554         * include/Makefile.am (largefile-config.h): Add
2555         stamp-${host_alias} prerequisite.
2556         * include/Makefile.in: Regenerate.
2558 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
2560         * include/bits/fs_ops.h: Add nodiscard to all pure functions.
2561         * include/experimental/bits/fs_ops.h: Likewise.
2562         * testsuite/27_io/filesystem/operations/all.cc: Do not discard
2563         results of absolute and canonical.
2564         * testsuite/27_io/filesystem/operations/absolute.cc: Cast
2565         discarded result to void.
2566         * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
2567         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
2568         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2569         * testsuite/27_io/filesystem/operations/read_symlink.cc:
2570         Likewise.
2571         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2572         * testsuite/27_io/filesystem/operations/symlink_status.cc:
2573         Likewise.
2574         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2575         Likewise.
2576         * testsuite/experimental/filesystem/operations/canonical.cc:
2577         Likewise.
2578         * testsuite/experimental/filesystem/operations/exists.cc:
2579         Likewise.
2580         * testsuite/experimental/filesystem/operations/is_empty.cc:
2581         Likewise.
2582         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2583         Likewise.
2584         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2585         Likewise.
2587 2022-07-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2589         * configure: Regnerate.
2590         * configure.ac (newlib, *-rtems*): Enable TLS support for all RTEMS
2591         targets except bfin, lm32, mips, moxie, or1k, and v850.
2592         For all RTEMS targets, define HAVE_ALIGNED_ALLOC, HAVE_AT_QUICK_EXIT,
2593         HAVE_LINK, HAVE_POLL, HAVE_QUICK_EXIT, HAVE_READLINK, HAVE_SETENV,
2594         HAVE_SLEEP, HAVE_SOCKATMARK, HAVE_STRERROR_L, HAVE_SYMLINK,
2595         HAVE_TRUNCATE, and HAVE_USLEEP.
2596         * crossconfig.m4 (*-rtems*): Remove.
2598 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2600         * include/bits/utility.h: Fix comment typos.
2602 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2604         * src/c++17/fs_ops.cc (fs::temp_directory_path()): Include path
2605         in exception.
2606         (fs::temp_directory_path(error_code&)): Rearrange to more
2607         closely match the structure of the first overload.
2608         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
2609         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2610         Check that exception contains the path.
2611         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2612         Likewise.
2614 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2616         PR libstdc++/88881
2617         * src/filesystem/ops.cc (has_trailing_slash): New helper
2618         function.
2619         (fs::status): Strip trailing slashes.
2620         (fs::symlink_status): Likewise.
2621         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2622         Clean the environment before each test and use TMP instead of
2623         TMPDIR so the test passes on Windows.
2625 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2627         * src/filesystem/dir-common.h (_Dir_base::_At_path):
2628         Use char_type consistently for paths.
2630 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2632         * src/c++17/fs_dir.cc (_Dir::dir_and_pathname):: Replace with
2633         current() returning _At_path.
2634         (_Dir::_Dir, _Dir::open_subdir, _Dir::do_unlink): Adjust.
2635         * src/filesystem/dir-common.h (_Dir_base::_At_path): New class.
2636         (_Dir_base::_Dir_Base, _Dir_base::openat): Use _At_path.
2637         * src/filesystem/dir.cc (_Dir::dir_and_pathname): Replace with
2638         current() returning _At_path.
2639         (_Dir::_Dir, _Dir::open_subdir): Adjust.
2641 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2643         * src/c++17/fs_dir.cc (_Dir::_Dir) [!_GLIBCXX_HAVE_OPENAT]:
2644         Always store pathname if we don't have openat or unlinkat,
2645         because the full path is needed to open sub-directories and
2646         remove entries.
2648 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2650         * testsuite/20_util/from_chars/4.cc: Only use log2 if C99 math
2651         functions are available.
2653 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2655         * testsuite/20_util/to_chars/long_double.cc: Use cmath
2656         long double overloads for nexttoward and ldexp.
2658 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2660         * testsuite/experimental/simd/standard_abi_usable.cc: Require
2661         cmath support.
2662         * testsuite/experimental/simd/standard_abi_usable_2.cc:
2663         Likewise.
2665 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2667         * testsuite/26_numerics/complex/proj.cc: Skip test in the
2668         circumstances in which the implementation of proj is known to
2669         be broken.
2671 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2673         * src/c++17/fs_dir.cc (dir_and_pathname): Use dirfd if
2674         _GLIBCXX_HAVE_OPENAT.
2676 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2678         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
2679         (test06): Don't create symlinks when NO_SYMLINKS is defined.
2681 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2683         * testsuite/lib/dg-options.exp (add_options_for_net_ts):
2684         Add -Wl,--gc-sections for RTEMS targets.
2685         * testsuite/experimental/net/timer/waitable/dest.cc: Link-time
2686         xfail on RTEMS.
2687         * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
2688         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2689         Execution-time xfail on RTEMS.
2690         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
2691         Likewise.
2693 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2695         * testsuite/ext/mt_allocator/22309_thread.cc: Include <string>.
2697 2022-06-27  Joel Brobecker  <brobecker@adacore.com>
2698             Jonathan Wakely  <jwakely@redhat.com>
2700         * testsuite/util/testsuite_fs.h (__gnu_test::nonexistent_path):
2701         Always include a counter in the filename returned.
2703 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2705         * include/bits/move_only_function.h (_Never_valueless_alt):
2706         Define partial specialization for std::move_only_function.
2708 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2710         * include/std/variant (_Build_FUN::_S_fun): Define fallback case
2711         as deleted.
2712         (__accepted_index, _Extra_visit_slot_needed): Replace class
2713         templates with variable templates.
2715 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2717         * include/bits/fs_path.h (__is_path_iter_src): Replace class
2718         template with variable template.
2720 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2722         * include/bits/chrono.h (is_clock_v): Define to false.
2723         (is_clock_v<T>): Define partial specialization for true cases.
2724         (is_clock): Define in terms of is_clock_v.
2726 2022-06-24  Xi Ruoyao  <xry111@xry111.site>
2728         * scripts/extract_symvers.in: Use grep -E instead of egrep.
2729         * scripts/run_doxygen: Likewise.
2731 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2733         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
2734         openat.
2735         * configure, config.h.in: Rebuilt.
2736         * src/filesystem/dir-common.h (openat): Use ::openat if
2737         _GLIBCXX_HAVE_OPENAT.
2738         * src/filesystem/dir.cc (dir_and_pathname): Use dirfd if
2739         _GLIBCXX_HAVE_OPENAT.
2741 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2743         * testsuite/27_io/filesystem/operations/rename.cc: xfail on
2744         rtems.
2745         * testsuite/experimental/filesystem/operations/rename.cc:
2746         Likewise.
2748 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2750         * testsuite/util/testsuite_fs.h (NO_LAST_WRITE_TIME): Define
2751         when appropriate.
2752         * testsuite/lib/libstdc++.exp
2753         (check_v3_target_fs_last_write_time): New.
2754         * testsuite/lib/dg-options.exp (dg-require-target-fs-lwt):
2755         New.
2756         * testsuite/27_io/filesystem/operations/last_write_time.cc:
2757         Skip the test if the features are unavailable.
2758         * testsuite/experimental/filesystem/operations/last_write_time.cc:
2759         Likewise.
2761 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2763         * testsuite/util/testsuite_fs.h (NO_SPACE): Define if
2764         appropriate.
2765         * testsuite/lib/libstdc++.exp (check_v3_target_fs_space): New.
2766         * testsuite/lib/dg-options.exp (dg-require-target-fs-space):
2767         New.
2768         * testsuite/27_io/filesystem/operations/space.cc: Require
2769         target-fs-space.
2770         * testsuite/experimental/filesystem/operations/space.cc:
2771         Likewise.
2773 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2775         * testsuite/util/testsuite_fs.h (NO_SYMLINKS): Define on
2776         mingw and when create_symlink is a dummy.
2777         * testsuite/27_io/filesystem/operations/symlink_status.cc:
2778         Drop mingw xfail.
2779         (test01, test02): Don't create symlinks when NO_SYMLINKS is
2780         defined.
2781         * testsuite/27_io/filesystem/operations/canonical.cc (test03):
2782         Likewise.
2783         * testsuite/27_io/filesystem/operations/copy.cc (test02):
2784         Likewise.
2785         * testsuite/27_io/filesystem/operations/create_directories.cc
2786         (test04): Likewise.
2787         * testsuite/27_io/filesystem/operations/create_directory.cc
2788         (test01): Likewise.
2789         * testsuite/27_io/filesystem/operations/permissions.cc
2790         (test03, test04): Likewise.
2791         * testsuite/27_io/filesystem/operations/remove.cc (test01):
2792         Likewise.
2793         * testsuite/27_io/filesystem/operations/remove_all.cc (test01):
2794         Likewise.
2795         * testsuite/27_io/filesystem/operations/rename.cc
2796         (test_symlinks): Likewise.
2797         * testsuite/27_io/filesystem/operations/weakly_canonical.cc
2798         (test01): Likewise.
2799         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
2800         (test06): Likewise.
2801         * testsuite/experimental/filesystem/operations/copy.cc
2802         (test01): Likewise.
2803         * testsuite/experimental/filesystem/operations/create_directories.cc
2804         (test04): Likewise.
2805         * testsuite/experimental/filesystem/operations/create_directory.cc
2806         (test01): Likewise.
2807         * testsuite/experimental/filesystem/operations/permissions.cc
2808         (test03, test04): Likewise.
2809         * testsuite/experimental/filesystem/operations/remove.cc
2810         (test01): Likewise.
2811         * testsuite/experimental/filesystem/operations/remove_all.cc
2812         (test01): Likewise.
2813         * testsuite/experimental/filesystem/operations/rename.cc
2814         (test01): Likewise.
2815         * testsuite/lib/libstdc++.exp
2816         (v3_check_preprocessor_condition): Add optional inc parameter.
2817         Add it to the test program after include bits/c++config.h.
2818         (check_v3_target_fs_symlinks): New.
2819         * testsuite/lib/dg-options.exp
2820         (dg-require-target-fs-symlinks): New.
2821         * testsuite/27_io/filesystem/operations/read_symlink.cc:
2822         Replace mingw xfail with require target-fs-symlinks.
2823         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2824         Likewise.
2826 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2828         * testsuite/27_io/filesystem/operations/copy.cc (test02):
2829         Select TO after creating FROM.
2830         (test03, test04): Likewise.
2831         * testsuite/experimental/filesystem/operations/copy.cc
2832         (test02, test03, test04): Likewise.
2834 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2836         * testsuite/30_threads/thread/native_handle/cancel.cc: Add an
2837         explicit cancellation point in case sleep_for lacks one.
2839 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2841         * testsuite/lib/dg-options.exp (add_options_for_net_ts): Add
2842         -lbsd for RTEMS targets.
2844 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
2846         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
2847         rmdir to remove directories.
2848         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
2849         Likewise.
2851 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
2853         * testsuite/26_numerics/random/random_device/entropy.cc: Use
2854         numeric_limits<unsigned>::digits.
2856 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2858         * libsupc++/eh_globals.cc [!_GLIBCXX_HAVE_TLS]
2859         (__eh_globals_init::~__eh_globals_init): Clear _S_init first.
2861 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2863         * testsuite/30_threads/this_thread/60421.cc (test02): Call
2864         sched_yield.
2866 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2868         * testsuite/20_util/to_chars/long_double.cc: Require cmath.
2870 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2872         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Work around
2873         global struct bitset.
2874         * testsuite/23_containers/bitset/ext/15361.cc: Likewise.
2875         * testsuite/23_containers/bitset/input/1.cc: Likewise.
2876         * testsuite/23_containers/bitset/to_string/1.cc: Likewise.
2877         * testsuite/23_containers/bitset/to_string/dr396.cc: Likewise.
2879 2022-06-17  Jonathan Wakely  <jwakely@redhat.com>
2881         * testsuite/21_strings/basic_string/cons/char/105995.cc: Add
2882         missing #include.
2884 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
2886         PR libstdc++/105995
2887         * include/bits/basic_string.h (_M_use_local_data): Initialize
2888         the entire SSO buffer.
2889         * testsuite/21_strings/basic_string/cons/char/105995.cc: New test.
2891 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
2893         PR libstdc++/101482
2894         * include/ext/vstring.h (operator==): Always check lengths
2895         before comparing.
2897 2022-06-15  François Dumont  <fdumont@gcc.gnu.org>
2899         PR libstdc++/105717
2900         * include/bits/hashtable_policy.h (_ConvertToValueType): New.
2901         * include/bits/hashtable.h (_Hashtable<>::_M_insert_unique_aux): New.
2902         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Use latters.
2903         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, false_type)): Likewise.
2904         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
2905         const allocator_type&, true_type)): Use this.insert range.
2906         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
2907         const allocator_type&, false_type)): Use _M_insert.
2908         * testsuite/23_containers/unordered_map/cons/56112.cc: Check how many times conversion
2909         is done.
2910         * testsuite/23_containers/unordered_map/insert/105717.cc: New test.
2911         * testsuite/23_containers/unordered_set/insert/105717.cc: New test.
2913 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2915         PR libstdc++/62187
2916         * include/bits/basic_string.h (operator==): Always compare
2917         lengths before checking string contents.
2918         [!__cpp_lib_three_way_comparison] (operator==, operator!=):
2919         Reorder arguments.
2921 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2923         PR libstdc++/59048
2924         * include/bits/basic_string.h (compare): Define inline.
2925         * include/bits/basic_string.tcc (compare): Remove out-of-line
2926         definitions.
2927         * include/bits/cow_string.h (compare): Define inline.
2928         * testsuite/21_strings/basic_string/operations/compare/char/3.cc:
2929         New test.
2931 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2933         * include/bits/new_allocator.h: Fix indentation.
2934         * include/ext/malloc_allocator.h: Likewise.
2936 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2938         PR libstdc++/105957
2939         * include/bits/allocator.h (allocator::allocate): Check for
2940         overflow in constexpr allocation.
2941         * testsuite/20_util/allocator/105975.cc: New test.
2943 2022-06-13  Mark Mentovai  <mark@mentovai.com>
2945         * include/experimental/bits/fs_path.h (__detail::__null_terminated):
2946         Rename to __nul_terminated to avoid colliding with a macro in
2947         Apple's SDK.
2949 2022-06-13  Jonathan Wakely  <jwakely@redhat.com>
2951         * include/std/atomic (__atomic_val_t): Use __type_identity_t
2952         instead of atomic<T>::value_type, as per LWG 3220.
2953         * testsuite/29_atomics/atomic/lwg3220.cc: New test.
2955 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2957         PR libstdc++/105844
2958         * include/experimental/numeric (experimental::gcd): Simplify
2959         assertions. Use __abs_r instead of __absu.
2960         (experimental::lcm): Likewise. Remove use of __detail::__lcm so
2961         overflow can be detected.
2962         * include/std/numeric (__detail::__absu): Rename to __abs_r and
2963         change to allow signed result type, so overflow can be detected.
2964         (__detail::__lcm): Remove.
2965         (gcd): Simplify assertions. Use __abs_r instead of __absu.
2966         (lcm): Likewise. Remove use of __detail::__lcm so overflow can
2967         be detected.
2968         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
2969         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
2970         * testsuite/26_numerics/gcd/105844.cc: New test.
2971         * testsuite/26_numerics/lcm/105844.cc: New test.
2973 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2975         PR libstdc++/105880
2976         * libsupc++/eh_globals.cc (eh_globals): Ensure constant init and
2977         prevent destruction during termination.
2978         (__eh_globals_init::_M_init): Replace with static member _S_init.
2979         (__cxxabiv1::__cxa_get_globals_fast): Update.
2980         (__cxxabiv1::__cxa_get_globals): Likewise.
2982 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2984         * include/bits/basic_string.h (__hash_str_base): New class
2985         template.
2986         (hash<basic_string<C, char_traits<C>, A>>): Define partial
2987         specialization for each of the standard character types.
2988         (hash<string>, hash<wstring>, hash<u8string>, hash<u16string>)
2989         (hash<u32string>): Remove explicit specializations.
2990         * include/std/string (__hash_string_base): Remove class
2991         template.
2992         (hash<pmr::string>, hash<pmr::wstring>, hash<pmr::u8string>)
2993         (hash<pmr::u16string>, hash<pmr::u32string>): Remove explicit
2994         specializations.
2995         * testsuite/21_strings/basic_string/hash/hash.cc: Test with
2996         custom allocators.
2997         * testsuite/21_strings/basic_string/hash/hash_char8_t.cc:
2998         Likewise.
3000 2022-05-27  Jonathan Wakely  <jwakely@redhat.com>
3002         PR libstdc++/105671
3003         * include/std/sstream (basic_stringbuf::_M_high_mark): Add
3004         always_inline attribute.
3006 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3008         PR libstdc++/105681
3009         * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp:
3010         Limit ga_sizes array to values that fit in size_t.
3011         * include/ext/random [__SIZE_WIDTH < 32] (sfmt86243)
3012         (sfmt86243_64, sfmt132049, sfmt132049_64, sfmt216091)
3013         (sfmt216091_64): Do not declare.
3015 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3017         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Make
3018         lookup for ios_errc and future_errc check versioned namespace.
3019         (StdAtomicPrinter): Strip versioned namespace from typename.
3021 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3023         * src/c++11/Makefile.am: Add new source file.
3024         * src/c++11/Makefile.in: Regenerate.
3025         * src/c++11/cxx11-ios_failure.cc (iostream_category):
3026         Move to ...
3027         * src/c++11/ios_errcat.cc: New file.
3028         * testsuite/27_io/ios_base/failure/error_code.cc: Check that
3029         std::iostream_category() is defined and used for std::io_errc.
3031 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3033         * include/bits/stl_iterator.h (counted_iterator::operator++(int)):
3034         Add 'constexpr' as per LWG 3643.
3035         * testsuite/24_iterators/counted_iterator/lwg3643.cc: New test.
3037 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3039         * include/bits/functional_hash.h (__is_fast_hash): Add doxygen
3040         comment.
3041         * include/bits/hashtable.h: Do not include <bits/stl_function.h>
3042         here.
3043         * include/bits/hashtable_policy.h: Include <bits/stl_pair.h> and
3044         <bits/functional_hash.h>.
3045         * include/bits/unordered_map.h: Include required headers.
3046         * include/bits/unordered_set.h: Likewise.
3047         * include/std/unordered_map: Do not include headers for indirect
3048         dependencies.
3049         * include/std/unordered_set: Likewise.
3051 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3053         * include/bits/ranges_algobase.h: Do not include
3054         <bits/stl_iterator_base_types.h>.
3055         * include/std/string: Likewise.
3056         * include/std/variant: Likewise.
3058 2022-05-26  Nathan Sidwell  <nathan@acm.org>
3060         * include/bits/hashtable.h: Include required headers.
3061         * include/bits/hashtable_policy.h: Likewise.
3062         * include/bits/stl_heap.h: Likewise.
3063         * include/bits/stl_iterator_base_funcs.h: Likewise.
3065 2022-05-26  François Dumont  <fdumont@gcc.gnu.org>
3067         * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
3068         Strip typename from version namespace.
3070 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3072         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Strip
3073         versioned namespace from the template argument too.
3075 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3077         * testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc:
3078         Moved to...
3079         * testsuite/21_strings/basic_string/modifiers/pop_back/char.cc:
3080         ...here.
3081         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc:
3082         Moved to...
3083         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t.cc:
3084         ...here.
3085         * testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc:
3086         Moved to...
3087         * testsuite/21_strings/basic_string/modifiers/swap/constexpr-wchar_t.cc:
3088         ...here.
3089         * testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc:
3090         Moved to...
3091         * testsuite/21_strings/basic_string/modifiers/swap/constexpr.cc:
3092         ...here.
3093         * testsuite/21_strings/basic_string/operations/contains/char/1.cc:
3094         Moved to...
3095         * testsuite/21_strings/basic_string/operations/contains/char.cc:
3096         ...here.
3097         * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc:
3098         Moved to...
3099         * testsuite/21_strings/basic_string/operations/contains/wchar_t.cc:
3100         ...here.
3101         * testsuite/21_strings/basic_string/operations/data/char/1.cc:
3102         Moved to...
3103         * testsuite/21_strings/basic_string/operations/data/char.cc:
3104         ...here.
3105         * testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc:
3106         Moved to...
3107         * testsuite/21_strings/basic_string/operations/data/wchar_t.cc:
3108         ...here.
3109         * testsuite/21_strings/basic_string/operations/ends_with/char/1.cc:
3110         Moved to...
3111         * testsuite/21_strings/basic_string/operations/ends_with/char.cc:
3112         ...here.
3113         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc:
3114         Moved to...
3115         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc:
3116         ...here.
3117         * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc:
3118         Moved to...
3119         * testsuite/21_strings/basic_string/operations/starts_with/char.cc:
3120         ...here.
3121         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc:
3122         Moved to...
3123         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc:
3124         ...here.
3125         * testsuite/21_strings/basic_string/operations/substr/char/1.cc:
3126         Moved to...
3127         * testsuite/21_strings/basic_string/operations/substr/char.cc:
3128         ...here.
3129         * testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc:
3130         Moved to...
3131         * testsuite/21_strings/basic_string/operations/substr/wchar_t.cc:
3132         ...here.
3133         * testsuite/21_strings/basic_string/range_access/char/1.cc:
3134         Moved to...
3135         * testsuite/21_strings/basic_string/range_access/char.cc:
3136         ...here.
3137         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
3138         Moved to...
3139         * testsuite/21_strings/basic_string/range_access/wchar_t.cc:
3140         ...here.
3141         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
3142         Moved to...
3143         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char.cc:
3144         ...here.
3145         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
3146         Moved to...
3147         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t.cc:
3148         ...here.
3149         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
3150         Moved to...
3151         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char.cc:
3152         ...here.
3153         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
3154         Moved to...
3155         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t.cc:
3156         ...here.
3157         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
3158         Moved to...
3159         * testsuite/21_strings/basic_string_view/modifiers/swap/char.cc:
3160         ...here.
3161         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
3162         Moved to...
3163         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t.cc:
3164         ...here.
3165         * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc:
3166         Moved to...
3167         * testsuite/21_strings/basic_string_view/operations/contains/char.cc:
3168         ...here.
3169         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc:
3170         Moved to...
3171         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t.cc:
3172         ...here.
3173         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
3174         Moved to...
3175         * testsuite/21_strings/basic_string_view/operations/data/char.cc:
3176         ...here.
3177         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
3178         Moved to...
3179         * testsuite/21_strings/basic_string_view/operations/data/wchar_t.cc:
3180         ...here.
3181         * testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc:
3182         Moved to...
3183         * testsuite/21_strings/basic_string_view/operations/ends_with/char.cc:
3184         ...here.
3185         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc:
3186         Moved to...
3187         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t.cc:
3188         ...here.
3189         * testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc:
3190         Moved to...
3191         * testsuite/21_strings/basic_string_view/operations/starts_with/char.cc:
3192         ...here.
3193         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc:
3194         Moved to...
3195         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t.cc:
3196         ...here.
3197         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
3198         Moved to...
3199         * testsuite/21_strings/basic_string_view/operations/substr/char.cc:
3200         ...here.
3201         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
3202         Moved to...
3203         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc:
3204         ...here.
3205         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
3206         Moved to...
3207         * testsuite/21_strings/basic_string_view/range_access/char.cc:
3208         ...here.
3209         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
3210         Moved to...
3211         * testsuite/21_strings/basic_string_view/range_access/wchar_t.cc:
3212         ...here.
3213         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
3214         Moved to...
3215         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char.cc:
3216         ...here.
3217         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
3218         Moved to...
3219         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t.cc:
3220         ...here.
3221         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
3222         Moved to...
3223         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t.cc:
3224         ...here.
3225         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
3226         Moved to...
3227         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t.cc:
3228         ...here.
3229         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc:
3230         Moved to...
3231         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/int.cc:
3232         ...here.
3233         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
3234         Moved to...
3235         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t.cc:
3236         ...here.
3237         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
3238         Moved to...
3239         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char.cc:
3240         ...here.
3241         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
3242         Moved to...
3243         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t.cc:
3244         ...here.
3245         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
3246         Moved to...
3247         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t.cc:
3248         ...here.
3249         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
3250         Moved to...
3251         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t.cc:
3252         ...here.
3253         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
3254         Moved to...
3255         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/int.cc:
3256         ...here.
3257         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
3258         Moved to...
3259         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t.cc:
3260         ...here.
3261         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc:
3262         Moved to...
3263         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char.cc:
3264         ...here.
3265         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc:
3266         Moved to...
3267         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t.cc:
3268         ...here.
3269         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc:
3270         Moved to...
3271         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t.cc:
3272         ...here.
3273         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc:
3274         Moved to...
3275         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t.cc:
3276         ...here.
3277         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc:
3278         Moved to...
3279         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short.cc:
3280         ...here.
3281         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc:
3282         Moved to...
3283         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t.cc:
3284         ...here.
3286 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3288         * testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc:
3289         Moved to...
3290         * testsuite/20_util/duration/requirements/explicit_instantiation.cc: ...here.
3291         * testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc:
3292         Moved to...
3293         * testsuite/20_util/time_point/requirements/explicit_instantiation.cc: ...here.
3294         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc:
3295         Moved to...
3296         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation.cc: ...here.
3298 2022-05-25  Jason Merrill  <jason@redhat.com>
3300         * testsuite/20_util/function_objects/constexpr_searcher.cc: Add
3301         constexpr.
3303 2022-05-20  Jonathan Wakely  <jwakely@redhat.com>
3305         * testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc:
3306         Run fewer iterations for simulator targets.
3307         * testsuite/26_numerics/random/binomial_distribution/operators/values.cc:
3308         Likewise.
3309         * testsuite/26_numerics/random/discrete_distribution/operators/values.cc:
3310         Likewise.
3311         * testsuite/26_numerics/random/geometric_distribution/operators/values.cc:
3312         Likewise.
3313         * testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc:
3314         Likewise.
3315         * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
3316         Likewise.
3317         * testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc:
3318         Likewise.
3320 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3322         * include/bits/char_traits.h: Only include <cstdint> when
3323         necessary.
3324         * include/std/stacktrace: Use __UINTPTR_TYPE__ instead of
3325         uintptr_t.
3326         * src/c++11/cow-stdexcept.cc: Include <stdint.h>.
3327         * src/c++17/floating_to_chars.cc: Likewise.
3328         * testsuite/20_util/assume_aligned/1.cc: Include <cstdint>.
3329         * testsuite/20_util/assume_aligned/3.cc: Likewise.
3330         * testsuite/20_util/shared_ptr/creation/array.cc: Likewise.
3332 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3334         * include/bits/basic_string.h: Do not include <ext/atomicity.h>
3335         here.
3336         * include/bits/cow_string.h: Include it here.
3338 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3340         * include/Makefile.am: Add new header.
3341         * include/Makefile.in: Regenerate.
3342         * include/bits/memory_resource.h: New file.
3343         * include/std/deque: Include <bits/memory_resource.h>.
3344         * include/std/forward_list: Likewise.
3345         * include/std/list: Likewise.
3346         * include/std/map: Likewise.
3347         * include/std/memory_resource (pmr::memory_resource): Move to
3348         new <bits/memory_resource.h> header.
3349         (pmr::polymorphic_allocator): Likewise.
3350         * include/std/regex: Likewise.
3351         * include/std/set: Likewise.
3352         * include/std/stacktrace: Likewise.
3353         * include/std/string: Likewise.
3354         * include/std/unordered_map: Likewise.
3355         * include/std/unordered_set: Likewise.
3356         * include/std/vector: Likewise.
3357         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
3358         Remove <memory_resource> header and check construction.
3359         * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
3360         * testsuite/23_containers/forward_list/pmr_typedefs.cc:
3361         Likewise.
3362         * testsuite/23_containers/list/pmr_typedefs.cc: Likewise.
3363         * testsuite/23_containers/map/pmr_typedefs.cc: Likewise.
3364         * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise.
3365         * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
3366         * testsuite/23_containers/set/pmr_typedefs.cc: Likewise.
3367         * testsuite/23_containers/unordered_map/pmr_typedefs.cc:
3368         Likewise.
3369         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
3370         Likewise.
3371         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
3372         Likewise.
3373         * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
3374         Likewise.
3375         * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
3376         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
3378 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3380         * include/std/memory_resource (polymorphic_allocator): Add
3381         non-template equality operator, as proposed for LWG 3683.
3382         * testsuite/20_util/polymorphic_allocator/lwg3683.cc: New test.
3384 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3386         * src/c++17/memory_resource.cc (set_default_resource): Use
3387         memory_order_acq_rel.
3388         (get_default_resource): Use memory_order_acquire.
3390 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3392         * include/std/memory_resource (new_delete_resource): Add
3393         nodiscard, returns_nonnull and const attributes.
3394         (null_memory_resource): Likewise.
3395         (set_default_resource, get_default_resource): Add returns_nonnull
3396         attribute.
3397         (memory_resource::is_equal): Add nodiscard attribute.
3398         (operator==, operator!=): Likewise.
3400 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3402         * include/bits/ios_base.h (io_category): Add const and nodiscard
3403         attributes.
3404         (make_error_code, make_error_condition): Add nodiscard.
3405         * include/std/future (future_category): Add const and nodiscard.
3406         (make_error_code, make_error_condition): Add nodiscard.
3407         * include/std/system_error (generic_category system_category):
3408         Add nodiscard. Replace _GLIBCXX_CONST with C++11 attribute.
3409         (error_code::value, error_code::category, error_code::operator bool)
3410         (error_condition::value, error_condition::category)
3411         (error_condition::operator bool, make_error_code)
3412         (make_error_condition, operator==, operator!=, operator<=>): Add
3413         nodiscard.
3415 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3417         * testsuite/20_util/expected/synopsis.cc: Skip for versioned
3418         namespace.
3419         * testsuite/27_io/headers/iosfwd/synopsis.cc: Likewise.
3421 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3423         * src/Makefile.am [ENABLE_SYMVERS_GNU_NAMESPACE] (cxx11_sources):
3424         Do not build the compatibility*-c++0x.cc objects.
3425         * src/Makefile.in: Regenerate.
3426         * src/c++11/compatibility-c++0x.cc [_GLIBCXX_INLINE_VERSION]:
3427         Refuse to build for the versioned namespace.
3428         * src/c++11/compatibility-chrono.cc: Likewise.
3429         * src/c++11/compatibility-condvar.cc: Likewise.
3430         * src/c++11/compatibility-thread-c++0x.cc: Likewise.
3431         * src/c++11/chrono.cc (system_clock, steady_clock):
3432         Use macros to define in inline namespace _V2, matching the
3433         declarations in <system_error>.
3434         * src/c++11/system_error.cc (system_category, generic_category):
3435         Likewise.
3437 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3439         * doc/xml/manual/prerequisites.xml: Fix attributes for external
3440         hyperlink.
3441         * doc/html/manual/setup.html: Regenerate.
3443 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3445         * doc/xml/manual/status_cxx2023.xml: Update with gcc-12 support.
3446         * doc/html/*: Regenerate.
3448 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3450         * doc/xml/manual/intro.xml: Include new chapter.
3451         * doc/xml/manual/status_cxx2020.xml: Tweak release numbers.
3452         * doc/xml/manual/status_cxx2023.xml: New file.
3453         * doc/html/*: Regenerate.
3455 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3457         * doc/html/manual/status.html: Regenerate.
3458         * doc/xml/manual/status_cxx2020.xml: Fix supported version for
3459         C++20 bit operations.
3461 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3463         * include/bits/std_thread.h (thread::_State, thread::_State_ptr):
3464         Declare as private unless _GLIBCXX_THREAD_IMPL is defined.
3465         * src/c++11/thread.cc (_GLIBCXX_THREAD_IMPL): Define.
3467 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3469         * include/std/future (launch): Make operators noexcept.
3471 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3473         * doc/doxygen/user.cfg.in (PREDEFINED): Replace __exception_ptr
3474         with "__unspecified__".
3475         * libsupc++/exception_ptr.h: Improve doxygen docs.
3476         (__exception_ptr::swap): Also declare in namespace std.
3478 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3480         * libsupc++/nested_exception.h (throw_with_nested) [C++17]: Use
3481         if-constexpr instead of tag dispatching.
3482         (rethrow_if_nested) [C++17]: Likewise.
3483         (rethrow_if_nested) [!__cpp_rtti]: Do not use dynamic_cast if it
3484         would require RTTI.
3485         * testsuite/18_support/nested_exception/rethrow_if_nested-term.cc:
3486         New test.
3488 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3490         * doc/doxygen/user.cfg.in (PREDEFINED): Define
3491         _GTHREAD_USE_MUTEX_TIMEDLOCK macro.
3492         * include/bits/std_mutex.h (mutex, lock_guard): Use @since and
3493         @headerfile.
3494         * include/bits/unique_lock.h (unique_lock): Likewise.
3495         * include/std/mutex (recursive_mutex, timed_mutex)
3496         (recursive_timed_mutex, scoped_lock): Likewise.
3498 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3500         * doc/doxygen/user.cfg.in (PREDEFINED): Define
3501         _GLIBCXX23_CONSTEXPR macro.
3502         * include/backward/auto_ptr.h (auto_ptr): Use @deprecated.
3503         * include/bits/unique_ptr.h (default_delete): Use @since and
3504         @headerfile.
3505         * include/std/scoped_allocator: Remove @ingroup from @file
3506         block.
3508 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3510         * include/bits/std_thread.h (thread, thread::id): Improve
3511         doxygen docs.
3512         * include/std/future: Likewise.
3513         * include/std/thread (jthread): Likewise.
3515 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3517         * include/bits/ostream_insert.h: Mark helper functions as
3518         undocumented by Doxygen.
3519         * include/bits/stl_algo.h: Use markdown for formatting and mark
3520         helper functions as undocumented.
3521         * include/bits/stl_numeric.h:  Likewise.
3522         * include/bits/stl_pair.h (pair): Add @headerfile.
3524 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3526         * doc/doxygen/user.cfg.in (PREDEFINED): Define __allocator_base
3527         so that Doxygen shows the right base-class for std::allocator.
3528         * include/bits/alloc_traits.h: Improve doxygen docs.
3529         * include/bits/allocator.h: Likewise.
3530         * include/bits/new_allocator.h: Likewise.
3531         * include/ext/new_allocator.h: Likewise.
3533 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3535         * doc/doxygen/user.cfg.in (PREDEFINED): Define macro
3536         _GLIBCXX_DOXYGEN_ONLY to expand its argument.
3537         * include/bits/c++config (_GLIBCXX_DOXYGEN_ONLY): Define.
3538         * include/bits/regex.h: Improve doxygen docs.
3539         * include/bits/regex_constants.h: Likewise.
3540         * include/bits/regex_error.h: Likewise.
3542 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3544         * include/std/atomic: Suppress doxygen docs for
3545         implementation details.
3546         * include/bits/atomic_base.h: Likewise.
3547         * include/bits/shared_ptr_atomic.h: Use markdown. Fix grouping
3548         so that std::atomic is not added to the pointer abstractions
3549         group.
3551 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3553         * include/std/system_error: Improve doxygen comments.
3555 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3557         * include/bits/ptr_traits.h: Add some doxygen comments.
3559 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3561         * doc/doxygen/user.cfg.in (PREDEFINED): Expand new macros to
3562         nothing.
3563         * include/bits/c++config (_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE)
3564         (_GLIBCXX_END_INLINE_ABI_NAMESPACE): Define new macros.
3565         * include/bits/algorithmfwd.h (_V2::__rotate): Use new macros
3566         for the namespace.
3567         * include/bits/chrono.h (chrono::_V2::system_clock): Likewise.
3568         * include/bits/stl_algo.h (_V2::__rotate): Likewise.
3569         * include/std/condition_variable (_V2::condition_variable_any):
3570         Likewise.
3571         * include/std/system_error (_V2::error_category): Likewise.
3573 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3575         * include/bits/mofunc_impl.h: Fix doxygen command.
3577 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3579         * doc/doxygen/user.cfg.in (GROUP_NESTED_COMPOUNDS): Set to NO.
3580         (CLASS_DIAGRAMS): Remove obsolete option.
3582 2022-05-12  Jonathan Wakely  <jwakely@redhat.com>
3584         * config/locale/dragonfly/numeric_members.cc: Remove whitespace.
3585         * config/locale/gnu/numeric_members.cc: Likewise.
3586         * include/bits/locale_facets_nonio.h: Likewise.
3587         * libsupc++/typeinfo: Likewise.
3589 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
3591         PR libstdc++/105284
3592         * include/std/iosfwd: Add declarations for <spanstream> class
3593         templates and typedefs.
3594         * include/std/spanstream (basic_spanbuf, basic_ispanstream)
3595         (basic_ospanstream, basic_spanstream): Remove default template
3596         arguments.
3597         * testsuite/27_io/headers/iosfwd/synopsis.cc: Add <spanstream>
3598         declarations.
3599         * testsuite/27_io/headers/iosfwd/types.cc: Check <spanstream>
3600         default arguments.
3602 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
3604         PR libstdc++/105284
3605         * include/std/iosfwd: Add declarations for <synstream> class
3606         templates and typedefs.
3607         * include/std/syncstream (basic_syncbuf, basic_osyncstream):
3608         Remove default template arguments.
3609         * testsuite/27_io/headers/iosfwd/synopsis.cc: New test.
3610         * testsuite/27_io/headers/iosfwd/types.cc: New test.
3612 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3614         * include/bits/random.tcc (operator==): Only check
3615         normal_distribution::_M_saved_available once.
3616         * testsuite/26_numerics/random/normal_distribution/operators/equal.cc:
3617         Check equality after state changes.
3618         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3619         lineno.
3621 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3623         PR libstdc++/105502
3624         * include/bits/random.tcc
3625         (operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
3626         Update state when __state_avail is false.
3627         * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
3628         Check that deserialized object equals serialized one.
3630 2022-05-06  Alexandre Oliva  <oliva@adacore.com>
3632         * include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX
3633         for double, long long, and 64-bit long intrinsic types.
3634         [__ALTIVEC__] (__intrinsic_type): Mention 128-bit in
3635         preexisting long double diagnostic, adjust no-VSX double
3636         diagnostic to cover 64-bit long double as well.
3638 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3640         PR libstdc++/104731
3641         * testsuite/27_io/filesystem/iterators/error_reporting.cc:
3642         Use a trailing char array as storage for dirent::d_name.
3644 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3646         * include/std/stacktrace: Do not include <cxxabi.h>.
3647         (__cxa_demangle): Declare.
3649 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3651         PR libstdc++/99871
3652         * include/bits/specfun.h: Use visibility attribute on namespace,
3653         instead of pragma push/pop.
3654         * libsupc++/compare: Likewise.
3655         * libsupc++/exception: Likewise.
3656         * libsupc++/exception.h: Likewise.
3657         * libsupc++/exception_ptr.h: Likewise.
3658         * libsupc++/initializer_list: Likewise.
3659         * libsupc++/nested_exception.h: Likewise.
3661 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3663         * doc/xml/manual/test.xml: Remove requirement for copyright and
3664         GPL notice in tests.
3665         * doc/html/manual/test.html: Regenerate.
3667 2022-05-05  Jonathan Wakely  <jwakely@redhat.com>
3669         * include/experimental/memory_resource [!__cpp_rtti]
3670         (__resource_adaptor_imp::do_is_equal): Do not use dynamic_cast
3671         when RTTI is disabled.
3672         * testsuite/17_intro/freestanding.cc: Require RTTI.
3673         * testsuite/18_support/exception/38732.cc: Likewise.
3674         * testsuite/18_support/exception_ptr/rethrow_exception.cc:
3675         Likewise.
3676         * testsuite/18_support/nested_exception/68139.cc: Likewise.
3677         * testsuite/18_support/nested_exception/rethrow_if_nested.cc:
3678         Likewise.
3679         * testsuite/18_support/type_info/103240.cc: Likewise.
3680         * testsuite/18_support/type_info/fundamental.cc: Likewise.
3681         * testsuite/18_support/type_info/hash_code.cc: Likewise.
3682         * testsuite/20_util/any/assign/emplace.cc: Likewise.
3683         * testsuite/20_util/any/cons/in_place.cc: Likewise.
3684         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
3685         * testsuite/20_util/any/observers/type.cc: Likewise.
3686         * testsuite/20_util/function/1.cc: Likewise.
3687         * testsuite/20_util/function/2.cc: Likewise.
3688         * testsuite/20_util/function/3.cc: Likewise.
3689         * testsuite/20_util/function/4.cc: Likewise.
3690         * testsuite/20_util/function/5.cc: Likewise.
3691         * testsuite/20_util/function/6.cc: Likewise.
3692         * testsuite/20_util/function/7.cc: Likewise.
3693         * testsuite/20_util/function/8.cc: Likewise.
3694         * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
3695         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
3696         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
3697         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
3698         Likewise.
3699         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
3700         * testsuite/20_util/typeindex/comparison_operators.cc: Likewise.
3701         * testsuite/20_util/typeindex/comparison_operators_c++20.cc:
3702         Likewise.
3703         * testsuite/20_util/typeindex/hash.cc: Likewise.
3704         * testsuite/20_util/typeindex/hash_code.cc: Likewise.
3705         * testsuite/20_util/typeindex/name.cc: Likewise.
3706         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
3707         * testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
3708         Likewise.
3709         * testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
3710         Likewise.
3711         * testsuite/22_locale/locale/13630.cc: Check type without using
3712         RTTI.
3713         * testsuite/23_containers/array/requirements/non_default_constructible.cc:
3714         Require RTTI.
3715         * testsuite/27_io/basic_ostream/emit/1.cc: Likewise.
3716         * testsuite/27_io/fpos/14320-1.cc: Check type without using RTTI.
3717         * testsuite/27_io/fpos/mbstate_t/12065.cc: Require RTTI.
3718         * testsuite/27_io/ios_base/failure/dual_abi.cc: Likewise.
3719         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
3720         * testsuite/experimental/any/observers/type.cc: Likewise.
3721         * testsuite/experimental/memory_resource/resource_adaptor.cc:
3722         Likewise.
3723         * testsuite/lib/libstdc++.exp (check_effective_target_rtti):
3724         Define new proc.
3725         * testsuite/tr1/3_function_objects/function/1.cc: Likewise.
3726         * testsuite/tr1/3_function_objects/function/2.cc: Likewise.
3727         * testsuite/tr1/3_function_objects/function/3.cc: Likewise.
3728         * testsuite/tr1/3_function_objects/function/4.cc: Likewise.
3729         * testsuite/tr1/3_function_objects/function/5.cc: Likewise.
3730         * testsuite/tr1/3_function_objects/function/6.cc: Likewise.
3731         * testsuite/tr1/3_function_objects/function/7.cc: Likewise.
3732         * testsuite/tr1/3_function_objects/function/8.cc: Likewise.
3733         * testsuite/tr2/bases/value.cc: Likewise.
3734         * testsuite/tr2/direct_bases/value.cc: Likewise.
3735         * testsuite/util/exception/safety.h [!__cpp_rtti]: Don't print
3736         types without RTTI.
3738 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
3740         PR libstdc++/104719
3741         * include/std/array (array::size(), array::max_size())
3742         (array::empty(), array::data()): Add  always_inline attribute.
3744 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
3746         PR libstdc++/104719
3747         * include/std/array (__array_traits::_S_ref): Remove.
3748         (__array_traits::_S_ptr): Remove.
3749         (__array_traits<T, 0>::_Type): Define operator[] and operator T*
3750         to provide an array-like API.
3751         (array::_AT_Type): Remove public typeef.
3752         (array::operator[], array::at, array::front, array::back): Use
3753         index operator to access _M_elems instead of _S_ref.
3754         (array::data): Use implicit conversion from _M_elems to pointer.
3755         (swap(array&, array&)): Use __enable_if_t helper.
3756         (get<I>): Use index operator to access _M_elems.
3757         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
3758         Adjust dg-error line numbers.
3760 2022-05-03  Alexandre Oliva  <oliva@adacore.com>
3762         PR c++/105324
3763         * testsuite/20_util/from_chars/pr105324.cc: Guard test body
3764         with conditional for floating-point overloads of from_char.
3766 2022-05-02  Patrick Palka  <ppalka@redhat.com>
3768         PR libstdc++/103911
3769         * src/c++17/floating_from_chars.cc (find_end_of_float): Accept
3770         two delimeters for the exponent part in the form of a possibly
3771         NULL string of length two.  Don't use std::tolower.
3772         (pattern): Adjust calls to find_end_of_float accordingly.
3774 2022-05-02  Patrick Palka  <ppalka@redhat.com>
3776         PR libstdc++/105441
3777         * src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
3778         Also accept 'P' as the start of the exponent.
3779         * testsuite/20_util/from_chars/7.cc: Add corresponding testcase.
3781 2022-04-29  Jonathan Wakely  <jwakely@redhat.com>
3783         PR libstdc++/105417
3784         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
3785         Regenerate.
3786         * src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]:
3787         Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I>
3788         symbols as aliases for corresponding symbols without abi-tag.
3790 2022-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3792         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
3793         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
3794         Likewise.
3795         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
3796         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
3797         Likewise.
3799 2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
3801         PR libstdc++/99290
3802         * src/c++17/fs_ops.cc (fs::copy): Pass error_code to
3803         directory_iterator constructor, and check on each iteration.
3804         * src/filesystem/ops.cc (fs::copy): Likewise.
3805         * testsuite/27_io/filesystem/operations/copy.cc: Check for
3806         errors during recursion.
3807         * testsuite/experimental/filesystem/operations/copy.cc:
3808         Likewise.
3810 2022-04-28  François Dumont  <fdumont@gcc.gnu.org>
3812         * config/abi/pre/gnu-versioned-namespace.ver: Remove
3813         std::random_device::* pattern.
3815 2022-04-27  Jakub Jelinek  <jakub@redhat.com>
3817         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3818         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3819         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3820         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3821         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3822         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
3823         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3824         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
3826 2022-04-27  Jonathan Wakely  <jwakely@redhat.com>
3828         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Add
3829         support for atomic<shared_ptr<T>> and atomic<weak_ptr<T>>.
3830         (StdAtomicPrinter): New printer.
3831         (build_libstdcxx_dictionary): Register new printer.
3832         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test std::atomic.
3833         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test atomic smart
3834         pointers.
3836 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
3838         * include/bits/shared_ptr_atomic.h (atomic<shared_ptr>): Add
3839         constructor for constant initialization from nullptr_t.
3840         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
3841         Check for new constructor.
3843 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
3845         * include/bits/fs_path.h (hash<filesystem::path>): Define.
3846         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
3847         Check std::hash specialization.
3849 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
3851         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define
3852         conditionally.
3853         * include/bits/unique_ptr.h (__cpp_lib_constexpr_memory):
3854         Define for C++23.
3855         (default_delete, default_delete<T[]>, __uniq_ptr_impl)
3856         (unique_ptr, unique_ptr<T[], D>): Add constexpr to all member
3857         functions.
3858         * include/std/version (__cpp_lib_constexpr_memory): Define new
3859         value for C++23.
3860         * testsuite/20_util/unique_ptr/assign/constexpr.cc: New test.
3861         * testsuite/20_util/unique_ptr/comparison/constexpr.cc: New test.
3862         * testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc: New test.
3863         * testsuite/20_util/unique_ptr/creation/constexpr.cc: New test.
3864         * testsuite/20_util/unique_ptr/modifiers/constexpr.cc: New test.
3865         * testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc:
3866         New test.
3868 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
3870         PR libstdc++/105375
3871         * include/std/future (packaged_task): Add deduction guides.
3872         * testsuite/30_threads/packaged_task/cons/deduction.cc: New test.
3874 2022-04-25  Philipp Fent  <fent@in.tum.de>
3876         * python/libstdcxx/v6/printers.py (StdSpanPrinter._iterator):
3877         Rename as iterator.
3878         (StdInitializerListPrinter): Define new printer.
3879         (build_libstdcxx_dictionary): Register new printer.
3880         * testsuite/libstdc++-prettyprinters/cxx11.cc: Check printer for
3881         initializer_list.
3883 2022-04-22  Thomas W Rodgers  <trodgers@redhat.com>
3885         PR libstdc++/102994
3886         * include/bits/atomic_base.h (atomic_flag::notify_one,
3887         notify_all): Remove const qualification.
3888         (__atomic_base::notify_one, notify_all): Likewise.
3889         * include/std/atomic (atomic<bool>::notify_one, notify_all):
3890         Likewise.
3891         (atomic::notify_one, notify_all): Likewise.
3892         (atomic<T*>::notify_one, notify_all): Likewise.
3893         (atomic_notify_one, atomic_notify_all): Likewise.
3894         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Adjust test
3895         to account for change in notify_one/notify_all signature.
3897 2022-04-21  Patrick Palka  <ppalka@redhat.com>
3899         * include/std/charconv (__from_chars_alnum_to_val_table):
3900         Simplify initialization of __lower/__upper_letters.
3901         (__from_chars_alnum_to_val): Default the template parameter to
3902         false.
3903         * src/c++17/floating_from_chars.cc (starts_with_ci): Don't
3904         assume the uppercase and lowercase letters are contiguous.
3905         (__floating_from_chars_hex): Likewise.
3907 2022-04-21  Patrick Palka  <ppalka@redhat.com>
3909         PR c++/105297
3910         PR c++/105322
3911         * include/std/charconv (__from_chars_alnum_to_val): Make
3912         initializer for __table dependent in an artificial way.
3914 2022-04-21  Jonathan Wakely  <jwakely@redhat.com>
3916         PR libstdc++/105324
3917         * src/c++17/floating_from_chars.cc (buffer_resource::do_allocate):
3918         Remove assertion.
3919         * testsuite/20_util/from_chars/pr105324.cc: New test.
3921 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
3923         * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
3924         Check correct feature test macro.
3926 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
3928         PR libstdc++/93602
3929         * doc/xml/manual/prerequisites.xml: Document libiconv
3930         workarounds.
3931         * doc/html/manual/setup.html: Regenerate.
3932         * src/Makefile.am (CXXLINK): Add $(LTLIBICONV).
3933         * src/Makefile.in: Regenerate.
3935 2022-04-19  Patrick Palka  <ppalka@redhat.com>
3937         * src/c++17/floating_to_chars.cc (_GLIBCXX_ASSERTIONS): Don't
3938         define.
3939         (__floating_to_chars_shortest): Add __builtin_unreachable calls to
3940         squelch false-positive -Wmaybe-uninitialized and -Wreturn-type
3941         warnings.
3942         (__floating_to_chars_precision): Likewise.
3944 2022-04-19  Philipp Fent  <fent@in.tum.de>
3946         * python/libstdcxx/v6/printers.py (StdSpanPrinter): Define.
3947         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test it.
3949 2022-04-19  Jonathan Wakely  <jwakely@redhat.com>
3951         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Fix shell operators.
3952         * configure: Regenerate.
3954 2022-04-18  Patrick Palka  <ppalka@redhat.com>
3956         * include/std/charconv (__from_chars_pow2_base): Manually
3957         unroll the first iteration of the main loop and simplify
3958         accordingly.
3960 2022-04-15  Patrick Palka  <ppalka@redhat.com>
3962         PR libstdc++/104858
3963         * include/bits/ranges_algo.h (__minmax_fn): Avoid dereferencing
3964         __first twice at the start.
3965         * testsuite/25_algorithms/minmax/constrained.cc (test06): New test.
3967 2022-04-15  Patrick Palka  <ppalka@redhat.com>
3969         * include/std/charconv (__from_chars_alnum_to_val_table): Define.
3970         (__from_chars_alnum_to_val): Define.
3971         (__from_chars_binary): Rename to ...
3972         (__from_chars_pow2_base): ... this.  Generalize to handle any
3973         power-of-two base using __from_chars_alnum_to_val.
3974         (__from_chars_digit): Optimize digit recognition to a single
3975         test instead of two tests.  Use [[__unlikely___]] attribute.
3976         (__from_chars_alpha_to_num): Remove.
3977         (__from_chars_alnum): Use __from_chars_alnum_to_val.  Use a
3978         nested loop for the overflow case.  Maintain a lower bound
3979         on the number of available bits in the result and use it to
3980         omit the overflow check.
3981         (from_chars): Adjust appropriately.
3982         * src/c++17/floating_from_chars.cc (ascii_to_hexit): Remove.
3983         (__floating_from_chars_hex): Use __from_chars_alnum_to_val
3984         to recognize a hex digit instead.
3986 2022-04-14  Palmer Dabbelt  <palmer@rivosinc.com>
3988         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Force auto to mutex
3989         for RISC-V.
3990         * configure: Regenerate.
3992 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
3994         * doc/xml/manual/intro.xml: Fix comment.
3996 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
3998         * include/precompiled/stdc++.h: Include <stacktrace> and
3999         <stdatomic.h> for C++23.
4001 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
4003         PR libstdc++/105269
4004         * include/bits/stl_vector.h (__cpp_lib_constexpr_vector):
4005         Define.
4006         * include/c_compatibility/stdatomic.h (__cpp_lib_stdatomic_h):
4007         Define.
4008         * include/std/optional (__cpp_lib_optional): Define new value
4009         for C++23.
4010         (__cpp_lib_monadic_optional): Remove.
4011         * include/std/version (__cpp_lib_constexpr_vector): Define.
4012         (__cpp_lib_stdatomic_h): Define.
4013         (__cpp_lib_optional): Define new value for C++23.
4014         (__cpp_lib_monadic_optional): Remove.
4015         * testsuite/20_util/optional/monadic/and_then.cc: Adjust.
4016         * testsuite/20_util/optional/requirements.cc: Adjust for C++23.
4017         * testsuite/20_util/optional/version.cc: Likewise.
4018         * testsuite/23_containers/vector/cons/constexpr.cc: Check
4019         feature test macro.
4020         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
4021         Likewise.
4022         * testsuite/20_util/optional/monadic/version.cc: Removed.
4023         * testsuite/23_containers/vector/requirements/version.cc: New test.
4024         * testsuite/29_atomics/headers/stdatomic.h/version.cc: New test.
4026 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
4028         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Check for mmap.
4029         * config.h.in: Regenerate.
4030         * configure: Regenerate.
4032 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
4034         * include/std/stacktrace (basic_stacktrace::current): Reallocate
4035         a smaller container if the unused capacity is larger than the
4036         used size.
4038 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
4040         * include/std/stacktrace (basic_stacktrace): Use _Impl::_M_clone
4041         or _Impl::_M_assign to initialize elements in allocated storage.
4042         (basic_stacktrace::_M_clear()): Use _Impl::_M_resize instead of
4043         _Impl::_M_destroy.
4044         (basic_stacktrace::_Impl::_M_destroy()): Replace with ...
4045         (basic_stacktrace::_Impl::_M_resize(size_type, allocator&)): New
4046         function.
4047         (basic_stacktrace::_Impl::_M_push_back): Use _M_xclone. Construct
4048         new element using allocator.
4049         (basic_stacktrace::_Impl::_M_clone): New function.
4050         (basic_stacktrace::_Impl::_M_xclone): New function.
4051         (basic_stacktrace::_Impl::_M_assign): New function.
4053 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
4055         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
4056         Use nothrow new instead of try block for std::allocator.
4057         (basic_stacktrace::_Impl::_M_deallocate): Use delete for
4058         std::allocator.
4060 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
4062         * include/std/stacktrace (basic_stacktrace::current): Replace
4063         calls to _M_reserve and _S_curr_cb with call to _M_prepare.
4064         Check return value of backtrace_simple when max depth given.
4065         (basic_stacktrace::_M_reserve): Remove.
4066         (basic_stacktrace::_S_curr_cb): Remove.
4067         (basic_stacktrace::_M_prepare(size_type)): New function to
4068         reserve initial capacity and return callback.
4069         (basic_stacktrace::_Impl::_M_allocate): Remove check for 0 < n
4070         and remove redundant zeroing of _M_frames and _M_capacity.
4071         (basic_stacktrace::_Impl::_M_push_back): Add [[unlikely]]
4072         attribute. Assign _Impl instead of swapping.
4073         * testsuite/19_diagnostics/stacktrace/current.cc: New test.
4075 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
4077         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
4078         Change [[unlikely]] attribute to [[likely]].
4080 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
4082         PR libstdc++/105031
4083         * include/std/stacktrace (basic_stacktrace::basic_stacktrace):
4084         Fix allocator usage in constructors.
4085         (basic_stacktrace::operator=(const basic_stacktrace&)): Do not
4086         try to reallocate using const allocator.
4087         (basic_stacktrace::operator=(basic_stacktrace&&)): Fix
4088         if-constexpr with non-constant condition. Do not allocate new
4089         storage if allocator propagates. Do not set _M_size if
4090         allocation fails.
4091         (basic_stacktrace::swap(basic_stacktrace&)): Fix typo. Add
4092         assertion that non-propagating allocators are equal.
4093         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: New test.
4095 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
4097         * include/std/stacktrace (basic_stacktrace::current): Duplicate
4098         implementation into each overload. Add noinline attribute and
4099         skip current frame.
4100         (basic_stacktrace::max_size()): Call _Impl::_S_max_size.
4101         (basic_stacktrace::_S_curr_cb()): New function defining lambda.
4102         (basic_stacktrace::_Impl::_S_max_size): New function defining
4103         maximum size in terms of allocator and size_type.
4104         (basic_stacktrace::_Impl::_M_allocate): Check against
4105         max_size().
4106         * testsuite/19_diagnostics/stacktrace/entry.cc: Call function
4107         for non-constexpr checks. Check line number is correct.
4109 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
4111         * testsuite/20_util/stacktrace/entry.cc: Moved to...
4112         * testsuite/19_diagnostics/stacktrace/entry.cc: ...here.
4113         * testsuite/20_util/stacktrace/synopsis.cc: Moved to...
4114         * testsuite/19_diagnostics/stacktrace/synopsis.cc: ...here.
4115         * testsuite/20_util/stacktrace/version.cc: Moved to...
4116         * testsuite/19_diagnostics/stacktrace/version.cc: ...here.
4118 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
4120         * include/experimental/bits/fs_path.h (path): Define special
4121         members after path::_Cmpt is complete.
4123 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
4125         PR libstdc++/105153
4126         * include/std/expected
4127         (expected<void,E>::expected(expected<U,G>&&)): Fix constraints.
4128         * testsuite/20_util/expected/cons.cc: Check constructor.
4130 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
4132         PR libstdc++/105154
4133         * include/std/expected (expected<void, E>::swap): Set
4134         _M_has_value to false for objects that previously had a value.
4135         * testsuite/20_util/expected/swap.cc: Fix test to check void
4136         specialization.
4138 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
4140         PR libstdc++/105146
4141         * include/std/expected (bad_expected_access): Move constructor
4142         parameter.
4143         * testsuite/20_util/expected/bad.cc: New test.
4145 2022-04-07  Hans-Peter Nilsson  <hp@axis.com>
4147         * testsuite/20_util/expected/requirements.cc: Correct minimal-size
4148         test.
4150 2022-04-02  Jakub Jelinek  <jakub@redhat.com>
4152         PR libstdc++/105128
4153         * include/std/source_location (std::source_location::__impl): Move
4154         definition before using __builtin_ret_type.
4156 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
4158         * include/std/utility (unreachable): Define for C++23.
4159         * include/std/version (__cpp_lib_unreachable): Define.
4160         * src/c++11/debug.cc (__glibcxx_assert_fail): Check for valid
4161         arguments. Handle only the function being given.
4162         * testsuite/20_util/unreachable/1.cc: New test.
4163         * testsuite/20_util/unreachable/version.cc: New test.
4165 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
4167         * include/experimental/bits/fs_fwd.h (copy_file): Remove
4168         incorrect noexcept from declaration.
4169         * include/experimental/bits/fs_path.h (path::begin, path::end):
4170         Add noexcept to declarations, to match definitions.
4172 2022-04-01  Timm Bäder  <tbaeder@redhat.com>
4174         * include/bits/fs_ops.h: Fix filename in Doxygen comment.
4175         * include/experimental/bits/fs_ops.h: Likewise.
4177 2022-03-31  Jonathan Wakely  <jwakely@redhat.com>
4179         * libsupc++/new_opa.cc (aligned_alloc): Add comment.
4181 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
4183         * testsuite/18_support/exception/38732.cc: Disable for C++23.
4184         * testsuite/18_support/headers/exception/synopsis.cc: Likewise.
4185         * testsuite/18_support/unexpected_handler.cc: Likewise.
4187 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
4189         * libsupc++/compare (_Strong_order) [!__cpp_using_enum]: Add
4190         static data members for _Fp_fmt enumerators.
4192 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
4194         * include/std/version (__cpp_lib_variant): Fix conditions to
4195         match <variant>.
4196         (__cpp_lib_expected): Fix condition to match <expected>.
4198 2022-03-28  Jonathan Wakely  <jwakely@redhat.com>
4200         * testsuite/20_util/optional/monadic/and_then.cc: Fix typo.
4201         * testsuite/20_util/optional/monadic/transform.cc: Likewise.
4202         * testsuite/22_locale/codecvt/always_noconv/char/1.cc: Likewise.
4203         * testsuite/22_locale/codecvt/encoding/char/1.cc: Likewise.
4204         * testsuite/22_locale/codecvt/in/char/1.cc: Likewise.
4205         * testsuite/22_locale/codecvt/max_length/char/1.cc: Likewise.
4206         * testsuite/22_locale/codecvt/out/char/1.cc: Likewise.
4207         * testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
4209 2022-03-27  Jonathan Wakely  <jwakely@redhat.com>
4211         * doc/doxygen/user.cfg.in: Add new header.
4212         * include/Makefile.am: Likewise.
4213         * include/Makefile.in: Regenerate.
4214         * include/precompiled/stdc++.h: Add new header.
4215         * include/std/version (__cpp_lib_expected): Define.
4216         * libsupc++/exception [__cplusplus > 202002] (unexpected)
4217         (unexpected_handler, set_unexpected): Do not declare for C++23.
4218         * include/std/expected: New file.
4219         * testsuite/20_util/expected/assign.cc: New test.
4220         * testsuite/20_util/expected/cons.cc: New test.
4221         * testsuite/20_util/expected/illformed_neg.cc: New test.
4222         * testsuite/20_util/expected/observers.cc: New test.
4223         * testsuite/20_util/expected/requirements.cc: New test.
4224         * testsuite/20_util/expected/swap.cc: New test.
4225         * testsuite/20_util/expected/synopsis.cc: New test.
4226         * testsuite/20_util/expected/unexpected.cc: New test.
4227         * testsuite/20_util/expected/version.cc: New test.
4229 2022-03-25  Jonathan Wakely  <jwakely@redhat.com>
4231         * include/std/bit (bit_cast, byteswap, endian): Add doxygen
4232         comments.
4234 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4236         PR libstdc++/105027
4237         * include/std/bit (bit_cast): Add constraints.
4238         * testsuite/26_numerics/bit/bit.cast/105027.cc: New test.
4240 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4242         * include/std/version [!_GLIBCXX_HOSTED]
4243         (__cpp_lib_hardware_interference_size): Define for freestanding.
4244         (__cpp_lib_bit_cast): Likewise.
4245         (__cpp_lib_is_layout_compatible): Likewise.
4246         (__cpp_lib_is_pointer_interconvertible): Likewise.
4247         (__cpp_lib_adaptor_iterator_pair_constructor): Do not define for
4248         freestanding.
4249         (__cpp_lib_invoke_r): Likewise.
4250         (__cpp_lib_ios_noreplace): Likewise.
4251         (__cpp_lib_monadic_optional): Likewise.
4252         (__cpp_lib_move_only_function): Likewise.
4253         (__cpp_lib_spanstream): Likewise.
4254         (__cpp_lib_stacktrace): Likewise.
4255         (__cpp_lib_string_contains): Likewise.
4256         (__cpp_lib_string_resize_and_overwrite): Likewise.
4257         (__cpp_lib_to_underlying): Likewise.
4259 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4261         PR libstdc++/105021
4262         * include/bits/atomic_base.h [!_GLIBCXX_HOSTED]: Do not include
4263         <bits/atomic_wait.h> for freestanding.
4265 2022-03-22  Hans-Peter Nilsson  <hp@axis.com>
4267         * testsuite/20_util/from_chars/6.cc (test01) [FE_DOWNWARD]:
4268         Conditionalize call to fesetround.
4270 2022-03-21  Jakub Jelinek  <jakub@redhat.com>
4272         PR libstdc++/104990
4273         * include/bits/locale_facets_nonio.tcc (get): Don't check if do_get
4274         isn't overloaded if __clang__ is defined.
4276 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
4278         PR libstdc++/104242
4279         * include/std/any (any(T&&)): Revert change to constraints.
4280         * testsuite/20_util/any/cons/104242.cc: New test.
4282 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
4284         PR libstdc++/92546
4285         * include/pstl/glue_algorithm_defs.h: Replace <functional> with
4286         <bits/stl_pair.h>.
4287         * include/pstl/utils.h: Replace <iterator> with <type_traits>.
4288         (__pstl::__internal::__except_handler): Use std::__terminate
4289         instead of std::terminate.
4290         * src/c++17/fs_path.cc: Include <array>.
4291         * testsuite/25_algorithms/adjacent_find/constexpr.cc: Include
4292         <functional>.
4293         * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
4294         * testsuite/25_algorithms/clamp/constrained.cc: Likewise.
4295         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
4296         * testsuite/25_algorithms/for_each/constrained.cc: Likewise.
4297         * testsuite/25_algorithms/includes/constrained.cc: Likewise.
4298         * testsuite/25_algorithms/is_heap/constexpr.cc: Likewise.
4299         * testsuite/25_algorithms/is_heap_until/constexpr.cc: Likewise.
4300         * testsuite/25_algorithms/is_permutation/constrained.cc: Include
4301         <iterator>.
4302         * testsuite/25_algorithms/is_sorted/constexpr.cc: Include
4303         <functional>.
4304         * testsuite/25_algorithms/is_sorted_until/constexpr.cc:
4305         Likewise.
4306         * testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
4307         Likewise.
4308         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
4309         Likewise.
4310         * testsuite/25_algorithms/lexicographical_compare_three_way/1.cc:
4311         Include <array>.
4312         * testsuite/25_algorithms/lower_bound/constexpr.cc: Include
4313         <functional>.
4314         * testsuite/25_algorithms/max/constrained.cc: Likewise.
4315         * testsuite/25_algorithms/max_element/constrained.cc: Likewise.
4316         * testsuite/25_algorithms/min/constrained.cc: Likewise.
4317         * testsuite/25_algorithms/min_element/constrained.cc: Likewise.
4318         * testsuite/25_algorithms/minmax_element/constrained.cc:
4319         Likewise.
4320         * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
4321         * testsuite/25_algorithms/move/93872.cc: Likewise.
4322         * testsuite/25_algorithms/move_backward/93872.cc: Include
4323         <iterator>.
4324         * testsuite/25_algorithms/nth_element/constexpr.cc: Include
4325         <functional>.
4326         * testsuite/25_algorithms/partial_sort/constexpr.cc: Likewise.
4327         * testsuite/25_algorithms/partial_sort_copy/constexpr.cc:
4328         Likewise.
4329         * testsuite/25_algorithms/search/constexpr.cc: Likewise.
4330         * testsuite/25_algorithms/search_n/constrained.cc: Likewise.
4331         * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
4332         * testsuite/25_algorithms/set_difference/constrained.cc:
4333         Likewise.
4334         * testsuite/25_algorithms/set_intersection/constexpr.cc:
4335         Likewise.
4336         * testsuite/25_algorithms/set_intersection/constrained.cc:
4337         Likewise.
4338         * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
4339         Likewise.
4340         * testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
4341         * testsuite/25_algorithms/set_union/constrained.cc: Likewise.
4342         * testsuite/25_algorithms/sort/constexpr.cc: Likewise.
4343         * testsuite/25_algorithms/sort_heap/constexpr.cc: Likewise.
4344         * testsuite/25_algorithms/transform/constrained.cc: Likewise.
4345         * testsuite/25_algorithms/unique/constexpr.cc: Likewise.
4346         * testsuite/25_algorithms/unique/constrained.cc: Likewise.
4347         * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
4348         * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
4349         * testsuite/std/ranges/adaptors/elements.cc: Include <vector>.
4350         * testsuite/std/ranges/adaptors/lazy_split.cc: Likewise.
4351         * testsuite/std/ranges/adaptors/split.cc: Likewise.
4353 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4355         PR libstdc++/92546
4356         * include/bits/fs_path.h (path::make_preferred): Use
4357         handwritten loop instead of std::replace.
4359 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4361         PR middle-end/104966
4362         * include/bits/locale_facets_nonio.tcc
4363         (__moneypunct_cache::_M_cache): Replace try-catch with RAII and
4364         make all string copies before any stores to *this.
4366 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4368         * testsuite/util/testsuite_character.h: Fix comment.
4370 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
4372         PR libstdc++/103407
4373         * config/abi/pre/gnu.ver: Make version for std::from_chars
4374         depend on HAVE_USELOCALE macro.
4375         * testsuite/util/testsuite_abi.cc (compare_symbols): Treat
4376         std::from_chars for floating-point types as undesignated if
4377         not found in the baseline symbols file.
4379 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
4381         * include/std/charconv (__cpp_lib_to_chars): Only define when
4382         both from_chars and to_chars are supported for floating-point
4383         types.
4384         (from_chars, to_chars): Adjust preprocessor conditions guarding
4385         declarations.
4386         * include/std/version (__cpp_lib_to_chars): Adjust condition to
4387         match <charconv> definition.
4388         * src/c++17/floating_from_chars.cc (from_chars_strtod): New
4389         function template.
4390         (from_chars): Simplify preprocessor checks and use
4391         from_chars_strtod when appropriate.
4393 2022-03-14  Jonathan Wakely  <jwakely@redhat.com>
4395         PR libstdc++/104875
4396         * src/c++11/codecvt.cc (read_utf8_code_point): Use char32_t to
4397         hold octets that will be left-shifted.
4399 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4401         PR libstdc++/104870
4402         * src/c++17/floating_from_chars.cc: Check __SIZE_WIDTH__ >= 32
4403         before using fast_float.
4405 2022-03-10  Detlef Vollmann  <dv@vollmann.ch>
4407         PR libstdc++/104866
4408         * include/bits/this_thread_sleep.h: Fix order of #endif and
4409         closing brace of namespace.
4411 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4413         * libsupc++/compare (_Strong_order::_S_fp_cmp) [__vax__]:
4414         Handle NaN.
4416 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4418         * libsupc++/compare (_Strong_ordering::_S_fp_cmp) [__vax__]: Use
4419         <=> comparison.
4421 2022-03-09  Patrick Palka  <ppalka@redhat.com>
4423         PR libstdc++/104859
4424         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
4425         Be explicit when narrowing the shifted effective_mantissa,
4426         since it may have an integer-class type.
4428 2022-03-08  Jonathan Wakely  <jwakely@redhat.com>
4430         * include/bits/uses_allocator_args.h: Remove incorrect copyright
4431         notice.
4433 2022-03-07  Jonathan Wakely  <jwakely@redhat.com>
4435         PR libstdc++/104807
4436         * include/bits/c++config (__terminate, __glibcxx_assert_fail):
4437         Replace _GLIBCXX_VISIBILITY on function with visibility pragma.
4438         (__is_constant_evaluated): Add visibility pragma.
4440 2022-03-07  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
4442         * config/locale/vxworks/ctype_members.cc: Remove <iostream>
4443           include.
4445 2022-03-05  Jonathan Wakely  <jwakely@redhat.com>
4447         * include/bits/c++config (__glibcxx_assert_fail): Add visibility
4448         attribute.
4449         (__terminate): Likewise.
4451 2022-03-04  Jonathan Wakely  <jwakely@redhat.com>
4453         * libsupc++/compare (strong_order::_S_fp_cmp): Move typedef
4454         inside #if condition.
4456 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4458         PR libstdc++/104748
4459         * testsuite/std/ranges/adaptors/all.cc: Use non-debug vector for
4460         constexpr test.
4462 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4464         * testsuite/17_intro/names.cc (func): Undef on AIX.
4466 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4468         PR libstdc++/96526
4469         * libsupc++/compare (strong_order): Add missing support for
4470         floating-point types.
4471         * testsuite/18_support/comparisons/algorithms/strong_order_floats.cc:
4472         New test.
4474 2022-03-01  Jonathan Wakely  <jwakely@redhat.com>
4476         PR middle-end/103984
4477         * include/bits/regex_compiler.h (_BracketMatcher::_M_char): Use
4478         default member initializer.
4480 2022-02-24  Jonathan Wakely  <jwakely@redhat.com>
4482         PR libstdc++/104602
4483         * include/std/source_location (source_location::current): Use
4484         deduced type of __builtin_source_location().
4486 2022-02-22  Patrick Palka  <ppalka@redhat.com>
4488         * include/bits/ranges_base.h (__detail::__is_initializer_list):
4489         Define.
4490         (viewable_range): Adjust as per P2415R2.
4491         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
4492         * include/std/ranges (owning_view): Define as per P2415R2.
4493         (enable_borrowed_range<owning_view>): Likewise.
4494         (views::__detail::__can_subrange): Replace with ...
4495         (views::__detail::__can_owning_view): ... this.
4496         (views::_All::_S_noexcept): Sync with operator().
4497         (views::_All::operator()): Use owning_view instead of subrange
4498         as per P2415R2.
4499         * include/std/version (__cpp_lib_ranges): Adjust value.
4500         * testsuite/std/ranges/adaptors/all.cc (test06): Adjust now that
4501         views::all uses owning_view instead of subrange.
4502         (test08): New test.
4503         * testsuite/std/ranges/adaptors/lazy_split.cc (test09): Adjust
4504         now that rvalue non-view non-borrowed ranges are viewable.
4505         * testsuite/std/ranges/adaptors/split.cc (test06): Likewise.
4507 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
4509         PR libstdc++/104559
4510         * doc/xml/manual/evolution.xml: Document deprecation.
4511         * doc/html/manual/api.html: Regenerate.
4512         * include/bits/stl_bvector.h (insert(const_iterator, const bool&)):
4513         Remove default argument.
4514         (insert(const_iterator)): New overload with deprecated attribute.
4515         * testsuite/23_containers/vector/bool/modifiers/insert/104559.cc:
4516         New test.
4518 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
4520         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Replace
4521         code that call cat->name() on std::error_category objects.
4522         Identify known categories by symbol name and use a hardcoded
4523         name. Print error code values as enumerators where appopriate.
4524         * testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected
4525         name of custom category. Check io_errc and future_errc errors.
4527 2022-02-15  Jonathan Wakely  <jwakely@redhat.com>
4529         PR libstdc++/104542
4530         * include/bits/uses_allocator_args.h (make_obj_using_allocator)
4531         (uninitialized_construct_using_allocator): Add constexpr.
4532         * testsuite/20_util/uses_allocator/make_obj.cc: Check constexpr.
4533         * testsuite/20_util/uses_allocator/uninitialized_construct.cc: New test.
4535 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4537         PR libstdc++/100912
4538         * config/locale/gnu/c_locale.h (__convert_from_v): Use inline
4539         namespace for IEEE128 long double mode.
4540         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Add new symbol
4541         version and export __gnu_cxx_ieee128::__convert_from_v.
4542         * include/bits/locale_facets_nonio.tcc (money_put::__do_put):
4543         Make __ibm128 overload use snprintf directly
4544         * testsuite/util/testsuite_abi.cc: Add new symbol version.
4545         Remove stable IEEE128/LDBL versions.
4547 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4549         PR libstdc++/103891
4550         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
4551         Remove.
4552         * include/std/variant: Check feature test macros instead.
4553         * include/std/version: Likewise.
4555 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4557         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
4558         Fix typo.
4560 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4562         * src/c++17/floating_to_chars.cc (FLOAT128_TO_CHARS): Depend on
4563         LONG_DOUBLE_ALT128_COMPAT instead of USE_FLOAT128.
4565 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
4567         * testsuite/20_util/temporary_buffer.cc: Fix dg-warning target
4568         selector.
4570 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
4572         * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
4573         Ignore -Walloc-larger-than warning.
4574         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
4575         Likewise.
4576         * testsuite/29_atomics/atomic/cons/user_pod.cc: Compile with -O1
4577         to avoid linker error for __atomic_is_lock_free.
4579 2022-02-10  Thomas Rodgers  <rodgert@appliantology.com>
4581         * include/bits/atomic_wait.h (__waiter_base::_S_do_spin,
4582         __waiter_base::_S_do_spin_v): Change memory order from relaxed
4583         to acquire.
4585 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
4587         * include/c_compatibility/stdatomic.h (atomic_fetch_xor): Add
4588         using-declaration.
4589         (atomic_fetch_xor_explicit): Likewise.
4590         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Check
4591         arithmetic and logical operations for atomic_int.
4593 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
4595         * src/filesystem/dir-common.h (_GLIBCXX_HAVE_DIRFD): Undefine
4596         when <dirent.h> is not available.
4597         (_GLIBCXX_HAVE_UNLINKAT):  Likewise.
4599 2022-02-09  Thomas Rodgers  <rodgert@appliantology.com>
4601         PR libstdc++/104442
4602         * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): Move spin
4603          loop inside do loop so that threads failing the wait, reload
4604          _M_ver.
4606 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4608         * src/c++17/fs_dir.cc (_Dir(DIR*, const path&)): Change first
4609         parameter to _Dir_base&&.
4610         * src/filesystem/dir-common.h (_Dir_base(DIR*)): Remove.
4611         * src/filesystem/dir.cc (_Dir(DIR*, const path&)): Change first
4612         parameter to _Dir_base&&.
4614 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4616         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Add comment about
4617         checking for CAS on correct word size.
4619 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4621         * testsuite/experimental/filesystem/operations/create_directories.cc:
4622         Adjust expected results for Windows.
4624 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4626         PR libstdc++/104161
4627         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::__erase):
4628         [i_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Refresh entry._M_type member,
4629         instead of checking for errno values indicating a directory.
4630         * src/c++17/fs_ops.cc (fs::remove_all(const path&)): Use similar
4631         logic to non-throwing overload.
4632         (fs::remove_all(const path&, error_code&)): Add comments.
4633         * src/filesystem/ops-common.h: Likewise.
4635 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4637         * src/filesystem/dir-common.h (_Dir_base::openat): Change return
4638         type to use portable posix::DIR alias.
4640 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4642         * include/c_compatibility/stdatomic.h [__clang__]: Use
4643         #include_next <stdatomic.h>.
4645 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4647         * include/experimental/bits/fs_ops.h (fs::copy_file): Remove
4648         noexcept.
4649         (fs::create_directories): Likewise.
4650         (fs::remove_all): Likewise.
4651         * src/filesystem/ops.cc (fs::copy_file): Remove noexcept.
4652         (fs::create_directories): Likewise.
4653         (fs::remove_all): Likewise.
4655 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4657         PR libstdc++/104161
4658         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for dirfd
4659         and unlinkat.
4660         * config.h.in: Regenerate.
4661         * configure: Regenerate.
4662         * include/bits/fs_dir.h (recursive_directory_iterator): Declare
4663         remove_all overloads as friends.
4664         (recursive_directory_iterator::__erase): Declare new member
4665         function.
4666         * include/bits/fs_fwd.h (remove, remove_all): Declare.
4667         * src/c++17/fs_dir.cc (_Dir): Add filename_only parameter to
4668         constructor. Pass file descriptor argument to base constructor.
4669         (_Dir::dir_and_pathname, _Dir::open_subdir, _Dir::do_unlink)
4670         (_Dir::unlink, _Dir::rmdir): Define new member functions.
4671         (directory_iterator): Pass filename_only argument to _Dir
4672         constructor.
4673         (recursive_directory_iterator::_Dir_stack): Adjust constructor
4674         parameters to take a _Dir rvalue instead of creating one.
4675         (_Dir_stack::orig): Add data member for storing original path.
4676         (_Dir_stack::report_error): Define new member function.
4677         (__directory_iterator_nofollow): Move here from dir-common.h and
4678         fix value to be a power of two.
4679         (__directory_iterator_filename_only): Define new constant.
4680         (recursive_directory_iterator): Construct _Dir object and move
4681         into _M_dirs stack. Pass skip_permission_denied argument to first
4682         advance call.
4683         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
4684         (recursive_directory_iterator::__erase): Define new member
4685         function.
4686         * src/c++17/fs_ops.cc (ErrorReporter, do_remove_all): Remove.
4687         (fs::remove_all): Use new recursive_directory_iterator::__erase
4688         member function.
4689         * src/filesystem/dir-common.h (_Dir_base): Add int parameter to
4690         constructor and use openat to implement nofollow semantics.
4691         (_Dir_base::fdcwd, _Dir_base::set_close_on_exec, _Dir_base::openat):
4692         Define new member functions.
4693         (__directory_iterator_nofollow): Move to fs_dir.cc.
4694         * src/filesystem/dir.cc (_Dir): Pass file descriptor argument to
4695         base constructor.
4696         (_Dir::dir_and_pathname, _Dir::open_subdir): Define new member
4697         functions.
4698         (recursive_directory_iterator::_Dir_stack): Adjust constructor
4699         parameters to take a _Dir rvalue instead of creating one.
4700         (recursive_directory_iterator): Check for new nofollow option.
4701         Construct _Dir object and move into _M_dirs stack. Pass
4702         skip_permission_denied argument to first advance call.
4703         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
4704         * src/filesystem/ops.cc (fs::remove_all): Use C++17 remove_all.
4706 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4708         * include/bits/allocator.h: Qualify std::allocator_traits in
4709         deprecated warnings.
4710         * libsupc++/exception (uncaught_exception): Add suggestion to
4711         deprecated warning.
4713 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4715         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::pop):
4716         Add [[maybe_unused]] attribute.
4717         * src/filesystem/dir.cc (fs::recursive_directory_iterator::pop):
4718         Likewise.
4720 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4722         * testsuite/23_containers/multiset/operators/cmp_c++20.cc: Use
4723         custom comparison function for multiset.
4724         * testsuite/23_containers/set/operators/cmp_c++20.cc: Use custom
4725         comparison function for set.
4727 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4729         * include/bits/boost_concept_check.h (_OutputIteratorConcept):
4730         Change member function to data member of function pointer type.
4732 2022-02-02  Martin Sebor  <msebor@redhat.com>
4734         PR libstdc++/101831
4735         * include/std/array (begin): Declare const member function attribute
4736         const.
4737         (end, rbegin, rend, size, max_size, empty, data): Same.
4738         * testsuite/23_containers/array/capacity/empty.cc: Add test cases.
4739         * testsuite/23_containers/array/capacity/max_size.cc: Same.
4740         * testsuite/23_containers/array/capacity/size.cc: Same.
4741         * testsuite/23_containers/array/iterators/begin_end.cc: New test.
4743 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4745         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
4746         autoconf macro to check whether d_type is present.
4747         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
4748         Likewise.
4750 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4752         * testsuite/27_io/filesystem/iterators/97731.cc: New test.
4753         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
4754         Check follow_directory_symlink option.
4755         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
4756         Likewise.
4758 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4760         * src/c++17/fs_dir.cc (recursive_directory_iterator::increment):
4761         Reset state to past-the-end iterator on error.
4762         (fs::recursive_directory_iterator::pop(error_code&)): Likewise.
4763         (fs::recursive_directory_iterator::pop()): Check _M_dirs before
4764         it might get reset.
4765         * src/filesystem/dir.cc (recursive_directory_iterator): Likewise,
4766         for the TS implementation.
4767         * testsuite/27_io/filesystem/iterators/error_reporting.cc: New test.
4768         * testsuite/experimental/filesystem/iterators/error_reporting.cc: New test.
4770 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4772         * include/bits/fs_fwd.h (filesystem::perms): Fix comment.
4774 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4776         PR libstdc++/104301
4777         * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Print different messages
4778         for stdio_pure and stdio_posix options.
4779         * configure: Regenerate.
4781 2022-02-01  Thomas Rodgers  <rodgert@appliantology.com>
4783         * include/bits/atomic_wait.h: Change memory order from
4784         Acquire/Release with relaxed loads to SeqCst+Release for
4785         accesses to the waiter's count.
4787 2022-01-31  Martin Liska  <mliska@suse.cz>
4789         * acinclude.m4: Detect *_ld_is_mold and use it.
4790         * configure: Regenerate.
4792 2022-01-30  Hans-Peter Nilsson  <hp@axis.com>
4794         * testsuite/27_io/basic_istream/get/char/lwg3464.cc: Don't run on
4795         simulator targets.
4796         * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: Likewise.
4798 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
4800         PR libstdc++/100516
4801         * include/bits/deque.tcc (_M_range_initialize<ForwardIterator>):
4802         Add __builtin_unreachable to loop.
4803         * testsuite/23_containers/deque/100516.cc: New test.
4805 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
4807         * include/bits/ranges_base.h (ranges::advance): Avoid signed
4808         overflow. Do nothing if already equal to desired result.
4809         * testsuite/24_iterators/range_operations/advance_overflow.cc:
4810         New test.
4812 2022-01-27  Martin Liska  <mliska@suse.cz>
4814         PR libstdc++/104259
4815         * acinclude.m4: Fix typo.
4816         * configure: Regenerate.
4818 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4820         PR libstdc++/104019
4821         * include/bits/istream.tcc (basic_istream::sentry): Add braces
4822         around try-block.
4823         * include/bits/shared_ptr_base.h (_Sp_counted_array_base::_M_init):
4824         Add pragmas to disable bogus warnings from PR 61596.
4826 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4828         PR libstdc++/104217
4829         * src/c++17/fs_ops.cc (_GNU_SOURCE): Define.
4830         * src/filesystem/dir.cc (_GNU_SOURCE): Define.
4831         * src/filesystem/ops.cc (_GNU_SOURCE): Define.
4833 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4835         PR libstdc++/104161
4836         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
4837         fdopendir.
4838         * config.h.in: Regenerate.
4839         * configure: Regenerate.
4840         * src/c++17/fs_dir.cc (_Dir): Add nofollow flag to constructor
4841         and pass it to base class constructor.
4842         (directory_iterator): Pass nofollow flag to _Dir constructor.
4843         (fs::recursive_directory_iterator::increment): Likewise.
4844         * src/c++17/fs_ops.cc (do_remove_all): Use nofollow option for
4845         directory_iterator constructor. Move error check outside loop.
4846         * src/filesystem/dir-common.h (_Dir_base): Add nofollow flag to
4847         constructor and when it's set use ::open with O_NOFOLLOW and
4848         O_DIRECTORY.
4849         * src/filesystem/dir.cc (_Dir): Add nofollow flag to constructor
4850         and pass it to base class constructor.
4851         (directory_iterator): Pass nofollow flag to _Dir constructor.
4852         (fs::recursive_directory_iterator::increment): Likewise.
4853         * src/filesystem/ops.cc (remove_all): Use nofollow option for
4854         directory_iterator constructor. Move error check outside loop.
4856 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4858         PR libstdc++/104032
4859         * include/std/spanstream (basic_spanbuf(basic_spanbuf&&)): Use
4860         mem-initializer for _M_buf.
4861         (basic_spanbuf::Operator=(basic_spanbuf&&)): Fix ill-formed
4862         member access.
4863         * testsuite/27_io/spanstream/2.cc: New test.
4865 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4867         * src/c++17/floating_from_chars.cc (USE_STRTOD_FOR_FROM_CHARS):
4868         Define macro for case where std::from_chars is implemented in
4869         terms of strtod, strtof or strtold.
4870         (buffer_resource, valid_fmt, find_end_of_float, pattern)
4871         (from_chars_impl, make_result, reserve_string): Do not define
4872         unless USE_STRTOD_FOR_FROM_CHARS is defined.
4873         (from_chars): Define when at least one of USE_LIB_FAST_FLOAT and
4874         USE_STRTOD_FOR_FROM_CHARS is defined, instead of
4875         _GLIBCXX_HAVE_USELOCALE. Use fast_float for long double when it
4876         is binary64.
4878 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4880         PR libstdc++/104174
4881         * include/bits/hashtable_policy.h (_Map_base): Add partial
4882         specialization for maps with const key types.
4883         * testsuite/23_containers/unordered_map/104174.cc: New test.
4885 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4887         PR libstdc++/104019
4888         * include/bits/shared_ptr_base.h (_Sp_counted_base<>::_M_release):
4889         Set members to zero without type punning.
4891 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4893         * testsuite/20_util/shared_ptr/cons/array.cc: Fix comment.
4895 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4897         PR libstdc++/87193
4898         PR libstdc++/104019
4899         * include/bits/alloc_traits.h (__cpp_lib_allocator_traits_is_always_equal):
4900         Define as type long.
4901         * include/bits/allocator.h (__cpp_lib_incomplete_container_elements):
4902         Likewise.
4903         * include/bits/basic_string.h (__cpp_lib_string_udls): Likewise.
4904         * include/bits/chrono.h (__cpp_lib_chrono): Likewise.
4905         (__cpp_lib_chrono_udls): Likewise.
4906         * include/bits/move.h (__cpp_lib_addressof_constexpr): Likewise.
4907         * include/bits/node_handle.h (__cpp_lib_node_extract): Likewise.
4908         * include/bits/range_access.h (__cpp_lib_nonmember_container_access):
4909         Likewise.
4910         * include/bits/shared_ptr.h (__cpp_lib_enable_shared_from_this):
4911         Likewise.
4912         * include/bits/stl_algo.h (__cpp_lib_clamp): Likewise.
4913         (__cpp_lib_sample): Likewise.
4914         * include/bits/stl_algobase.h (__cpp_lib_robust_nonmodifying_seq_ops):
4915         Likewise.
4916         * include/bits/stl_function.h (__cpp_lib_transparent_operators):
4917         Likewise.
4918         * include/bits/stl_iterator.h (__cpp_lib_make_reverse_iterator):
4919         Likewise.
4920         * include/bits/stl_map.h (__cpp_lib_map_try_emplace):
4921         Likewise.
4922         * include/bits/stl_tree.h (__cpp_lib_generic_associative_lookup):
4923         Likewise.
4924         * include/bits/unique_ptr.h (__cpp_lib_make_unique):
4925         Likewise.
4926         * include/bits/unordered_map.h (__cpp_lib_unordered_map_try_emplace):
4927         Likewise.
4928         * include/c_global/cmath (__cpp_lib_hypot): Likewise.
4929         * include/c_global/cstddef (__cpp_lib_byte): Likewise.
4930         * include/std/atomic (__cpp_lib_atomic_is_always_lock_free):
4931         Likewise.
4932         * include/std/complex (__cpp_lib_complex_udls): Likewise.
4933         * include/std/filesystem (__cpp_lib_filesystem): Likewise.
4934         * include/std/functional (__cpp_lib_not_fn): Likewise.
4935         (__cpp_lib_boyer_moore_searcher): Likewise.
4936         * include/std/iomanip (__cpp_lib_quoted_string_io): Likewise.
4937         * include/std/mutex (__cpp_lib_scoped_lock): Likewise.
4938         * include/std/numeric (__cpp_lib_gcd_lcm): Likewise.
4939         (__cpp_lib_gcd, __cpp_lib_lcm): Likewise.
4940         * include/std/tuple (__cpp_lib_apply): Likewise.
4941         (__cpp_lib_make_from_tuple): Likewise.
4942         * include/std/type_traits (__cpp_lib_integral_constant_callable)
4943         (__cpp_lib_bool_constant, __cpp_lib_logical_traits)
4944         (__cpp_lib_is_null_pointer, __cpp_lib_transformation_trait_aliases)
4945         (__cpp_lib_result_of_sfinae, __cpp_lib_void_t)
4946         (__cpp_lib_is_swappable, __cpp_lib_is_invocable)
4947         (__cpp_lib_has_unique_object_representations)
4948         (__cpp_lib_is_aggregate): Likewise.
4949         * include/std/version: Likewise.
4950         * libsupc++/new (__cpp_lib_launder): Likewise.
4952 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4954         * include/std/version (__cpp_lib_shared_ptr_arrays): Fix
4955         condition for C++17 definition.
4957 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4959         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count):
4960         Add constexpr.
4961         (_Sp_atomic::_M_ptr): Add default member-initializer.
4962         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
4963         Check constant initialization.
4964         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: Likewise.
4966 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
4968         * src/c++11/cxx11-ios_failure.cc (__constinit): Define as
4969         equivalent attribute for Clang.
4970         * src/c++11/future.cc (__constinit): Likewise.
4971         * src/c++11/system_error.cc (__constinit): Likewise.
4972         * src/c++17/memory_resource.cc (__constinit): Likewise.
4974 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
4976         * scripts/testsuite_flags.in: Only add src/filesystem/.libs and
4977         src/libbacktrace/.libs to LDFLAGS if those directories exist.
4979 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4981         * configure.ac (GLIBCXX_ENABLE_DEBUG_FLAGS): Remove -gdwarf-4
4982         from default flags.
4983         * configure: Regenerate.
4985 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4987         PR libstdc++/104123
4988         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Include
4989         <stddef.h>.
4991 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4993         * scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
4994         linker search paths.
4995         * src/Makefile.am: Fix src/debug/libbacktrace build.
4996         * src/Makefile.in: Regenerate.
4997         * src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
4998         variable. Use symlinks for the source files.
4999         * src/libbacktrace/Makefile.in: Regenerate.
5001 2022-01-19  Matthias Kretz  <m.kretz@gsi.de>
5003         * include/experimental/bits/simd.h (__floating_point_flags): Do
5004         not rely on math_errhandling to expand to a constant expression.
5006 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
5008         * doc/xml/manual/evolution.xml: Document deprecations.
5009         * doc/xml/manual/status_cxx2017.xml: Update status.
5010         * doc/html/*: Regenerate.
5012 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
5014         * include/bits/stl_tempbuf.h (get_temporary_buffer): Change
5015         _GLIBCXX14_DEPRECATED to _GLIBCXX17_DEPRECATED.
5017 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
5019         * include/bits/stl_pair.h (_PCC::_DeprConsPair): Remove unused
5020         function.
5022 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
5024         PR libstdc++/104101
5025         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count::lock):
5026         Only use __thread_relax if __cpp_lib_atomic_wait is defined.
5028 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5030         PR libstdc++/104099
5031         * include/bits/basic_string.h (basic_string(nullptr_t)): Only
5032         define for C++23.
5033         (operator=(nullptr_t)): Likewise.
5034         * include/bits/cow_string.h: Likewise.
5035         * include/std/string_view (basic_string_view(nullptr_t)):
5036         Likewise.
5037         * testsuite/21_strings/basic_string/cons/char/nullptr.cc: Adjust
5038         expected error. Add examples that become ill-formed in C++23.
5039         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
5040         Adjust expected errors.
5041         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
5042         Likewise.
5044 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5046         PR libstdc++/104098
5047         * include/bits/stl_iterator.h (reverse_iterator): Check
5048         __cpp_lib_concepts instead of __cplusplus.
5050 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5052         PR libstdc++/101124
5053         * include/bits/stl_pair.h (pair): Adjust constraints on
5054         deprecated constructors accepting literal zero as null pointer
5055         constant. Improve wording of deprecated attribute.
5056         * testsuite/20_util/pair/cons/99957.cc: Check that deprecated
5057         constructors do not cause ambiguities for copyable types.
5059 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5061         * include/bits/stl_function.h (ptr_fun): Fix suggestion for
5062         non-deprecated alternative.
5064 2022-01-18  Tom Honermann  <tom@honermann.net>
5066         * acinclude.m4: Define config macros if uchar.h provides
5067         c8rtomb() and mbrtoc8().
5068         * config.h.in: Regenerate.
5069         * configure: Regenerate.
5070         * include/c_compatibility/uchar.h (c8rtomb, mbrtoc8): Define.
5071         * include/c_global/cuchar (c8rtomb, mbrtoc8): Likewise.
5072         * include/c_std/cuchar (c8rtomb, mbrtoc8): Likewise.
5073         * testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc:
5074         New test.
5075         * testsuite/21_strings/headers/cuchar/functions_std_fchar8_t.cc:
5076         New test.
5078 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5080         * include/Makefile.am: Install new header.
5081         * include/Makefile.in: Regenerate.
5082         * include/c_compatibility/stdatomic.h: New file.
5083         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: New test.
5085 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5087         PR libstdc++/104080
5088         * src/c++17/fast_float/LOCAL_PATCHES: Update.
5089         * src/c++17/fast_float/fast_float.h (FASTFLOAT_IS_BIG_ENDIAN):
5090         Define in terms of __BYTE_ORDER__.
5092 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5094         PR libstdc++/104080
5095         * src/c++17/fast_float/LOCAL_PATCHES: UPDATE.
5096         * src/c++17/fast_float/fast_float.h (round): Use explicit
5097         template argument list for std::min.
5099 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5101         * doc/xml/manual/status_cxx2017.xml: Update C++17 status.
5102         * doc/xml/manual/status_cxx2020.xml: Use 12.1 instead of 12 for
5103         upcoming release.
5104         * doc/html/manual/status.html: Regenerate.
5106 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
5108         * acinclude.m4 (GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING): Improve
5109         comments.
5110         * configure: Regenerate.
5112 2022-01-17  Patrick Palka  <ppalka@redhat.com>
5114         * src/c++17/floating_from_chars.cc: (USE_LIB_FAST_FLOAT):
5115         Conditionally define, and use it to conditionally include
5116         fast_float.
5117         (from_chars): Use fast_float for float and double when
5118         USE_LIB_FAST_FLOAT.
5120 2022-01-17  Patrick Palka  <ppalka@redhat.com>
5122         * src/c++17/fast_float/LOCAL_PATCHES: Update.
5123         * src/c++17/fast_float/fast_float.h (from_chars_advanced): In
5124         case of over/underflow, return errc::result_out_of_range and don't
5125         modify 'value'.
5127 2022-01-17  Patrick Palka  <ppalka@redhat.com>
5129         * src/c++17/fast_float/LOCAL_PATCHES: Update.
5130         * src/c++17/fast_float/fast_float.h: Apply local modifications.
5132 2022-01-17  Patrick Palka  <ppalka@redhat.com>
5134         * src/c++17/fast_float/LOCAL_PATCHES: New file.
5135         * src/c++17/fast_float/MERGE: New file.
5136         * src/c++17/fast_float/README.md: New file, copied from the
5137         fast_float repository.
5138         * src/c++17/fast_float/fast_float.h: New file, an amalgamation
5139         of the fast_float library.
5141 2022-01-17  Patrick Palka  <ppalka@redhat.com>
5143         * src/c++17/floating_from_chars.cc: Include <bit>.
5144         (ascii_to_hexit, starts_with_ci): Conditionally define.
5145         (__floating_from_chars_hex):  Conditionally define.
5146         (from_chars): Use __floating_from_chars_hex for
5147         chars_format::hex parsing of binary32/64 float/double.
5148         (testsuite/20_util/from_chars/7.cc): New test.
5149         * testsuite/20_util/from_chars/7.cc: New file.
5151 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5153         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): New macro.
5154         * configure.ac: Use GLIBCXX_ENABLE_BACKTRACE.
5155         * include/Makefile.am: Add new header.
5156         * include/Makefile.in: Regenerate.
5157         * include/std/stacktrace: New header.
5158         * include/std/version (__cpp_lib_stacktrace): Define.
5159         * Makefile.in: Regenerate.
5160         * config.h.in: Regenerate.
5161         * configure: Regenerate.
5162         * doc/Makefile.in: Regenerate.
5163         * libsupc++/Makefile.in: Regenerate.
5164         * po/Makefile.in: Regenerate.
5165         * python/Makefile.in: Regenerate.
5166         * src/Makefile.am: Regenerate.
5167         * src/Makefile.in: Regenerate.
5168         * src/c++11/Makefile.in: Regenerate.
5169         * src/c++17/Makefile.in: Regenerate.
5170         * src/c++20/Makefile.in: Regenerate.
5171         * src/c++98/Makefile.in: Regenerate.
5172         * src/filesystem/Makefile.in: Regenerate.
5173         * testsuite/Makefile.in: Regenerate.
5174         * src/libbacktrace/Makefile.am: New file.
5175         * src/libbacktrace/Makefile.in: New file.
5176         * src/libbacktrace/backtrace-rename.h: New file.
5177         * src/libbacktrace/backtrace-supported.h.in: New file.
5178         * src/libbacktrace/config.h.in: New file.
5179         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
5180         New proc.
5181         * testsuite/20_util/stacktrace/entry.cc: New test.
5182         * testsuite/20_util/stacktrace/synopsis.cc: New test.
5183         * testsuite/20_util/stacktrace/version.cc: New test.
5185 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5187         * doc/xml/manual/status_cxx2020.xml: Use final C++20 option
5188         names.
5189         * doc/html/manual/status.html: Regenerate.
5191 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5193         PR libstdc++/103650
5194         * include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS.
5195         * include/Makefile.in: Regenerate.
5196         * testsuite/17_intro/headers/c++1998/103650.cc: New test.
5198 2022-01-17  Matthias Kretz  <m.kretz@gsi.de>
5200         * include/experimental/bits/simd.h (__floating_point_flags): Do
5201         not rely on the presence of the math_errhandling macro.
5203 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5205         * include/bits/shared_ptr_atomic.h (_Sp_atomic): Add typename
5206         to qualified-id for dependent type.
5208 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5210         * doc/xml/manual/status_cxx2020.xml: Update.
5211         * doc/html/manual/status.html: Regenerate.
5213 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5214             Thomas Rodgers  <trodgers@redhat.com>
5216         * include/bits/shared_ptr_atomic.h (__cpp_lib_atomic_shared_ptr):
5217         New macro.
5218         (_Sp_atomic): New class template.
5219         (atomic<shared_ptr<T>>, atomic<weak_ptr<T>>): New partial
5220         specializations.
5221         * include/bits/shared_ptr_base.h (__shared_count, __weak_count)
5222         (__shared_ptr, __weak_ptr): Declare _Sp_atomic as a friend.
5223         * include/std/version (__cpp_lib_atomic_shared_ptr): New macro.
5224         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc: New
5225         test.
5226         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: New test.
5228 2022-01-15  Matthias Kretz  <m.kretz@gsi.de>
5230         * include/experimental/bits/simd.h: Move feature detection bools
5231         and add __have_avx512bitalg, __have_avx512vbmi2,
5232         __have_avx512vbmi, __have_avx512ifma, __have_avx512cd,
5233         __have_avx512vnni, __have_avx512vpopcntdq.
5234         (__detail::__machine_flags): New function which returns a unique
5235         uint64 depending on relevant -m and -f flags.
5236         (__detail::__odr_helper): New type alias for either an anonymous
5237         type or a type specialized with the __machine_flags number.
5238         (_SimdIntOperators): Change template parameters from _Impl to
5239         _Tp, _Abi because _Impl now has an __odr_helper parameter which
5240         may be _OdrEnforcer from the anonymous namespace, which makes
5241         for a bad base class.
5242         (many): Either add __odr_helper template parameter or mark as
5243         always_inline.
5244         * include/experimental/bits/simd_detail.h: Add defines for
5245         AVX512BITALG, AVX512VBMI2, AVX512VBMI, AVX512IFMA, AVX512CD,
5246         AVX512VNNI, AVX512VPOPCNTDQ, and AVX512VP2INTERSECT.
5247         * include/experimental/bits/simd_builtin.h: Add __odr_helper
5248         template parameter or mark as always_inline.
5249         * include/experimental/bits/simd_fixed_size.h: Ditto.
5250         * include/experimental/bits/simd_math.h: Ditto.
5251         * include/experimental/bits/simd_scalar.h: Ditto.
5252         * include/experimental/bits/simd_neon.h: Add __odr_helper
5253         template parameter.
5254         * include/experimental/bits/simd_ppc.h: Ditto.
5255         * include/experimental/bits/simd_x86.h: Ditto.
5257 2022-01-14  Uroš Bizjak  <ubizjak@gmail.com>
5259         * testsuite/22_locale/numpunct/members/char/3.cc:
5260         Require pt_PT locale instead of nl_NL.
5261         (test02): Use pt_PT locale instead of nl_NL.
5263 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5265         PR libstdc++/91260
5266         PR libstdc++/91383
5267         PR libstdc++/95065
5268         * include/backward/binders.h (bind1st, bind2nd): Add deprecated
5269         attribute.
5270         * include/bits/refwrap.h (_Maybe_unary_or_binary_function):
5271         Disable deprecated warnings for base classes.
5272         (_Reference_wrapper_base): Likewise.
5273         * include/bits/shared_ptr_base.h (_Sp_owner_less): Likewise.
5274         * include/bits/stl_bvector.h (_Bit_iterator_base): Likewise.
5275         * include/bits/stl_function.h (unary_function, binary_function):
5276         Add deprecated attribute.
5277         (unary_negate, not1, binary_negate, not2, ptr_fun)
5278         (pointer_to_unary_function, pointer_to_binary_function)
5279         (mem_fun_t, const_mem_fun_t, mem_fun_ref_t, const_mem_fun_ref_t)
5280         (mem_fun1_t, const_mem_fun1_t, mem_fun_ref1_t)
5281         (const_mem_fun1_ref_t, mem_fun, mem_fun_ref): Add deprecated
5282         attributes.
5283         * include/bits/stl_iterator.h: Disable deprecated warnings for
5284         std::iterator base classes.
5285         * include/bits/stl_iterator_base_types.h (iterator): Add
5286         deprecated attribute.
5287         * include/bits/stl_map.h (map::value_compare): Disable
5288         deprecated warnings for base class.
5289         * include/bits/stl_multimap.h (multimap::value_compare):
5290         Likewise.
5291         * include/bits/stl_raw_storage_iter.h (raw_storage_iterator):
5292         Add deprecated attribute.
5293         * include/bits/stl_tempbuf.h (get_temporary_buffer): Likewise.
5294         * include/bits/stream_iterator.h: Disable deprecated warnings.
5295         * include/bits/streambuf_iterator.h: Likewise.
5296         * include/ext/bitmap_allocator.h: Remove unary_function base
5297         classes.
5298         * include/ext/functional: Disable deprecated warnings.
5299         * include/ext/rope: Likewise.
5300         * include/ext/throw_allocator.h: Likewise.
5301         * include/std/type_traits (result_of): Add deprecated attribute.
5302         * include/tr1/functional: Disable deprecated warnings.
5303         * include/tr1/functional_hash.h: Likewise.
5304         * testsuite/20_util/function_objects/binders/1.cc: Add
5305         -Wno-disable-deprecations.
5306         * testsuite/20_util/function_objects/binders/3113.cc: Likewise.
5307         * testsuite/20_util/function_objects/constexpr.cc: Add
5308         dg-warning.
5309         * testsuite/20_util/raw_storage_iterator/base.cc: Likewise.
5310         * testsuite/20_util/raw_storage_iterator/dr2127.cc: Likewise.
5311         * testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc:
5312         Likewise.
5313         * testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc:
5314         Likewise.
5315         * testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc:
5316         Likewise.
5317         * testsuite/20_util/reference_wrapper/24803.cc:
5318         Likewise.
5319         * testsuite/20_util/reference_wrapper/typedefs.cc: Enable for
5320         C++20 and check for absence of nested types.
5321         * testsuite/20_util/shared_ptr/comparison/less.cc: Remove
5322         std::binary_function base class.
5323         * testsuite/20_util/temporary_buffer.cc: Add dg-warning.
5324         * testsuite/21_strings/basic_string/cons/char/69092.cc: Remove
5325         std::iterator base class.
5326         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
5327         Likewise.
5328         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
5329         Likewise.
5330         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
5331         Likewise.
5332         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
5333         Likewise.
5334         * testsuite/24_iterators/istreambuf_iterator/92285.cc:
5335         Likewise.
5336         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
5337         Likewise.
5338         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
5339         Likewise.
5340         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
5341         Likewise.
5342         * testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc:
5343         Likewise.
5344         * testsuite/25_algorithms/copy/34595.cc:
5345         Likewise.
5346         * testsuite/25_algorithms/minmax/3.cc: Remove std::binary_function
5347         base class.
5348         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc:
5349         Disable deprecated warnings.
5350         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc:
5351         Likewise.
5352         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc:
5353         Likewise.
5354         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc:
5355         Likewise.
5356         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc:
5357         Likewise.
5358         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc:
5359         Likewise.
5360         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc:
5361         Likewise.
5362         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc:
5363         Likewise.
5364         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc:
5365         Likewise.
5366         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc:
5367         Likewise.
5368         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc:
5369         Likewise.
5370         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc:
5371         Likewise.
5372         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc:
5373         Likewise.
5374         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc:
5375         Likewise.
5376         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc:
5377         Likewise.
5378         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc:
5379         Likewise.
5380         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc:
5381         Likewise.
5382         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc:
5383         Likewise.
5384         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc:
5385         Likewise.
5386         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc:
5387         Likewise.
5388         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc:
5389         Likewise.
5390         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc:
5391         Likewise.
5392         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc:
5393         Likewise.
5394         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc:
5395         Likewise.
5396         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc:
5397         Likewise.
5398         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc:
5399         Likewise.
5400         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc:
5401         Likewise.
5402         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc:
5403         Likewise.
5404         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc:
5405         Likewise.
5406         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc:
5407         Likewise.
5408         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
5409         Likewise.
5410         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
5411         Likewise.
5412         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc:
5413         Likewise.
5414         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc:
5415         Likewise.
5416         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc:
5417         Likewise.
5418         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc:
5419         Likewise.
5420         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc:
5421         Likewise.
5422         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc:
5423         Likewise.
5424         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc:
5425         Likewise.
5426         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc:
5427         Likewise.
5428         * testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc:
5429         Likewise.
5430         * testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc:
5431         Likewise.
5432         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc:
5433         Likewise.
5434         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc:
5435         Likewise.
5436         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
5437         Likewise.
5438         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
5439         Likewise.
5440         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc:
5441         Likewise.
5442         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc:
5443         Likewise.
5444         * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Add
5445         dg-warning.
5446         * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
5447         Likewise.
5448         * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
5449         Likewise.
5450         * testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
5451         Disable deprecated warnings.
5452         * testsuite/tr1/6_containers/hash/requirements/base_classes.cc:
5453         Likewise.
5454         * testsuite/util/regression/trait/erase_if_fn.hpp: Remove
5455         std::unary_function base classes.
5456         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
5457         Remove std::iterator base classes.
5459 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5461         * include/bits/shared_ptr.h (__cpp_lib_shared_ptr_weak_type):
5462         Correct type of macro value.
5463         (shared_ptr): Add additional friend declarations.
5464         (make_shared, allocate_shared): Constrain existing overloads and
5465         remove static_assert.
5466         * include/bits/shared_ptr_base.h (__cpp_lib_smart_ptr_for_overwrite):
5467         New macro.
5468         (_Sp_counted_ptr_inplace<T, Alloc, Lp>): New partial
5469         specialization for use with make_shared_for_overwrite.
5470         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
5471         (_Sp_counted_array_base): New class template.
5472         (_Sp_counted_array): New class template.
5473         (__shared_count(_Tp*&, const _Sp_counted_array_base&, _Init)):
5474         New constructor for allocating shared arrays.
5475         (__shared_ptr(const _Sp_counted_array_base&, _Init)): Likewise.
5476         * include/std/version (__cpp_lib_shared_ptr_weak_type): Correct
5477         type.
5478         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
5479         (__cpp_lib_smart_ptr_for_overwrite): New macro.
5480         * testsuite/20_util/shared_ptr/creation/99006.cc: Adjust
5481         expected errors.
5482         * testsuite/20_util/shared_ptr/creation/array.cc: New test.
5483         * testsuite/20_util/shared_ptr/creation/overwrite.cc: New test.
5484         * testsuite/20_util/shared_ptr/creation/version.cc: New test.
5485         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Check
5486         feature test macro. Test non-trivial default-initialization.
5488 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5490         * include/bits/stl_construct.h (_Construct, _Construct_novalue):
5491         Also cast away cv-qualifiers when converting pointer to void.
5492         * testsuite/20_util/allocator/void.cc: Test construct function
5493         with cv-qualified types.
5495 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5497         PR libstdc++/103992
5498         * include/bits/stl_iterator.h (common_iterator): Use
5499         std::construct_at instead of placement new.
5500         * testsuite/24_iterators/common_iterator/1.cc: Check copy
5501         construction is usable in constant expressions.
5503 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5505         * doc/xml/manual/status_cxx2011.xml: Document new tokens
5506         accepted by std::random_device constructor.
5507         * doc/html/manual/status.html: Regenerate.
5509 2022-01-12  Patrick Palka  <ppalka@redhat.com>
5511         * testsuite/20_util/to_chars/103955.cc: Add explicit dg-do
5512         directive.
5514 2022-01-12  Patrick Palka  <ppalka@redhat.com>
5516         PR libstdc++/103955
5517         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
5518         Track the excess precision separately from the effective
5519         precision.  Avoid overflow in bounds check by splitting it into
5520         two checks.
5521         (__floating_to_chars_precision): Avoid overflow in bounds checks
5522         similarly.
5523         * testsuite/20_util/to_chars/103955.cc: New test.
5525 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5527         PR libstdc++/103726
5528         * include/Makefile.am: Install <source_location> for
5529         freestanding.
5530         * include/Makefile.in: Regenerate.
5531         * include/std/version (__cpp_lib_source_location): Define for
5532         freestanding.
5534 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5536         * include/std/ranges (ranges::lazy_split_view::_InnerIter::end()):
5537         Add neoxcept (LWG 3593).
5539 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5541         * include/std/ranges (ranges::__detail::__box): Add constexpr to
5542         assignment operators (LWG 3572).
5543         * testsuite/std/ranges/adaptors/filter.cc: Check assignment of a
5544         view that uses copyable-box.
5546 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5548         PR libstdc++/103726
5549         * include/Makefile.am: Install <coroutine> for freestanding.
5550         * include/Makefile.in: Regenerate.
5551         * include/std/coroutine: Adjust headers and preprocessor
5552         conditions.
5553         (__coroutine_traits_impl): Use concepts when available.
5554         [_GLIBCXX_HOSTED] (hash<coroutine_handle>): Define.
5556 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5558         * include/std/ostream (operator<<(basic_ostream&, charT)):
5559         Use unformatted input if no padding is needed.
5560         (operator<<(basic_ostream<char>&, char)): Likewise.
5562 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5564         PR libstdc++/103891
5565         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
5566         Define.
5567         * include/std/variant (__cpp_lib_variant): Only define C++20
5568         value when the compiler is known to support conditionally
5569         trivial destructors.
5570         * include/std/version (__cpp_lib_variant): Likewise.
5572 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5574         * include/bits/stl_iterator.h (common_iterator): Add constexpr
5575         to all member functions (LWG 3574).
5576         * testsuite/24_iterators/common_iterator/1.cc: Evaluate some
5577         tests as constant expressions.
5578         * testsuite/24_iterators/common_iterator/2.cc: Likewise.
5580 2022-01-10  Jakub Jelinek  <jakub@redhat.com>
5582         PR libstdc++/77760
5583         * include/bits/locale_facets_nonio.h (__time_get_state): New struct.
5584         (time_get::_M_extract_via_format): Declare new method with
5585         __time_get_state& as an extra argument.
5586         * include/bits/locale_facets_nonio.tcc (_M_extract_via_format): Add
5587         __state argument, set various fields in it while parsing.  Handle %j,
5588         %U, %w and %W, fix up handling of %y, %Y and %C, don't adjust tm_hour
5589         for %p immediately.  Add a wrapper around the method without the
5590         __state argument for backwards compatibility.
5591         (_M_extract_num): Remove all __len == 4 special cases.
5592         (time_get::do_get_time, time_get::do_get_date, time_get::do_get): Zero
5593         initialize __state, pass it to _M_extract_via_format and finalize it
5594         at the end.
5595         (do_get_year): For 1-2 digit parsed years, map 0-68 to 2000-2068,
5596         69-99 to 1969-1999.  For 3-4 digit parsed years use that as year.
5597         (get): If do_get isn't overloaded from the locale_facets_nonio.tcc
5598         version, don't call do_get but call _M_extract_via_format instead to
5599         pass around state.
5600         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export _M_extract_via_format
5601         with extra __time_get_state and __time_get_state::_M_finalize_state.
5602         * src/c++98/locale_facets.cc (is_leap, day_of_the_week,
5603         day_of_the_year): New functions in anon namespace.
5604         (mon_yday): New var in anon namespace.
5605         (__time_get_state::_M_finalize_state): Define.
5606         * testsuite/22_locale/time_get/get/char/4.cc: New test.
5607         * testsuite/22_locale/time_get/get/wchar_t/4.cc: New test.
5608         * testsuite/22_locale/time_get/get_year/char/1.cc (test01): Parse 197
5609         as year 197AD instead of error.
5610         * testsuite/22_locale/time_get/get_year/char/5.cc (test01): Parse 1 as
5611         year 2001 instead of error.
5612         * testsuite/22_locale/time_get/get_year/char/6.cc: New test.
5613         * testsuite/22_locale/time_get/get_year/wchar_t/1.cc (test01): Parse
5614         197 as year 197AD instead of error.
5615         * testsuite/22_locale/time_get/get_year/wchar_t/5.cc (test01): Parse
5616         1 as year 2001 instead of error.
5617         * testsuite/22_locale/time_get/get_year/wchar_t/6.cc: New test.
5619 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5621         PR libstdc++/103866
5622         * acinclude.m4 (GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS): Do
5623         nothing for freestanding builds.
5624         (GLIBCXX_ENABLE_HOSTED): Define FREESTANDING_FLAGS.
5625         * configure.ac: Do not use AC_LIBTOOL_DLOPEN when configured
5626         with --without-headers.  Do not use GCC_HEADER_STDINT for
5627         freestanding builds.
5628         * libsupc++/Makefile.am (HOSTED_CXXFLAGS): Use -ffreestanding
5629         for freestanding builds.
5630         * configure: Regenerate.
5631         * Makefile.in: Regenerate.
5632         * doc/Makefile.in: Regenerate.
5633         * include/Makefile.in: Regenerate.
5634         * libsupc++/Makefile.in: Regenerate.
5635         * po/Makefile.in: Regenerate.
5636         * python/Makefile.in: Regenerate.
5637         * src/Makefile.in: Regenerate.
5638         * src/c++11/Makefile.in: Regenerate.
5639         * src/c++17/Makefile.in: Regenerate.
5640         * src/c++20/Makefile.in: Regenerate.
5641         * src/c++98/Makefile.in: Regenerate.
5642         * src/filesystem/Makefile.in: Regenerate.
5643         * testsuite/Makefile.in: Regenerate.
5645 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5647         * testsuite/28_regex/algorithms/regex_replace/char/103664.cc:
5648         Add dg-timeout-factor directive.
5649         * testsuite/28_regex/basic_regex/84110.cc: Likewise.
5650         * testsuite/28_regex/basic_regex/ctors/char/other.cc: Likewise.
5651         * testsuite/28_regex/match_results/102667.cc: Likewise.
5653 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5655         * doc/xml/manual/using.xml: Update documentation around default
5656         -std option.
5657         * doc/html/*: Regenerate.
5659 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5661         PR libstdc++/100017
5662         * src/c++17/Makefile.am (AM_CXXFLAGS): Add -nostdinc++.
5663         * src/c++17/Makefile.in: Regenerate.
5665 2022-01-09  Sandra Loosemore  <sandra@codesourcery.com>
5667         * testsuite/18_support/type_info/constexpr.cc: Add explicit
5668         -fdelete-null-pointer-checks option.
5670 2022-01-06  Pavel I. Kryukov  <pavel.kryukov@phystech.edu>
5671             Jonathan Wakely  <jwakely@redhat.com>
5673         PR libstdc++/103853
5674         * include/bits/forward_list.tcc (forward_list::merge): Check for
5675         self-merge.
5676         * testsuite/23_containers/forward_list/operations/merge.cc: New test.
5678 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5680         * include/bits/regex.h (basic_regex, match_results): Qualify
5681         name in friend declaration, to work around Clang bug.
5683 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5685         * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor.
5687 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5689         PR libstdc++/103911
5690         * include/std/charconv (__from_chars_alpha_to_num): Return
5691         char instead of unsigned char. Change invalid return value to
5692         127 instead of using numeric trait.
5693         (__from_chars_alnum): Fix comment. Do not use std::isdigit.
5694         Change type of variable to char.
5696 2022-01-05  François Dumont  <fdumont@gcc.gnu.org>
5698         PR libstdc++/68303
5699         * include/bits/hashtable_policy.h
5700         (_Hashtable_hash_traits<_Hash>): New.
5701         (_Hash_code_base<>::_M_hash_code(const _Hash_node_value<>&)): New.
5702         (_Hashtable_base<>::_M_key_equals): New.
5703         (_Hashtable_base<>::_M_equals): Use latter.
5704         (_Hashtable_base<>::_M_key_equals_tr): New.
5705         (_Hashtable_base<>::_M_equals_tr): Use latter.
5706         * include/bits/hashtable.h
5707         (_Hashtable<>::__small_size_threshold()): New, use _Hashtable_hash_traits.
5708         (_Hashtable<>::find): Loop through elements to look for key if size is lower
5709         than __small_size_threshold().
5710         (_Hashtable<>::_M_emplace(true_type, _Args&&...)): Likewise.
5711         (_Hashtable<>::_M_insert_unique(_Kt&&, _Args&&, const _NodeGenerator&)): Likewise.
5712         (_Hashtable<>::_M_compute_hash_code(const_iterator, const key_type&)): New.
5713         (_Hashtable<>::_M_emplace(const_iterator, false_type, _Args&&...)): Use latter.
5714         (_Hashtable<>::_M_find_before_node(const key_type&)): New.
5715         (_Hashtable<>::_M_erase(true_type, const key_type&)): Use latter.
5716         (_Hashtable<>::_M_erase(false_type, const key_type&)): Likewise.
5717         * src/c++11/hashtable_c++0x.cc: Include <bits/functional_hash.h>.
5718         * testsuite/util/testsuite_performance.h
5719         (report_performance): Use 9 width to display memory.
5720         * testsuite/performance/23_containers/insert_erase/unordered_small_size.cc:
5721         New performance test case.
5723 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5725         PR libstdc++/103919
5726         * include/bits/basic_string.h (basic_string(const T&, size_t, size_t)):
5727         Relax constraints on string_view parameter.
5728         * include/bits/cow_string.h (basic_string(const T&, size_t, size_t)):
5729         Likewise.
5730         * testsuite/21_strings/basic_string/cons/char/103919.cc: New test.
5732 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5734         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export new symbol for
5735         ARM EABI.
5736         * include/bits/c++config (_GLIBCXX23_CONSTEXPR): Define.
5737         * include/std/version (__cpp_lib_constexpr_typeinfo): Define.
5738         * libsupc++/tinfo.cc: Add #error to ensure non-inline definition
5739         is emitted.
5740         (type_info::__equal): Define alias symbol.
5741         * libsupc++/typeinfo (type_info::before): Combine different
5742         implementations into one.
5743         (type_info::operator==): Likewise. Use address equality for
5744         constant evaluation. Call __equal for targets that require the
5745         definition to be non-inline.
5746         * testsuite/18_support/type_info/constexpr.cc: New test.
5748 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5750         * src/c++11/cxx11-ios_failure.cc (io_error_category): Define
5751         class and virtual functions as 'final'.
5752         (io_category_instance): Use constinit union to make the object
5753         immortal.
5754         * src/c++11/future.cc (future_error_category): Define class and
5755         virtual functions as 'final'.
5756         (future_category_instance): Use constinit union.
5758 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5760         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip
5761         versioned namespace from the type name that is printed.
5763 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5765         * python/libstdcxx/v6/printers.py (StdRegexStatePrinter): New
5766         printer for std::regex NFA states.
5768 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5770         * testsuite/23_containers/forward_list/operations/1.cc: Fill in
5771         placeholders in comments.
5772         * testsuite/23_containers/forward_list/operations/2.cc:
5773         Likewise.
5774         * testsuite/23_containers/forward_list/operations/3.cc:
5775         Likewise.
5776         * testsuite/23_containers/forward_list/operations/4.cc:
5777         Likewise.
5778         * testsuite/23_containers/forward_list/operations/5.cc:
5779         Likewise.
5780         * testsuite/23_containers/forward_list/operations/6.cc:
5781         Likewise.
5782         * testsuite/23_containers/forward_list/operations/7.cc:
5783         Likewise.
5785 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5787         PR libstdc++/103848
5788         * include/bits/stl_deque.h (operator-): Do not use 0 as null
5789         pointer constant.
5791 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5793         * include/bits/alloc_traits.h (allocator_traits<allocator<void>>):
5794         Use std::_Construct for construct.
5796 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5798         PR libstdc++/103877
5799         * doc/xml/faq.xml: Add '-x c++' to preprocessor command.
5800         * doc/html/faq.html: Regenerate.
5802 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5804         * include/bits/regex.h (__regex_algo_impl): Change __policy and
5805         __match_mode template parameters to be function parameters.
5806         (regex_match, regex_search): Pass policy and match mode as
5807         function arguments.
5808         * include/bits/regex.tcc (__regex_algo_impl): Change template
5809         parameters to function parameters.
5810         * include/bits/regex_compiler.h (_RegexTranslatorBase): Use
5811         'if constexpr' for conditions using template parameters.
5812         (_RegexTranslator): Likewise.
5813         * include/bits/regex_executor.tcc (_Executor::_M_handle_accept):
5814         Likewise.
5815         * testsuite/util/testsuite_regex.h (regex_match_debug)
5816         (regex_search_debug): Move template arguments to function
5817         arguments.
5819 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5821         * testsuite/util/testsuite_regex.h (regex_match_debug): Compare
5822         results even if the match failed.
5824 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5826         * include/bits/regex_compiler.tcc: Adjust all calls to
5827         __throw_regex_error.
5828         * include/bits/regex_error.h (__throw_regex_error): Add noreturn
5829         attribute.
5830         * include/bits/regex_scanner.tcc: Likewise.
5831         * src/c++11/regex.cc (desc): New helper function.
5832         (regex_error::regex_error(error_type)): Use desc to get a string
5833         corresponding to the error code.
5836 Copyright (C) 2022 Free Software Foundation, Inc.
5838 Copying and distribution of this file, with or without modification,
5839 are permitted in any medium without royalty provided the copyright
5840 notice and this notice are preserved.