c++: trivial formatting cleanups
[official-gcc.git] / libstdc++-v3 / ChangeLog
bloba78e198a52419b8e25e7f32bf7887c09ce938d1c
1 2022-10-12  François Dumont  <fdumont@gcc.gnu.org>
3         * include/debug/string: Add using _Base::compare.
4         (__gnu_debug::basic_string<>::compare(const basic_string<>&)): Remove.
5         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&)):
6         Remove.
7         (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&,
8         size_type, size_type)): Remove.
9         * testsuite/util/testsuite_string.h [_GLIBCXX_TEST_DEBUG_STRING]: Include <debug/string>.
10         * testsuite/21_strings/basic_string/operations/compare/char/1.cc: Include testsuite_string.h
11         and use __gnu_test::string.
12         * testsuite/21_strings/basic_string/operations/compare/char/13650.cc: Likewise.
13         * testsuite/21_strings/basic_string/operations/compare/char/2.cc: Likewise.
14         * testsuite/21_strings/basic_string/operations/rfind/char/1.cc: Likewise.
15         * testsuite/21_strings/basic_string/operations/rfind/char/2.cc: Likewise.
16         * testsuite/21_strings/basic_string/operations/rfind/char/3.cc: Likewise.
17         * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
18         Include testsuite_string.h
19         and use __gnu_test::wstring.
20         * testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc: Likewise.
21         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: Likewise.
23 2022-10-12  Patrick Palka  <ppalka@redhat.com>
25         * include/std/ranges (repeat_view): Define.
26         (repeat_view::_Iterator): Define.
27         (views::__detail::__can_repeat_view): Define.
28         (views::__detail::__can_bounded_repeat_view): Define.
29         (views::_Repeat, views::repeat): Define.
30         * testsuite/std/ranges/repeat/1.cc: New test.
32 2022-10-12  Martin Liska  <mliska@suse.cz>
34         * configure: Regenerate.
36 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
38         PR bootstrap/107221
39         * libsupc++/eh_alloc.cc (pool): Change preprocessor condition
40         for using __mutex from __GTHREADS to _GLIBCXX_HOSTED.
41         (pool::allocate): Remove namespace qualification to use
42         pool::__scoped_lock instead of __gnu_cxx::__scoped_lock.
44 2022-10-11  Jonathan Wakely  <jwakely@redhat.com>
46         PR libstdc++/68606
47         * Makefile.in: Regenerate.
48         * acinclude.m4 (GLIBCXX_EMERGENCY_EH_ALLOC): New macro.
49         * configure: Regenerate.
50         * configure.ac: Use GLIBCXX_EMERGENCY_EH_ALLOC.
51         * crossconfig.m4: Check for secure_getenv.
52         * doc/Makefile.in: Regenerate.
53         * doc/xml/manual/configure.xml: Document new configure options.
54         * doc/xml/manual/evolution.xml: Document addition of tunables.
55         * doc/xml/manual/using_exceptions.xml: Document emergency
56         buffer and tunables.
57         * doc/html/*: Regenerate.
58         * include/Makefile.in: Regenerate.
59         * libsupc++/Makefile.am: Use EH_POOL_FLAGS.
60         * libsupc++/Makefile.in: Regenerate.
61         * libsupc++/eh_alloc.cc (EMERGENCY_OBJ_SIZE): Define in units
62         of sizeof(void*) not including the ABI's exception header.
63         (EMERGENCY_OBJ_COUNT): Define as target-independent calculation
64         based on word size.
65         (MAX_OBJ_COUNT): Define macro for upper limit on pool size.
66         (pool) [_GLIBCXX_EH_POOL_STATIC]: Use fixed-size buffer.
67         (pool::buffer_size_in_bytes): New static member function.
68         (pool::pool): Parse GLIBCXX_TUNABLES environment variable to set
69         pool size at runtime.
70         (pool::in_pool): Use std::less<void*> for total order.
71         (__freeres) [_GLIBCXX_EH_POOL_STATIC]: Do nothing.
72         (__cxa_free_exception, __cxa_free_dependent_exception): Add
73         [[unlikely]] attributes.
74         * po/Makefile.in: Regenerate.
75         * python/Makefile.in: Regenerate.
76         * src/Makefile.in: Regenerate.
77         * src/c++11/Makefile.in: Regenerate.
78         * src/c++17/Makefile.in: Regenerate.
79         * src/c++20/Makefile.in: Regenerate.
80         * src/c++98/Makefile.in: Regenerate.
81         * src/filesystem/Makefile.in: Regenerate.
82         * src/libbacktrace/Makefile.in: Regenerate.
83         * testsuite/Makefile.in: Regenerate.
85 2022-10-11  Olivier Hainque  <hainque@adacore.com>
86             Olivier Hainque  <hainque@adacore.com>
88         * configure: Regenerate.
90 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
92         * include/std/type_traits (make_signed, make_unsigned): Remove
93         constraints on primary template.
94         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
95         Undo changes to expected error in C++20 mode.
96         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
97         Likewise.
98         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
99         Likewise.
100         * testsuite/20_util/make_signed/requirements/uninstantiated.cc:
101         New test.
102         * testsuite/20_util/make_unsigned/requirements/uninstantiated.cc:
103         New test.
105 2022-10-10  Jonathan Wakely  <jwakely@redhat.com>
107         * include/std/type_traits (make_signed, make_unsigned): Add
108         specializations for cv bool. Add requires-clause for C++20 to
109         improve diagnostics for non-integral, non-enum cases.
110         * testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
111         Check cv bool.
112         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
113         Likewise.
114         * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc:
115         Adjust expected errors for C++20 and later.
116         * testsuite/lib/prune.exp: Prune "in requirements  [with ...]"
117         lines from diagnostics.
119 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
121         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Add libstdcxx-hosted
122         enable arg as an alias for hosted-libstdcxx enable arg.
123         * configure: Regenerate.
125 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
127         * include/bits/std_function.h: Include <new> but do not include
128         <bits/stl_function.h>.
129         * include/std/functional: Do not include <new>.
131 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
133         * doc/xml/manual/intro.xml: Add role="bold" attribute to
134         emphasis elements for issue titles.
135         * doc/html/manual/bugs.html: Regenerate.
137 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
139         * include/Makefile.in: Regenerate.
141 2022-10-05  Jonathan Wakely  <jwakely@redhat.com>
143         * include/bits/invoke.h (__invoke_r): Check
144         __has_builtin(__reference_converts_from_temporary) before using
145         built-in.
147 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
149         * testsuite/std/ranges/adaptors/join_with/1.cc: Remove unused
150         <sstream header.
151         (test04): Remove constexpr for old std::string ABI and test at
152         runtime.
154 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
156         * include/std/type_traits (remove_cv): Use __remove_cv built-in.
157         (remove_reference): Use __remove_reference built-in.
158         (remove_cvref): Use __remove_cvref built-in. Remove inheritance
159         for fallback implementation.
161 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
163         * include/bits/random.h (__is_seed_seq): Replace with ...
164         (_If_seed_seq_for): ... this.
165         * include/ext/random: Adjust to use _If_seed_seq_for.
167 2022-10-04  Patrick Palka  <ppalka@redhat.com>
169         * include/std/ranges (join_with_view::_Iterator::operator*):
170         Replace use of std::visit with manual visitation.
171         (join_with_view::_Iterator::operator++): Likewise.
172         (join_with_view::_Iterator::operator--): Likewise.
173         (join_with_view::_Iterator::iter_move): Likewise.
174         (join_with_view::_Iterator::iter_swap): Likewise.
176 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
178         * testsuite/25_algorithms/stable_sort/mem_check.cc: Do nto run
179         for freestanding.
181 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
183         PR libstdc++/107139
184         * include/std/coroutine: Remove all _GLIBCXXHOSTED preprocessor
185         conditionals.
187 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
189         PR libstdc++/107134
190         * include/c_global/cstdint [!_GLIBCXX_HOSTED]: Include
191         <stdint-gcc.h> directly.
193 2022-10-04  Jonathan Wakely  <jwakely@redhat.com>
195         PR libstdc++/107135
196         * include/bits/functexcept.h [!_GLIBCXX_HOSTED]
197         (__throw_invalid_argument, __throw_out_of_range)
198         (__throw_out_of_range_fmt, __throw_runtime_error)
199         (__throw_overflow_error): Define inline.
200         * include/std/bitset (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]:
201         Replace __builtin_abort with __throw_invalid_argument.
203 2022-10-04  Patrick Palka  <ppalka@redhat.com>
205         * include/std/ranges: Include <variant> for C++23.
206         (__detail::__compatible_joinable_ranges): Define.
207         (__detail::__bidirectional_common): Define.
208         (join_with_view): Define.
209         (join_with_view::_Iterator): Define.
210         (join_with_view::_Sentinel): Define.
211         (views::__detail::__can_join_with_view): Define.
212         (views::_JoinWith, views::join_with): Define.
213         * testsuite/std/ranges/adaptors/join_with/1.cc: New test.
215 2022-10-04  Arsen Arsenović  <arsen@aarsen.me>
217         * include/std/iostream: Use ///< for inline documentation.
218         * include/std/limits: Likewise.
219         * include/experimental/internet: Likewise.
221 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
223         * doc/xml/manual/status_cxx2020.xml: Update C++20 status.
224         * doc/html/manual/status.html: Regenerate.
226 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
228         PR libstdc++/103626
229         * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc:
230         Require ET hosted.
231         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
232         * testsuite/18_support/new_nothrow.cc: Likewise.
233         * testsuite/20_util/allocator/105975.cc: Likewise.
234         * testsuite/20_util/allocator/14176.cc: Likewise.
235         * testsuite/20_util/allocator/64135.cc: Likewise.
236         * testsuite/20_util/allocator/89510.cc: Likewise.
237         * testsuite/20_util/allocator/lwg3190.cc: Likewise.
238         * testsuite/20_util/allocator/overaligned.cc: Likewise.
239         * testsuite/20_util/allocator/rebind_c++20.cc: Likewise.
240         * testsuite/20_util/allocator/requirements/constexpr.cc:
241         Likewise.
242         * testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc:
243         Likewise.
244         * testsuite/20_util/allocator/requirements/typedefs.cc:
245         Likewise.
246         * testsuite/20_util/allocator/requirements/typedefs_c++20.cc:
247         Likewise.
248         * testsuite/20_util/allocator/void.cc: Likewise.
249         * testsuite/20_util/allocator_traits/header-2.cc: Likewise.
250         * testsuite/20_util/allocator_traits/header.cc: Likewise.
251         * testsuite/20_util/allocator_traits/members/92878_92947.cc:
252         Likewise.
253         * testsuite/20_util/allocator_traits/members/pointers.cc:
254         Likewise.
255         * testsuite/20_util/allocator_traits/requirements/typedefs.cc:
256         Likewise.
257         * testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
258         Likewise.
259         * testsuite/20_util/bind/42593.cc: Likewise.
260         * testsuite/20_util/bitset/access/dr396.cc: Likewise.
261         * testsuite/20_util/bitset/access/to_string.cc: Likewise.
262         * testsuite/20_util/bitset/cons/16020.cc: Likewise.
263         * testsuite/20_util/bitset/cons/dr1325-2.cc: Likewise.
264         * testsuite/20_util/bitset/cons/dr396.cc: Likewise.
265         * testsuite/20_util/bitset/debug/invalidation/1.cc: Likewise.
266         * testsuite/20_util/bitset/ext/15361.cc: Likewise.
267         * testsuite/20_util/bitset/operations/13838.cc: Likewise.
268         * testsuite/20_util/bitset/operations/96303.cc: Likewise.
269         * testsuite/20_util/bitset/version.cc: Likewise.
270         * testsuite/20_util/enable_shared_from_this/56383.cc: Likewise.
271         * testsuite/20_util/enable_shared_from_this/89303.cc: Likewise.
272         * testsuite/20_util/enable_shared_from_this/members/assign.cc:
273         Likewise.
274         * testsuite/20_util/enable_shared_from_this/members/const.cc:
275         Likewise.
276         * testsuite/20_util/enable_shared_from_this/members/reinit.cc:
277         Likewise.
278         * testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc:
279         Likewise.
280         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
281         Likewise.
282         * testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc:
283         Likewise.
284         * testsuite/20_util/forward/1.cc: Likewise.
285         * testsuite/20_util/forward/1_neg.cc: Likewise.
286         * testsuite/20_util/function/1.cc: Likewise.
287         * testsuite/20_util/function/10.cc: Likewise.
288         * testsuite/20_util/function/2.cc: Likewise.
289         * testsuite/20_util/function/3.cc: Likewise.
290         * testsuite/20_util/function/4.cc: Likewise.
291         * testsuite/20_util/function/43397.cc: Likewise.
292         * testsuite/20_util/function/48541.cc: Likewise.
293         * testsuite/20_util/function/5.cc: Likewise.
294         * testsuite/20_util/function/58569.cc: Likewise.
295         * testsuite/20_util/function/6.cc: Likewise.
296         * testsuite/20_util/function/60594.cc: Likewise.
297         * testsuite/20_util/function/65760.cc: Likewise.
298         * testsuite/20_util/function/69222.cc: Likewise.
299         * testsuite/20_util/function/7.cc: Likewise.
300         * testsuite/20_util/function/77322.cc: Likewise.
301         * testsuite/20_util/function/8.cc: Likewise.
302         * testsuite/20_util/function/9.cc: Likewise.
303         * testsuite/20_util/function/91456.cc: Likewise.
304         * testsuite/20_util/function/assign/move.cc: Likewise.
305         * testsuite/20_util/function/assign/move_target.cc: Likewise.
306         * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
307         * testsuite/20_util/function/cons/55320.cc: Likewise.
308         * testsuite/20_util/function/cons/57465.cc: Likewise.
309         * testsuite/20_util/function/cons/72820.cc: Likewise.
310         * testsuite/20_util/function/cons/addressof.cc: Likewise.
311         * testsuite/20_util/function/cons/callable.cc: Likewise.
312         * testsuite/20_util/function/cons/deduction.cc: Likewise.
313         * testsuite/20_util/function/cons/lwg2774.cc: Likewise.
314         * testsuite/20_util/function/cons/move.cc: Likewise.
315         * testsuite/20_util/function/cons/move_target.cc: Likewise.
316         * testsuite/20_util/function/cons/noexcept.cc: Likewise.
317         * testsuite/20_util/function/cons/non_copyconstructible.cc:
318         Likewise.
319         * testsuite/20_util/function/cons/refqual.cc: Likewise.
320         * testsuite/20_util/function/cons/70692.cc: Likewise.
321         * testsuite/20_util/function/cons/deduction_c++23.cc: Likewise.
322         * testsuite/20_util/function/invoke/forwarding.cc: Likewise.
323         * testsuite/20_util/function/invoke/move_only.cc: Likewise.
324         * testsuite/20_util/function/null_pointer_comparisons.cc:
325         Likewise.
326         * testsuite/20_util/function/requirements/explicit_instantiation.cc:
327         Likewise.
328         * testsuite/20_util/function/target_no_rtti.cc: Likewise.
329         * testsuite/20_util/function_objects/83607.cc: Likewise.
330         * testsuite/20_util/function_objects/mem_fn/adl.cc: Likewise.
331         * testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise.
332         * testsuite/20_util/headers/functional/types_std_c++0x.cc:
333         Likewise.
334         * testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise.
335         * testsuite/20_util/is_function/35637.cc: Likewise.
336         * testsuite/20_util/move/1.cc: Likewise.
337         * testsuite/20_util/move_only_function/call.cc: Likewise.
338         * testsuite/20_util/move_only_function/cons.cc: Likewise.
339         * testsuite/20_util/move_only_function/move.cc: Likewise.
340         * testsuite/20_util/move_only_function/version.cc: Likewise.
341         * testsuite/20_util/owner_less/cmp.cc: Likewise.
342         * testsuite/20_util/owner_less/noexcept.cc: Likewise.
343         * testsuite/20_util/owner_less/void.cc: Likewise.
344         * testsuite/20_util/pointer_safety/1.cc: Likewise.
345         * testsuite/20_util/scoped_allocator/65279.cc: Likewise.
346         * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
347         * testsuite/20_util/scoped_allocator/construct_pair.cc:
348         Likewise.
349         * testsuite/20_util/scoped_allocator/dr2586.cc: Likewise.
350         * testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc:
351         Likewise.
352         * testsuite/20_util/shared_ptr/assign/assign.cc: Likewise.
353         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
354         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
355         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
356         Likewise.
357         * testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
358         * testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
359         * testsuite/20_util/shared_ptr/assign/sfinae.cc: Likewise.
360         * testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
361         * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc:
362         Likewise.
363         * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
364         Likewise.
365         * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc:
366         Likewise.
367         * testsuite/20_util/shared_ptr/atomic/1.cc: Likewise.
368         * testsuite/20_util/shared_ptr/atomic/2.cc: Likewise.
369         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
370         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
371         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
372         * testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise.
373         * testsuite/20_util/shared_ptr/comparison/86537.cc: Likewise.
374         * testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
375         * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc:
376         Likewise.
377         * testsuite/20_util/shared_ptr/comparison/dr1401.cc: Likewise.
378         * testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
379         * testsuite/20_util/shared_ptr/cons/39405.cc: Likewise.
380         * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
381         * testsuite/20_util/shared_ptr/cons/46910.cc: Likewise.
382         * testsuite/20_util/shared_ptr/cons/51365.cc: Likewise.
383         * testsuite/20_util/shared_ptr/cons/52924.cc: Likewise.
384         * testsuite/20_util/shared_ptr/cons/55123.cc: Likewise.
385         * testsuite/20_util/shared_ptr/cons/58659.cc: Likewise.
386         * testsuite/20_util/shared_ptr/cons/58839.cc: Likewise.
387         * testsuite/20_util/shared_ptr/cons/61036.cc: Likewise.
388         * testsuite/20_util/shared_ptr/cons/79467.cc: Likewise.
389         * testsuite/20_util/shared_ptr/cons/80229.cc: Likewise.
390         * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Likewise.
391         * testsuite/20_util/shared_ptr/cons/alias.cc: Likewise.
392         * testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
393         * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
394         * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
395         * testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
396         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
397         * testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
398         * testsuite/20_util/shared_ptr/cons/lwg2802.cc: Likewise.
399         * testsuite/20_util/shared_ptr/cons/lwg3548.cc: Likewise.
400         * testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
401         * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
402         Likewise.
403         * testsuite/20_util/shared_ptr/cons/nullptr.cc: Likewise.
404         * testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
405         * testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
406         * testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc:
407         Likewise.
408         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc:
409         Likewise.
410         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc:
411         Likewise.
412         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
413         Likewise.
414         * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
415         * testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
416         * testsuite/20_util/shared_ptr/creation/36949.cc: Likewise.
417         * testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc:
418         Likewise.
419         * testsuite/20_util/shared_ptr/creation/58594.cc: Likewise.
420         * testsuite/20_util/shared_ptr/creation/87278.cc: Likewise.
421         * testsuite/20_util/shared_ptr/creation/92878_92947.cc:
422         Likewise.
423         * testsuite/20_util/shared_ptr/creation/99006.cc: Likewise.
424         * testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
425         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
426         * testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
427         * testsuite/20_util/shared_ptr/creation/no_rtti.cc: Likewise.
428         * testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise.
429         * testsuite/20_util/shared_ptr/creation/private.cc: Likewise.
430         * testsuite/20_util/shared_ptr/creation/single_allocation.cc:
431         Likewise.
432         * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
433         Likewise.
434         * testsuite/20_util/shared_ptr/creation/version.cc: Likewise.
435         * testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
436         * testsuite/20_util/shared_ptr/hash/1.cc: Likewise.
437         * testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
438         * testsuite/20_util/shared_ptr/misc/42019.cc: Likewise.
439         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
440         * testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
441         * testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
442         * testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
443         * testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc:
444         Likewise.
445         * testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
446         * testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
447         * testsuite/20_util/shared_ptr/observers/array.cc: Likewise.
448         * testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
449         * testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
450         * testsuite/20_util/shared_ptr/observers/owner_before.cc:
451         Likewise.
452         * testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
453         * testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
454         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc:
455         Likewise.
456         * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc:
457         Likewise.
458         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
459         Likewise.
460         * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
461         Likewise.
462         * testsuite/20_util/temporary_buffer.cc: Likewise.
463         * testsuite/20_util/tuple/48476.cc: Likewise.
464         * testsuite/20_util/tuple/cons/90700.cc: Likewise.
465         * testsuite/20_util/tuple/cons/96803.cc: Likewise.
466         * testsuite/20_util/tuple/cons/allocator_with_any.cc: Likewise.
467         * testsuite/20_util/tuple/cons/allocators.cc: Likewise.
468         * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc:
469         Likewise.
470         * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
471         * testsuite/20_util/tuple/p2321r2.cc: Likewise.
472         * testsuite/20_util/unique_ptr/creation/92878_92947.cc:
473         Likewise.
474         * testsuite/20_util/unique_ptr/creation/array.cc: Likewise.
475         * testsuite/20_util/unique_ptr/creation/array_neg.cc: Likewise.
476         * testsuite/20_util/unique_ptr/creation/constexpr.cc: Likewise.
477         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc:
478         Likewise.
479         * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc:
480         Likewise.
481         * testsuite/20_util/unique_ptr/creation/single.cc: Likewise.
482         * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
483         * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
484         * testsuite/20_util/uses_allocator/uninitialized_construct.cc:
485         Likewise.
486         * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
487         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
488         * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
489         Likewise.
490         * testsuite/20_util/weak_ptr/lock/1.cc: Likewise.
491         * testsuite/20_util/weak_ptr/observers/owner_before.cc:
492         Likewise.
493         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
494         Likewise.
495         * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
496         Likewise.
497         * testsuite/21_strings/basic_string/version.cc: Likewise.
498         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
499         Likewise.
500         * testsuite/21_strings/c_strings/char/69626.cc: Likewise.
501         * testsuite/21_strings/char_traits/requirements/version.cc:
502         Likewise.
503         * testsuite/23_containers/vector/requirements/version.cc:
504         Likewise.
505         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
506         Likewise.
507         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
508         Likewise.
509         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
510         Likewise.
511         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
512         Likewise.
513         * testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise.
514         * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
515         Likewise.
516         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
517         Likewise.
518         * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
519         Likewise.
520         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
521         Likewise.
522         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
523         Likewise.
524         * testsuite/25_algorithms/constexpr_macro.cc: Likewise.
525         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
526         * testsuite/25_algorithms/headers/cstdlib/functions_std.cc:
527         Likewise.
528         * testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
529         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
530         Likewise.
531         * testsuite/25_algorithms/make_heap/movable.cc: Likewise.
532         * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
533         * testsuite/25_algorithms/random_shuffle/1.cc: Likewise.
534         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
535         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
536         Likewise.
537         * testsuite/25_algorithms/sort/35588.cc: Likewise.
538         * testsuite/25_algorithms/stable_partition/1.cc: Likewise.
539         * testsuite/25_algorithms/stable_partition/constrained.cc:
540         Likewise.
541         * testsuite/25_algorithms/stable_partition/mem_check.cc:
542         Likewise.
543         * testsuite/25_algorithms/stable_partition/moveable.cc:
544         Likewise.
545         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
546         Likewise.
547         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
548         Likewise.
549         * testsuite/25_algorithms/stable_sort/1.cc: Likewise.
550         * testsuite/26_numerics/complex/2.cc: Likewise.
551         * testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise.
552         * testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise.
553         * testsuite/26_numerics/headers/cstdlib/60401.cc: Likewise.
554         * testsuite/26_numerics/headers/cstdlib/dr2192.cc: Likewise.
555         * testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: Likewise.
556         * testsuite/26_numerics/headers/cstdlib/dr2735.cc: Likewise.
557         * testsuite/26_numerics/headers/cstdlib/functions_std.cc:
558         Likewise.
559         * testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise.
560         * testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise.
561         * testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc:
562         Likewise.
563         * testsuite/26_numerics/lerp/version.cc: Likewise.
564         * testsuite/26_numerics/midpoint/version.cc: Likewise.
565         * testsuite/27_io/basic_syncbuf/2.cc: Likewise.
566         * testsuite/27_io/basic_syncstream/2.cc: Likewise.
567         * testsuite/27_io/fpos/14320-1.cc: Likewise.
568         * testsuite/27_io/fpos/14320-2.cc: Likewise.
569         * testsuite/27_io/fpos/14320-3.cc: Likewise.
570         * testsuite/27_io/fpos/14320-4.cc: Likewise.
571         * testsuite/27_io/spanstream/version.cc: Likewise.
572         * testsuite/29_atomics/atomic/lwg3220.cc: Likewise.
573         * testsuite/29_atomics/atomic/operators/51811.cc: Likewise.
574         * testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise.
575         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Likewise.
576         * testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
577         * testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise.
578         * testsuite/30_threads/barrier/2.cc: Likewise.
579         * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
580         Likewise.
581         * testsuite/30_threads/jthread/version.cc: Likewise.
582         * testsuite/30_threads/latch/2.cc: Likewise.
583         * testsuite/30_threads/semaphore/2.cc: Likewise.
584         * testsuite/30_threads/stop_token/2.cc: Likewise.
585         * testsuite/abi/pr42230.cc: Likewise.
586         * testsuite/ext/shared_ptr/1.cc: Likewise.
587         * testsuite/libstdc++-xmethods/shared_ptr.cc: Likewise.
588         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
589         * testsuite/std/ranges/adaptors/p1739.cc: Likewise.
590         * testsuite/std/ranges/iota/lwg3292_neg.cc: Likewise.
591         * testsuite/std/ranges/p2325.cc: Likewise.
593 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
595         * include/std/bitset (bitset(const C*, size_type n, C, C))
596         [!_GLIBCXX_HOSTED]: Remove std::basic_string dependency.
597         (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]: Abort instead of
598         throwing.
600 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
602         PR libstdc++/103626
603         * include/std/bitset [!_GLIBCXX_HOSTED]: Re-enable std::hash.
604         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Require ET
605         hosted.
606         * testsuite/20_util/bitset/ext/constexpr.cc: Likewise.
608 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
610         PR libstdc++/103626
611         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
612         Also require hosted.
613         (check_effective_target_hosted): New proc.
615 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
616             Jonathan Wakely  <jwakely@redhat.com>
618         PR libstdc++/103626
619         * testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]:
620         Do not include C headers that aren't valid for freestanding.
621         * testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]:
622         Do not test tag types that aren't defined for freestanding.
623         * testsuite/18_support/headers/cstdlib/functions_std.cc: Do not
624         check for std::getenv and std::system for freestanding.
625         * testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]:
626         Do not test hosted parts of the standard library.
627         * testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]:
628         Likewise.
629         * testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]:
630         Likewise.
631         * testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]:
632         Likewise.
633         * testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise.
634         * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]:
635         Likewise.
636         * testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]:
637         Likewise.
638         * testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise.
639         * testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise.
640         * testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise.
642 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
644         PR libstdc++/106953
645         * include/Makefile.am [!_GLIBCXX_HOSTED]: Remove
646         install-freestanding-headers, unifying it with the usual
647         install-headers
648         * include/Makefile.in: Regenerate.
650 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
651             Jonathan Wakely  <jwakely@redhat.com>
653         PR libstdc++/103626
654         * include/Makefile.am: Add new header.
655         * include/Makefile.in: Regenerate.
656         * include/bits/requires_hosted.h: New header.
657         * include/experimental/algorithm: Include
658         <bits/requires_hosted.h>.
659         * include/experimental/any: Likewise.
660         * include/experimental/array: Likewise.
661         * include/experimental/buffer: Likewise.
662         * include/experimental/chrono: Likewise.
663         * include/experimental/deque: Likewise.
664         * include/experimental/executor: Likewise.
665         * include/experimental/filesystem: Likewise.
666         * include/experimental/forward_list: Likewise.
667         * include/experimental/functional: Likewise.
668         * include/experimental/internet: Likewise.
669         * include/experimental/io_context: Likewise.
670         * include/experimental/iterator: Likewise.
671         * include/experimental/list: Likewise.
672         * include/experimental/map: Likewise.
673         * include/experimental/memory: Likewise.
674         * include/experimental/memory_resource: Likewise.
675         * include/experimental/net: Likewise.
676         * include/experimental/netfwd: Likewise.
677         * include/experimental/numeric: Likewise.
678         * include/experimental/optional: Likewise.
679         * include/experimental/propagate_const: Likewise.
680         * include/experimental/random: Likewise.
681         * include/experimental/ratio: Likewise.
682         * include/experimental/regex: Likewise.
683         * include/experimental/scope: Likewise.
684         * include/experimental/set: Likewise.
685         * include/experimental/simd: Likewise.
686         * include/experimental/socket: Likewise.
687         * include/experimental/source_location: Likewise.
688         * include/experimental/string: Likewise.
689         * include/experimental/string_view: Likewise.
690         * include/experimental/system_error: Likewise.
691         * include/experimental/timer: Likewise.
692         * include/experimental/tuple: Likewise.
693         * include/experimental/unordered_map: Likewise.
694         * include/experimental/unordered_set: Likewise.
695         * include/experimental/utility: Likewise.
696         * include/experimental/vector: Likewise.
697         * include/std/barrier: Likewise.
698         * include/std/chrono: Likewise.
699         * include/std/condition_variable: Likewise.
700         * include/std/deque: Likewise.
701         * include/std/execution: Likewise.
702         * include/std/filesystem: Likewise.
703         * include/std/forward_list: Likewise.
704         * include/std/fstream: Likewise.
705         * include/std/future: Likewise.
706         * include/std/iomanip: Likewise.
707         * include/std/ios: Likewise.
708         * include/std/iosfwd: Likewise.
709         * include/std/iostream: Likewise.
710         * include/std/istream: Likewise.
711         * include/std/latch: Likewise.
712         * include/std/list: Likewise.
713         * include/std/locale: Likewise.
714         * include/std/map: Likewise.
715         * include/std/memory_resource: Likewise.
716         * include/std/mutex: Likewise.
717         * include/std/ostream: Likewise.
718         * include/std/queue: Likewise.
719         * include/std/random: Likewise.
720         * include/std/regex: Likewise.
721         * include/std/semaphore: Likewise.
722         * include/std/set: Likewise.
723         * include/std/shared_mutex: Likewise.
724         * include/std/spanstream: Likewise.
725         * include/std/sstream: Likewise.
726         * include/std/stack: Likewise.
727         * include/std/stacktrace: Likewise.
728         * include/std/stop_token: Likewise.
729         * include/std/streambuf: Likewise.
730         * include/std/string: Likewise.
731         * include/std/syncstream: Likewise.
732         * include/std/system_error: Likewise.
733         * include/std/thread: Likewise.
734         * include/std/unordered_map: Likewise.
735         * include/std/unordered_set: Likewise.
736         * include/std/valarray: Likewise.
737         * include/std/vector: Likewise.
738         * include/tr1/array: Likewise.
739         * include/tr1/ccomplex: Likewise.
740         * include/tr1/cctype: Likewise.
741         * include/tr1/cfenv: Likewise.
742         * include/tr1/cfloat: Likewise.
743         * include/tr1/cinttypes: Likewise.
744         * include/tr1/climits: Likewise.
745         * include/tr1/cmath: Likewise.
746         * include/tr1/complex: Likewise.
747         * include/tr1/complex.h: Likewise.
748         * include/tr1/cstdarg: Likewise.
749         * include/tr1/cstdbool: Likewise.
750         * include/tr1/cstdint: Likewise.
751         * include/tr1/cstdio: Likewise.
752         * include/tr1/cstdlib: Likewise.
753         * include/tr1/ctgmath: Likewise.
754         * include/tr1/ctime: Likewise.
755         * include/tr1/ctype.h: Likewise.
756         * include/tr1/cwchar: Likewise.
757         * include/tr1/cwctype: Likewise.
758         * include/tr1/fenv.h: Likewise.
759         * include/tr1/float.h: Likewise.
760         * include/tr1/functional: Likewise.
761         * include/tr1/inttypes.h: Likewise.
762         * include/tr1/limits.h: Likewise.
763         * include/tr1/math.h: Likewise.
764         * include/tr1/memory: Likewise.
765         * include/tr1/random: Likewise.
766         * include/tr1/regex: Likewise.
767         * include/tr1/stdarg.h: Likewise.
768         * include/tr1/stdbool.h: Likewise.
769         * include/tr1/stdint.h: Likewise.
770         * include/tr1/stdio.h: Likewise.
771         * include/tr1/stdlib.h: Likewise.
772         * include/tr1/tgmath.h: Likewise.
773         * include/tr1/tuple: Likewise.
774         * include/tr1/type_traits: Likewise.
775         * include/tr1/unordered_map: Likewise.
776         * include/tr1/unordered_set: Likewise.
777         * include/tr1/utility: Likewise.
778         * include/tr1/wchar.h: Likewise.
779         * include/tr1/wctype.h: Likewise.
780         * include/c_global/cmath: Likewise.
781         * include/ext/algorithm: Include <bits/requires_hosted.h>.
782         * include/ext/bitmap_allocator.h: Likewise.
783         * include/ext/cmath: Likewise.
784         * include/ext/codecvt_specializations.h: Likewise.
785         * include/ext/debug_allocator.h: Likewise.
786         * include/ext/enc_filebuf.h: Likewise.
787         * include/ext/extptr_allocator.h: Likewise.
788         * include/ext/functional: Likewise.
789         * include/ext/malloc_allocator.h: Likewise.
790         * include/ext/memory: Likewise.
791         * include/ext/mt_allocator.h: Likewise.
792         * include/ext/new_allocator.h: Likewise.
793         * include/ext/numeric: Likewise.
794         * include/ext/pod_char_traits.h: Likewise.
795         * include/ext/pool_allocator.h: Likewise.
796         * include/ext/random: Likewise.
797         * include/ext/random.tcc: Likewise.
798         * include/ext/rb_tree: Likewise.
799         * include/ext/rc_string_base.h: Likewise.
800         * include/ext/rope: Likewise.
801         * include/ext/ropeimpl.h: Likewise.
802         * include/ext/slist: Likewise.
803         * include/ext/sso_string_base.h: Likewise.
804         * include/ext/stdio_filebuf.h: Likewise.
805         * include/ext/stdio_sync_filebuf.h: Likewise.
806         * include/ext/string_conversions.h: Likewise.
807         * include/ext/throw_allocator.h: Likewise.
808         * include/ext/vstring.h: Likewise.
809         * include/ext/vstring.tcc: Likewise.
810         * include/ext/vstring_fwd.h: Likewise.
811         * include/ext/vstring_util.h: Likewise.
812         * include/std/charconv: Likewise.
813         (__cpp_lib_to_chars): Do not define for freestanding.
814         * include/std/version: Adjust which macros get defined in
815         freestanding.
816         * include/ext/pointer.h [!_GLIBCXX_HOSTED]: Omit iostream
817         functionality from freestanding.
818         * include/std/algorithm [!_GLIBCXX_HOSTED]: Omit PSTL algos.
819         * include/std/memory [!_GLIBCXX_HOSTED]: Omit
820         <bits/stl_tempbuf.h> in freestanding
821         * include/bits/algorithmfwd.h [!_GLIBCXX_HOSTED]: Omit leftover
822         random_shuffle and stable_partition definition.
823         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED]: Omit
824         random_shuffle and stable_partition from freestanding.
825         * include/bits/ranges_algo.h [!_GLIBCXX_HOSTED]: Omit
826         stable_partition from freestanding.
827         * include/bits/concept_check.h: Remove needless HOSTED check.
828         * include/std/iterator: Include <bits/ranges_base.h>.
829         * include/std/numeric (__cpp_lib_parallel_algorithms): Do not
830         define for freestanding.
831         * include/std/functional (__cpp_lib_boyer_moore_searcher):
832         Likewise.
833         * testsuite/lib/prune.exp: Match error for hosted-only libstdc++
834         tests.
836 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
837             Arsen Arsenović  <arsen@aarsen.me>
839         * include/precompiled/extc++.h [!_GLIBCXX_HOSTED]: Do not
840         include headers that aren't valid for freestanding.
841         * include/precompiled/stdc++.h [!_GLIBCXX_HOSTED]: Likewise.
843 2022-10-03  Arsen Arsenović  <arsen@aarsen.me>
845         * configure.ac: Remove any lines that unconditionally include
846         <stdio.h> from ac_includes_default, when running Autoconf <2.70.
847         * configure: Regenerate.
849 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
851         PR libstdc++/103626
852         * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Define _GLIBCXX_HOSTED
853         to __STDC_HOSTED__ for non-freestanding installations.
854         * configure: Regenerate.
855         * include/Makefile.am (${host_builddir}/c++config.h): Adjust
856         grep pattern.
857         * include/Makefile.in: Regenerate.
858         * testsuite/lib/libstdc++.exp (v3-build_support): Use
859         -fno-freestanding.
860         * testsuite/libstdc++-abi/abi.exp: Likewise.
862 2022-10-03  Jonathan Wakely  <jwakely@redhat.com>
864         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
865         Change body of unused operator<< overload to throw if called.
866         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
867         Likewise.
869 2022-10-03  François Dumont  <fdumont@gcc.gnu.org>
871         * python/libstdcxx/v6/printers.py (Printer.add_version): Do not add version
872         namespace for __cxx11 symbols.
873         (add_one_template_type_printer): Likewise.
874         (add_one_type_printer): Likewise.
875         (FilteringTypePrinter._recognizer.recognize): Add a workaround for std::string & al
876         ambiguous typedef matching both std:: and std::__cxx11:: symbols.
877         * testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete
878         \#define _GLIBCXX_USE_CXX11_ABI 0.
879         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise. Adapt test to accept
880         std::__cxx11::list.
881         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
882         * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
883         * testsuite/libstdc++-prettyprinters/80276.cc: Likewise and remove xfail for c++20
884         and debug mode.
885         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
887 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
889         * testsuite/20_util/bitset/access/to_ulong.cc: Construct bitset
890         from binary literal instead of using stringstream.
892 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
894         * include/std/bitset (operator>>): Use a simple buffer instead
895         of std::basic_string.
897 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
899         * include/std/bitset (_M_copy_from_ptr, _M_copy_from_string)
900         (_M_copy_to_string): Change access to private.
901         (_M_copy_from_string(const basic_string&, size_t, size_t)):
902         Remove.
903         (_M_copy_to_string(const basic_string&)): Remove.
905 2022-09-30  Jonathan Wakely  <jwakely@redhat.com>
907         * testsuite/20_util/bind/ref_neg.cc: Fix dg-prune-output
908         directive.
910 2022-09-30  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
911             Yvan ROUX   <yvan.roux@foss.st.com>
913         * testsuite/20_util/bind/ref_neg.cc: Prune Windows paths too.
915 2022-09-30  Arsen Arsenović  <arsen@aarsen.me>
917         * include/std/bitset: Include <bits/stl_algobase.h>.
919 2022-09-29  François Dumont  <fdumont@gcc.gnu.org>
921         * python/libstdcxx/v6/printers.py (add_one_template_type_printer): Register
922         printer for types in std::__debug namespace with template parameters in std::__8
923         namespace.
925 2022-09-29  Patrick Palka  <ppalka@redhat.com>
927         * include/bits/unique_ptr.h (unique_ptr<_Tp[], _Dp>): Remove
928         __remove_cv and use __remove_cv_t instead.
930 2022-09-29  Jonathan Wakely  <jwakely@redhat.com>
932         * include/std/type_traits (__is_invocable_impl): Check
933         __has_builtin(__reference_converts_from_temporary) before using
934         built-in.
936 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
938         * doc/xml/manual/evolution.xml: Document std::bind API
939         changes.
940         * doc/xml/manual/intro.xml: Document LWG 2487 status.
941         * doc/xml/manual/using.xml: Clarify default value of
942         _GLIBCXX_USE_DEPRECATED.
943         * doc/html/*: Regenerate.
944         * include/std/functional (_Bind::operator()(Args&&...) volatile)
945         (_Bind::operator()(Args&&...) const volatile)
946         (_Bind_result::operator()(Args&&...) volatile)
947         (_Bind_result::operator()(Args&&...) const volatile): Replace
948         with deleted overload for C++20 and later.
949         * testsuite/20_util/bind/cv_quals.cc: Check for deprecated
950         warnings in C++17.
951         * testsuite/20_util/bind/cv_quals_2.cc: Likewise, and check for
952         ill-formed in C++20.
954 2022-09-28  Jonathan Wakely  <jwakely@redhat.com>
956         PR libstdc++/70692
957         * include/bits/invoke.h [__cplusplus < 201703] (__invoke_r):
958         Remove is_invocable and is_convertible constraints.
959         * include/std/type_traits (__is_invocable_impl::_S_conv): Use
960         non-deduced context for parameter.
961         (__is_invocable_impl::_S_test): Remove _Check_noex template
962         parameter and use deduced noexcept value in its place. Add bool
963         parameter to detect dangling references.
964         (__is_invocable_impl::type): Adjust call to _S_test to avoid
965         deducing unnecessary noexcept property..
966         (__is_invocable_impl::__nothrow_type): Rename to ...
967         (__is_invocable_impl::__nothrow_conv): ... this. Adjust call
968         to _S_test to deduce noexcept property.
969         * testsuite/20_util/bind/dangling_ref.cc: New test.
970         * testsuite/20_util/function/cons/70692.cc: New test.
971         * testsuite/20_util/function_objects/invoke/dangling_ref.cc:
972         New test.
973         * testsuite/20_util/is_invocable/dangling_ref.cc: New test.
974         * testsuite/30_threads/packaged_task/cons/dangling_ref.cc:
975         New test.
977 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
979         PR c++/107049
980         * testsuite/20_util/is_convertible/requirements/access.cc: New
981         test.
983 2022-09-27  Jonathan Wakely  <jwakely@redhat.com>
985         PR c++/106651
986         * include/bits/std_function.h (__function_guide_t): New alias
987         template.
988         [__cpp_static_call_operator] (__function_guide_static_helper):
989         New class template.
990         (function): Use __function_guide_t in deduction guide.
991         * include/std/future (packaged_task): Use __function_guide_t in
992         deduction guide.
993         * testsuite/20_util/function/cons/deduction_c++23.cc: New test.
994         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
995         New test.
997 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
999         * include/bits/ptr_traits.h (__ptr_traits_elem) [__cpp_concepts]:
1000         Also define the __ptr_traits_elem class template for the
1001         concepts case.
1002         (pointer_traits<Ptr>): Remove constrained partial
1003         specialization.
1004         * testsuite/20_util/pointer_traits/lwg3545.cc: Check for
1005         ambiguitiy with program-defined partial specialization.
1007 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
1009         * include/std/type_traits (is_convertible, is_convertible_v):
1010         Define using new built-in.
1011         (is_nothrow_convertible is_nothrow_convertible_v): Likewise.
1013 2022-09-26  Jonathan Wakely  <jwakely@redhat.com>
1015         PR libstdc++/107037
1016         * include/std/bitset (_Base_bitset::_M_do_reset): Use
1017         preprocessor conditional around non-C++03 code.
1018         * testsuite/20_util/bitset/107037.cc: New test.
1020 2022-09-24  Jonathan Wakely  <jwakely@redhat.com>
1022         * include/bits/alloc_traits.h (allocator_traits::is_always_equal):
1023         Only instantiate is_empty if needed.
1024         * include/bits/ptr_traits.h (__ptr_traits_impl::difference_type)
1025         (__ptr_traits_impl::rebind): Use __detected_or.
1026         * include/experimental/type_traits (is_same_v): Add a partial
1027         specialization instead of instantiating the std::is_same class
1028         template.
1029         (detected_t): Redefine in terms of detected_or_t.
1030         (is_detected, is_detected_v): Redefine in terms of detected_t.
1031         * include/std/type_traits [__cpp_concepts] (__detected_or): Add
1032         new definition using concepts.
1033         (__detector::value_t): Rename to __is_detected.
1034         * testsuite/17_intro/names.cc: Check value_t isn't used.
1036 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1038         * testsuite/20_util/is_assignable/requirements/access.cc:
1039         New test.
1041 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1043         PR libstdc++/91456
1044         * include/std/type_traits (__is_nothrow_invocable_lib): Remove.
1045         (__is_invocable_impl::__nothrow_type): New member type which
1046         checks if the conversion can throw.
1047         (__is_nt_invocable_impl): Replace class template with alias
1048         template to __is_nt_invocable_impl::__nothrow_type.
1049         * testsuite/20_util/is_nothrow_invocable/91456.cc: New test.
1050         * testsuite/20_util/is_nothrow_convertible/value.cc: Remove
1051         macro used by value_ext.cc test.
1052         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Remove
1053         test for non-standard __is_nothrow_invocable_lib trait.
1055 2022-09-23  Marek Polacek  <polacek@redhat.com>
1057         PR c++/106784
1058         * include/std/type_traits: Rename __is_nothrow_convertible to
1059         __is_nothrow_convertible_lib.
1060         * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Likewise.
1062 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1064         * include/std/bitset (operator>>): Do not copy for N==0.
1065         * testsuite/20_util/bitset/io/input.cc: Add comment.
1067 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1069         * include/debug/bitset (__debug::bitset): Add constexpr to all
1070         member functions.
1071         (operator&, operator|, operator^): Add inline and constexpr.
1072         (operator>>, operator<<): Add inline.
1073         * testsuite/20_util/bitset/access/constexpr.cc: Only check using
1074         constexpr std::string for the cxx11 ABI.
1075         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Likewise.
1076         * testsuite/20_util/headers/bitset/synopsis.cc: Check constexpr
1077         for C++23.
1079 2022-09-23  Jonathan Wakely  <jwakely@redhat.com>
1081         * include/std/bitset (bitset::_M_copy_to_string): Find set bits
1082         instead of iterating over individual bits.
1084 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
1086         * include/std/bitset (bitset): Add constexpr for C++23. Guard
1087         members using std::string with _GLIBCXX_HOSTED.
1088         * include/std/version (__cpp_lib_constexpr_bitset): Define.
1089         * testsuite/20_util/bitset/access/constexpr.cc: New test.
1090         * testsuite/20_util/bitset/cons/constexpr_c++23.cc: New test.
1091         * testsuite/20_util/bitset/count/constexpr.cc: New test.
1092         * testsuite/20_util/bitset/ext/constexpr.cc: New test.
1093         * testsuite/20_util/bitset/operations/constexpr_c++23.cc: New test.
1094         * testsuite/20_util/bitset/version.cc: New test.
1096 2022-09-22  Jonathan Wakely  <jwakely@redhat.com>
1098         * testsuite/23_containers/bitset/18604.cc: Moved to...
1099         * testsuite/20_util/bitset/18604.cc: ...here.
1100         * testsuite/23_containers/bitset/45713.cc: Moved to...
1101         * testsuite/20_util/bitset/45713.cc: ...here.
1102         * testsuite/23_containers/bitset/to_string/dr396.cc: Moved to...
1103         * testsuite/20_util/bitset/access/dr396.cc: ...here.
1104         * testsuite/23_containers/bitset/to_string/1.cc: Moved to...
1105         * testsuite/20_util/bitset/access/to_string.cc: ...here.
1106         * testsuite/23_containers/bitset/to_ullong/1.cc: Moved to...
1107         * testsuite/20_util/bitset/access/to_ullong.cc: ...here.
1108         * testsuite/23_containers/bitset/to_ulong/1.cc: Moved to...
1109         * testsuite/20_util/bitset/access/to_ulong.cc: ...here.
1110         * testsuite/23_containers/bitset/cons/1.cc: Moved to...
1111         * testsuite/20_util/bitset/cons/1.cc: ...here.
1112         * testsuite/23_containers/bitset/cons/16020.cc: Moved to...
1113         * testsuite/20_util/bitset/cons/16020.cc: ...here.
1114         * testsuite/23_containers/bitset/cons/2.cc: Moved to...
1115         * testsuite/20_util/bitset/cons/2.cc: ...here.
1116         * testsuite/23_containers/bitset/cons/3.cc: Moved to...
1117         * testsuite/20_util/bitset/cons/3.cc: ...here.
1118         * testsuite/23_containers/bitset/cons/38244.cc: Moved to...
1119         * testsuite/20_util/bitset/cons/38244.cc: ...here.
1120         * testsuite/23_containers/bitset/cons/50268.cc: Moved to...
1121         * testsuite/20_util/bitset/cons/50268.cc: ...here.
1122         * testsuite/23_containers/bitset/cons/6282.cc: Moved to...
1123         * testsuite/20_util/bitset/cons/6282.cc: ...here.
1124         * testsuite/23_containers/bitset/cons/constexpr.cc: Moved to...
1125         * testsuite/20_util/bitset/cons/constexpr.cc: ...here.
1126         * testsuite/23_containers/bitset/cons/dr1325-1.cc: Moved to...
1127         * testsuite/20_util/bitset/cons/dr1325-1.cc: ...here.
1128         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Moved to...
1129         * testsuite/20_util/bitset/cons/dr1325-2.cc: ...here.
1130         * testsuite/23_containers/bitset/cons/dr396.cc: Moved to...
1131         * testsuite/20_util/bitset/cons/dr396.cc: ...here.
1132         * testsuite/23_containers/bitset/debug/invalidation/1.cc: Moved to...
1133         * testsuite/20_util/bitset/debug/invalidation/1.cc: ...here.
1134         * testsuite/23_containers/bitset/ext/15361.cc: Moved to...
1135         * testsuite/20_util/bitset/ext/15361.cc: ...here.
1136         * testsuite/23_containers/bitset/hash/1.cc: Moved to...
1137         * testsuite/20_util/bitset/hash/1.cc: ...here.
1138         * testsuite/23_containers/bitset/input/1.cc: Moved to...
1139         * testsuite/20_util/bitset/io/input.cc: ...here.
1140         * testsuite/23_containers/bitset/count/6124.cc: Moved to...
1141         * testsuite/20_util/bitset/observers/6124.cc: ...here.
1142         * testsuite/23_containers/bitset/all/1.cc: Moved to...
1143         * testsuite/20_util/bitset/observers/all.cc: ...here.
1144         * testsuite/23_containers/bitset/test/1.cc: Moved to...
1145         * testsuite/20_util/bitset/observers/test.cc: ...here.
1146         * testsuite/23_containers/bitset/operations/1.cc: Moved to...
1147         * testsuite/20_util/bitset/operations/1.cc: ...here.
1148         * testsuite/23_containers/bitset/operations/13838.cc: Moved to...
1149         * testsuite/20_util/bitset/operations/13838.cc: ...here.
1150         * testsuite/23_containers/bitset/operations/2.cc: Moved to...
1151         * testsuite/20_util/bitset/operations/2.cc: ...here.
1152         * testsuite/23_containers/bitset/operations/96303.cc: Moved to...
1153         * testsuite/20_util/bitset/operations/96303.cc: ...here.
1154         * testsuite/23_containers/bitset/operations/constexpr-2.cc: Moved to...
1155         * testsuite/20_util/bitset/operations/constexpr-2.cc: ...here.
1156         * testsuite/23_containers/bitset/operations/constexpr.cc: Moved to...
1157         * testsuite/20_util/bitset/operations/constexpr.cc: ...here.
1158         * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: Moved to...
1159         * testsuite/20_util/bitset/requirements/constexpr_functions.cc: ...here.
1160         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc: Moved to...
1161         * testsuite/20_util/bitset/requirements/explicit_instantiation/1.cc: ...here.
1162         * testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc: Moved to...
1163         * testsuite/20_util/bitset/requirements/explicit_instantiation/1_c++0x.cc: ...here.
1164         * testsuite/23_containers/headers/bitset/synopsis.cc: Moved to...
1165         * testsuite/20_util/headers/bitset/synopsis.cc: ...here.
1167 2022-09-22  François Dumont  <fdumont@gcc.gnu.org>
1169         * python/libstdcxx/v6/printers.py: Remove ptinter registration for non-existing
1170         types std::__debug::unique_ptr, std::__debug::stack, std::__debug::queue,
1171         std::__debug::priority_queue.
1173 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1175         PR libstdc++/91456
1176         * testsuite/20_util/function/91456.cc: Add comment with PR
1177         number.
1178         * testsuite/20_util/is_invocable/91456.cc: Likewise. Replace
1179         std::function checks with std::is_invocable_r checks.
1181 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1183         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Remove
1184         unnecessary main function.
1185         * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1186         Likewise.
1187         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1188         Likewise.
1189         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1190         Likewise.
1191         * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1192         Likewise.
1194 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1196         * testsuite/20_util/headers/memory/synopsis.cc: Add declarations
1197         from C++11 and later.
1199 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1201         * doc/xml/manual/documentation_hacking.xml: Remove trailing
1202         whitespace.
1203         * doc/xml/manual/policy_data_structures.xml: Likewise.
1205 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1207         * include/c_compatibility/stdlib.h [!_GLIBCXX_HOSTED]: Add
1208         using-declaration for _Exit.
1210 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1212         * testsuite/18_support/uncaught_exception/14026.cc: Qualify
1213         call to std::abort.
1215 2022-09-21  Jonathan Wakely  <jwakely@redhat.com>
1217         * include/bits/ranges_base.h: Include <initializer_list>.
1219 2022-09-20  Jonathan Wakely  <jwakely@redhat.com>
1221         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (quick_exit): Fix
1222         missing space.
1224 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1226         PR libstdc++/106953
1227         * include/backward/auto_ptr.h [!_GLIBCXX_HOSTED]: Do not define
1228         shared_ptr members.
1229         * include/bits/alloc_traits.h [!_GLIBCXX_HOSTED]: Do not declare
1230         std::allocator_traits<std::allocator<T>> specializations for
1231         freestanding.
1232         * include/bits/memoryfwd.h [!_GLIBCXX_HOSTED] (allocator): Do
1233         not declare for freestanding.
1234         * include/bits/stl_algo.h [!_GLIBCXX_HOSTED] (stable_partition):
1235         Do not define for freestanding.
1236         [!_GLIBCXX_HOSTED] (merge, stable_sort): Do not use temporary
1237         buffers for freestanding.
1238         * include/bits/stl_algobase.h [!_GLIBCXX_HOSTED]: Do not declare
1239         streambuf iterators and overloaded algorithms using them.
1240         * include/bits/stl_uninitialized.h [!_GLIBCXX_HOSTED]: Do not
1241         define specialized overloads for std::allocator.
1242         * include/bits/unique_ptr.h [!_GLIBCXX_HOSTED] (make_unique)
1243         (make_unique_for_overwrite, operator<<): Do not define for
1244         freestanding.
1245         * include/c_global/cstdlib [!_GLIBCXX_HOSTED] (_Exit): Declare.
1246         Use _GLIBCXX_NOTHROW instead of throw().
1247         * include/debug/assertions.h [!_GLIBCXX_HOSTED]: Ignore
1248         _GLIBCXX_DEBUG for freestanding.
1249         * include/debug/debug.h [!_GLIBCXX_DEBUG]: Likewise.
1250         * include/std/bit [!_GLIBCXX_HOSTED]: Do not use the custom
1251         __int_traits if <ext/numeric_traits.h> is available.
1252         * include/std/functional [!_GLIBCXX_HOSTED]: Do not include
1253         headers that aren't valid for freestanding.
1254         (boyer_moore_searcher, boyer_moore_horspool_searcher): Do not
1255         define for freestanding.
1256         * include/std/iterator [!_GLIBCXX_HOSTED]: Do not include
1257         headers that aren't valid for freestanding.
1258         * include/std/memory [!_GLIBCXX_HOSTED]: Likewise.
1259         * include/std/ranges [!_GLIBCXX_HOSTED] (istream_view): Do not
1260         define for freestanding.
1261         (views::__detail::__is_basic_string_view) [!_GLIBCXX_HOSTED]:
1262         Do not define partial specialization for freestanding.
1264 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1266         * include/bits/alloc_traits.h (__alloc_swap)
1267         (__shrink_to_fit_aux): Move here, from ...
1268         * include/bits/allocator.h: ... here.
1269         * include/ext/alloc_traits.h: Do not include allocator.h.
1271 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1273         * include/bits/stl_algo.h: Include <bits/stl_algobase.h>.
1274         * include/bits/stl_tempbuf.h: Include headers for __try and
1275         __catch macros, std::pair, and __gnu_cxx::__numeric_traits.
1276         * include/bits/stream_iterator.h: Include <iosfwd> and headers
1277         for std::addressof and std::iterator.
1278         * include/bits/streambuf_iterator.h: Include header for
1279         std::iterator.
1280         * include/std/iterator: Do not include <iosfwd>.
1282 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1284         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
1285         Store value with non-zero padding bits after construction.
1287 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1289         * include/tr1/random.h (__detail::_Adaptor::_BEngine): Remove.
1290         (__detail::_Adaptor::_M_g): Make public.
1291         (__detail::_Adaptor<_Engine*, _Dist>): Remove partial
1292         specialization.
1293         (variate_generate::_Value): New helper to simplify handling of
1294         _Engine* and _Engine& template arguments.
1295         (variate_generate::engine_value_type): Define to underlying
1296         engine type, not adapted type.
1297         (variate_generate::engine()): Return underlying engine instead
1298         of adaptor.
1299         * testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc:
1300         Fix comment.
1301         * testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc:
1302         Check member typedefs have the correct types.
1304 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1306         * include/debug/formatter.h [_GLIBCXX_DEBUG_BACKTRACE]
1307         (_Error_formatter): Use 0 as null pointer constant.
1309 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1311         * include/bits/allocator.h (__alloc_neq): Remove.
1312         * include/bits/stl_list.h (list::_M_check_equal_allocators):
1313         Compare allocators directly, without __alloc_neq.
1315 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1317         * doc/doxygen/user.cfg.in (PREDEFINED): Remove __allocator_base.
1318         * include/bits/allocator.h: Fix nesting of Doxygen commands.
1320 2022-09-16  Jonathan Wakely  <jwakely@redhat.com>
1322         * doc/xml/manual/abi.xml: Document GLIBCXX_3.4.30 and
1323         GLIBCXX_3.4.31 versions.
1324         * doc/html/manual/abi.html: Regenerate.
1326 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
1328         * include/std/memory: Do not include <bits/stl_algobase.h>.
1330 2022-09-15  Jonathan Wakely  <jwakely@redhat.com>
1332         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_PRE_LOCK):
1333         Replace with ...
1334         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK): ... this, add try_lock flag.
1335         (_GLIBCXX_TSAN_MUTEX_TRY_LOCK_FAILED): New macro using
1336         try_lock_failed flag
1337         (_GLIBCXX_TSAN_MUTEX_POST_LOCK): Rename to ...
1338         (_GLIBCXX_TSAN_MUTEX_LOCKED): ... this.
1339         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK): Remove invalid flag.
1340         (_GLIBCXX_TSAN_MUTEX_POST_UNLOCK): Remove invalid flag.
1341         (_Sp_atomic::_Atomic_count::lock): Use new macros.
1343 2022-09-15  Patrick Palka  <ppalka@redhat.com>
1345         * include/bits/ranges_algo.h (__adjacent_find_fn, adjacent_find):
1346         Move to ...
1347         * include/bits/ranges_util.h: ... here.
1348         * include/std/ranges (chunk_by_view): Define.
1349         (chunk_by_view::_Iterator): Define.
1350         (__detail::__can_chunk_by_view): Define.
1351         (_ChunkBy, chunk_by): Define.
1352         * testsuite/std/ranges/adaptors/chunk_by/1.cc: New test.
1354 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
1356         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
1357         Adapt dg-prune-output to _GLIBCXX_INLINE_VERSION mode.
1359 2022-09-15  François Dumont  <fdumont@gcc.gnu.org>
1361         * config/abi/pre/gnu-versioned-namespace.ver: Remove obsolete std::__detail::__8
1362         symbols.
1364 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1366         * include/bits/shared_ptr_atomic.h (_GLIBCXX_TSAN_MUTEX_DESTROY)
1367         (_GLIBCXX_TSAN_MUTEX_PRE_LOCK, _GLIBCXX_TSAN_MUTEX_POST_LOCK)
1368         (_GLIBCXX_TSAN_MUTEX_PRE_UNLOCK, _GLIBCXX_TSAN_MUTEX_POST_UNLOCK)
1369         (_GLIBCXX_TSAN_MUTEX_PRE_SIGNAL, _GLIBCXX_TSAN_MUTEX_POST_SIGNAL):
1370         Define macros for TSan annotation functions.
1371         (_Sp_atomic::_Atomic_count): Add annotations.
1373 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1375         * include/bits/stl_tempbuf.h: Include <new>.
1377 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1379         * testsuite/17_intro/names.cc: Explain why poison pragma can't
1380         be used.
1382 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1384         * include/std/future
1385         (_State_baseV2::__setter(exception_ptr&, promise&)): Add
1386         assertion for LWG 2276 precondition.
1387         * testsuite/30_threads/promise/members/set_exception_neg.cc:
1388         New test.
1390 2022-09-14  Jonathan Wakely  <jwakely@redhat.com>
1392         * doc/xml/manual/intro.xml: Document LWG 1203.
1393         * doc/html/*: Regenerate.
1395 2022-09-14  Philipp Fent  <fent@in.tum.de>
1397         * python/libstdcxx/v6/printers.py (access_streambuf_ptrs):
1398         New helper function.
1399         (StdStringBufPrinter, StdStringStreamPrinter): New printers.
1400         (build_libstdcxx_dictionary): Register stringstream printers.
1401         * testsuite/libstdc++-prettyprinters/debug.cc: Check string
1402         streams.
1403         * testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
1404         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
1406 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1408         * include/std/ranges (__detail::__slide_caches_nothing): Define.
1409         (__detail::__slide_caches_last): Define.
1410         (__detail::__slide_caches_first): Define.
1411         (slide_view): Define.
1412         (enable_borrowed_range<slide_view>): Define.
1413         (slide_view::_Iterator): Define.
1414         (slide_view::_Sentinel): Define.
1415         (views::__detail::__can_slide_view): Define.
1416         (views::_Slide, views::slide): Define.
1417         * testsuite/std/ranges/adaptors/slide/1.cc: New test.
1419 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1421         * include/std/ranges (__detail::__div_ceil): Define.
1422         (chunk_view): Define.
1423         (chunk_view::_OuterIter): Define.
1424         (chunk_view::_OuterIter::value_type): Define.
1425         (chunk_view::_InnerIter): Define.
1426         (chunk_view<_Vp>): Define partial specialization for forward
1427         ranges.
1428         (enable_borrowed_range<chunk_view>): Define.
1429         (chunk_view<_Vp>::_Iterator): Define.
1430         (views::__detail::__can_chunk_view): Define.
1431         (views::_Chunk, views::chunk): Define.
1432         * testsuite/std/ranges/adaptors/chunk/1.cc: New test.
1434 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1436         * include/std/ranges (join_view::_Iterator::_M_satisfy):
1437         Adjust resetting _M_inner as per LWG 3569.
1438         (join_view::_Iterator::_M_inner): Wrap in std::optional
1439         as per LWG 3569.
1440         (join_view::_Iterator::_Iterator): Relax constraints as
1441         per LWG 3569.
1442         (join_view::_Iterator::operator*): Adjust as per LWG 3569.
1443         (join_view::_Iterator::operator->): Likewise.
1444         (join_view::_Iterator::operator++): Likewise.
1445         (join_view::_Iterator::operator--): Likewise.
1446         (join_view::_Iterator::iter_move): Likewise.
1447         (join_view::_Iterator::iter_swap): Likewise.
1448         * testsuite/std/ranges/adaptors/join.cc (test14): New test.
1450 2022-09-13  Patrick Palka  <ppalka@redhat.com>
1452         * include/debug/safe_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
1453         Add parentheses to avoid -Wparentheses warning.
1455 2022-09-12  Patrick Palka  <ppalka@redhat.com>
1457         PR libstdc++/106320
1458         * testsuite/std/ranges/adaptors/join.cc (test13): New test.
1460 2022-09-12  Jonathan Wakely  <jwakely@redhat.com>
1462         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: Fix
1463         comments.
1464         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc:
1465         Likewise.
1467 2022-09-12  Jakub Jelinek  <jakub@redhat.com>
1469         PR tree-optimization/105329
1470         * acinclude.m4 (libtool_VERSION): Change to 6:31:0.
1471         * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Don't export
1472         std::basic_string methods with name length of 15.
1473         (GLIBCXX_3.4.31): Export std::basic_string::_M_replace_cold.
1474         * testsuite/util/testsuite_abi.cc (check_version): Handle
1475         GLIBCXX_3.4.31.
1476         * include/bits/basic_string.h (std::basic_string::_M_replace_cold):
1477         Declare.
1478         * include/bits/basic_string.tcc (std::basic_string::_M_replace_cold):
1479         Define and export even for C++20.
1480         (std::basic_string::_M_replace): Use __builtin_expect, outline
1481         the overlapping case to _M_replace_cold.
1482         * configure: Regenerated.
1484 2022-09-09  Jonathan Wakely  <jwakely@redhat.com>
1486         * include/bits/atomic_base.h (__atomic_impl::__compare_exchange):
1487         Rename __weak to __is_weak.
1488         * testsuite/17_intro/names.cc: Add __weak and __strong.
1490 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1492         PR libstdc++/106803
1493         * include/std/ranges (views::_ZipTransform::operator()): Correct
1494         return type in the empty case.
1495         (views::_AdjacentTransform::operator()): Likewise.
1497 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1499         PR libstdc++/106798
1500         * include/std/ranges (adjacent_view::_Iterator::_Iterator): Fix
1501         typo.
1502         * testsuite/std/ranges/adaptors/adjacent/1.cc (test04): New test.
1504 2022-09-09  Patrick Palka  <ppalka@redhat.com>
1506         PR libstdc++/106766
1507         * include/std/ranges (zip_view::_Iterator::operator-): Use
1508         __to_unsigned_like instead of make_unsigned_t.
1509         (zip_view::_Sentinel::operator-): Likewise.
1510         * testsuite/std/ranges/zip/1.cc (test04): New test.
1512 2022-09-08  François Dumont  <fdumont@gcc.gnu.org>
1514         * testsuite/util/testsuite_performance.h (__gnu_test::MallocInfo): New.
1515         (__gnu_test::malloc_info): New, replace mallinfo on current platform
1516         supporting it and use mallinfo2 when glibc >= 2.33.
1518 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1520         PR c++/106838
1521         * testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc:
1522         Prune additional errors from front-end.
1523         * testsuite/20_util/is_move_constructible/incomplete_neg.cc:
1524         Likewise.
1525         * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc:
1526         Likewise.
1527         * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc:
1528         Likewise.
1529         * testsuite/20_util/is_swappable_with/incomplete_neg.cc:
1530         Likewise.
1532 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1534         * include/c_global/cstddef (byte): Add always_inline attribute
1535         to all operator overloads.
1536         (to_integer): Add always_inline attribute.
1538 2022-09-08  Thomas Rodgers  <trodgers@redhat.com>
1539             Jakub Jelinek  <jakub@redhat.com>
1540             Jonathan Wakely  <jwakely@redhat.com>
1542         * include/bits/atomic_base.h (__atomic_impl::__maybe_has_padding):
1543         New function.
1544         (__atomic_impl::clear_padding): Likewise.
1545         (__atomic_impl::__compare_exchange): Likewise.
1546         (__atomic_impl::compare_exchange_weak): Delegate to
1547         __compare_exchange.
1548         (__atomic_impl::compare_exchange_strong): Likewise.
1549         * include/std/atomic (atomic<T>::atomic(T)): Clear padding when
1550         possible in a constexpr function.
1551         (atomic::store): Clear padding.
1552         (atomic::exchange): Likewise.
1553         (atomic::compare_exchange_weak): Use __compare_exchange.
1554         (atomic::compare_exchange_strong): Likewise.
1555         * testsuite/29_atomics/atomic/compare_exchange_padding.cc: New
1556         test.
1557         * testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc:
1558         New test.
1560 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
1562         * include/std/system_error (__adl_only::make_error_code): Add
1563         deleted function.
1564         (__adl_only::make_error_condition): Likewise.
1565         (error_code::error_code(ErrorCodeEnum)): Add using-declaration
1566         for deleted function.
1567         (error_condition::error_condition(ErrorConditionEnum)):
1568         Likewise.
1569         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: New test.
1570         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc: New test.
1572 2022-09-07  Jonathan Wakely  <jwakely@redhat.com>
1574         * include/std/barrier: Add missing runtime exception.
1576 2022-09-07  Patrick Palka  <ppalka@redhat.com>
1578         * include/std/type_traits (is_reference): Make the primary
1579         template derive from false_type.  Define two partial
1580         specializations that derive from true_type.
1582 2022-09-07  Patrick Palka  <ppalka@redhat.com>
1584         * include/std/type_traits (__is_void_helper): Remove.
1585         (is_void): Make the primary template derive from false_type,
1586         and define four explicit specializations that derive from
1587         true_type.
1588         (__is_null_pointer_helper, is_null_pointer): Likewise.
1590 2022-09-07  Jason Merrill  <jason@redhat.com>
1592         * libsupc++/dyncast.cc (__dynamic_cast): Avoid virtual function
1593         call in simple success case.
1595 2022-09-06  Philipp Fent  <fent@in.tum.de>
1597         * testsuite/libstdc++-prettyprinters/48362.cc: Fix expected
1598         tuple indices.
1599         * testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
1601 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
1603         * include/std/type_traits (__success_type, __failure_type): Move
1604         definitions later in the file.
1606 2022-09-05  Jonathan Wakely  <jwakely@redhat.com>
1608         * include/std/type_traits (is_trivial_v, is_trivially_copyable_v)
1609         (is_standard_layout_v, is_pod_v, is_literal_type_v): Use
1610         built-in instead of class template.
1611         (is_same_v): Add partial specialization for true case.
1613 2022-09-02  Patrick Palka  <ppalka@redhat.com>
1615         * include/std/tuple (tuple::_UseOtherCtor): Use ::type when
1616         deriving from __and_, __or_ or __not_.
1617         * include/std/type_traits (negation): Likewise.
1618         (is_unsigned): Likewise.
1619         (__is_implicitly_default_constructible): Likewise.
1620         (is_trivially_destructible): Likewise.
1621         (__is_nt_invocable_impl): Likewise.
1623 2022-09-02  Jonathan Wakely  <jwakely@redhat.com>
1625         * include/std/type_traits (is_constructible_v)
1626         (is_default_constructible_v, is_copy_constructible_v)
1627         (is_move_constructible_v): Define using __is_constructible.
1628         (is_assignable_v, is_copy_assignable_v, is_move_assignable_v):
1629         Define using __is_assignable.
1630         (is_trivially_constructible_v)
1631         (is_trivially_default_constructible_v)
1632         (is_trivially_copy_constructible_v)
1633         (is_trivially_move_constructible_v): Define using
1634         __is_trivially_constructible.
1635         (is_trivially_assignable_v, is_trivially_copy_assignable_v)
1636         (is_trivially_move_assignable_v): Define using
1637         __is_trivially_assignable.
1638         (is_nothrow_constructible_v)
1639         (is_nothrow_default_constructible_v)
1640         (is_nothrow_copy_constructible_v)
1641         (is_nothrow_move_constructible_v): Define using
1642         __is_nothrow_constructible.
1643         (is_nothrow_assignable_v, is_nothrow_copy_assignable_v)
1644         (is_nothrow_move_assignable_v): Define using
1645         __is_nothrow_assignable.
1647 2022-09-02  Patrick Palka  <ppalka@redhat.com>
1649         * include/std/type_traits (__or_, __and_, __not_): Redefine as a
1650         class template instead of as an alias template.
1651         * testsuite/20_util/logical_traits/requirements/short_circuit.cc:
1652         Add more tests for conjunction and disjunction.  Add corresponding
1653         tests for __and_ and __or_.
1655 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1657         * include/std/ranges (adjacent_transform_view::_Iterator): Add
1658         typename keyword before dependent qualified-id.
1660 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1662         * include/std/type_traits (__is_referenceable): Remove.
1663         (__add_lvalue_reference_helper, __add_rvalue_reference_helper):
1664         Use __void_t instead of __is_referenceable.
1665         (__add_pointer_helper): Likewise.
1666         (add_pointer): Add partial specializations for reference types.
1668 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1670         * include/std/type_traits (__is_constructible_impl): Replace
1671         class template with alias template.
1672         (is_default_constructible, is_nothrow_constructible)
1673         (is_nothrow_constructible): Simplify base-specifier.
1674         (__is_copy_constructible_impl, __is_move_constructible_impl)
1675         (__is_nothrow_copy_constructible_impl)
1676         (__is_nothrow_move_constructible_impl): Remove class templates.
1677         (is_copy_constructible, is_move_constructible)
1678         (is_nothrow_constructible, is_nothrow_default_constructible)
1679         (is_nothrow_copy_constructible, is_nothrow_move_constructible):
1680         Adjust base-specifiers to use __is_constructible_impl.
1681         (__is_copy_assignable_impl, __is_move_assignable_impl)
1682         (__is_nt_copy_assignable_impl, __is_nt_move_assignable_impl):
1683         Remove class templates.
1684         (__is_assignable_impl): New alias template.
1685         (is_assignable, is_copy_assignable, is_move_assignable):
1686         Adjust base-specifiers to use new alias template.
1687         (is_nothrow_copy_assignable, is_nothrow_move_assignable):
1688         Adjust base-specifiers to use existing alias template.
1689         (__is_trivially_constructible_impl): New alias template.
1690         (is_trivially_constructible, is_trivially_default_constructible)
1691         (is_trivially_copy_constructible)
1692         (is_trivially_move_constructible): Adjust base-specifiers to use
1693         new alias template.
1694         (__is_trivially_assignable_impl): New alias template.
1695         (is_trivially_assignable, is_trivially_copy_assignable)
1696         (is_trivially_move_assignable): Adjust base-specifier to use
1697         new alias template.
1698         (__add_lval_ref_t, __add_rval_ref_t): New alias templates.
1699         (add_lvalue_reference, add_rvalue_reference): Use new alias
1700         templates.
1702 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1704         * include/std/type_traits (__decay_selector): Add partial
1705         specializations for array types. Only check for function types
1706         when not dealing with an array.
1707         (decay): Add partial specializations for reference types.
1709 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1711         * include/std/type_traits (is_lvalue_reference_v)
1712         (is_rvalue_reference_v, is_reference_v, is_const_v)
1713         (is_volatile_v): Define using partial specializations instead
1714         of instantiating class templates.
1716 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1718         * include/std/type_traits (is_enum_v, is_class_v, is_union_v)
1719         (is_empty_v, is_polymoprhic_v, is_abstract_v, is_final_v)
1720         (is_base_of_v, is_aggregate_v): Use built-in directly instead of
1721         instantiating class template.
1723 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1725         * include/std/type_traits (is_scoped_enum): Remove workaround.
1727 2022-09-01  Patrick Palka  <ppalka@redhat.com>
1729         * include/std/ranges (__detail::__unarize): Define.
1730         (adjacent_view::_Iterator): Befriend adjacent_transform_view.
1731         (adjacent_transform_view): Define.
1732         (adjacent_transform_view::_Iterator): Define.
1733         (adjacent_transform_view::_Sentinel): Define.
1734         (views::__detail::__can_adjacent_transform_view): Define.
1735         (views::_AdjacentTransform): Define.
1736         (views::adjacent_transform): Define.
1737         (views::pairwise_transform): Define.
1738         * testsuite/std/ranges/adaptors/adjacent_transform/1.cc: New test.
1740 2022-09-01  Jonathan Wakely  <jwakely@redhat.com>
1742         * include/std/type_traits (__is_array_known_bounds): Add partial
1743         specialization instead of using std::extent.
1744         (__is_array_unknown_bounds): Likewise.
1745         (extent): Add partial specializations to stop recursion after
1746         the result is found.
1747         (is_array_v): Add partial specializations instead of
1748         instantiating the class template.
1749         (rank_v, extent_v): Likewise.
1750         (is_bounded_array_v, is_unbounded_array_v): Likewise.
1751         (is_bounded_array, is_unbounded_array): Define in terms of the
1752         variable templates.
1754 2022-08-31  Patrick Palka  <ppalka@redhat.com>
1756         * include/bits/ranges_base.h (__advance_fn::operator()): Add
1757         parentheses in assert condition to avoid -Wparentheses warning.
1758         * include/std/ranges: (take_view::take_view): Uglify 'base'.
1759         (take_while_view::take_while_view): Likewise.
1760         (elements_view::elements_view): Likewise.
1761         (views::_Zip::operator()): Adjust position of [[nodiscard]] for
1762         compatibility with -fconcepts-ts.
1763         (zip_transform_view::_Sentinel): Uglify 'OtherConst'.
1764         (views::_ZipTransform::operator()): Adjust position of
1765         [[nodiscard]] for compatibilty with -fconcepts-ts.
1767 2022-08-31  Martin Liska  <mliska@suse.cz>
1769         * configure: Regenerate.
1770         * crossconfig.m4: Remove deprecated ports.
1772 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
1774         * include/debug/debug.h: Use nullptr rather than '0' in checks in post-C++11.
1775         * include/debug/string: Likewise.
1776         * testsuite/21_strings/basic_string/operations/ends_with/char.cc: Use __gnu_test::string.
1777         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc: Likewise.
1778         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc: Likewise.
1779         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc: Likewise.
1780         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc: Likewise.
1781         * testsuite/21_strings/basic_string/operations/starts_with/char.cc: Likewise..
1783 2022-08-31  Patrick Palka  <ppalka@redhat.com>
1785         * include/std/ranges (adjacent_view): Define.
1786         (enable_borrowed_range<adjacent_view>): Define.
1787         (__detail::__repeated_tuple): Define.
1788         (adjacent_view::_Iterator): Define.
1789         (adjacent_view::_Sentinel): Define.
1790         (views::__detail::__can_adjacent_view): Define.
1791         (views::_Adjacent): Define.
1792         (views::adjacent): Define.
1793         (views::pairwise): Define.
1794         * testsuite/std/ranges/adaptors/adjacent/1.cc: New test.
1796 2022-08-31  François Dumont  <fdumont@gcc.gnu.org>
1798         * include/debug/formatter.h
1799         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_state): Declare.
1800         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_create_state): Declare.
1801         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_callback): Define.
1802         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_error_callback): Define.
1803         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_func): Define.
1804         [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full): Declare.
1805         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_state): New.
1806         [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_full): New.
1807         * src/c++11/debug.cc [_GLIBCXX_HAVE_STACKTRACE](print_backtrace): New.
1808         (_Error_formatter::_M_error()): Adapt.
1809         * src/libbacktrace/Makefile.am: Add backtrace.c.
1810         * src/libbacktrace/Makefile.in: Regenerate.
1811         * src/libbacktrace/backtrace-rename.h (backtrace_full): New.
1812         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc: New test.
1813         * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE.
1814         * doc/xml/manual/using.xml: Likewise.
1816 2022-08-31  Patrick Palka  <ppalka@redhat.com>
1818         * testsuite/20_util/logical_traits/requirements/short_circuit.cc: New test.
1820 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
1822         * include/bits/refwrap.h (reference_wrapper::operator()): Add
1823         noexcept-specifier and use __invoke_result instead of result_of.
1824         * testsuite/20_util/reference_wrapper/invoke-noexcept.cc: New test.
1826 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
1828         * testsuite/20_util/reference_wrapper/invoke-2.cc: Improve
1829         comments.
1830         * testsuite/20_util/reference_wrapper/invoke-3.cc: Likewise.
1831         * testsuite/20_util/reference_wrapper/invoke.cc: Likewise.
1833 2022-08-31  Jonathan Wakely  <jwakely@redhat.com>
1835         * include/bits/basic_string.h (basic_string): Add nodiscard
1836         attribute to all relevant functions.
1837         * include/std/string_view (basic_string_view): Likewise.
1838         * testsuite/21_strings/basic_string/capacity/1.cc: Cast unused
1839         results to void.
1840         * testsuite/21_strings/basic_string/capacity/char/1.cc:
1841         Likewise.
1842         * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
1843         Likewise.
1844         * testsuite/21_strings/basic_string/cons/char/self_move.cc:
1845         Likewise.
1846         * testsuite/21_strings/basic_string/element_access/char/1.cc:
1847         Likewise.
1848         * testsuite/21_strings/basic_string/element_access/char/21674.cc:
1849         Likewise.
1850         * testsuite/21_strings/basic_string/element_access/wchar_t/1.cc:
1851         Likewise.
1852         * testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc:
1853         Likewise.
1854         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
1855         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
1856         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc:
1857         Add -Wno-unused-result to options.
1858         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc:
1859         Likewise.
1860         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc:
1861         Likewise.
1862         * testsuite/21_strings/basic_string/operators/char/1.cc: Cast
1863         unused results to void.
1864         * testsuite/21_strings/basic_string/operators/wchar_t/1.cc:
1865         Likewise.
1866         * testsuite/21_strings/basic_string_view/capacity/1.cc:
1867         Likewise.
1868         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
1869         Likewise.
1870         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
1871         Likewise.
1872         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
1873         Likewise.
1874         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
1875         Likewise.
1876         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc:
1877         Likewise.
1878         Add -Wno-unused-result to options.
1879         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc:
1880         Likewise.
1881         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc:
1882         Likewise.
1883         * testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc: Cast
1884         unused results to void.
1885         * testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc:
1886         Likewise.
1887         * testsuite/27_io/basic_stringbuf/sungetc/char/1.cc: Likewise.
1888         * testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc:
1889         Likewise.
1891 2022-08-27  Patrick Palka  <ppalka@redhat.com>
1893         * testsuite/20_util/logical_traits/requirements/base_classes.cc: New test.
1895 2022-08-26  Patrick Palka  <ppalka@redhat.com>
1897         * include/std/ranges (zip_view::_Iterator::operator<): Remove
1898         as per LWG 3692.
1899         (zip_view::_Iterator::operator>): Likewise.
1900         (zip_view::_Iterator::operator<=): Likewise.
1901         (zip_view::_Iterator::operator>=): Likewise.
1902         (zip_view::_Iterator::operator<=>): Remove three_way_comparable
1903         constraint as per LWG 3692.
1904         (zip_transform_view::_Iterator): Ditto as per LWG 3702.
1906 2022-08-26  Patrick Palka  <ppalka@redhat.com>
1908         * include/std/ranges (zip_view::_Iterator): Befriend
1909         zip_transform_view.
1910         (__detail::__range_iter_cat): Define.
1911         (zip_transform_view): Define.
1912         (zip_transform_view::_Iterator): Define.
1913         (zip_transform_view::_Sentinel): Define.
1914         (views::__detail::__can_zip_transform_view): Define.
1915         (views::_ZipTransform): Define.
1916         (views::zip_transform): Define.
1917         * testsuite/std/ranges/zip_transform/1.cc: New test.
1919 2022-08-26  Patrick Palka  <ppalka@redhat.com>
1921         * include/std/type_traits (enable_if, __enable_if_t): Define them
1922         earlier.
1923         (__detail::__first_t): Define.
1924         (__detail::__or_fn, __detail::__and_fn): Declare.
1925         (__or_, __and_): Redefine as alias templates in terms of __or_fn
1926         and __and_fn.
1927         (__not_): Redefine as an alias template.
1928         (__detail::__disjunction_impl, __detail::__conjunction_impl):
1929         Define.
1930         (conjuction, disjunction): Redefine in terms of __disjunction_impl
1931         and __conjunction_impl.
1933 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
1935         * include/std/system_error (error_code::_Check): New alias
1936         template for constructor SFINAE constraint.
1937         (error_code::error_code(ErrorCodeEnum)): Use it.
1938         (error_code::operator=(ErrorCodeEnum)): Remove.
1939         (error_condition::_Check): New alias template for constraint.
1940         (error_condition::error_condition(ErrorConditionEnum)): Use it.
1941         (error_condition::operator=(ErrorConditionEnum)): Remove.
1942         * testsuite/19_diagnostics/error_code/cons/1.cc: Check
1943         constructor taking user-defined error enum.
1944         * testsuite/19_diagnostics/error_condition/cons/1.cc: Likewise.
1946 2022-08-26  Jonathan Wakely  <jwakely@redhat.com>
1948         * include/bits/basic_string.h (starts_with, ends_with, contains):
1949         Add nonnull attribute.
1950         * include/bits/cow_string.h (starts_with, ends_with, contains):
1951         Likewise.
1952         * include/std/string_view (starts_with, ends_with, contains):
1953         Likewise.
1954         * testsuite/21_strings/basic_string/operations/contains/nonnull.cc
1955         * testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc
1956         * testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc
1957         * testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc
1958         * testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc
1959         * testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc
1961 2022-08-25  Patrick Palka  <ppalka@redhat.com>
1963         * include/std/ranges (lazy_split_view::_OuterIter::_M_current):
1964         Remove redundant comment.
1965         (lazy_split_view::_M_current): Likewise.
1966         (common_view::common_view): Remove commented out view-converting
1967         constructor as per LWG3405.
1968         (elements_view::_Iterator::_Iterator): Uglify 'current' and 'i'.
1970 2022-08-24  Patrick Palka  <ppalka@redhat.com>
1972         * include/bits/ranges_algo.h (__min_fn, min): Move to ...
1973         * include/bits/ranges_util.h: ... here, in order to avoid
1974         including all of ranges_algo.h from <ranges>.
1975         * include/std/ranges (__detail::__zip_is_common): Define for
1976         C++23 as per P2321R2.
1977         (__detail::__tuple_or_pair): Likewise.
1978         (__detail::__tuple_or_pair_t): Likewise.
1979         (__detail::__tuple_transform): Likewise.
1980         (__detail::__tuple_for_each): Likewise.
1981         (zip_view): Likewise.
1982         (enable_borrowed_range<zip_view>): Likewise.
1983         (__detail::__all_random_access): Likewise.
1984         (__detail::__all_bidirectional): Likewise.
1985         (__detail::__all_forward): Likewise.
1986         (__detail::__zip_view_iter_cat): Likewise.
1987         (zip_view::_Iterator): Likewise.
1988         (zip_view::_Sentinel): Likewise.
1989         * testsuite/std/ranges/zip/1.cc: New test.
1991 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
1993         Revert:
1994         2022-08-24  Will Hawkins  <whh8b@obs.cr>
1996         * include/bits/basic_string.h (operator+(const string&, const char*)):
1997         Remove naive implementation.
1998         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
1999         Add single-allocation implementation.
2001 2022-08-24  Patrick Palka  <ppalka@redhat.com>
2003         * include/bits/stl_pair.h (pair::swap const): Add non-standard
2004         is_swappable_v constraints.
2005         * include/std/tuple (tuple::swap const): Likewise.
2006         * testsuite/20_util/tuple/cons/noexcept_specs.cc: Correct some
2007         asserts in C++23 mode.
2009 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
2011         * include/bits/stl_algo.h (__stable_sort): Cast size to
2012         iterator's difference type.
2013         * testsuite/25_algorithms/stable_sort/4.cc: New test.
2015 2022-08-24  Will Hawkins  <whh8b@obs.cr>
2017         * include/bits/basic_string.h (operator+(const string&, const char*)):
2018         Remove naive implementation.
2019         * include/bits/basic_string.tcc (operator+(const string&, const char*)):
2020         Add single-allocation implementation.
2022 2022-08-24  Jonathan Wakely  <jwakely@redhat.com>
2024         * testsuite/20_util/duration_cast/rounding.cc: Check abs with
2025         non-reduced duration.
2027 2022-08-23  Patrick Palka  <ppalka@redhat.com>
2029         * include/bits/stl_bvector.h (_Bit_reference::operator=): Define
2030         const overload for C++23 as per P2321R2.
2031         * include/bits/stl_pair.h (pair::swap): Likewise.
2032         (pair::pair): Define additional converting constructors for
2033         C++23 as per P2321R2.
2034         (pair::operator=): Define const overloads for C++23 as per
2035         P2321R2.
2036         (swap): Define overload taking const pair& for C++23 as per
2037         P2321R2.
2038         (basic_common_reference): Define partial specialization for
2039         pair for C++23 as per P2321R2.
2040         (common_type): Likewise.
2041         * include/bits/uses_allocator_args.h
2042         (uses_allocator_construction_args): Define additional pair
2043         overloads for C++23 as per P2321R2.
2044         * include/std/tuple (_Tuple_impl::_Tuple_impl): Define
2045         additional converting constructors for C++23 as per P2321R2.
2046         (_Tuple_impl::_M_assign): Define const overloads for C++23
2047         as per P2321R2.
2048         (_Tuple_impl::_M_swap): Likewise.
2049         (tuple::__constructible): Define as a convenient renaming of
2050         _TCC<true>::__constructible.
2051         (tuple::__convertible): As above but for _TCC<true>::__convertible.
2052         (tuple::tuple): Define additional converting constructors for
2053         C++23 as per P2321R2.
2054         (tuple::operator=): Define const overloads for C++23 as per
2055         P2321R2.
2056         (tuple::swap): Likewise.
2057         (basic_common_reference): Define partial specialization for
2058         tuple for C++23 as per P2321R2.
2059         (common_type): Likewise.
2060         * testsuite/20_util/pair/p2321r2.cc: New test.
2061         * testsuite/20_util/tuple/p2321r2.cc: New test.
2062         * testsuite/23_containers/vector/bool/element_access/1.cc: New test.
2064 2022-08-23  Patrick Palka  <ppalka@redhat.com>
2066         * include/std/tuple (_TupleConstraints::__convertible): Define.
2067         (_TupleConstraints::__constructible): Define.
2068         (_TupleConstraints::__is_explicitly_constructible): Redefine this
2069         in terms of __convertible and __constructible.
2070         (_TupleConstraints::__is_implicitly_constructible): Likewise.
2072 2022-08-23  Jonathan Wakely  <jwakely@redhat.com>
2074         PR libstdc++/106589
2075         * include/std/variant (__do_visit): Handle is_void<R> for zero
2076         argument case.
2077         * testsuite/20_util/variant/visit_r.cc: Check std::visit<void>(v).
2079 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2081         PR libstdc++/105678
2082         * doc/xml/manual/using.xml: Document -lstdc++_libbacktrace
2083         requirement for using std::stacktrace. Also adjust -frtti and
2084         -fexceptions to document non-default (i.e. negative) forms.
2085         * doc/html/*: Regenerate.
2087 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2089         PR libstdc++/106695
2090         * include/bits/std_thread.h (thread::_State_impl): Forward
2091         individual arguments to _Invoker constructor.
2092         (thread::_Invoker): Add constructor. Delete copies.
2093         * include/std/future (__future_base::_Deferred_state): Forward
2094         individual arguments to _Invoker constructor.
2095         (__future_base::_Async_state_impl): Likewise.
2096         * testsuite/30_threads/async/106695.cc: New test.
2097         * testsuite/30_threads/thread/106695.cc: New test.
2099 2022-08-22  Jonathan Wakely  <jwakely@redhat.com>
2101         PR libstdc++/106607
2102         * include/bits/regex_compiler.tcc (_Compiler::_M_cur_int_value):
2103         Use built-ins to check for integer overflow in back-reference
2104         number.
2105         * testsuite/28_regex/basic_regex/106607.cc: New test.
2107 2022-08-17  Keef Aragon  <keef.aragon@konscious.net>
2109         * libsupc++/eh_alloc.cc (pool::free): Inverse comparison.
2111 2022-08-08  François Dumont  <fdumont@gcc.gnu.org>
2113         * include/debug/formatter.h (__singular_value_init): New _Iterator_state enum entry.
2114         (_Parameter<>(const _Safe_iterator<>&, const char*, _Is_iterator)): Check if iterator
2115         parameter is value-initialized.
2116         (_Parameter<>(const _Safe_local_iterator<>&, const char*, _Is_iterator)): Likewise.
2117         * include/debug/safe_iterator.h (_Safe_iterator<>::_M_value_initialized()): New. Adapt
2118         checks.
2119         * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_M_value_initialized()): New.
2120         Adapt checks.
2121         * src/c++11/debug.cc (_Safe_iterator_base::_M_reset): Do not reset _M_version.
2122         (print_field(PrintContext&, const _Parameter&, const char*)): Adapt state_names.
2123         * testsuite/23_containers/deque/debug/iterator1_neg.cc: New test.
2124         * testsuite/23_containers/deque/debug/iterator2_neg.cc: New test.
2125         * testsuite/23_containers/forward_list/debug/iterator1_neg.cc: New test.
2126         * testsuite/23_containers/forward_list/debug/iterator2_neg.cc: New test.
2127         * testsuite/23_containers/forward_list/debug/iterator3_neg.cc: New test.
2129 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
2131         * include/experimental/scope (__cpp_lib_experimental_scope):
2132         Define.
2133         * testsuite/experimental/scopeguard/uniqueres.cc: Check macro.
2135 2022-08-05  Jonathan Wakely  <jwakely@redhat.com>
2137         * include/Makefile.am: Add new header.
2138         * include/Makefile.in: Regenerate.
2139         * include/experimental/scope: New file.
2140         * testsuite/experimental/scopeguard/uniqueres.cc: New test.
2141         * testsuite/experimental/scopeguard/exit.cc: New test.
2143 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2145         * include/std/string_view (basic_string_view(Range&&)): Add
2146         explicit as per P2499R0.
2147         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
2148         Adjust implicit conversions. Check implicit conversions fail.
2149         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
2150         Likewise.
2152 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2154         * include/bits/fs_dir.h (directory_iterator): Add comparison
2155         with std::default_sentinel_t. Remove redundant operator!= for
2156         C++20.
2157         * (recursive_directory_iterator): Likewise.
2158         * include/bits/iterator_concepts.h [!__cpp_lib_concepts]
2159         (default_sentinel_t, default_sentinel): Define even if concepts
2160         are not supported.
2161         * include/bits/regex.h (regex_iterator): Add comparison with
2162         std::default_sentinel_t. Remove redundant operator!= for C++20.
2163         (regex_token_iterator): Likewise.
2164         (regex_token_iterator::_M_end_of_seq()): Add noexcept.
2165         * testsuite/27_io/filesystem/iterators/lwg3719.cc: New test.
2166         * testsuite/28_regex/iterators/regex_iterator/lwg3719.cc:
2167         New test.
2168         * testsuite/28_regex/iterators/regex_token_iterator/lwg3719.cc:
2169         New test.
2171 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2173         * include/std/expected (unexpected::_M_val): Rename to _M_unex.
2174         (bad_expected_access::_M_val): Likewise.
2176 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2178         * include/bits/ios_base.h (__cpp_lib_ios_noreplace): Update
2179         value to 202207L.
2180         * include/std/version (__cpp_lib_ios_noreplace): Likewise.
2181         * testsuite/27_io/basic_ofstream/open/char/noreplace.cc: Check
2182         for new value.
2183         * testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc:
2184         Likewise.
2186 2022-08-04  Jonathan Wakely  <jwakely@redhat.com>
2188         PR libstdc++/106183
2189         * include/bits/atomic_wait.h (__waiter_pool_base::_M_notify):
2190         Move increment of _M_ver here.
2191         [!_GLIBCXX_HAVE_PLATFORM_WAIT]: Lock mutex around increment.
2192         Use relaxed memory order and always notify all waiters.
2193         (__waiter_base::_M_do_wait) [!_GLIBCXX_HAVE_PLATFORM_WAIT]:
2194         Check value again after locking mutex.
2195         (__waiter_base::_M_notify): Remove increment of _M_ver.
2197 2022-08-04  Ulrich Drepper  <drepper@gmail.com>
2199         * python/libstdcxx/v6/printers.py (class StdTuplePrinter): Use
2200         zero-based indeces just like std:get takes.
2202 2022-07-29  Jonathan Wakely  <jwakely@redhat.com>
2204         PR libstdc++/104443
2205         * include/bits/stl_iterator.h (common_iterator::operator->):
2206         Change return type to just auto.
2208 2022-07-26  Thomas Rodgers  <trodgers@redhat.com>
2210         * include/bits/atomic_wait.h (__atomic_spin): Merge spin loops.
2212 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2214         PR libstdc++/100823
2215         * include/bits/stl_iterator.h (common_iterator): Define
2216         destructor, copy constructor and move constructor as trivial
2217         when the underlying types allow.
2218         * testsuite/24_iterators/common_iterator/100823.cc: Check
2219         triviality of special members.
2221 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2223         PR libstdc++/100823
2224         * include/bits/stl_iterator.h (common_iterator): Define move
2225         constructor and move assignment operator.
2226         (common_iterator::_M_assign): New function implementing
2227         assignment.
2228         (common_iterator::operator=): Use _M_assign.
2229         (common_iterator::_S_valueless): New constant.
2230         * testsuite/24_iterators/common_iterator/100823.cc: New test.
2232 2022-07-20  Jonathan Wakely  <jwakely@redhat.com>
2234         * include/bits/stl_iterator.h (common_iterator): Fix incorrect
2235         uses of is_nothrow_assignable_v. Fix inconsistent constraints on
2236         friend declaration. Do not move argument in copy constructor.
2237         * testsuite/24_iterators/common_iterator/1.cc: Check for
2238         noexcept constructibnle/assignable.
2240 2022-07-19  François Dumont  <fdumont@gcc.gnu.org>
2242         * include/debug/debug.h [_GLIBCXX_DEBUG](__glibcxx_requires_string): Define
2243         using _GLIBCXX_DEBUG_PEDASSERT.
2244         [_GLIBCXX_DEBUG](__glibcxx_requires_string_len): Likewise.
2245         * include/debug/macros.h
2246         (__glibcxx_check_string, __glibcxx_check_string_len): Move...
2247         * include/debug/string
2248         (__glibcxx_check_string, __glibcxx_check_string_len): ...here. And define depending
2249         on _GLIBCXX_DEBUG_PEDANTIC no matter if _GLIBCXX_DEBUG is defined.
2250         Add using of std::string find, rfind, find_first_of, find_last_of, find_first_not_of
2251         and find_last_not_of. Remove debug implementations having no debug assertion.
2252         * testsuite/util/testsuite_string.h: New file. Provides __gnu_test::string and
2253         __gnu_test::wtring which definition depends on _GLIBCXX_DEBUG.
2254         * testsuite/21_strings/basic_string/debug/find1_neg.cc: New test case.
2255         * testsuite/21_strings/basic_string/debug/find2_neg.cc: New test case.
2256         * testsuite/21_strings/basic_string/operations/find/char/1.cc:
2257         Include <testsuite_string.h> and use __gnu_test::string.
2258         * testsuite/21_strings/basic_string/operations/find/char/2.cc: Likewise.
2259         * testsuite/21_strings/basic_string/operations/find/char/3.cc: Likewise.
2260         * testsuite/21_strings/basic_string/operations/find/char/4.cc: Likewise.
2261         * testsuite/21_strings/basic_string/operations/find/char/5.cc: Likewise.
2262         * testsuite/21_strings/basic_string/operations/find/char/6.cc: Likewise.
2263         * testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc:
2264         Include <testsuite_string.h> and use __gnu_test::wstring.
2265         * testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc: Likewise.
2266         * testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc: Likewise.
2267         * testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc: Likewise.
2268         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: Likewise.
2269         * testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc: Likewise.
2271 2022-07-19  Jonathan Wakely  <jwakely@redhat.com>
2273         * include/std/type_traits (__cpp_lib_reference_from_temporary)
2274         (reference_constructs_from_temporary)
2275         (reference_converts_from_temporary): Only define when the
2276         built-ins are available.
2278 2022-07-19  Marco Falke  <falke.marco@gmail.com>
2280         * include/std/charconv (__from_chars_alnum_to_val): Replace
2281         implicit conversion from int to unsigned char with explicit
2282         cast.
2284 2022-07-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2286         * configure: Regnerate.
2287         * configure.ac (newlib, *-rtems*): Remove HAVE_POLL.
2289 2022-07-18  François Dumont  <fdumont@gcc.gnu.org>
2291         * include/bits/stl_algo.h
2292         (__merge_adaptive): Adapt to merge only when buffer is large enough..
2293         (__merge_adaptive_resize): New, adapt merge when buffer is too small.
2294         (__inplace_merge): Adapt, use latter.
2295         (__stable_sort_adaptive): Adapt to sort only when buffer is large enough.
2296         (__stable_sort_adaptive_resize): New, adapt sort when buffer is too small.
2297         (__stable_sort): Adapt, use latter.
2299 2022-07-15  Marek Polacek  <polacek@redhat.com>
2301         PR c++/104477
2302         * include/std/type_traits (reference_constructs_from_temporary,
2303         reference_converts_from_temporary): New class templates.
2304         (reference_constructs_from_temporary_v,
2305         reference_converts_from_temporary_v): New variable templates.
2306         (__cpp_lib_reference_from_temporary): Define for C++23.
2307         * include/std/version (__cpp_lib_reference_from_temporary): Define for
2308         C++23.
2309         * testsuite/20_util/variable_templates_for_traits.cc: Test
2310         reference_constructs_from_temporary_v and
2311         reference_converts_from_temporary_v.
2312         * testsuite/20_util/reference_from_temporary/value.cc: New test.
2313         * testsuite/20_util/reference_from_temporary/value2.cc: New test.
2314         * testsuite/20_util/reference_from_temporary/version.cc: New test.
2316 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
2318         PR libstdc++/106248
2319         * include/std/istream [C++17] (operator>>(istream&, char*)):
2320         Set eofbit if we stopped extracting at EOF.
2321         * testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc:
2322         New test.
2323         * testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc:
2324         New test.
2326 2022-07-12  Jonathan Wakely  <jwakely@redhat.com>
2328         * include/bits/stl_iterator.h (__iter_to_alloc_t): Replace
2329         add_const_t with const-qualifier.
2330         * include/bits/utility.h (tuple_element<N, cv T>): Likewise for
2331         all cv-qualifiers.
2332         * include/std/type_traits (add_const, add_volatile): Replace
2333         typedef-declaration with using-declaration.
2334         (add_cv): Replace add_const and add_volatile with cv-qualifiers.
2335         * include/std/variant (variant_alternative<N, cv T>): Replace
2336         add_const_t, add_volatile_t and add_cv_t etc. with cv-qualifiers.
2338 2022-07-09  François Dumont  <fdumont@gcc.gnu.org>
2340         * include/std/string: Remove obsolete comment about char_traits.h including
2341         stl_algobase.h.
2343 2022-07-07  Jonathan Wakely  <jwakely@redhat.com>
2345         PR c++/89074
2346         * include/bits/char_traits.h (__gnu_cxx::char_traits::move):
2347         Remove workaround for front-end bug.
2349 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
2351         * testsuite/util/testsuite_fs.h (nonexistent_path): Explain
2352         why we need the typecast.
2354 2022-07-05  Alexandre Oliva  <oliva@adacore.com>
2356         * testsuite/util/testsuite_fs.h (nonexistent_path): Convert
2357         the getpid result to an integral type.
2359 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
2361         PR libstdc++/106162
2362         * include/Makefile.am (largefile-config.h): Add
2363         stamp-${host_alias} prerequisite.
2364         * include/Makefile.in: Regenerate.
2366 2022-07-01  Jonathan Wakely  <jwakely@redhat.com>
2368         * include/bits/fs_ops.h: Add nodiscard to all pure functions.
2369         * include/experimental/bits/fs_ops.h: Likewise.
2370         * testsuite/27_io/filesystem/operations/all.cc: Do not discard
2371         results of absolute and canonical.
2372         * testsuite/27_io/filesystem/operations/absolute.cc: Cast
2373         discarded result to void.
2374         * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
2375         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
2376         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2377         * testsuite/27_io/filesystem/operations/read_symlink.cc:
2378         Likewise.
2379         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2380         * testsuite/27_io/filesystem/operations/symlink_status.cc:
2381         Likewise.
2382         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2383         Likewise.
2384         * testsuite/experimental/filesystem/operations/canonical.cc:
2385         Likewise.
2386         * testsuite/experimental/filesystem/operations/exists.cc:
2387         Likewise.
2388         * testsuite/experimental/filesystem/operations/is_empty.cc:
2389         Likewise.
2390         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2391         Likewise.
2392         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2393         Likewise.
2395 2022-07-01  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2397         * configure: Regnerate.
2398         * configure.ac (newlib, *-rtems*): Enable TLS support for all RTEMS
2399         targets except bfin, lm32, mips, moxie, or1k, and v850.
2400         For all RTEMS targets, define HAVE_ALIGNED_ALLOC, HAVE_AT_QUICK_EXIT,
2401         HAVE_LINK, HAVE_POLL, HAVE_QUICK_EXIT, HAVE_READLINK, HAVE_SETENV,
2402         HAVE_SLEEP, HAVE_SOCKATMARK, HAVE_STRERROR_L, HAVE_SYMLINK,
2403         HAVE_TRUNCATE, and HAVE_USLEEP.
2404         * crossconfig.m4 (*-rtems*): Remove.
2406 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2408         * include/bits/utility.h: Fix comment typos.
2410 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2412         * src/c++17/fs_ops.cc (fs::temp_directory_path()): Include path
2413         in exception.
2414         (fs::temp_directory_path(error_code&)): Rearrange to more
2415         closely match the structure of the first overload.
2416         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
2417         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2418         Check that exception contains the path.
2419         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2420         Likewise.
2422 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
2424         PR libstdc++/88881
2425         * src/filesystem/ops.cc (has_trailing_slash): New helper
2426         function.
2427         (fs::status): Strip trailing slashes.
2428         (fs::symlink_status): Likewise.
2429         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2430         Clean the environment before each test and use TMP instead of
2431         TMPDIR so the test passes on Windows.
2433 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2435         * src/filesystem/dir-common.h (_Dir_base::_At_path):
2436         Use char_type consistently for paths.
2438 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2440         * src/c++17/fs_dir.cc (_Dir::dir_and_pathname):: Replace with
2441         current() returning _At_path.
2442         (_Dir::_Dir, _Dir::open_subdir, _Dir::do_unlink): Adjust.
2443         * src/filesystem/dir-common.h (_Dir_base::_At_path): New class.
2444         (_Dir_base::_Dir_Base, _Dir_base::openat): Use _At_path.
2445         * src/filesystem/dir.cc (_Dir::dir_and_pathname): Replace with
2446         current() returning _At_path.
2447         (_Dir::_Dir, _Dir::open_subdir): Adjust.
2449 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2451         * src/c++17/fs_dir.cc (_Dir::_Dir) [!_GLIBCXX_HAVE_OPENAT]:
2452         Always store pathname if we don't have openat or unlinkat,
2453         because the full path is needed to open sub-directories and
2454         remove entries.
2456 2022-06-28  Jonathan Wakely  <jwakely@redhat.com>
2458         * testsuite/20_util/from_chars/4.cc: Only use log2 if C99 math
2459         functions are available.
2461 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2463         * testsuite/20_util/to_chars/long_double.cc: Use cmath
2464         long double overloads for nexttoward and ldexp.
2466 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2468         * testsuite/experimental/simd/standard_abi_usable.cc: Require
2469         cmath support.
2470         * testsuite/experimental/simd/standard_abi_usable_2.cc:
2471         Likewise.
2473 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2475         * testsuite/26_numerics/complex/proj.cc: Skip test in the
2476         circumstances in which the implementation of proj is known to
2477         be broken.
2479 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2481         * src/c++17/fs_dir.cc (dir_and_pathname): Use dirfd if
2482         _GLIBCXX_HAVE_OPENAT.
2484 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2486         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
2487         (test06): Don't create symlinks when NO_SYMLINKS is defined.
2489 2022-06-27  Alexandre Oliva  <oliva@adacore.com>
2491         * testsuite/lib/dg-options.exp (add_options_for_net_ts):
2492         Add -Wl,--gc-sections for RTEMS targets.
2493         * testsuite/experimental/net/timer/waitable/dest.cc: Link-time
2494         xfail on RTEMS.
2495         * testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
2496         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2497         Execution-time xfail on RTEMS.
2498         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
2499         Likewise.
2501 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2503         * testsuite/ext/mt_allocator/22309_thread.cc: Include <string>.
2505 2022-06-27  Joel Brobecker  <brobecker@adacore.com>
2506             Jonathan Wakely  <jwakely@redhat.com>
2508         * testsuite/util/testsuite_fs.h (__gnu_test::nonexistent_path):
2509         Always include a counter in the filename returned.
2511 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2513         * include/bits/move_only_function.h (_Never_valueless_alt):
2514         Define partial specialization for std::move_only_function.
2516 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2518         * include/std/variant (_Build_FUN::_S_fun): Define fallback case
2519         as deleted.
2520         (__accepted_index, _Extra_visit_slot_needed): Replace class
2521         templates with variable templates.
2523 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2525         * include/bits/fs_path.h (__is_path_iter_src): Replace class
2526         template with variable template.
2528 2022-06-27  Jonathan Wakely  <jwakely@redhat.com>
2530         * include/bits/chrono.h (is_clock_v): Define to false.
2531         (is_clock_v<T>): Define partial specialization for true cases.
2532         (is_clock): Define in terms of is_clock_v.
2534 2022-06-24  Xi Ruoyao  <xry111@xry111.site>
2536         * scripts/extract_symvers.in: Use grep -E instead of egrep.
2537         * scripts/run_doxygen: Likewise.
2539 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2541         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
2542         openat.
2543         * configure, config.h.in: Rebuilt.
2544         * src/filesystem/dir-common.h (openat): Use ::openat if
2545         _GLIBCXX_HAVE_OPENAT.
2546         * src/filesystem/dir.cc (dir_and_pathname): Use dirfd if
2547         _GLIBCXX_HAVE_OPENAT.
2549 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2551         * testsuite/27_io/filesystem/operations/rename.cc: xfail on
2552         rtems.
2553         * testsuite/experimental/filesystem/operations/rename.cc:
2554         Likewise.
2556 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2558         * testsuite/util/testsuite_fs.h (NO_LAST_WRITE_TIME): Define
2559         when appropriate.
2560         * testsuite/lib/libstdc++.exp
2561         (check_v3_target_fs_last_write_time): New.
2562         * testsuite/lib/dg-options.exp (dg-require-target-fs-lwt):
2563         New.
2564         * testsuite/27_io/filesystem/operations/last_write_time.cc:
2565         Skip the test if the features are unavailable.
2566         * testsuite/experimental/filesystem/operations/last_write_time.cc:
2567         Likewise.
2569 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2571         * testsuite/util/testsuite_fs.h (NO_SPACE): Define if
2572         appropriate.
2573         * testsuite/lib/libstdc++.exp (check_v3_target_fs_space): New.
2574         * testsuite/lib/dg-options.exp (dg-require-target-fs-space):
2575         New.
2576         * testsuite/27_io/filesystem/operations/space.cc: Require
2577         target-fs-space.
2578         * testsuite/experimental/filesystem/operations/space.cc:
2579         Likewise.
2581 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2583         * testsuite/util/testsuite_fs.h (NO_SYMLINKS): Define on
2584         mingw and when create_symlink is a dummy.
2585         * testsuite/27_io/filesystem/operations/symlink_status.cc:
2586         Drop mingw xfail.
2587         (test01, test02): Don't create symlinks when NO_SYMLINKS is
2588         defined.
2589         * testsuite/27_io/filesystem/operations/canonical.cc (test03):
2590         Likewise.
2591         * testsuite/27_io/filesystem/operations/copy.cc (test02):
2592         Likewise.
2593         * testsuite/27_io/filesystem/operations/create_directories.cc
2594         (test04): Likewise.
2595         * testsuite/27_io/filesystem/operations/create_directory.cc
2596         (test01): Likewise.
2597         * testsuite/27_io/filesystem/operations/permissions.cc
2598         (test03, test04): Likewise.
2599         * testsuite/27_io/filesystem/operations/remove.cc (test01):
2600         Likewise.
2601         * testsuite/27_io/filesystem/operations/remove_all.cc (test01):
2602         Likewise.
2603         * testsuite/27_io/filesystem/operations/rename.cc
2604         (test_symlinks): Likewise.
2605         * testsuite/27_io/filesystem/operations/weakly_canonical.cc
2606         (test01): Likewise.
2607         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
2608         (test06): Likewise.
2609         * testsuite/experimental/filesystem/operations/copy.cc
2610         (test01): Likewise.
2611         * testsuite/experimental/filesystem/operations/create_directories.cc
2612         (test04): Likewise.
2613         * testsuite/experimental/filesystem/operations/create_directory.cc
2614         (test01): Likewise.
2615         * testsuite/experimental/filesystem/operations/permissions.cc
2616         (test03, test04): Likewise.
2617         * testsuite/experimental/filesystem/operations/remove.cc
2618         (test01): Likewise.
2619         * testsuite/experimental/filesystem/operations/remove_all.cc
2620         (test01): Likewise.
2621         * testsuite/experimental/filesystem/operations/rename.cc
2622         (test01): Likewise.
2623         * testsuite/lib/libstdc++.exp
2624         (v3_check_preprocessor_condition): Add optional inc parameter.
2625         Add it to the test program after include bits/c++config.h.
2626         (check_v3_target_fs_symlinks): New.
2627         * testsuite/lib/dg-options.exp
2628         (dg-require-target-fs-symlinks): New.
2629         * testsuite/27_io/filesystem/operations/read_symlink.cc:
2630         Replace mingw xfail with require target-fs-symlinks.
2631         * testsuite/experimental/filesystem/operations/read_symlink.cc:
2632         Likewise.
2634 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2636         * testsuite/27_io/filesystem/operations/copy.cc (test02):
2637         Select TO after creating FROM.
2638         (test03, test04): Likewise.
2639         * testsuite/experimental/filesystem/operations/copy.cc
2640         (test02, test03, test04): Likewise.
2642 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2644         * testsuite/30_threads/thread/native_handle/cancel.cc: Add an
2645         explicit cancellation point in case sleep_for lacks one.
2647 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
2649         * testsuite/lib/dg-options.exp (add_options_for_net_ts): Add
2650         -lbsd for RTEMS targets.
2652 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
2654         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
2655         rmdir to remove directories.
2656         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
2657         Likewise.
2659 2022-06-23  Jonathan Wakely  <jwakely@redhat.com>
2661         * testsuite/26_numerics/random/random_device/entropy.cc: Use
2662         numeric_limits<unsigned>::digits.
2664 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2666         * libsupc++/eh_globals.cc [!_GLIBCXX_HAVE_TLS]
2667         (__eh_globals_init::~__eh_globals_init): Clear _S_init first.
2669 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2671         * testsuite/30_threads/this_thread/60421.cc (test02): Call
2672         sched_yield.
2674 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2676         * testsuite/20_util/to_chars/long_double.cc: Require cmath.
2678 2022-06-22  Alexandre Oliva  <oliva@adacore.com>
2680         * testsuite/23_containers/bitset/cons/dr1325-2.cc: Work around
2681         global struct bitset.
2682         * testsuite/23_containers/bitset/ext/15361.cc: Likewise.
2683         * testsuite/23_containers/bitset/input/1.cc: Likewise.
2684         * testsuite/23_containers/bitset/to_string/1.cc: Likewise.
2685         * testsuite/23_containers/bitset/to_string/dr396.cc: Likewise.
2687 2022-06-17  Jonathan Wakely  <jwakely@redhat.com>
2689         * testsuite/21_strings/basic_string/cons/char/105995.cc: Add
2690         missing #include.
2692 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
2694         PR libstdc++/105995
2695         * include/bits/basic_string.h (_M_use_local_data): Initialize
2696         the entire SSO buffer.
2697         * testsuite/21_strings/basic_string/cons/char/105995.cc: New test.
2699 2022-06-16  Jonathan Wakely  <jwakely@redhat.com>
2701         PR libstdc++/101482
2702         * include/ext/vstring.h (operator==): Always check lengths
2703         before comparing.
2705 2022-06-15  François Dumont  <fdumont@gcc.gnu.org>
2707         PR libstdc++/105717
2708         * include/bits/hashtable_policy.h (_ConvertToValueType): New.
2709         * include/bits/hashtable.h (_Hashtable<>::_M_insert_unique_aux): New.
2710         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Use latters.
2711         (_Hashtable<>::_M_insert(_Arg&&, const _NodeGenerator&, false_type)): Likewise.
2712         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
2713         const allocator_type&, true_type)): Use this.insert range.
2714         (_Hashtable(_InputIterator, _InputIterator, size_type, const _Hash&, const _Equal&,
2715         const allocator_type&, false_type)): Use _M_insert.
2716         * testsuite/23_containers/unordered_map/cons/56112.cc: Check how many times conversion
2717         is done.
2718         * testsuite/23_containers/unordered_map/insert/105717.cc: New test.
2719         * testsuite/23_containers/unordered_set/insert/105717.cc: New test.
2721 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2723         PR libstdc++/62187
2724         * include/bits/basic_string.h (operator==): Always compare
2725         lengths before checking string contents.
2726         [!__cpp_lib_three_way_comparison] (operator==, operator!=):
2727         Reorder arguments.
2729 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2731         PR libstdc++/59048
2732         * include/bits/basic_string.h (compare): Define inline.
2733         * include/bits/basic_string.tcc (compare): Remove out-of-line
2734         definitions.
2735         * include/bits/cow_string.h (compare): Define inline.
2736         * testsuite/21_strings/basic_string/operations/compare/char/3.cc:
2737         New test.
2739 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2741         * include/bits/new_allocator.h: Fix indentation.
2742         * include/ext/malloc_allocator.h: Likewise.
2744 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
2746         PR libstdc++/105957
2747         * include/bits/allocator.h (allocator::allocate): Check for
2748         overflow in constexpr allocation.
2749         * testsuite/20_util/allocator/105975.cc: New test.
2751 2022-06-13  Mark Mentovai  <mark@mentovai.com>
2753         * include/experimental/bits/fs_path.h (__detail::__null_terminated):
2754         Rename to __nul_terminated to avoid colliding with a macro in
2755         Apple's SDK.
2757 2022-06-13  Jonathan Wakely  <jwakely@redhat.com>
2759         * include/std/atomic (__atomic_val_t): Use __type_identity_t
2760         instead of atomic<T>::value_type, as per LWG 3220.
2761         * testsuite/29_atomics/atomic/lwg3220.cc: New test.
2763 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2765         PR libstdc++/105844
2766         * include/experimental/numeric (experimental::gcd): Simplify
2767         assertions. Use __abs_r instead of __absu.
2768         (experimental::lcm): Likewise. Remove use of __detail::__lcm so
2769         overflow can be detected.
2770         * include/std/numeric (__detail::__absu): Rename to __abs_r and
2771         change to allow signed result type, so overflow can be detected.
2772         (__detail::__lcm): Remove.
2773         (gcd): Simplify assertions. Use __abs_r instead of __absu.
2774         (lcm): Likewise. Remove use of __detail::__lcm so overflow can
2775         be detected.
2776         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
2777         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
2778         * testsuite/26_numerics/gcd/105844.cc: New test.
2779         * testsuite/26_numerics/lcm/105844.cc: New test.
2781 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2783         PR libstdc++/105880
2784         * libsupc++/eh_globals.cc (eh_globals): Ensure constant init and
2785         prevent destruction during termination.
2786         (__eh_globals_init::_M_init): Replace with static member _S_init.
2787         (__cxxabiv1::__cxa_get_globals_fast): Update.
2788         (__cxxabiv1::__cxa_get_globals): Likewise.
2790 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
2792         * include/bits/basic_string.h (__hash_str_base): New class
2793         template.
2794         (hash<basic_string<C, char_traits<C>, A>>): Define partial
2795         specialization for each of the standard character types.
2796         (hash<string>, hash<wstring>, hash<u8string>, hash<u16string>)
2797         (hash<u32string>): Remove explicit specializations.
2798         * include/std/string (__hash_string_base): Remove class
2799         template.
2800         (hash<pmr::string>, hash<pmr::wstring>, hash<pmr::u8string>)
2801         (hash<pmr::u16string>, hash<pmr::u32string>): Remove explicit
2802         specializations.
2803         * testsuite/21_strings/basic_string/hash/hash.cc: Test with
2804         custom allocators.
2805         * testsuite/21_strings/basic_string/hash/hash_char8_t.cc:
2806         Likewise.
2808 2022-05-27  Jonathan Wakely  <jwakely@redhat.com>
2810         PR libstdc++/105671
2811         * include/std/sstream (basic_stringbuf::_M_high_mark): Add
2812         always_inline attribute.
2814 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2816         PR libstdc++/105681
2817         * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp:
2818         Limit ga_sizes array to values that fit in size_t.
2819         * include/ext/random [__SIZE_WIDTH < 32] (sfmt86243)
2820         (sfmt86243_64, sfmt132049, sfmt132049_64, sfmt216091)
2821         (sfmt216091_64): Do not declare.
2823 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2825         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Make
2826         lookup for ios_errc and future_errc check versioned namespace.
2827         (StdAtomicPrinter): Strip versioned namespace from typename.
2829 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2831         * src/c++11/Makefile.am: Add new source file.
2832         * src/c++11/Makefile.in: Regenerate.
2833         * src/c++11/cxx11-ios_failure.cc (iostream_category):
2834         Move to ...
2835         * src/c++11/ios_errcat.cc: New file.
2836         * testsuite/27_io/ios_base/failure/error_code.cc: Check that
2837         std::iostream_category() is defined and used for std::io_errc.
2839 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2841         * include/bits/stl_iterator.h (counted_iterator::operator++(int)):
2842         Add 'constexpr' as per LWG 3643.
2843         * testsuite/24_iterators/counted_iterator/lwg3643.cc: New test.
2845 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2847         * include/bits/functional_hash.h (__is_fast_hash): Add doxygen
2848         comment.
2849         * include/bits/hashtable.h: Do not include <bits/stl_function.h>
2850         here.
2851         * include/bits/hashtable_policy.h: Include <bits/stl_pair.h> and
2852         <bits/functional_hash.h>.
2853         * include/bits/unordered_map.h: Include required headers.
2854         * include/bits/unordered_set.h: Likewise.
2855         * include/std/unordered_map: Do not include headers for indirect
2856         dependencies.
2857         * include/std/unordered_set: Likewise.
2859 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2861         * include/bits/ranges_algobase.h: Do not include
2862         <bits/stl_iterator_base_types.h>.
2863         * include/std/string: Likewise.
2864         * include/std/variant: Likewise.
2866 2022-05-26  Nathan Sidwell  <nathan@acm.org>
2868         * include/bits/hashtable.h: Include required headers.
2869         * include/bits/hashtable_policy.h: Likewise.
2870         * include/bits/stl_heap.h: Likewise.
2871         * include/bits/stl_iterator_base_funcs.h: Likewise.
2873 2022-05-26  François Dumont  <fdumont@gcc.gnu.org>
2875         * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
2876         Strip typename from version namespace.
2878 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2880         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Strip
2881         versioned namespace from the template argument too.
2883 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
2885         * testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc:
2886         Moved to...
2887         * testsuite/21_strings/basic_string/modifiers/pop_back/char.cc:
2888         ...here.
2889         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc:
2890         Moved to...
2891         * testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t.cc:
2892         ...here.
2893         * testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc:
2894         Moved to...
2895         * testsuite/21_strings/basic_string/modifiers/swap/constexpr-wchar_t.cc:
2896         ...here.
2897         * testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc:
2898         Moved to...
2899         * testsuite/21_strings/basic_string/modifiers/swap/constexpr.cc:
2900         ...here.
2901         * testsuite/21_strings/basic_string/operations/contains/char/1.cc:
2902         Moved to...
2903         * testsuite/21_strings/basic_string/operations/contains/char.cc:
2904         ...here.
2905         * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc:
2906         Moved to...
2907         * testsuite/21_strings/basic_string/operations/contains/wchar_t.cc:
2908         ...here.
2909         * testsuite/21_strings/basic_string/operations/data/char/1.cc:
2910         Moved to...
2911         * testsuite/21_strings/basic_string/operations/data/char.cc:
2912         ...here.
2913         * testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc:
2914         Moved to...
2915         * testsuite/21_strings/basic_string/operations/data/wchar_t.cc:
2916         ...here.
2917         * testsuite/21_strings/basic_string/operations/ends_with/char/1.cc:
2918         Moved to...
2919         * testsuite/21_strings/basic_string/operations/ends_with/char.cc:
2920         ...here.
2921         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc:
2922         Moved to...
2923         * testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc:
2924         ...here.
2925         * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc:
2926         Moved to...
2927         * testsuite/21_strings/basic_string/operations/starts_with/char.cc:
2928         ...here.
2929         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc:
2930         Moved to...
2931         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc:
2932         ...here.
2933         * testsuite/21_strings/basic_string/operations/substr/char/1.cc:
2934         Moved to...
2935         * testsuite/21_strings/basic_string/operations/substr/char.cc:
2936         ...here.
2937         * testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc:
2938         Moved to...
2939         * testsuite/21_strings/basic_string/operations/substr/wchar_t.cc:
2940         ...here.
2941         * testsuite/21_strings/basic_string/range_access/char/1.cc:
2942         Moved to...
2943         * testsuite/21_strings/basic_string/range_access/char.cc:
2944         ...here.
2945         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
2946         Moved to...
2947         * testsuite/21_strings/basic_string/range_access/wchar_t.cc:
2948         ...here.
2949         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
2950         Moved to...
2951         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char.cc:
2952         ...here.
2953         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
2954         Moved to...
2955         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t.cc:
2956         ...here.
2957         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
2958         Moved to...
2959         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char.cc:
2960         ...here.
2961         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
2962         Moved to...
2963         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t.cc:
2964         ...here.
2965         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
2966         Moved to...
2967         * testsuite/21_strings/basic_string_view/modifiers/swap/char.cc:
2968         ...here.
2969         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
2970         Moved to...
2971         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t.cc:
2972         ...here.
2973         * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc:
2974         Moved to...
2975         * testsuite/21_strings/basic_string_view/operations/contains/char.cc:
2976         ...here.
2977         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc:
2978         Moved to...
2979         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t.cc:
2980         ...here.
2981         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
2982         Moved to...
2983         * testsuite/21_strings/basic_string_view/operations/data/char.cc:
2984         ...here.
2985         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
2986         Moved to...
2987         * testsuite/21_strings/basic_string_view/operations/data/wchar_t.cc:
2988         ...here.
2989         * testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc:
2990         Moved to...
2991         * testsuite/21_strings/basic_string_view/operations/ends_with/char.cc:
2992         ...here.
2993         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc:
2994         Moved to...
2995         * testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t.cc:
2996         ...here.
2997         * testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc:
2998         Moved to...
2999         * testsuite/21_strings/basic_string_view/operations/starts_with/char.cc:
3000         ...here.
3001         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc:
3002         Moved to...
3003         * testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t.cc:
3004         ...here.
3005         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
3006         Moved to...
3007         * testsuite/21_strings/basic_string_view/operations/substr/char.cc:
3008         ...here.
3009         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
3010         Moved to...
3011         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc:
3012         ...here.
3013         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
3014         Moved to...
3015         * testsuite/21_strings/basic_string_view/range_access/char.cc:
3016         ...here.
3017         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
3018         Moved to...
3019         * testsuite/21_strings/basic_string_view/range_access/wchar_t.cc:
3020         ...here.
3021         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
3022         Moved to...
3023         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char.cc:
3024         ...here.
3025         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
3026         Moved to...
3027         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t.cc:
3028         ...here.
3029         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
3030         Moved to...
3031         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t.cc:
3032         ...here.
3033         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
3034         Moved to...
3035         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t.cc:
3036         ...here.
3037         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc:
3038         Moved to...
3039         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/int.cc:
3040         ...here.
3041         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
3042         Moved to...
3043         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t.cc:
3044         ...here.
3045         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
3046         Moved to...
3047         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char.cc:
3048         ...here.
3049         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
3050         Moved to...
3051         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t.cc:
3052         ...here.
3053         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
3054         Moved to...
3055         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t.cc:
3056         ...here.
3057         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
3058         Moved to...
3059         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t.cc:
3060         ...here.
3061         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
3062         Moved to...
3063         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/int.cc:
3064         ...here.
3065         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
3066         Moved to...
3067         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t.cc:
3068         ...here.
3069         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc:
3070         Moved to...
3071         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char.cc:
3072         ...here.
3073         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc:
3074         Moved to...
3075         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t.cc:
3076         ...here.
3077         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc:
3078         Moved to...
3079         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t.cc:
3080         ...here.
3081         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc:
3082         Moved to...
3083         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t.cc:
3084         ...here.
3085         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc:
3086         Moved to...
3087         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/short.cc:
3088         ...here.
3089         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc:
3090         Moved to...
3091         * testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t.cc:
3092         ...here.
3094 2022-05-26  Jonathan Wakely  <jwakely@redhat.com>
3096         * testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc:
3097         Moved to...
3098         * testsuite/20_util/duration/requirements/explicit_instantiation.cc: ...here.
3099         * testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc:
3100         Moved to...
3101         * testsuite/20_util/time_point/requirements/explicit_instantiation.cc: ...here.
3102         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc:
3103         Moved to...
3104         * testsuite/20_util/unique_ptr/requirements/explicit_instantiation.cc: ...here.
3106 2022-05-25  Jason Merrill  <jason@redhat.com>
3108         * testsuite/20_util/function_objects/constexpr_searcher.cc: Add
3109         constexpr.
3111 2022-05-20  Jonathan Wakely  <jwakely@redhat.com>
3113         * testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc:
3114         Run fewer iterations for simulator targets.
3115         * testsuite/26_numerics/random/binomial_distribution/operators/values.cc:
3116         Likewise.
3117         * testsuite/26_numerics/random/discrete_distribution/operators/values.cc:
3118         Likewise.
3119         * testsuite/26_numerics/random/geometric_distribution/operators/values.cc:
3120         Likewise.
3121         * testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc:
3122         Likewise.
3123         * testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
3124         Likewise.
3125         * testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc:
3126         Likewise.
3128 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3130         * include/bits/char_traits.h: Only include <cstdint> when
3131         necessary.
3132         * include/std/stacktrace: Use __UINTPTR_TYPE__ instead of
3133         uintptr_t.
3134         * src/c++11/cow-stdexcept.cc: Include <stdint.h>.
3135         * src/c++17/floating_to_chars.cc: Likewise.
3136         * testsuite/20_util/assume_aligned/1.cc: Include <cstdint>.
3137         * testsuite/20_util/assume_aligned/3.cc: Likewise.
3138         * testsuite/20_util/shared_ptr/creation/array.cc: Likewise.
3140 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3142         * include/bits/basic_string.h: Do not include <ext/atomicity.h>
3143         here.
3144         * include/bits/cow_string.h: Include it here.
3146 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3148         * include/Makefile.am: Add new header.
3149         * include/Makefile.in: Regenerate.
3150         * include/bits/memory_resource.h: New file.
3151         * include/std/deque: Include <bits/memory_resource.h>.
3152         * include/std/forward_list: Likewise.
3153         * include/std/list: Likewise.
3154         * include/std/map: Likewise.
3155         * include/std/memory_resource (pmr::memory_resource): Move to
3156         new <bits/memory_resource.h> header.
3157         (pmr::polymorphic_allocator): Likewise.
3158         * include/std/regex: Likewise.
3159         * include/std/set: Likewise.
3160         * include/std/stacktrace: Likewise.
3161         * include/std/string: Likewise.
3162         * include/std/unordered_map: Likewise.
3163         * include/std/unordered_set: Likewise.
3164         * include/std/vector: Likewise.
3165         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
3166         Remove <memory_resource> header and check construction.
3167         * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
3168         * testsuite/23_containers/forward_list/pmr_typedefs.cc:
3169         Likewise.
3170         * testsuite/23_containers/list/pmr_typedefs.cc: Likewise.
3171         * testsuite/23_containers/map/pmr_typedefs.cc: Likewise.
3172         * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise.
3173         * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
3174         * testsuite/23_containers/set/pmr_typedefs.cc: Likewise.
3175         * testsuite/23_containers/unordered_map/pmr_typedefs.cc:
3176         Likewise.
3177         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
3178         Likewise.
3179         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
3180         Likewise.
3181         * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
3182         Likewise.
3183         * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
3184         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
3186 2022-05-19  Jonathan Wakely  <jwakely@redhat.com>
3188         * include/std/memory_resource (polymorphic_allocator): Add
3189         non-template equality operator, as proposed for LWG 3683.
3190         * testsuite/20_util/polymorphic_allocator/lwg3683.cc: New test.
3192 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3194         * src/c++17/memory_resource.cc (set_default_resource): Use
3195         memory_order_acq_rel.
3196         (get_default_resource): Use memory_order_acquire.
3198 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3200         * include/std/memory_resource (new_delete_resource): Add
3201         nodiscard, returns_nonnull and const attributes.
3202         (null_memory_resource): Likewise.
3203         (set_default_resource, get_default_resource): Add returns_nonnull
3204         attribute.
3205         (memory_resource::is_equal): Add nodiscard attribute.
3206         (operator==, operator!=): Likewise.
3208 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3210         * include/bits/ios_base.h (io_category): Add const and nodiscard
3211         attributes.
3212         (make_error_code, make_error_condition): Add nodiscard.
3213         * include/std/future (future_category): Add const and nodiscard.
3214         (make_error_code, make_error_condition): Add nodiscard.
3215         * include/std/system_error (generic_category system_category):
3216         Add nodiscard. Replace _GLIBCXX_CONST with C++11 attribute.
3217         (error_code::value, error_code::category, error_code::operator bool)
3218         (error_condition::value, error_condition::category)
3219         (error_condition::operator bool, make_error_code)
3220         (make_error_condition, operator==, operator!=, operator<=>): Add
3221         nodiscard.
3223 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3225         * testsuite/20_util/expected/synopsis.cc: Skip for versioned
3226         namespace.
3227         * testsuite/27_io/headers/iosfwd/synopsis.cc: Likewise.
3229 2022-05-17  Jonathan Wakely  <jwakely@redhat.com>
3231         * src/Makefile.am [ENABLE_SYMVERS_GNU_NAMESPACE] (cxx11_sources):
3232         Do not build the compatibility*-c++0x.cc objects.
3233         * src/Makefile.in: Regenerate.
3234         * src/c++11/compatibility-c++0x.cc [_GLIBCXX_INLINE_VERSION]:
3235         Refuse to build for the versioned namespace.
3236         * src/c++11/compatibility-chrono.cc: Likewise.
3237         * src/c++11/compatibility-condvar.cc: Likewise.
3238         * src/c++11/compatibility-thread-c++0x.cc: Likewise.
3239         * src/c++11/chrono.cc (system_clock, steady_clock):
3240         Use macros to define in inline namespace _V2, matching the
3241         declarations in <system_error>.
3242         * src/c++11/system_error.cc (system_category, generic_category):
3243         Likewise.
3245 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3247         * doc/xml/manual/prerequisites.xml: Fix attributes for external
3248         hyperlink.
3249         * doc/html/manual/setup.html: Regenerate.
3251 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3253         * doc/xml/manual/status_cxx2023.xml: Update with gcc-12 support.
3254         * doc/html/*: Regenerate.
3256 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3258         * doc/xml/manual/intro.xml: Include new chapter.
3259         * doc/xml/manual/status_cxx2020.xml: Tweak release numbers.
3260         * doc/xml/manual/status_cxx2023.xml: New file.
3261         * doc/html/*: Regenerate.
3263 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
3265         * doc/html/manual/status.html: Regenerate.
3266         * doc/xml/manual/status_cxx2020.xml: Fix supported version for
3267         C++20 bit operations.
3269 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3271         * include/bits/std_thread.h (thread::_State, thread::_State_ptr):
3272         Declare as private unless _GLIBCXX_THREAD_IMPL is defined.
3273         * src/c++11/thread.cc (_GLIBCXX_THREAD_IMPL): Define.
3275 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3277         * include/std/future (launch): Make operators noexcept.
3279 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3281         * doc/doxygen/user.cfg.in (PREDEFINED): Replace __exception_ptr
3282         with "__unspecified__".
3283         * libsupc++/exception_ptr.h: Improve doxygen docs.
3284         (__exception_ptr::swap): Also declare in namespace std.
3286 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3288         * libsupc++/nested_exception.h (throw_with_nested) [C++17]: Use
3289         if-constexpr instead of tag dispatching.
3290         (rethrow_if_nested) [C++17]: Likewise.
3291         (rethrow_if_nested) [!__cpp_rtti]: Do not use dynamic_cast if it
3292         would require RTTI.
3293         * testsuite/18_support/nested_exception/rethrow_if_nested-term.cc:
3294         New test.
3296 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3298         * doc/doxygen/user.cfg.in (PREDEFINED): Define
3299         _GTHREAD_USE_MUTEX_TIMEDLOCK macro.
3300         * include/bits/std_mutex.h (mutex, lock_guard): Use @since and
3301         @headerfile.
3302         * include/bits/unique_lock.h (unique_lock): Likewise.
3303         * include/std/mutex (recursive_mutex, timed_mutex)
3304         (recursive_timed_mutex, scoped_lock): Likewise.
3306 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3308         * doc/doxygen/user.cfg.in (PREDEFINED): Define
3309         _GLIBCXX23_CONSTEXPR macro.
3310         * include/backward/auto_ptr.h (auto_ptr): Use @deprecated.
3311         * include/bits/unique_ptr.h (default_delete): Use @since and
3312         @headerfile.
3313         * include/std/scoped_allocator: Remove @ingroup from @file
3314         block.
3316 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3318         * include/bits/std_thread.h (thread, thread::id): Improve
3319         doxygen docs.
3320         * include/std/future: Likewise.
3321         * include/std/thread (jthread): Likewise.
3323 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3325         * include/bits/ostream_insert.h: Mark helper functions as
3326         undocumented by Doxygen.
3327         * include/bits/stl_algo.h: Use markdown for formatting and mark
3328         helper functions as undocumented.
3329         * include/bits/stl_numeric.h:  Likewise.
3330         * include/bits/stl_pair.h (pair): Add @headerfile.
3332 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3334         * doc/doxygen/user.cfg.in (PREDEFINED): Define __allocator_base
3335         so that Doxygen shows the right base-class for std::allocator.
3336         * include/bits/alloc_traits.h: Improve doxygen docs.
3337         * include/bits/allocator.h: Likewise.
3338         * include/bits/new_allocator.h: Likewise.
3339         * include/ext/new_allocator.h: Likewise.
3341 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3343         * doc/doxygen/user.cfg.in (PREDEFINED): Define macro
3344         _GLIBCXX_DOXYGEN_ONLY to expand its argument.
3345         * include/bits/c++config (_GLIBCXX_DOXYGEN_ONLY): Define.
3346         * include/bits/regex.h: Improve doxygen docs.
3347         * include/bits/regex_constants.h: Likewise.
3348         * include/bits/regex_error.h: Likewise.
3350 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3352         * include/std/atomic: Suppress doxygen docs for
3353         implementation details.
3354         * include/bits/atomic_base.h: Likewise.
3355         * include/bits/shared_ptr_atomic.h: Use markdown. Fix grouping
3356         so that std::atomic is not added to the pointer abstractions
3357         group.
3359 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3361         * include/std/system_error: Improve doxygen comments.
3363 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3365         * include/bits/ptr_traits.h: Add some doxygen comments.
3367 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3369         * doc/doxygen/user.cfg.in (PREDEFINED): Expand new macros to
3370         nothing.
3371         * include/bits/c++config (_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE)
3372         (_GLIBCXX_END_INLINE_ABI_NAMESPACE): Define new macros.
3373         * include/bits/algorithmfwd.h (_V2::__rotate): Use new macros
3374         for the namespace.
3375         * include/bits/chrono.h (chrono::_V2::system_clock): Likewise.
3376         * include/bits/stl_algo.h (_V2::__rotate): Likewise.
3377         * include/std/condition_variable (_V2::condition_variable_any):
3378         Likewise.
3379         * include/std/system_error (_V2::error_category): Likewise.
3381 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3383         * include/bits/mofunc_impl.h: Fix doxygen command.
3385 2022-05-13  Jonathan Wakely  <jwakely@redhat.com>
3387         * doc/doxygen/user.cfg.in (GROUP_NESTED_COMPOUNDS): Set to NO.
3388         (CLASS_DIAGRAMS): Remove obsolete option.
3390 2022-05-12  Jonathan Wakely  <jwakely@redhat.com>
3392         * config/locale/dragonfly/numeric_members.cc: Remove whitespace.
3393         * config/locale/gnu/numeric_members.cc: Likewise.
3394         * include/bits/locale_facets_nonio.h: Likewise.
3395         * libsupc++/typeinfo: Likewise.
3397 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
3399         PR libstdc++/105284
3400         * include/std/iosfwd: Add declarations for <spanstream> class
3401         templates and typedefs.
3402         * include/std/spanstream (basic_spanbuf, basic_ispanstream)
3403         (basic_ospanstream, basic_spanstream): Remove default template
3404         arguments.
3405         * testsuite/27_io/headers/iosfwd/synopsis.cc: Add <spanstream>
3406         declarations.
3407         * testsuite/27_io/headers/iosfwd/types.cc: Check <spanstream>
3408         default arguments.
3410 2022-05-10  Jonathan Wakely  <jwakely@redhat.com>
3412         PR libstdc++/105284
3413         * include/std/iosfwd: Add declarations for <synstream> class
3414         templates and typedefs.
3415         * include/std/syncstream (basic_syncbuf, basic_osyncstream):
3416         Remove default template arguments.
3417         * testsuite/27_io/headers/iosfwd/synopsis.cc: New test.
3418         * testsuite/27_io/headers/iosfwd/types.cc: New test.
3420 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3422         * include/bits/random.tcc (operator==): Only check
3423         normal_distribution::_M_saved_available once.
3424         * testsuite/26_numerics/random/normal_distribution/operators/equal.cc:
3425         Check equality after state changes.
3426         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3427         lineno.
3429 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3431         PR libstdc++/105502
3432         * include/bits/random.tcc
3433         (operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
3434         Update state when __state_avail is false.
3435         * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
3436         Check that deserialized object equals serialized one.
3438 2022-05-06  Alexandre Oliva  <oliva@adacore.com>
3440         * include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX
3441         for double, long long, and 64-bit long intrinsic types.
3442         [__ALTIVEC__] (__intrinsic_type): Mention 128-bit in
3443         preexisting long double diagnostic, adjust no-VSX double
3444         diagnostic to cover 64-bit long double as well.
3446 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3448         PR libstdc++/104731
3449         * testsuite/27_io/filesystem/iterators/error_reporting.cc:
3450         Use a trailing char array as storage for dirent::d_name.
3452 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3454         * include/std/stacktrace: Do not include <cxxabi.h>.
3455         (__cxa_demangle): Declare.
3457 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3459         PR libstdc++/99871
3460         * include/bits/specfun.h: Use visibility attribute on namespace,
3461         instead of pragma push/pop.
3462         * libsupc++/compare: Likewise.
3463         * libsupc++/exception: Likewise.
3464         * libsupc++/exception.h: Likewise.
3465         * libsupc++/exception_ptr.h: Likewise.
3466         * libsupc++/initializer_list: Likewise.
3467         * libsupc++/nested_exception.h: Likewise.
3469 2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
3471         * doc/xml/manual/test.xml: Remove requirement for copyright and
3472         GPL notice in tests.
3473         * doc/html/manual/test.html: Regenerate.
3475 2022-05-05  Jonathan Wakely  <jwakely@redhat.com>
3477         * include/experimental/memory_resource [!__cpp_rtti]
3478         (__resource_adaptor_imp::do_is_equal): Do not use dynamic_cast
3479         when RTTI is disabled.
3480         * testsuite/17_intro/freestanding.cc: Require RTTI.
3481         * testsuite/18_support/exception/38732.cc: Likewise.
3482         * testsuite/18_support/exception_ptr/rethrow_exception.cc:
3483         Likewise.
3484         * testsuite/18_support/nested_exception/68139.cc: Likewise.
3485         * testsuite/18_support/nested_exception/rethrow_if_nested.cc:
3486         Likewise.
3487         * testsuite/18_support/type_info/103240.cc: Likewise.
3488         * testsuite/18_support/type_info/fundamental.cc: Likewise.
3489         * testsuite/18_support/type_info/hash_code.cc: Likewise.
3490         * testsuite/20_util/any/assign/emplace.cc: Likewise.
3491         * testsuite/20_util/any/cons/in_place.cc: Likewise.
3492         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
3493         * testsuite/20_util/any/observers/type.cc: Likewise.
3494         * testsuite/20_util/function/1.cc: Likewise.
3495         * testsuite/20_util/function/2.cc: Likewise.
3496         * testsuite/20_util/function/3.cc: Likewise.
3497         * testsuite/20_util/function/4.cc: Likewise.
3498         * testsuite/20_util/function/5.cc: Likewise.
3499         * testsuite/20_util/function/6.cc: Likewise.
3500         * testsuite/20_util/function/7.cc: Likewise.
3501         * testsuite/20_util/function/8.cc: Likewise.
3502         * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
3503         * testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
3504         * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
3505         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
3506         Likewise.
3507         * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
3508         * testsuite/20_util/typeindex/comparison_operators.cc: Likewise.
3509         * testsuite/20_util/typeindex/comparison_operators_c++20.cc:
3510         Likewise.
3511         * testsuite/20_util/typeindex/hash.cc: Likewise.
3512         * testsuite/20_util/typeindex/hash_code.cc: Likewise.
3513         * testsuite/20_util/typeindex/name.cc: Likewise.
3514         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
3515         * testsuite/22_locale/global_templates/standard_facet_hierarchies.cc:
3516         Likewise.
3517         * testsuite/22_locale/global_templates/user_facet_hierarchies.cc:
3518         Likewise.
3519         * testsuite/22_locale/locale/13630.cc: Check type without using
3520         RTTI.
3521         * testsuite/23_containers/array/requirements/non_default_constructible.cc:
3522         Require RTTI.
3523         * testsuite/27_io/basic_ostream/emit/1.cc: Likewise.
3524         * testsuite/27_io/fpos/14320-1.cc: Check type without using RTTI.
3525         * testsuite/27_io/fpos/mbstate_t/12065.cc: Require RTTI.
3526         * testsuite/27_io/ios_base/failure/dual_abi.cc: Likewise.
3527         * testsuite/experimental/any/misc/any_cast.cc: Likewise.
3528         * testsuite/experimental/any/observers/type.cc: Likewise.
3529         * testsuite/experimental/memory_resource/resource_adaptor.cc:
3530         Likewise.
3531         * testsuite/lib/libstdc++.exp (check_effective_target_rtti):
3532         Define new proc.
3533         * testsuite/tr1/3_function_objects/function/1.cc: Likewise.
3534         * testsuite/tr1/3_function_objects/function/2.cc: Likewise.
3535         * testsuite/tr1/3_function_objects/function/3.cc: Likewise.
3536         * testsuite/tr1/3_function_objects/function/4.cc: Likewise.
3537         * testsuite/tr1/3_function_objects/function/5.cc: Likewise.
3538         * testsuite/tr1/3_function_objects/function/6.cc: Likewise.
3539         * testsuite/tr1/3_function_objects/function/7.cc: Likewise.
3540         * testsuite/tr1/3_function_objects/function/8.cc: Likewise.
3541         * testsuite/tr2/bases/value.cc: Likewise.
3542         * testsuite/tr2/direct_bases/value.cc: Likewise.
3543         * testsuite/util/exception/safety.h [!__cpp_rtti]: Don't print
3544         types without RTTI.
3546 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
3548         PR libstdc++/104719
3549         * include/std/array (array::size(), array::max_size())
3550         (array::empty(), array::data()): Add  always_inline attribute.
3552 2022-05-04  Jonathan Wakely  <jwakely@redhat.com>
3554         PR libstdc++/104719
3555         * include/std/array (__array_traits::_S_ref): Remove.
3556         (__array_traits::_S_ptr): Remove.
3557         (__array_traits<T, 0>::_Type): Define operator[] and operator T*
3558         to provide an array-like API.
3559         (array::_AT_Type): Remove public typeef.
3560         (array::operator[], array::at, array::front, array::back): Use
3561         index operator to access _M_elems instead of _S_ref.
3562         (array::data): Use implicit conversion from _M_elems to pointer.
3563         (swap(array&, array&)): Use __enable_if_t helper.
3564         (get<I>): Use index operator to access _M_elems.
3565         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
3566         Adjust dg-error line numbers.
3568 2022-05-03  Alexandre Oliva  <oliva@adacore.com>
3570         PR c++/105324
3571         * testsuite/20_util/from_chars/pr105324.cc: Guard test body
3572         with conditional for floating-point overloads of from_char.
3574 2022-05-02  Patrick Palka  <ppalka@redhat.com>
3576         PR libstdc++/103911
3577         * src/c++17/floating_from_chars.cc (find_end_of_float): Accept
3578         two delimeters for the exponent part in the form of a possibly
3579         NULL string of length two.  Don't use std::tolower.
3580         (pattern): Adjust calls to find_end_of_float accordingly.
3582 2022-05-02  Patrick Palka  <ppalka@redhat.com>
3584         PR libstdc++/105441
3585         * src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
3586         Also accept 'P' as the start of the exponent.
3587         * testsuite/20_util/from_chars/7.cc: Add corresponding testcase.
3589 2022-04-29  Jonathan Wakely  <jwakely@redhat.com>
3591         PR libstdc++/105417
3592         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
3593         Regenerate.
3594         * src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]:
3595         Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I>
3596         symbols as aliases for corresponding symbols without abi-tag.
3598 2022-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3600         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
3601         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
3602         Likewise.
3603         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
3604         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
3605         Likewise.
3607 2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
3609         PR libstdc++/99290
3610         * src/c++17/fs_ops.cc (fs::copy): Pass error_code to
3611         directory_iterator constructor, and check on each iteration.
3612         * src/filesystem/ops.cc (fs::copy): Likewise.
3613         * testsuite/27_io/filesystem/operations/copy.cc: Check for
3614         errors during recursion.
3615         * testsuite/experimental/filesystem/operations/copy.cc:
3616         Likewise.
3618 2022-04-28  François Dumont  <fdumont@gcc.gnu.org>
3620         * config/abi/pre/gnu-versioned-namespace.ver: Remove
3621         std::random_device::* pattern.
3623 2022-04-27  Jakub Jelinek  <jakub@redhat.com>
3625         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3626         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3627         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3628         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3629         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3630         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
3631         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3632         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
3634 2022-04-27  Jonathan Wakely  <jwakely@redhat.com>
3636         * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Add
3637         support for atomic<shared_ptr<T>> and atomic<weak_ptr<T>>.
3638         (StdAtomicPrinter): New printer.
3639         (build_libstdcxx_dictionary): Register new printer.
3640         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test std::atomic.
3641         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test atomic smart
3642         pointers.
3644 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
3646         * include/bits/shared_ptr_atomic.h (atomic<shared_ptr>): Add
3647         constructor for constant initialization from nullptr_t.
3648         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
3649         Check for new constructor.
3651 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
3653         * include/bits/fs_path.h (hash<filesystem::path>): Define.
3654         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
3655         Check std::hash specialization.
3657 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
3659         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define
3660         conditionally.
3661         * include/bits/unique_ptr.h (__cpp_lib_constexpr_memory):
3662         Define for C++23.
3663         (default_delete, default_delete<T[]>, __uniq_ptr_impl)
3664         (unique_ptr, unique_ptr<T[], D>): Add constexpr to all member
3665         functions.
3666         * include/std/version (__cpp_lib_constexpr_memory): Define new
3667         value for C++23.
3668         * testsuite/20_util/unique_ptr/assign/constexpr.cc: New test.
3669         * testsuite/20_util/unique_ptr/comparison/constexpr.cc: New test.
3670         * testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc: New test.
3671         * testsuite/20_util/unique_ptr/creation/constexpr.cc: New test.
3672         * testsuite/20_util/unique_ptr/modifiers/constexpr.cc: New test.
3673         * testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc:
3674         New test.
3676 2022-04-25  Jonathan Wakely  <jwakely@redhat.com>
3678         PR libstdc++/105375
3679         * include/std/future (packaged_task): Add deduction guides.
3680         * testsuite/30_threads/packaged_task/cons/deduction.cc: New test.
3682 2022-04-25  Philipp Fent  <fent@in.tum.de>
3684         * python/libstdcxx/v6/printers.py (StdSpanPrinter._iterator):
3685         Rename as iterator.
3686         (StdInitializerListPrinter): Define new printer.
3687         (build_libstdcxx_dictionary): Register new printer.
3688         * testsuite/libstdc++-prettyprinters/cxx11.cc: Check printer for
3689         initializer_list.
3691 2022-04-22  Thomas W Rodgers  <trodgers@redhat.com>
3693         PR libstdc++/102994
3694         * include/bits/atomic_base.h (atomic_flag::notify_one,
3695         notify_all): Remove const qualification.
3696         (__atomic_base::notify_one, notify_all): Likewise.
3697         * include/std/atomic (atomic<bool>::notify_one, notify_all):
3698         Likewise.
3699         (atomic::notify_one, notify_all): Likewise.
3700         (atomic<T*>::notify_one, notify_all): Likewise.
3701         (atomic_notify_one, atomic_notify_all): Likewise.
3702         * testsuite/29_atomics/atomic/wait_notify/102994.cc: Adjust test
3703         to account for change in notify_one/notify_all signature.
3705 2022-04-21  Patrick Palka  <ppalka@redhat.com>
3707         * include/std/charconv (__from_chars_alnum_to_val_table):
3708         Simplify initialization of __lower/__upper_letters.
3709         (__from_chars_alnum_to_val): Default the template parameter to
3710         false.
3711         * src/c++17/floating_from_chars.cc (starts_with_ci): Don't
3712         assume the uppercase and lowercase letters are contiguous.
3713         (__floating_from_chars_hex): Likewise.
3715 2022-04-21  Patrick Palka  <ppalka@redhat.com>
3717         PR c++/105297
3718         PR c++/105322
3719         * include/std/charconv (__from_chars_alnum_to_val): Make
3720         initializer for __table dependent in an artificial way.
3722 2022-04-21  Jonathan Wakely  <jwakely@redhat.com>
3724         PR libstdc++/105324
3725         * src/c++17/floating_from_chars.cc (buffer_resource::do_allocate):
3726         Remove assertion.
3727         * testsuite/20_util/from_chars/pr105324.cc: New test.
3729 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
3731         * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
3732         Check correct feature test macro.
3734 2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
3736         PR libstdc++/93602
3737         * doc/xml/manual/prerequisites.xml: Document libiconv
3738         workarounds.
3739         * doc/html/manual/setup.html: Regenerate.
3740         * src/Makefile.am (CXXLINK): Add $(LTLIBICONV).
3741         * src/Makefile.in: Regenerate.
3743 2022-04-19  Patrick Palka  <ppalka@redhat.com>
3745         * src/c++17/floating_to_chars.cc (_GLIBCXX_ASSERTIONS): Don't
3746         define.
3747         (__floating_to_chars_shortest): Add __builtin_unreachable calls to
3748         squelch false-positive -Wmaybe-uninitialized and -Wreturn-type
3749         warnings.
3750         (__floating_to_chars_precision): Likewise.
3752 2022-04-19  Philipp Fent  <fent@in.tum.de>
3754         * python/libstdcxx/v6/printers.py (StdSpanPrinter): Define.
3755         * testsuite/libstdc++-prettyprinters/cxx20.cc: Test it.
3757 2022-04-19  Jonathan Wakely  <jwakely@redhat.com>
3759         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Fix shell operators.
3760         * configure: Regenerate.
3762 2022-04-18  Patrick Palka  <ppalka@redhat.com>
3764         * include/std/charconv (__from_chars_pow2_base): Manually
3765         unroll the first iteration of the main loop and simplify
3766         accordingly.
3768 2022-04-15  Patrick Palka  <ppalka@redhat.com>
3770         PR libstdc++/104858
3771         * include/bits/ranges_algo.h (__minmax_fn): Avoid dereferencing
3772         __first twice at the start.
3773         * testsuite/25_algorithms/minmax/constrained.cc (test06): New test.
3775 2022-04-15  Patrick Palka  <ppalka@redhat.com>
3777         * include/std/charconv (__from_chars_alnum_to_val_table): Define.
3778         (__from_chars_alnum_to_val): Define.
3779         (__from_chars_binary): Rename to ...
3780         (__from_chars_pow2_base): ... this.  Generalize to handle any
3781         power-of-two base using __from_chars_alnum_to_val.
3782         (__from_chars_digit): Optimize digit recognition to a single
3783         test instead of two tests.  Use [[__unlikely___]] attribute.
3784         (__from_chars_alpha_to_num): Remove.
3785         (__from_chars_alnum): Use __from_chars_alnum_to_val.  Use a
3786         nested loop for the overflow case.  Maintain a lower bound
3787         on the number of available bits in the result and use it to
3788         omit the overflow check.
3789         (from_chars): Adjust appropriately.
3790         * src/c++17/floating_from_chars.cc (ascii_to_hexit): Remove.
3791         (__floating_from_chars_hex): Use __from_chars_alnum_to_val
3792         to recognize a hex digit instead.
3794 2022-04-14  Palmer Dabbelt  <palmer@rivosinc.com>
3796         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Force auto to mutex
3797         for RISC-V.
3798         * configure: Regenerate.
3800 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
3802         * doc/xml/manual/intro.xml: Fix comment.
3804 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
3806         * include/precompiled/stdc++.h: Include <stacktrace> and
3807         <stdatomic.h> for C++23.
3809 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
3811         PR libstdc++/105269
3812         * include/bits/stl_vector.h (__cpp_lib_constexpr_vector):
3813         Define.
3814         * include/c_compatibility/stdatomic.h (__cpp_lib_stdatomic_h):
3815         Define.
3816         * include/std/optional (__cpp_lib_optional): Define new value
3817         for C++23.
3818         (__cpp_lib_monadic_optional): Remove.
3819         * include/std/version (__cpp_lib_constexpr_vector): Define.
3820         (__cpp_lib_stdatomic_h): Define.
3821         (__cpp_lib_optional): Define new value for C++23.
3822         (__cpp_lib_monadic_optional): Remove.
3823         * testsuite/20_util/optional/monadic/and_then.cc: Adjust.
3824         * testsuite/20_util/optional/requirements.cc: Adjust for C++23.
3825         * testsuite/20_util/optional/version.cc: Likewise.
3826         * testsuite/23_containers/vector/cons/constexpr.cc: Check
3827         feature test macro.
3828         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
3829         Likewise.
3830         * testsuite/20_util/optional/monadic/version.cc: Removed.
3831         * testsuite/23_containers/vector/requirements/version.cc: New test.
3832         * testsuite/29_atomics/headers/stdatomic.h/version.cc: New test.
3834 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
3836         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Check for mmap.
3837         * config.h.in: Regenerate.
3838         * configure: Regenerate.
3840 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
3842         * include/std/stacktrace (basic_stacktrace::current): Reallocate
3843         a smaller container if the unused capacity is larger than the
3844         used size.
3846 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
3848         * include/std/stacktrace (basic_stacktrace): Use _Impl::_M_clone
3849         or _Impl::_M_assign to initialize elements in allocated storage.
3850         (basic_stacktrace::_M_clear()): Use _Impl::_M_resize instead of
3851         _Impl::_M_destroy.
3852         (basic_stacktrace::_Impl::_M_destroy()): Replace with ...
3853         (basic_stacktrace::_Impl::_M_resize(size_type, allocator&)): New
3854         function.
3855         (basic_stacktrace::_Impl::_M_push_back): Use _M_xclone. Construct
3856         new element using allocator.
3857         (basic_stacktrace::_Impl::_M_clone): New function.
3858         (basic_stacktrace::_Impl::_M_xclone): New function.
3859         (basic_stacktrace::_Impl::_M_assign): New function.
3861 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
3863         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
3864         Use nothrow new instead of try block for std::allocator.
3865         (basic_stacktrace::_Impl::_M_deallocate): Use delete for
3866         std::allocator.
3868 2022-04-12  Jonathan Wakely  <jwakely@redhat.com>
3870         * include/std/stacktrace (basic_stacktrace::current): Replace
3871         calls to _M_reserve and _S_curr_cb with call to _M_prepare.
3872         Check return value of backtrace_simple when max depth given.
3873         (basic_stacktrace::_M_reserve): Remove.
3874         (basic_stacktrace::_S_curr_cb): Remove.
3875         (basic_stacktrace::_M_prepare(size_type)): New function to
3876         reserve initial capacity and return callback.
3877         (basic_stacktrace::_Impl::_M_allocate): Remove check for 0 < n
3878         and remove redundant zeroing of _M_frames and _M_capacity.
3879         (basic_stacktrace::_Impl::_M_push_back): Add [[unlikely]]
3880         attribute. Assign _Impl instead of swapping.
3881         * testsuite/19_diagnostics/stacktrace/current.cc: New test.
3883 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
3885         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
3886         Change [[unlikely]] attribute to [[likely]].
3888 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
3890         PR libstdc++/105031
3891         * include/std/stacktrace (basic_stacktrace::basic_stacktrace):
3892         Fix allocator usage in constructors.
3893         (basic_stacktrace::operator=(const basic_stacktrace&)): Do not
3894         try to reallocate using const allocator.
3895         (basic_stacktrace::operator=(basic_stacktrace&&)): Fix
3896         if-constexpr with non-constant condition. Do not allocate new
3897         storage if allocator propagates. Do not set _M_size if
3898         allocation fails.
3899         (basic_stacktrace::swap(basic_stacktrace&)): Fix typo. Add
3900         assertion that non-propagating allocators are equal.
3901         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: New test.
3903 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
3905         * include/std/stacktrace (basic_stacktrace::current): Duplicate
3906         implementation into each overload. Add noinline attribute and
3907         skip current frame.
3908         (basic_stacktrace::max_size()): Call _Impl::_S_max_size.
3909         (basic_stacktrace::_S_curr_cb()): New function defining lambda.
3910         (basic_stacktrace::_Impl::_S_max_size): New function defining
3911         maximum size in terms of allocator and size_type.
3912         (basic_stacktrace::_Impl::_M_allocate): Check against
3913         max_size().
3914         * testsuite/19_diagnostics/stacktrace/entry.cc: Call function
3915         for non-constexpr checks. Check line number is correct.
3917 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
3919         * testsuite/20_util/stacktrace/entry.cc: Moved to...
3920         * testsuite/19_diagnostics/stacktrace/entry.cc: ...here.
3921         * testsuite/20_util/stacktrace/synopsis.cc: Moved to...
3922         * testsuite/19_diagnostics/stacktrace/synopsis.cc: ...here.
3923         * testsuite/20_util/stacktrace/version.cc: Moved to...
3924         * testsuite/19_diagnostics/stacktrace/version.cc: ...here.
3926 2022-04-11  Jonathan Wakely  <jwakely@redhat.com>
3928         * include/experimental/bits/fs_path.h (path): Define special
3929         members after path::_Cmpt is complete.
3931 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
3933         PR libstdc++/105153
3934         * include/std/expected
3935         (expected<void,E>::expected(expected<U,G>&&)): Fix constraints.
3936         * testsuite/20_util/expected/cons.cc: Check constructor.
3938 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
3940         PR libstdc++/105154
3941         * include/std/expected (expected<void, E>::swap): Set
3942         _M_has_value to false for objects that previously had a value.
3943         * testsuite/20_util/expected/swap.cc: Fix test to check void
3944         specialization.
3946 2022-04-08  Jonathan Wakely  <jwakely@redhat.com>
3948         PR libstdc++/105146
3949         * include/std/expected (bad_expected_access): Move constructor
3950         parameter.
3951         * testsuite/20_util/expected/bad.cc: New test.
3953 2022-04-07  Hans-Peter Nilsson  <hp@axis.com>
3955         * testsuite/20_util/expected/requirements.cc: Correct minimal-size
3956         test.
3958 2022-04-02  Jakub Jelinek  <jakub@redhat.com>
3960         PR libstdc++/105128
3961         * include/std/source_location (std::source_location::__impl): Move
3962         definition before using __builtin_ret_type.
3964 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
3966         * include/std/utility (unreachable): Define for C++23.
3967         * include/std/version (__cpp_lib_unreachable): Define.
3968         * src/c++11/debug.cc (__glibcxx_assert_fail): Check for valid
3969         arguments. Handle only the function being given.
3970         * testsuite/20_util/unreachable/1.cc: New test.
3971         * testsuite/20_util/unreachable/version.cc: New test.
3973 2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
3975         * include/experimental/bits/fs_fwd.h (copy_file): Remove
3976         incorrect noexcept from declaration.
3977         * include/experimental/bits/fs_path.h (path::begin, path::end):
3978         Add noexcept to declarations, to match definitions.
3980 2022-04-01  Timm Bäder  <tbaeder@redhat.com>
3982         * include/bits/fs_ops.h: Fix filename in Doxygen comment.
3983         * include/experimental/bits/fs_ops.h: Likewise.
3985 2022-03-31  Jonathan Wakely  <jwakely@redhat.com>
3987         * libsupc++/new_opa.cc (aligned_alloc): Add comment.
3989 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
3991         * testsuite/18_support/exception/38732.cc: Disable for C++23.
3992         * testsuite/18_support/headers/exception/synopsis.cc: Likewise.
3993         * testsuite/18_support/unexpected_handler.cc: Likewise.
3995 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
3997         * libsupc++/compare (_Strong_order) [!__cpp_using_enum]: Add
3998         static data members for _Fp_fmt enumerators.
4000 2022-03-29  Jonathan Wakely  <jwakely@redhat.com>
4002         * include/std/version (__cpp_lib_variant): Fix conditions to
4003         match <variant>.
4004         (__cpp_lib_expected): Fix condition to match <expected>.
4006 2022-03-28  Jonathan Wakely  <jwakely@redhat.com>
4008         * testsuite/20_util/optional/monadic/and_then.cc: Fix typo.
4009         * testsuite/20_util/optional/monadic/transform.cc: Likewise.
4010         * testsuite/22_locale/codecvt/always_noconv/char/1.cc: Likewise.
4011         * testsuite/22_locale/codecvt/encoding/char/1.cc: Likewise.
4012         * testsuite/22_locale/codecvt/in/char/1.cc: Likewise.
4013         * testsuite/22_locale/codecvt/max_length/char/1.cc: Likewise.
4014         * testsuite/22_locale/codecvt/out/char/1.cc: Likewise.
4015         * testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
4017 2022-03-27  Jonathan Wakely  <jwakely@redhat.com>
4019         * doc/doxygen/user.cfg.in: Add new header.
4020         * include/Makefile.am: Likewise.
4021         * include/Makefile.in: Regenerate.
4022         * include/precompiled/stdc++.h: Add new header.
4023         * include/std/version (__cpp_lib_expected): Define.
4024         * libsupc++/exception [__cplusplus > 202002] (unexpected)
4025         (unexpected_handler, set_unexpected): Do not declare for C++23.
4026         * include/std/expected: New file.
4027         * testsuite/20_util/expected/assign.cc: New test.
4028         * testsuite/20_util/expected/cons.cc: New test.
4029         * testsuite/20_util/expected/illformed_neg.cc: New test.
4030         * testsuite/20_util/expected/observers.cc: New test.
4031         * testsuite/20_util/expected/requirements.cc: New test.
4032         * testsuite/20_util/expected/swap.cc: New test.
4033         * testsuite/20_util/expected/synopsis.cc: New test.
4034         * testsuite/20_util/expected/unexpected.cc: New test.
4035         * testsuite/20_util/expected/version.cc: New test.
4037 2022-03-25  Jonathan Wakely  <jwakely@redhat.com>
4039         * include/std/bit (bit_cast, byteswap, endian): Add doxygen
4040         comments.
4042 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4044         PR libstdc++/105027
4045         * include/std/bit (bit_cast): Add constraints.
4046         * testsuite/26_numerics/bit/bit.cast/105027.cc: New test.
4048 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4050         * include/std/version [!_GLIBCXX_HOSTED]
4051         (__cpp_lib_hardware_interference_size): Define for freestanding.
4052         (__cpp_lib_bit_cast): Likewise.
4053         (__cpp_lib_is_layout_compatible): Likewise.
4054         (__cpp_lib_is_pointer_interconvertible): Likewise.
4055         (__cpp_lib_adaptor_iterator_pair_constructor): Do not define for
4056         freestanding.
4057         (__cpp_lib_invoke_r): Likewise.
4058         (__cpp_lib_ios_noreplace): Likewise.
4059         (__cpp_lib_monadic_optional): Likewise.
4060         (__cpp_lib_move_only_function): Likewise.
4061         (__cpp_lib_spanstream): Likewise.
4062         (__cpp_lib_stacktrace): Likewise.
4063         (__cpp_lib_string_contains): Likewise.
4064         (__cpp_lib_string_resize_and_overwrite): Likewise.
4065         (__cpp_lib_to_underlying): Likewise.
4067 2022-03-23  Jonathan Wakely  <jwakely@redhat.com>
4069         PR libstdc++/105021
4070         * include/bits/atomic_base.h [!_GLIBCXX_HOSTED]: Do not include
4071         <bits/atomic_wait.h> for freestanding.
4073 2022-03-22  Hans-Peter Nilsson  <hp@axis.com>
4075         * testsuite/20_util/from_chars/6.cc (test01) [FE_DOWNWARD]:
4076         Conditionalize call to fesetround.
4078 2022-03-21  Jakub Jelinek  <jakub@redhat.com>
4080         PR libstdc++/104990
4081         * include/bits/locale_facets_nonio.tcc (get): Don't check if do_get
4082         isn't overloaded if __clang__ is defined.
4084 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
4086         PR libstdc++/104242
4087         * include/std/any (any(T&&)): Revert change to constraints.
4088         * testsuite/20_util/any/cons/104242.cc: New test.
4090 2022-03-18  Jonathan Wakely  <jwakely@redhat.com>
4092         PR libstdc++/92546
4093         * include/pstl/glue_algorithm_defs.h: Replace <functional> with
4094         <bits/stl_pair.h>.
4095         * include/pstl/utils.h: Replace <iterator> with <type_traits>.
4096         (__pstl::__internal::__except_handler): Use std::__terminate
4097         instead of std::terminate.
4098         * src/c++17/fs_path.cc: Include <array>.
4099         * testsuite/25_algorithms/adjacent_find/constexpr.cc: Include
4100         <functional>.
4101         * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise.
4102         * testsuite/25_algorithms/clamp/constrained.cc: Likewise.
4103         * testsuite/25_algorithms/equal/constrained.cc: Likewise.
4104         * testsuite/25_algorithms/for_each/constrained.cc: Likewise.
4105         * testsuite/25_algorithms/includes/constrained.cc: Likewise.
4106         * testsuite/25_algorithms/is_heap/constexpr.cc: Likewise.
4107         * testsuite/25_algorithms/is_heap_until/constexpr.cc: Likewise.
4108         * testsuite/25_algorithms/is_permutation/constrained.cc: Include
4109         <iterator>.
4110         * testsuite/25_algorithms/is_sorted/constexpr.cc: Include
4111         <functional>.
4112         * testsuite/25_algorithms/is_sorted_until/constexpr.cc:
4113         Likewise.
4114         * testsuite/25_algorithms/lexicographical_compare/constexpr.cc:
4115         Likewise.
4116         * testsuite/25_algorithms/lexicographical_compare/constrained.cc:
4117         Likewise.
4118         * testsuite/25_algorithms/lexicographical_compare_three_way/1.cc:
4119         Include <array>.
4120         * testsuite/25_algorithms/lower_bound/constexpr.cc: Include
4121         <functional>.
4122         * testsuite/25_algorithms/max/constrained.cc: Likewise.
4123         * testsuite/25_algorithms/max_element/constrained.cc: Likewise.
4124         * testsuite/25_algorithms/min/constrained.cc: Likewise.
4125         * testsuite/25_algorithms/min_element/constrained.cc: Likewise.
4126         * testsuite/25_algorithms/minmax_element/constrained.cc:
4127         Likewise.
4128         * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise.
4129         * testsuite/25_algorithms/move/93872.cc: Likewise.
4130         * testsuite/25_algorithms/move_backward/93872.cc: Include
4131         <iterator>.
4132         * testsuite/25_algorithms/nth_element/constexpr.cc: Include
4133         <functional>.
4134         * testsuite/25_algorithms/partial_sort/constexpr.cc: Likewise.
4135         * testsuite/25_algorithms/partial_sort_copy/constexpr.cc:
4136         Likewise.
4137         * testsuite/25_algorithms/search/constexpr.cc: Likewise.
4138         * testsuite/25_algorithms/search_n/constrained.cc: Likewise.
4139         * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise.
4140         * testsuite/25_algorithms/set_difference/constrained.cc:
4141         Likewise.
4142         * testsuite/25_algorithms/set_intersection/constexpr.cc:
4143         Likewise.
4144         * testsuite/25_algorithms/set_intersection/constrained.cc:
4145         Likewise.
4146         * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc:
4147         Likewise.
4148         * testsuite/25_algorithms/set_union/constexpr.cc: Likewise.
4149         * testsuite/25_algorithms/set_union/constrained.cc: Likewise.
4150         * testsuite/25_algorithms/sort/constexpr.cc: Likewise.
4151         * testsuite/25_algorithms/sort_heap/constexpr.cc: Likewise.
4152         * testsuite/25_algorithms/transform/constrained.cc: Likewise.
4153         * testsuite/25_algorithms/unique/constexpr.cc: Likewise.
4154         * testsuite/25_algorithms/unique/constrained.cc: Likewise.
4155         * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise.
4156         * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise.
4157         * testsuite/std/ranges/adaptors/elements.cc: Include <vector>.
4158         * testsuite/std/ranges/adaptors/lazy_split.cc: Likewise.
4159         * testsuite/std/ranges/adaptors/split.cc: Likewise.
4161 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4163         PR libstdc++/92546
4164         * include/bits/fs_path.h (path::make_preferred): Use
4165         handwritten loop instead of std::replace.
4167 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4169         PR middle-end/104966
4170         * include/bits/locale_facets_nonio.tcc
4171         (__moneypunct_cache::_M_cache): Replace try-catch with RAII and
4172         make all string copies before any stores to *this.
4174 2022-03-17  Jonathan Wakely  <jwakely@redhat.com>
4176         * testsuite/util/testsuite_character.h: Fix comment.
4178 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
4180         PR libstdc++/103407
4181         * config/abi/pre/gnu.ver: Make version for std::from_chars
4182         depend on HAVE_USELOCALE macro.
4183         * testsuite/util/testsuite_abi.cc (compare_symbols): Treat
4184         std::from_chars for floating-point types as undesignated if
4185         not found in the baseline symbols file.
4187 2022-03-16  Jonathan Wakely  <jwakely@redhat.com>
4189         * include/std/charconv (__cpp_lib_to_chars): Only define when
4190         both from_chars and to_chars are supported for floating-point
4191         types.
4192         (from_chars, to_chars): Adjust preprocessor conditions guarding
4193         declarations.
4194         * include/std/version (__cpp_lib_to_chars): Adjust condition to
4195         match <charconv> definition.
4196         * src/c++17/floating_from_chars.cc (from_chars_strtod): New
4197         function template.
4198         (from_chars): Simplify preprocessor checks and use
4199         from_chars_strtod when appropriate.
4201 2022-03-14  Jonathan Wakely  <jwakely@redhat.com>
4203         PR libstdc++/104875
4204         * src/c++11/codecvt.cc (read_utf8_code_point): Use char32_t to
4205         hold octets that will be left-shifted.
4207 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4209         PR libstdc++/104870
4210         * src/c++17/floating_from_chars.cc: Check __SIZE_WIDTH__ >= 32
4211         before using fast_float.
4213 2022-03-10  Detlef Vollmann  <dv@vollmann.ch>
4215         PR libstdc++/104866
4216         * include/bits/this_thread_sleep.h: Fix order of #endif and
4217         closing brace of namespace.
4219 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4221         * libsupc++/compare (_Strong_order::_S_fp_cmp) [__vax__]:
4222         Handle NaN.
4224 2022-03-10  Jonathan Wakely  <jwakely@redhat.com>
4226         * libsupc++/compare (_Strong_ordering::_S_fp_cmp) [__vax__]: Use
4227         <=> comparison.
4229 2022-03-09  Patrick Palka  <ppalka@redhat.com>
4231         PR libstdc++/104859
4232         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
4233         Be explicit when narrowing the shifted effective_mantissa,
4234         since it may have an integer-class type.
4236 2022-03-08  Jonathan Wakely  <jwakely@redhat.com>
4238         * include/bits/uses_allocator_args.h: Remove incorrect copyright
4239         notice.
4241 2022-03-07  Jonathan Wakely  <jwakely@redhat.com>
4243         PR libstdc++/104807
4244         * include/bits/c++config (__terminate, __glibcxx_assert_fail):
4245         Replace _GLIBCXX_VISIBILITY on function with visibility pragma.
4246         (__is_constant_evaluated): Add visibility pragma.
4248 2022-03-07  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
4250         * config/locale/vxworks/ctype_members.cc: Remove <iostream>
4251           include.
4253 2022-03-05  Jonathan Wakely  <jwakely@redhat.com>
4255         * include/bits/c++config (__glibcxx_assert_fail): Add visibility
4256         attribute.
4257         (__terminate): Likewise.
4259 2022-03-04  Jonathan Wakely  <jwakely@redhat.com>
4261         * libsupc++/compare (strong_order::_S_fp_cmp): Move typedef
4262         inside #if condition.
4264 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4266         PR libstdc++/104748
4267         * testsuite/std/ranges/adaptors/all.cc: Use non-debug vector for
4268         constexpr test.
4270 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4272         * testsuite/17_intro/names.cc (func): Undef on AIX.
4274 2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
4276         PR libstdc++/96526
4277         * libsupc++/compare (strong_order): Add missing support for
4278         floating-point types.
4279         * testsuite/18_support/comparisons/algorithms/strong_order_floats.cc:
4280         New test.
4282 2022-03-01  Jonathan Wakely  <jwakely@redhat.com>
4284         PR middle-end/103984
4285         * include/bits/regex_compiler.h (_BracketMatcher::_M_char): Use
4286         default member initializer.
4288 2022-02-24  Jonathan Wakely  <jwakely@redhat.com>
4290         PR libstdc++/104602
4291         * include/std/source_location (source_location::current): Use
4292         deduced type of __builtin_source_location().
4294 2022-02-22  Patrick Palka  <ppalka@redhat.com>
4296         * include/bits/ranges_base.h (__detail::__is_initializer_list):
4297         Define.
4298         (viewable_range): Adjust as per P2415R2.
4299         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
4300         * include/std/ranges (owning_view): Define as per P2415R2.
4301         (enable_borrowed_range<owning_view>): Likewise.
4302         (views::__detail::__can_subrange): Replace with ...
4303         (views::__detail::__can_owning_view): ... this.
4304         (views::_All::_S_noexcept): Sync with operator().
4305         (views::_All::operator()): Use owning_view instead of subrange
4306         as per P2415R2.
4307         * include/std/version (__cpp_lib_ranges): Adjust value.
4308         * testsuite/std/ranges/adaptors/all.cc (test06): Adjust now that
4309         views::all uses owning_view instead of subrange.
4310         (test08): New test.
4311         * testsuite/std/ranges/adaptors/lazy_split.cc (test09): Adjust
4312         now that rvalue non-view non-borrowed ranges are viewable.
4313         * testsuite/std/ranges/adaptors/split.cc (test06): Likewise.
4315 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
4317         PR libstdc++/104559
4318         * doc/xml/manual/evolution.xml: Document deprecation.
4319         * doc/html/manual/api.html: Regenerate.
4320         * include/bits/stl_bvector.h (insert(const_iterator, const bool&)):
4321         Remove default argument.
4322         (insert(const_iterator)): New overload with deprecated attribute.
4323         * testsuite/23_containers/vector/bool/modifiers/insert/104559.cc:
4324         New test.
4326 2022-02-17  Jonathan Wakely  <jwakely@redhat.com>
4328         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Replace
4329         code that call cat->name() on std::error_category objects.
4330         Identify known categories by symbol name and use a hardcoded
4331         name. Print error code values as enumerators where appopriate.
4332         * testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected
4333         name of custom category. Check io_errc and future_errc errors.
4335 2022-02-15  Jonathan Wakely  <jwakely@redhat.com>
4337         PR libstdc++/104542
4338         * include/bits/uses_allocator_args.h (make_obj_using_allocator)
4339         (uninitialized_construct_using_allocator): Add constexpr.
4340         * testsuite/20_util/uses_allocator/make_obj.cc: Check constexpr.
4341         * testsuite/20_util/uses_allocator/uninitialized_construct.cc: New test.
4343 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4345         PR libstdc++/100912
4346         * config/locale/gnu/c_locale.h (__convert_from_v): Use inline
4347         namespace for IEEE128 long double mode.
4348         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Add new symbol
4349         version and export __gnu_cxx_ieee128::__convert_from_v.
4350         * include/bits/locale_facets_nonio.tcc (money_put::__do_put):
4351         Make __ibm128 overload use snprintf directly
4352         * testsuite/util/testsuite_abi.cc: Add new symbol version.
4353         Remove stable IEEE128/LDBL versions.
4355 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4357         PR libstdc++/103891
4358         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
4359         Remove.
4360         * include/std/variant: Check feature test macros instead.
4361         * include/std/version: Likewise.
4363 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4365         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
4366         Fix typo.
4368 2022-02-14  Jonathan Wakely  <jwakely@redhat.com>
4370         * src/c++17/floating_to_chars.cc (FLOAT128_TO_CHARS): Depend on
4371         LONG_DOUBLE_ALT128_COMPAT instead of USE_FLOAT128.
4373 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
4375         * testsuite/20_util/temporary_buffer.cc: Fix dg-warning target
4376         selector.
4378 2022-02-11  Jonathan Wakely  <jwakely@redhat.com>
4380         * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
4381         Ignore -Walloc-larger-than warning.
4382         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
4383         Likewise.
4384         * testsuite/29_atomics/atomic/cons/user_pod.cc: Compile with -O1
4385         to avoid linker error for __atomic_is_lock_free.
4387 2022-02-10  Thomas Rodgers  <rodgert@appliantology.com>
4389         * include/bits/atomic_wait.h (__waiter_base::_S_do_spin,
4390         __waiter_base::_S_do_spin_v): Change memory order from relaxed
4391         to acquire.
4393 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
4395         * include/c_compatibility/stdatomic.h (atomic_fetch_xor): Add
4396         using-declaration.
4397         (atomic_fetch_xor_explicit): Likewise.
4398         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Check
4399         arithmetic and logical operations for atomic_int.
4401 2022-02-10  Jonathan Wakely  <jwakely@redhat.com>
4403         * src/filesystem/dir-common.h (_GLIBCXX_HAVE_DIRFD): Undefine
4404         when <dirent.h> is not available.
4405         (_GLIBCXX_HAVE_UNLINKAT):  Likewise.
4407 2022-02-09  Thomas Rodgers  <rodgert@appliantology.com>
4409         PR libstdc++/104442
4410         * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): Move spin
4411          loop inside do loop so that threads failing the wait, reload
4412          _M_ver.
4414 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4416         * src/c++17/fs_dir.cc (_Dir(DIR*, const path&)): Change first
4417         parameter to _Dir_base&&.
4418         * src/filesystem/dir-common.h (_Dir_base(DIR*)): Remove.
4419         * src/filesystem/dir.cc (_Dir(DIR*, const path&)): Change first
4420         parameter to _Dir_base&&.
4422 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4424         * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY): Add comment about
4425         checking for CAS on correct word size.
4427 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4429         * testsuite/experimental/filesystem/operations/create_directories.cc:
4430         Adjust expected results for Windows.
4432 2022-02-08  Jonathan Wakely  <jwakely@redhat.com>
4434         PR libstdc++/104161
4435         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::__erase):
4436         [i_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Refresh entry._M_type member,
4437         instead of checking for errno values indicating a directory.
4438         * src/c++17/fs_ops.cc (fs::remove_all(const path&)): Use similar
4439         logic to non-throwing overload.
4440         (fs::remove_all(const path&, error_code&)): Add comments.
4441         * src/filesystem/ops-common.h: Likewise.
4443 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4445         * src/filesystem/dir-common.h (_Dir_base::openat): Change return
4446         type to use portable posix::DIR alias.
4448 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4450         * include/c_compatibility/stdatomic.h [__clang__]: Use
4451         #include_next <stdatomic.h>.
4453 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4455         * include/experimental/bits/fs_ops.h (fs::copy_file): Remove
4456         noexcept.
4457         (fs::create_directories): Likewise.
4458         (fs::remove_all): Likewise.
4459         * src/filesystem/ops.cc (fs::copy_file): Remove noexcept.
4460         (fs::create_directories): Likewise.
4461         (fs::remove_all): Likewise.
4463 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4465         PR libstdc++/104161
4466         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for dirfd
4467         and unlinkat.
4468         * config.h.in: Regenerate.
4469         * configure: Regenerate.
4470         * include/bits/fs_dir.h (recursive_directory_iterator): Declare
4471         remove_all overloads as friends.
4472         (recursive_directory_iterator::__erase): Declare new member
4473         function.
4474         * include/bits/fs_fwd.h (remove, remove_all): Declare.
4475         * src/c++17/fs_dir.cc (_Dir): Add filename_only parameter to
4476         constructor. Pass file descriptor argument to base constructor.
4477         (_Dir::dir_and_pathname, _Dir::open_subdir, _Dir::do_unlink)
4478         (_Dir::unlink, _Dir::rmdir): Define new member functions.
4479         (directory_iterator): Pass filename_only argument to _Dir
4480         constructor.
4481         (recursive_directory_iterator::_Dir_stack): Adjust constructor
4482         parameters to take a _Dir rvalue instead of creating one.
4483         (_Dir_stack::orig): Add data member for storing original path.
4484         (_Dir_stack::report_error): Define new member function.
4485         (__directory_iterator_nofollow): Move here from dir-common.h and
4486         fix value to be a power of two.
4487         (__directory_iterator_filename_only): Define new constant.
4488         (recursive_directory_iterator): Construct _Dir object and move
4489         into _M_dirs stack. Pass skip_permission_denied argument to first
4490         advance call.
4491         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
4492         (recursive_directory_iterator::__erase): Define new member
4493         function.
4494         * src/c++17/fs_ops.cc (ErrorReporter, do_remove_all): Remove.
4495         (fs::remove_all): Use new recursive_directory_iterator::__erase
4496         member function.
4497         * src/filesystem/dir-common.h (_Dir_base): Add int parameter to
4498         constructor and use openat to implement nofollow semantics.
4499         (_Dir_base::fdcwd, _Dir_base::set_close_on_exec, _Dir_base::openat):
4500         Define new member functions.
4501         (__directory_iterator_nofollow): Move to fs_dir.cc.
4502         * src/filesystem/dir.cc (_Dir): Pass file descriptor argument to
4503         base constructor.
4504         (_Dir::dir_and_pathname, _Dir::open_subdir): Define new member
4505         functions.
4506         (recursive_directory_iterator::_Dir_stack): Adjust constructor
4507         parameters to take a _Dir rvalue instead of creating one.
4508         (recursive_directory_iterator): Check for new nofollow option.
4509         Construct _Dir object and move into _M_dirs stack. Pass
4510         skip_permission_denied argument to first advance call.
4511         (recursive_directory_iterator::increment): Use _Dir::open_subdir.
4512         * src/filesystem/ops.cc (fs::remove_all): Use C++17 remove_all.
4514 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
4516         * include/bits/allocator.h: Qualify std::allocator_traits in
4517         deprecated warnings.
4518         * libsupc++/exception (uncaught_exception): Add suggestion to
4519         deprecated warning.
4521 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4523         * src/c++17/fs_dir.cc (fs::recursive_directory_iterator::pop):
4524         Add [[maybe_unused]] attribute.
4525         * src/filesystem/dir.cc (fs::recursive_directory_iterator::pop):
4526         Likewise.
4528 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4530         * testsuite/23_containers/multiset/operators/cmp_c++20.cc: Use
4531         custom comparison function for multiset.
4532         * testsuite/23_containers/set/operators/cmp_c++20.cc: Use custom
4533         comparison function for set.
4535 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4537         * include/bits/boost_concept_check.h (_OutputIteratorConcept):
4538         Change member function to data member of function pointer type.
4540 2022-02-02  Martin Sebor  <msebor@redhat.com>
4542         PR libstdc++/101831
4543         * include/std/array (begin): Declare const member function attribute
4544         const.
4545         (end, rbegin, rend, size, max_size, empty, data): Same.
4546         * testsuite/23_containers/array/capacity/empty.cc: Add test cases.
4547         * testsuite/23_containers/array/capacity/max_size.cc: Same.
4548         * testsuite/23_containers/array/capacity/size.cc: Same.
4549         * testsuite/23_containers/array/iterators/begin_end.cc: New test.
4551 2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
4553         * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
4554         autoconf macro to check whether d_type is present.
4555         * testsuite/experimental/filesystem/iterators/error_reporting.cc:
4556         Likewise.
4558 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4560         * testsuite/27_io/filesystem/iterators/97731.cc: New test.
4561         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
4562         Check follow_directory_symlink option.
4563         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
4564         Likewise.
4566 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4568         * src/c++17/fs_dir.cc (recursive_directory_iterator::increment):
4569         Reset state to past-the-end iterator on error.
4570         (fs::recursive_directory_iterator::pop(error_code&)): Likewise.
4571         (fs::recursive_directory_iterator::pop()): Check _M_dirs before
4572         it might get reset.
4573         * src/filesystem/dir.cc (recursive_directory_iterator): Likewise,
4574         for the TS implementation.
4575         * testsuite/27_io/filesystem/iterators/error_reporting.cc: New test.
4576         * testsuite/experimental/filesystem/iterators/error_reporting.cc: New test.
4578 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4580         * include/bits/fs_fwd.h (filesystem::perms): Fix comment.
4582 2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
4584         PR libstdc++/104301
4585         * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Print different messages
4586         for stdio_pure and stdio_posix options.
4587         * configure: Regenerate.
4589 2022-02-01  Thomas Rodgers  <rodgert@appliantology.com>
4591         * include/bits/atomic_wait.h: Change memory order from
4592         Acquire/Release with relaxed loads to SeqCst+Release for
4593         accesses to the waiter's count.
4595 2022-01-31  Martin Liska  <mliska@suse.cz>
4597         * acinclude.m4: Detect *_ld_is_mold and use it.
4598         * configure: Regenerate.
4600 2022-01-30  Hans-Peter Nilsson  <hp@axis.com>
4602         * testsuite/27_io/basic_istream/get/char/lwg3464.cc: Don't run on
4603         simulator targets.
4604         * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: Likewise.
4606 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
4608         PR libstdc++/100516
4609         * include/bits/deque.tcc (_M_range_initialize<ForwardIterator>):
4610         Add __builtin_unreachable to loop.
4611         * testsuite/23_containers/deque/100516.cc: New test.
4613 2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
4615         * include/bits/ranges_base.h (ranges::advance): Avoid signed
4616         overflow. Do nothing if already equal to desired result.
4617         * testsuite/24_iterators/range_operations/advance_overflow.cc:
4618         New test.
4620 2022-01-27  Martin Liska  <mliska@suse.cz>
4622         PR libstdc++/104259
4623         * acinclude.m4: Fix typo.
4624         * configure: Regenerate.
4626 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4628         PR libstdc++/104019
4629         * include/bits/istream.tcc (basic_istream::sentry): Add braces
4630         around try-block.
4631         * include/bits/shared_ptr_base.h (_Sp_counted_array_base::_M_init):
4632         Add pragmas to disable bogus warnings from PR 61596.
4634 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4636         PR libstdc++/104217
4637         * src/c++17/fs_ops.cc (_GNU_SOURCE): Define.
4638         * src/filesystem/dir.cc (_GNU_SOURCE): Define.
4639         * src/filesystem/ops.cc (_GNU_SOURCE): Define.
4641 2022-01-25  Jonathan Wakely  <jwakely@redhat.com>
4643         PR libstdc++/104161
4644         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check for
4645         fdopendir.
4646         * config.h.in: Regenerate.
4647         * configure: Regenerate.
4648         * src/c++17/fs_dir.cc (_Dir): Add nofollow flag to constructor
4649         and pass it to base class constructor.
4650         (directory_iterator): Pass nofollow flag to _Dir constructor.
4651         (fs::recursive_directory_iterator::increment): Likewise.
4652         * src/c++17/fs_ops.cc (do_remove_all): Use nofollow option for
4653         directory_iterator constructor. Move error check outside loop.
4654         * src/filesystem/dir-common.h (_Dir_base): Add nofollow flag to
4655         constructor and when it's set use ::open with O_NOFOLLOW and
4656         O_DIRECTORY.
4657         * src/filesystem/dir.cc (_Dir): Add nofollow flag to constructor
4658         and pass it to base class constructor.
4659         (directory_iterator): Pass nofollow flag to _Dir constructor.
4660         (fs::recursive_directory_iterator::increment): Likewise.
4661         * src/filesystem/ops.cc (remove_all): Use nofollow option for
4662         directory_iterator constructor. Move error check outside loop.
4664 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4666         PR libstdc++/104032
4667         * include/std/spanstream (basic_spanbuf(basic_spanbuf&&)): Use
4668         mem-initializer for _M_buf.
4669         (basic_spanbuf::Operator=(basic_spanbuf&&)): Fix ill-formed
4670         member access.
4671         * testsuite/27_io/spanstream/2.cc: New test.
4673 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4675         * src/c++17/floating_from_chars.cc (USE_STRTOD_FOR_FROM_CHARS):
4676         Define macro for case where std::from_chars is implemented in
4677         terms of strtod, strtof or strtold.
4678         (buffer_resource, valid_fmt, find_end_of_float, pattern)
4679         (from_chars_impl, make_result, reserve_string): Do not define
4680         unless USE_STRTOD_FOR_FROM_CHARS is defined.
4681         (from_chars): Define when at least one of USE_LIB_FAST_FLOAT and
4682         USE_STRTOD_FOR_FROM_CHARS is defined, instead of
4683         _GLIBCXX_HAVE_USELOCALE. Use fast_float for long double when it
4684         is binary64.
4686 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4688         PR libstdc++/104174
4689         * include/bits/hashtable_policy.h (_Map_base): Add partial
4690         specialization for maps with const key types.
4691         * testsuite/23_containers/unordered_map/104174.cc: New test.
4693 2022-01-23  Jonathan Wakely  <jwakely@redhat.com>
4695         PR libstdc++/104019
4696         * include/bits/shared_ptr_base.h (_Sp_counted_base<>::_M_release):
4697         Set members to zero without type punning.
4699 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4701         * testsuite/20_util/shared_ptr/cons/array.cc: Fix comment.
4703 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4705         PR libstdc++/87193
4706         PR libstdc++/104019
4707         * include/bits/alloc_traits.h (__cpp_lib_allocator_traits_is_always_equal):
4708         Define as type long.
4709         * include/bits/allocator.h (__cpp_lib_incomplete_container_elements):
4710         Likewise.
4711         * include/bits/basic_string.h (__cpp_lib_string_udls): Likewise.
4712         * include/bits/chrono.h (__cpp_lib_chrono): Likewise.
4713         (__cpp_lib_chrono_udls): Likewise.
4714         * include/bits/move.h (__cpp_lib_addressof_constexpr): Likewise.
4715         * include/bits/node_handle.h (__cpp_lib_node_extract): Likewise.
4716         * include/bits/range_access.h (__cpp_lib_nonmember_container_access):
4717         Likewise.
4718         * include/bits/shared_ptr.h (__cpp_lib_enable_shared_from_this):
4719         Likewise.
4720         * include/bits/stl_algo.h (__cpp_lib_clamp): Likewise.
4721         (__cpp_lib_sample): Likewise.
4722         * include/bits/stl_algobase.h (__cpp_lib_robust_nonmodifying_seq_ops):
4723         Likewise.
4724         * include/bits/stl_function.h (__cpp_lib_transparent_operators):
4725         Likewise.
4726         * include/bits/stl_iterator.h (__cpp_lib_make_reverse_iterator):
4727         Likewise.
4728         * include/bits/stl_map.h (__cpp_lib_map_try_emplace):
4729         Likewise.
4730         * include/bits/stl_tree.h (__cpp_lib_generic_associative_lookup):
4731         Likewise.
4732         * include/bits/unique_ptr.h (__cpp_lib_make_unique):
4733         Likewise.
4734         * include/bits/unordered_map.h (__cpp_lib_unordered_map_try_emplace):
4735         Likewise.
4736         * include/c_global/cmath (__cpp_lib_hypot): Likewise.
4737         * include/c_global/cstddef (__cpp_lib_byte): Likewise.
4738         * include/std/atomic (__cpp_lib_atomic_is_always_lock_free):
4739         Likewise.
4740         * include/std/complex (__cpp_lib_complex_udls): Likewise.
4741         * include/std/filesystem (__cpp_lib_filesystem): Likewise.
4742         * include/std/functional (__cpp_lib_not_fn): Likewise.
4743         (__cpp_lib_boyer_moore_searcher): Likewise.
4744         * include/std/iomanip (__cpp_lib_quoted_string_io): Likewise.
4745         * include/std/mutex (__cpp_lib_scoped_lock): Likewise.
4746         * include/std/numeric (__cpp_lib_gcd_lcm): Likewise.
4747         (__cpp_lib_gcd, __cpp_lib_lcm): Likewise.
4748         * include/std/tuple (__cpp_lib_apply): Likewise.
4749         (__cpp_lib_make_from_tuple): Likewise.
4750         * include/std/type_traits (__cpp_lib_integral_constant_callable)
4751         (__cpp_lib_bool_constant, __cpp_lib_logical_traits)
4752         (__cpp_lib_is_null_pointer, __cpp_lib_transformation_trait_aliases)
4753         (__cpp_lib_result_of_sfinae, __cpp_lib_void_t)
4754         (__cpp_lib_is_swappable, __cpp_lib_is_invocable)
4755         (__cpp_lib_has_unique_object_representations)
4756         (__cpp_lib_is_aggregate): Likewise.
4757         * include/std/version: Likewise.
4758         * libsupc++/new (__cpp_lib_launder): Likewise.
4760 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4762         * include/std/version (__cpp_lib_shared_ptr_arrays): Fix
4763         condition for C++17 definition.
4765 2022-01-21  Jonathan Wakely  <jwakely@redhat.com>
4767         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count):
4768         Add constexpr.
4769         (_Sp_atomic::_M_ptr): Add default member-initializer.
4770         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
4771         Check constant initialization.
4772         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: Likewise.
4774 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
4776         * src/c++11/cxx11-ios_failure.cc (__constinit): Define as
4777         equivalent attribute for Clang.
4778         * src/c++11/future.cc (__constinit): Likewise.
4779         * src/c++11/system_error.cc (__constinit): Likewise.
4780         * src/c++17/memory_resource.cc (__constinit): Likewise.
4782 2022-01-20  Jonathan Wakely  <jwakely@redhat.com>
4784         * scripts/testsuite_flags.in: Only add src/filesystem/.libs and
4785         src/libbacktrace/.libs to LDFLAGS if those directories exist.
4787 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4789         * configure.ac (GLIBCXX_ENABLE_DEBUG_FLAGS): Remove -gdwarf-4
4790         from default flags.
4791         * configure: Regenerate.
4793 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4795         PR libstdc++/104123
4796         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Include
4797         <stddef.h>.
4799 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4801         * scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
4802         linker search paths.
4803         * src/Makefile.am: Fix src/debug/libbacktrace build.
4804         * src/Makefile.in: Regenerate.
4805         * src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
4806         variable. Use symlinks for the source files.
4807         * src/libbacktrace/Makefile.in: Regenerate.
4809 2022-01-19  Matthias Kretz  <m.kretz@gsi.de>
4811         * include/experimental/bits/simd.h (__floating_point_flags): Do
4812         not rely on math_errhandling to expand to a constant expression.
4814 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4816         * doc/xml/manual/evolution.xml: Document deprecations.
4817         * doc/xml/manual/status_cxx2017.xml: Update status.
4818         * doc/html/*: Regenerate.
4820 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4822         * include/bits/stl_tempbuf.h (get_temporary_buffer): Change
4823         _GLIBCXX14_DEPRECATED to _GLIBCXX17_DEPRECATED.
4825 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4827         * include/bits/stl_pair.h (_PCC::_DeprConsPair): Remove unused
4828         function.
4830 2022-01-19  Jonathan Wakely  <jwakely@redhat.com>
4832         PR libstdc++/104101
4833         * include/bits/shared_ptr_atomic.h (_Sp_atomic::_Atomic_count::lock):
4834         Only use __thread_relax if __cpp_lib_atomic_wait is defined.
4836 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4838         PR libstdc++/104099
4839         * include/bits/basic_string.h (basic_string(nullptr_t)): Only
4840         define for C++23.
4841         (operator=(nullptr_t)): Likewise.
4842         * include/bits/cow_string.h: Likewise.
4843         * include/std/string_view (basic_string_view(nullptr_t)):
4844         Likewise.
4845         * testsuite/21_strings/basic_string/cons/char/nullptr.cc: Adjust
4846         expected error. Add examples that become ill-formed in C++23.
4847         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
4848         Adjust expected errors.
4849         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
4850         Likewise.
4852 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4854         PR libstdc++/104098
4855         * include/bits/stl_iterator.h (reverse_iterator): Check
4856         __cpp_lib_concepts instead of __cplusplus.
4858 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4860         PR libstdc++/101124
4861         * include/bits/stl_pair.h (pair): Adjust constraints on
4862         deprecated constructors accepting literal zero as null pointer
4863         constant. Improve wording of deprecated attribute.
4864         * testsuite/20_util/pair/cons/99957.cc: Check that deprecated
4865         constructors do not cause ambiguities for copyable types.
4867 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4869         * include/bits/stl_function.h (ptr_fun): Fix suggestion for
4870         non-deprecated alternative.
4872 2022-01-18  Tom Honermann  <tom@honermann.net>
4874         * acinclude.m4: Define config macros if uchar.h provides
4875         c8rtomb() and mbrtoc8().
4876         * config.h.in: Regenerate.
4877         * configure: Regenerate.
4878         * include/c_compatibility/uchar.h (c8rtomb, mbrtoc8): Define.
4879         * include/c_global/cuchar (c8rtomb, mbrtoc8): Likewise.
4880         * include/c_std/cuchar (c8rtomb, mbrtoc8): Likewise.
4881         * testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc:
4882         New test.
4883         * testsuite/21_strings/headers/cuchar/functions_std_fchar8_t.cc:
4884         New test.
4886 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4888         * include/Makefile.am: Install new header.
4889         * include/Makefile.in: Regenerate.
4890         * include/c_compatibility/stdatomic.h: New file.
4891         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: New test.
4893 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4895         PR libstdc++/104080
4896         * src/c++17/fast_float/LOCAL_PATCHES: Update.
4897         * src/c++17/fast_float/fast_float.h (FASTFLOAT_IS_BIG_ENDIAN):
4898         Define in terms of __BYTE_ORDER__.
4900 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4902         PR libstdc++/104080
4903         * src/c++17/fast_float/LOCAL_PATCHES: UPDATE.
4904         * src/c++17/fast_float/fast_float.h (round): Use explicit
4905         template argument list for std::min.
4907 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4909         * doc/xml/manual/status_cxx2017.xml: Update C++17 status.
4910         * doc/xml/manual/status_cxx2020.xml: Use 12.1 instead of 12 for
4911         upcoming release.
4912         * doc/html/manual/status.html: Regenerate.
4914 2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
4916         * acinclude.m4 (GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING): Improve
4917         comments.
4918         * configure: Regenerate.
4920 2022-01-17  Patrick Palka  <ppalka@redhat.com>
4922         * src/c++17/floating_from_chars.cc: (USE_LIB_FAST_FLOAT):
4923         Conditionally define, and use it to conditionally include
4924         fast_float.
4925         (from_chars): Use fast_float for float and double when
4926         USE_LIB_FAST_FLOAT.
4928 2022-01-17  Patrick Palka  <ppalka@redhat.com>
4930         * src/c++17/fast_float/LOCAL_PATCHES: Update.
4931         * src/c++17/fast_float/fast_float.h (from_chars_advanced): In
4932         case of over/underflow, return errc::result_out_of_range and don't
4933         modify 'value'.
4935 2022-01-17  Patrick Palka  <ppalka@redhat.com>
4937         * src/c++17/fast_float/LOCAL_PATCHES: Update.
4938         * src/c++17/fast_float/fast_float.h: Apply local modifications.
4940 2022-01-17  Patrick Palka  <ppalka@redhat.com>
4942         * src/c++17/fast_float/LOCAL_PATCHES: New file.
4943         * src/c++17/fast_float/MERGE: New file.
4944         * src/c++17/fast_float/README.md: New file, copied from the
4945         fast_float repository.
4946         * src/c++17/fast_float/fast_float.h: New file, an amalgamation
4947         of the fast_float library.
4949 2022-01-17  Patrick Palka  <ppalka@redhat.com>
4951         * src/c++17/floating_from_chars.cc: Include <bit>.
4952         (ascii_to_hexit, starts_with_ci): Conditionally define.
4953         (__floating_from_chars_hex):  Conditionally define.
4954         (from_chars): Use __floating_from_chars_hex for
4955         chars_format::hex parsing of binary32/64 float/double.
4956         (testsuite/20_util/from_chars/7.cc): New test.
4957         * testsuite/20_util/from_chars/7.cc: New file.
4959 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
4961         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): New macro.
4962         * configure.ac: Use GLIBCXX_ENABLE_BACKTRACE.
4963         * include/Makefile.am: Add new header.
4964         * include/Makefile.in: Regenerate.
4965         * include/std/stacktrace: New header.
4966         * include/std/version (__cpp_lib_stacktrace): Define.
4967         * Makefile.in: Regenerate.
4968         * config.h.in: Regenerate.
4969         * configure: Regenerate.
4970         * doc/Makefile.in: Regenerate.
4971         * libsupc++/Makefile.in: Regenerate.
4972         * po/Makefile.in: Regenerate.
4973         * python/Makefile.in: Regenerate.
4974         * src/Makefile.am: Regenerate.
4975         * src/Makefile.in: Regenerate.
4976         * src/c++11/Makefile.in: Regenerate.
4977         * src/c++17/Makefile.in: Regenerate.
4978         * src/c++20/Makefile.in: Regenerate.
4979         * src/c++98/Makefile.in: Regenerate.
4980         * src/filesystem/Makefile.in: Regenerate.
4981         * testsuite/Makefile.in: Regenerate.
4982         * src/libbacktrace/Makefile.am: New file.
4983         * src/libbacktrace/Makefile.in: New file.
4984         * src/libbacktrace/backtrace-rename.h: New file.
4985         * src/libbacktrace/backtrace-supported.h.in: New file.
4986         * src/libbacktrace/config.h.in: New file.
4987         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
4988         New proc.
4989         * testsuite/20_util/stacktrace/entry.cc: New test.
4990         * testsuite/20_util/stacktrace/synopsis.cc: New test.
4991         * testsuite/20_util/stacktrace/version.cc: New test.
4993 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
4995         * doc/xml/manual/status_cxx2020.xml: Use final C++20 option
4996         names.
4997         * doc/html/manual/status.html: Regenerate.
4999 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5001         PR libstdc++/103650
5002         * include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS.
5003         * include/Makefile.in: Regenerate.
5004         * testsuite/17_intro/headers/c++1998/103650.cc: New test.
5006 2022-01-17  Matthias Kretz  <m.kretz@gsi.de>
5008         * include/experimental/bits/simd.h (__floating_point_flags): Do
5009         not rely on the presence of the math_errhandling macro.
5011 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5013         * include/bits/shared_ptr_atomic.h (_Sp_atomic): Add typename
5014         to qualified-id for dependent type.
5016 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5018         * doc/xml/manual/status_cxx2020.xml: Update.
5019         * doc/html/manual/status.html: Regenerate.
5021 2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
5022             Thomas Rodgers  <trodgers@redhat.com>
5024         * include/bits/shared_ptr_atomic.h (__cpp_lib_atomic_shared_ptr):
5025         New macro.
5026         (_Sp_atomic): New class template.
5027         (atomic<shared_ptr<T>>, atomic<weak_ptr<T>>): New partial
5028         specializations.
5029         * include/bits/shared_ptr_base.h (__shared_count, __weak_count)
5030         (__shared_ptr, __weak_ptr): Declare _Sp_atomic as a friend.
5031         * include/std/version (__cpp_lib_atomic_shared_ptr): New macro.
5032         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc: New
5033         test.
5034         * testsuite/20_util/weak_ptr/atomic_weak_ptr.cc: New test.
5036 2022-01-15  Matthias Kretz  <m.kretz@gsi.de>
5038         * include/experimental/bits/simd.h: Move feature detection bools
5039         and add __have_avx512bitalg, __have_avx512vbmi2,
5040         __have_avx512vbmi, __have_avx512ifma, __have_avx512cd,
5041         __have_avx512vnni, __have_avx512vpopcntdq.
5042         (__detail::__machine_flags): New function which returns a unique
5043         uint64 depending on relevant -m and -f flags.
5044         (__detail::__odr_helper): New type alias for either an anonymous
5045         type or a type specialized with the __machine_flags number.
5046         (_SimdIntOperators): Change template parameters from _Impl to
5047         _Tp, _Abi because _Impl now has an __odr_helper parameter which
5048         may be _OdrEnforcer from the anonymous namespace, which makes
5049         for a bad base class.
5050         (many): Either add __odr_helper template parameter or mark as
5051         always_inline.
5052         * include/experimental/bits/simd_detail.h: Add defines for
5053         AVX512BITALG, AVX512VBMI2, AVX512VBMI, AVX512IFMA, AVX512CD,
5054         AVX512VNNI, AVX512VPOPCNTDQ, and AVX512VP2INTERSECT.
5055         * include/experimental/bits/simd_builtin.h: Add __odr_helper
5056         template parameter or mark as always_inline.
5057         * include/experimental/bits/simd_fixed_size.h: Ditto.
5058         * include/experimental/bits/simd_math.h: Ditto.
5059         * include/experimental/bits/simd_scalar.h: Ditto.
5060         * include/experimental/bits/simd_neon.h: Add __odr_helper
5061         template parameter.
5062         * include/experimental/bits/simd_ppc.h: Ditto.
5063         * include/experimental/bits/simd_x86.h: Ditto.
5065 2022-01-14  Uroš Bizjak  <ubizjak@gmail.com>
5067         * testsuite/22_locale/numpunct/members/char/3.cc:
5068         Require pt_PT locale instead of nl_NL.
5069         (test02): Use pt_PT locale instead of nl_NL.
5071 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5073         PR libstdc++/91260
5074         PR libstdc++/91383
5075         PR libstdc++/95065
5076         * include/backward/binders.h (bind1st, bind2nd): Add deprecated
5077         attribute.
5078         * include/bits/refwrap.h (_Maybe_unary_or_binary_function):
5079         Disable deprecated warnings for base classes.
5080         (_Reference_wrapper_base): Likewise.
5081         * include/bits/shared_ptr_base.h (_Sp_owner_less): Likewise.
5082         * include/bits/stl_bvector.h (_Bit_iterator_base): Likewise.
5083         * include/bits/stl_function.h (unary_function, binary_function):
5084         Add deprecated attribute.
5085         (unary_negate, not1, binary_negate, not2, ptr_fun)
5086         (pointer_to_unary_function, pointer_to_binary_function)
5087         (mem_fun_t, const_mem_fun_t, mem_fun_ref_t, const_mem_fun_ref_t)
5088         (mem_fun1_t, const_mem_fun1_t, mem_fun_ref1_t)
5089         (const_mem_fun1_ref_t, mem_fun, mem_fun_ref): Add deprecated
5090         attributes.
5091         * include/bits/stl_iterator.h: Disable deprecated warnings for
5092         std::iterator base classes.
5093         * include/bits/stl_iterator_base_types.h (iterator): Add
5094         deprecated attribute.
5095         * include/bits/stl_map.h (map::value_compare): Disable
5096         deprecated warnings for base class.
5097         * include/bits/stl_multimap.h (multimap::value_compare):
5098         Likewise.
5099         * include/bits/stl_raw_storage_iter.h (raw_storage_iterator):
5100         Add deprecated attribute.
5101         * include/bits/stl_tempbuf.h (get_temporary_buffer): Likewise.
5102         * include/bits/stream_iterator.h: Disable deprecated warnings.
5103         * include/bits/streambuf_iterator.h: Likewise.
5104         * include/ext/bitmap_allocator.h: Remove unary_function base
5105         classes.
5106         * include/ext/functional: Disable deprecated warnings.
5107         * include/ext/rope: Likewise.
5108         * include/ext/throw_allocator.h: Likewise.
5109         * include/std/type_traits (result_of): Add deprecated attribute.
5110         * include/tr1/functional: Disable deprecated warnings.
5111         * include/tr1/functional_hash.h: Likewise.
5112         * testsuite/20_util/function_objects/binders/1.cc: Add
5113         -Wno-disable-deprecations.
5114         * testsuite/20_util/function_objects/binders/3113.cc: Likewise.
5115         * testsuite/20_util/function_objects/constexpr.cc: Add
5116         dg-warning.
5117         * testsuite/20_util/raw_storage_iterator/base.cc: Likewise.
5118         * testsuite/20_util/raw_storage_iterator/dr2127.cc: Likewise.
5119         * testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc:
5120         Likewise.
5121         * testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc:
5122         Likewise.
5123         * testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc:
5124         Likewise.
5125         * testsuite/20_util/reference_wrapper/24803.cc:
5126         Likewise.
5127         * testsuite/20_util/reference_wrapper/typedefs.cc: Enable for
5128         C++20 and check for absence of nested types.
5129         * testsuite/20_util/shared_ptr/comparison/less.cc: Remove
5130         std::binary_function base class.
5131         * testsuite/20_util/temporary_buffer.cc: Add dg-warning.
5132         * testsuite/21_strings/basic_string/cons/char/69092.cc: Remove
5133         std::iterator base class.
5134         * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
5135         Likewise.
5136         * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
5137         Likewise.
5138         * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
5139         Likewise.
5140         * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
5141         Likewise.
5142         * testsuite/24_iterators/istreambuf_iterator/92285.cc:
5143         Likewise.
5144         * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
5145         Likewise.
5146         * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
5147         Likewise.
5148         * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
5149         Likewise.
5150         * testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc:
5151         Likewise.
5152         * testsuite/25_algorithms/copy/34595.cc:
5153         Likewise.
5154         * testsuite/25_algorithms/minmax/3.cc: Remove std::binary_function
5155         base class.
5156         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc:
5157         Disable deprecated warnings.
5158         * testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc:
5159         Likewise.
5160         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc:
5161         Likewise.
5162         * testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc:
5163         Likewise.
5164         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc:
5165         Likewise.
5166         * testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc:
5167         Likewise.
5168         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc:
5169         Likewise.
5170         * testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc:
5171         Likewise.
5172         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc:
5173         Likewise.
5174         * testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc:
5175         Likewise.
5176         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc:
5177         Likewise.
5178         * testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc:
5179         Likewise.
5180         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc:
5181         Likewise.
5182         * testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc:
5183         Likewise.
5184         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc:
5185         Likewise.
5186         * testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc:
5187         Likewise.
5188         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc:
5189         Likewise.
5190         * testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc:
5191         Likewise.
5192         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc:
5193         Likewise.
5194         * testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc:
5195         Likewise.
5196         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc:
5197         Likewise.
5198         * testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc:
5199         Likewise.
5200         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc:
5201         Likewise.
5202         * testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc:
5203         Likewise.
5204         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc:
5205         Likewise.
5206         * testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc:
5207         Likewise.
5208         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc:
5209         Likewise.
5210         * testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc:
5211         Likewise.
5212         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc:
5213         Likewise.
5214         * testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc:
5215         Likewise.
5216         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
5217         Likewise.
5218         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
5219         Likewise.
5220         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc:
5221         Likewise.
5222         * testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc:
5223         Likewise.
5224         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc:
5225         Likewise.
5226         * testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc:
5227         Likewise.
5228         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc:
5229         Likewise.
5230         * testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc:
5231         Likewise.
5232         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc:
5233         Likewise.
5234         * testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc:
5235         Likewise.
5236         * testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc:
5237         Likewise.
5238         * testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc:
5239         Likewise.
5240         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc:
5241         Likewise.
5242         * testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc:
5243         Likewise.
5244         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
5245         Likewise.
5246         * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
5247         Likewise.
5248         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc:
5249         Likewise.
5250         * testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc:
5251         Likewise.
5252         * testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc: Add
5253         dg-warning.
5254         * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
5255         Likewise.
5256         * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
5257         Likewise.
5258         * testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc:
5259         Disable deprecated warnings.
5260         * testsuite/tr1/6_containers/hash/requirements/base_classes.cc:
5261         Likewise.
5262         * testsuite/util/regression/trait/erase_if_fn.hpp: Remove
5263         std::unary_function base classes.
5264         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
5265         Remove std::iterator base classes.
5267 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5269         * include/bits/shared_ptr.h (__cpp_lib_shared_ptr_weak_type):
5270         Correct type of macro value.
5271         (shared_ptr): Add additional friend declarations.
5272         (make_shared, allocate_shared): Constrain existing overloads and
5273         remove static_assert.
5274         * include/bits/shared_ptr_base.h (__cpp_lib_smart_ptr_for_overwrite):
5275         New macro.
5276         (_Sp_counted_ptr_inplace<T, Alloc, Lp>): New partial
5277         specialization for use with make_shared_for_overwrite.
5278         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
5279         (_Sp_counted_array_base): New class template.
5280         (_Sp_counted_array): New class template.
5281         (__shared_count(_Tp*&, const _Sp_counted_array_base&, _Init)):
5282         New constructor for allocating shared arrays.
5283         (__shared_ptr(const _Sp_counted_array_base&, _Init)): Likewise.
5284         * include/std/version (__cpp_lib_shared_ptr_weak_type): Correct
5285         type.
5286         (__cpp_lib_shared_ptr_arrays): Update value for C++20.
5287         (__cpp_lib_smart_ptr_for_overwrite): New macro.
5288         * testsuite/20_util/shared_ptr/creation/99006.cc: Adjust
5289         expected errors.
5290         * testsuite/20_util/shared_ptr/creation/array.cc: New test.
5291         * testsuite/20_util/shared_ptr/creation/overwrite.cc: New test.
5292         * testsuite/20_util/shared_ptr/creation/version.cc: New test.
5293         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Check
5294         feature test macro. Test non-trivial default-initialization.
5296 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5298         * include/bits/stl_construct.h (_Construct, _Construct_novalue):
5299         Also cast away cv-qualifiers when converting pointer to void.
5300         * testsuite/20_util/allocator/void.cc: Test construct function
5301         with cv-qualified types.
5303 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5305         PR libstdc++/103992
5306         * include/bits/stl_iterator.h (common_iterator): Use
5307         std::construct_at instead of placement new.
5308         * testsuite/24_iterators/common_iterator/1.cc: Check copy
5309         construction is usable in constant expressions.
5311 2022-01-14  Jonathan Wakely  <jwakely@redhat.com>
5313         * doc/xml/manual/status_cxx2011.xml: Document new tokens
5314         accepted by std::random_device constructor.
5315         * doc/html/manual/status.html: Regenerate.
5317 2022-01-12  Patrick Palka  <ppalka@redhat.com>
5319         * testsuite/20_util/to_chars/103955.cc: Add explicit dg-do
5320         directive.
5322 2022-01-12  Patrick Palka  <ppalka@redhat.com>
5324         PR libstdc++/103955
5325         * src/c++17/floating_to_chars.cc (__floating_to_chars_hex):
5326         Track the excess precision separately from the effective
5327         precision.  Avoid overflow in bounds check by splitting it into
5328         two checks.
5329         (__floating_to_chars_precision): Avoid overflow in bounds checks
5330         similarly.
5331         * testsuite/20_util/to_chars/103955.cc: New test.
5333 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5335         PR libstdc++/103726
5336         * include/Makefile.am: Install <source_location> for
5337         freestanding.
5338         * include/Makefile.in: Regenerate.
5339         * include/std/version (__cpp_lib_source_location): Define for
5340         freestanding.
5342 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5344         * include/std/ranges (ranges::lazy_split_view::_InnerIter::end()):
5345         Add neoxcept (LWG 3593).
5347 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5349         * include/std/ranges (ranges::__detail::__box): Add constexpr to
5350         assignment operators (LWG 3572).
5351         * testsuite/std/ranges/adaptors/filter.cc: Check assignment of a
5352         view that uses copyable-box.
5354 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5356         PR libstdc++/103726
5357         * include/Makefile.am: Install <coroutine> for freestanding.
5358         * include/Makefile.in: Regenerate.
5359         * include/std/coroutine: Adjust headers and preprocessor
5360         conditions.
5361         (__coroutine_traits_impl): Use concepts when available.
5362         [_GLIBCXX_HOSTED] (hash<coroutine_handle>): Define.
5364 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5366         * include/std/ostream (operator<<(basic_ostream&, charT)):
5367         Use unformatted input if no padding is needed.
5368         (operator<<(basic_ostream<char>&, char)): Likewise.
5370 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5372         PR libstdc++/103891
5373         * include/bits/c++config (_GLIBCXX_HAVE_COND_TRIVIAL_SPECIAL_MEMBERS):
5374         Define.
5375         * include/std/variant (__cpp_lib_variant): Only define C++20
5376         value when the compiler is known to support conditionally
5377         trivial destructors.
5378         * include/std/version (__cpp_lib_variant): Likewise.
5380 2022-01-11  Jonathan Wakely  <jwakely@redhat.com>
5382         * include/bits/stl_iterator.h (common_iterator): Add constexpr
5383         to all member functions (LWG 3574).
5384         * testsuite/24_iterators/common_iterator/1.cc: Evaluate some
5385         tests as constant expressions.
5386         * testsuite/24_iterators/common_iterator/2.cc: Likewise.
5388 2022-01-10  Jakub Jelinek  <jakub@redhat.com>
5390         PR libstdc++/77760
5391         * include/bits/locale_facets_nonio.h (__time_get_state): New struct.
5392         (time_get::_M_extract_via_format): Declare new method with
5393         __time_get_state& as an extra argument.
5394         * include/bits/locale_facets_nonio.tcc (_M_extract_via_format): Add
5395         __state argument, set various fields in it while parsing.  Handle %j,
5396         %U, %w and %W, fix up handling of %y, %Y and %C, don't adjust tm_hour
5397         for %p immediately.  Add a wrapper around the method without the
5398         __state argument for backwards compatibility.
5399         (_M_extract_num): Remove all __len == 4 special cases.
5400         (time_get::do_get_time, time_get::do_get_date, time_get::do_get): Zero
5401         initialize __state, pass it to _M_extract_via_format and finalize it
5402         at the end.
5403         (do_get_year): For 1-2 digit parsed years, map 0-68 to 2000-2068,
5404         69-99 to 1969-1999.  For 3-4 digit parsed years use that as year.
5405         (get): If do_get isn't overloaded from the locale_facets_nonio.tcc
5406         version, don't call do_get but call _M_extract_via_format instead to
5407         pass around state.
5408         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export _M_extract_via_format
5409         with extra __time_get_state and __time_get_state::_M_finalize_state.
5410         * src/c++98/locale_facets.cc (is_leap, day_of_the_week,
5411         day_of_the_year): New functions in anon namespace.
5412         (mon_yday): New var in anon namespace.
5413         (__time_get_state::_M_finalize_state): Define.
5414         * testsuite/22_locale/time_get/get/char/4.cc: New test.
5415         * testsuite/22_locale/time_get/get/wchar_t/4.cc: New test.
5416         * testsuite/22_locale/time_get/get_year/char/1.cc (test01): Parse 197
5417         as year 197AD instead of error.
5418         * testsuite/22_locale/time_get/get_year/char/5.cc (test01): Parse 1 as
5419         year 2001 instead of error.
5420         * testsuite/22_locale/time_get/get_year/char/6.cc: New test.
5421         * testsuite/22_locale/time_get/get_year/wchar_t/1.cc (test01): Parse
5422         197 as year 197AD instead of error.
5423         * testsuite/22_locale/time_get/get_year/wchar_t/5.cc (test01): Parse
5424         1 as year 2001 instead of error.
5425         * testsuite/22_locale/time_get/get_year/wchar_t/6.cc: New test.
5427 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5429         PR libstdc++/103866
5430         * acinclude.m4 (GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS): Do
5431         nothing for freestanding builds.
5432         (GLIBCXX_ENABLE_HOSTED): Define FREESTANDING_FLAGS.
5433         * configure.ac: Do not use AC_LIBTOOL_DLOPEN when configured
5434         with --without-headers.  Do not use GCC_HEADER_STDINT for
5435         freestanding builds.
5436         * libsupc++/Makefile.am (HOSTED_CXXFLAGS): Use -ffreestanding
5437         for freestanding builds.
5438         * configure: Regenerate.
5439         * Makefile.in: Regenerate.
5440         * doc/Makefile.in: Regenerate.
5441         * include/Makefile.in: Regenerate.
5442         * libsupc++/Makefile.in: Regenerate.
5443         * po/Makefile.in: Regenerate.
5444         * python/Makefile.in: Regenerate.
5445         * src/Makefile.in: Regenerate.
5446         * src/c++11/Makefile.in: Regenerate.
5447         * src/c++17/Makefile.in: Regenerate.
5448         * src/c++20/Makefile.in: Regenerate.
5449         * src/c++98/Makefile.in: Regenerate.
5450         * src/filesystem/Makefile.in: Regenerate.
5451         * testsuite/Makefile.in: Regenerate.
5453 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5455         * testsuite/28_regex/algorithms/regex_replace/char/103664.cc:
5456         Add dg-timeout-factor directive.
5457         * testsuite/28_regex/basic_regex/84110.cc: Likewise.
5458         * testsuite/28_regex/basic_regex/ctors/char/other.cc: Likewise.
5459         * testsuite/28_regex/match_results/102667.cc: Likewise.
5461 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5463         * doc/xml/manual/using.xml: Update documentation around default
5464         -std option.
5465         * doc/html/*: Regenerate.
5467 2022-01-10  Jonathan Wakely  <jwakely@redhat.com>
5469         PR libstdc++/100017
5470         * src/c++17/Makefile.am (AM_CXXFLAGS): Add -nostdinc++.
5471         * src/c++17/Makefile.in: Regenerate.
5473 2022-01-09  Sandra Loosemore  <sandra@codesourcery.com>
5475         * testsuite/18_support/type_info/constexpr.cc: Add explicit
5476         -fdelete-null-pointer-checks option.
5478 2022-01-06  Pavel I. Kryukov  <pavel.kryukov@phystech.edu>
5479             Jonathan Wakely  <jwakely@redhat.com>
5481         PR libstdc++/103853
5482         * include/bits/forward_list.tcc (forward_list::merge): Check for
5483         self-merge.
5484         * testsuite/23_containers/forward_list/operations/merge.cc: New test.
5486 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5488         * include/bits/regex.h (basic_regex, match_results): Qualify
5489         name in friend declaration, to work around Clang bug.
5491 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5493         * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor.
5495 2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
5497         PR libstdc++/103911
5498         * include/std/charconv (__from_chars_alpha_to_num): Return
5499         char instead of unsigned char. Change invalid return value to
5500         127 instead of using numeric trait.
5501         (__from_chars_alnum): Fix comment. Do not use std::isdigit.
5502         Change type of variable to char.
5504 2022-01-05  François Dumont  <fdumont@gcc.gnu.org>
5506         PR libstdc++/68303
5507         * include/bits/hashtable_policy.h
5508         (_Hashtable_hash_traits<_Hash>): New.
5509         (_Hash_code_base<>::_M_hash_code(const _Hash_node_value<>&)): New.
5510         (_Hashtable_base<>::_M_key_equals): New.
5511         (_Hashtable_base<>::_M_equals): Use latter.
5512         (_Hashtable_base<>::_M_key_equals_tr): New.
5513         (_Hashtable_base<>::_M_equals_tr): Use latter.
5514         * include/bits/hashtable.h
5515         (_Hashtable<>::__small_size_threshold()): New, use _Hashtable_hash_traits.
5516         (_Hashtable<>::find): Loop through elements to look for key if size is lower
5517         than __small_size_threshold().
5518         (_Hashtable<>::_M_emplace(true_type, _Args&&...)): Likewise.
5519         (_Hashtable<>::_M_insert_unique(_Kt&&, _Args&&, const _NodeGenerator&)): Likewise.
5520         (_Hashtable<>::_M_compute_hash_code(const_iterator, const key_type&)): New.
5521         (_Hashtable<>::_M_emplace(const_iterator, false_type, _Args&&...)): Use latter.
5522         (_Hashtable<>::_M_find_before_node(const key_type&)): New.
5523         (_Hashtable<>::_M_erase(true_type, const key_type&)): Use latter.
5524         (_Hashtable<>::_M_erase(false_type, const key_type&)): Likewise.
5525         * src/c++11/hashtable_c++0x.cc: Include <bits/functional_hash.h>.
5526         * testsuite/util/testsuite_performance.h
5527         (report_performance): Use 9 width to display memory.
5528         * testsuite/performance/23_containers/insert_erase/unordered_small_size.cc:
5529         New performance test case.
5531 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5533         PR libstdc++/103919
5534         * include/bits/basic_string.h (basic_string(const T&, size_t, size_t)):
5535         Relax constraints on string_view parameter.
5536         * include/bits/cow_string.h (basic_string(const T&, size_t, size_t)):
5537         Likewise.
5538         * testsuite/21_strings/basic_string/cons/char/103919.cc: New test.
5540 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5542         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Export new symbol for
5543         ARM EABI.
5544         * include/bits/c++config (_GLIBCXX23_CONSTEXPR): Define.
5545         * include/std/version (__cpp_lib_constexpr_typeinfo): Define.
5546         * libsupc++/tinfo.cc: Add #error to ensure non-inline definition
5547         is emitted.
5548         (type_info::__equal): Define alias symbol.
5549         * libsupc++/typeinfo (type_info::before): Combine different
5550         implementations into one.
5551         (type_info::operator==): Likewise. Use address equality for
5552         constant evaluation. Call __equal for targets that require the
5553         definition to be non-inline.
5554         * testsuite/18_support/type_info/constexpr.cc: New test.
5556 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5558         * src/c++11/cxx11-ios_failure.cc (io_error_category): Define
5559         class and virtual functions as 'final'.
5560         (io_category_instance): Use constinit union to make the object
5561         immortal.
5562         * src/c++11/future.cc (future_error_category): Define class and
5563         virtual functions as 'final'.
5564         (future_category_instance): Use constinit union.
5566 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5568         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip
5569         versioned namespace from the type name that is printed.
5571 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5573         * python/libstdcxx/v6/printers.py (StdRegexStatePrinter): New
5574         printer for std::regex NFA states.
5576 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5578         * testsuite/23_containers/forward_list/operations/1.cc: Fill in
5579         placeholders in comments.
5580         * testsuite/23_containers/forward_list/operations/2.cc:
5581         Likewise.
5582         * testsuite/23_containers/forward_list/operations/3.cc:
5583         Likewise.
5584         * testsuite/23_containers/forward_list/operations/4.cc:
5585         Likewise.
5586         * testsuite/23_containers/forward_list/operations/5.cc:
5587         Likewise.
5588         * testsuite/23_containers/forward_list/operations/6.cc:
5589         Likewise.
5590         * testsuite/23_containers/forward_list/operations/7.cc:
5591         Likewise.
5593 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5595         PR libstdc++/103848
5596         * include/bits/stl_deque.h (operator-): Do not use 0 as null
5597         pointer constant.
5599 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5601         * include/bits/alloc_traits.h (allocator_traits<allocator<void>>):
5602         Use std::_Construct for construct.
5604 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5606         PR libstdc++/103877
5607         * doc/xml/faq.xml: Add '-x c++' to preprocessor command.
5608         * doc/html/faq.html: Regenerate.
5610 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5612         * include/bits/regex.h (__regex_algo_impl): Change __policy and
5613         __match_mode template parameters to be function parameters.
5614         (regex_match, regex_search): Pass policy and match mode as
5615         function arguments.
5616         * include/bits/regex.tcc (__regex_algo_impl): Change template
5617         parameters to function parameters.
5618         * include/bits/regex_compiler.h (_RegexTranslatorBase): Use
5619         'if constexpr' for conditions using template parameters.
5620         (_RegexTranslator): Likewise.
5621         * include/bits/regex_executor.tcc (_Executor::_M_handle_accept):
5622         Likewise.
5623         * testsuite/util/testsuite_regex.h (regex_match_debug)
5624         (regex_search_debug): Move template arguments to function
5625         arguments.
5627 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5629         * testsuite/util/testsuite_regex.h (regex_match_debug): Compare
5630         results even if the match failed.
5632 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
5634         * include/bits/regex_compiler.tcc: Adjust all calls to
5635         __throw_regex_error.
5636         * include/bits/regex_error.h (__throw_regex_error): Add noreturn
5637         attribute.
5638         * include/bits/regex_scanner.tcc: Likewise.
5639         * src/c++11/regex.cc (desc): New helper function.
5640         (regex_error::regex_error(error_type)): Use desc to get a string
5641         corresponding to the error code.
5644 Copyright (C) 2022 Free Software Foundation, Inc.
5646 Copying and distribution of this file, with or without modification,
5647 are permitted in any medium without royalty provided the copyright
5648 notice and this notice are preserved.