Daily bump.
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob9460ea2b9c3d5d2131477d0b40e32ba188b75797
1 2024-03-29  Arsen Arsenović  <arsen@aarsen.me>
3         * testsuite/24_iterators/range_generators/01.cc: Drop GCC
4         Runtime Library Exception.
5         * testsuite/24_iterators/range_generators/02.cc: Drop GCC
6         Runtime Library Exception.
7         * testsuite/24_iterators/range_generators/copy.cc: Drop GCC
8         Runtime Library Exception.
9         * testsuite/24_iterators/range_generators/except.cc: Drop GCC
10         Runtime Library Exception.
11         * testsuite/24_iterators/range_generators/subrange.cc: Drop GCC
12         Runtime Library Exception.
13         * testsuite/24_iterators/range_generators/synopsis.cc: Drop GCC
14         Runtime Library Exception.
15         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
16         Drop GCC Runtime Library Exception from the "You should have
17         received a copy" paragraph.
19 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
21         * include/experimental/bits/simd_x86.h (_S_masked_unary):
22         Cast inputs < 16 bytes to 16 byte vectors before calling the
23         right subtraction builtin. Before returning, truncate to the
24         return vector type.
26 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
28         * include/experimental/bits/simd_x86.h (_S_masked_unary): Call
29         the 4- and 8-byte variants of __builtin_ia32_subp[ds] without
30         rounding direction argument.
32 2024-03-27  Srinivas Yadav Singanaboina  <vasu.srinivasvasu.14@gmail.com>
34         * include/Makefile.am: Add simd_sve.h.
35         * include/Makefile.in: Add simd_sve.h.
36         * include/experimental/bits/simd.h: Add new SveAbi.
37         * include/experimental/bits/simd_builtin.h: Use
38         __no_sve_deduce_t to support existing Neon Abi.
39         * include/experimental/bits/simd_converter.h: Convert
40         sequentially when sve is available.
41         * include/experimental/bits/simd_detail.h: Define sve
42         specific macro.
43         * include/experimental/bits/simd_math.h: Fallback frexp
44         to execute sequntially when sve is available, to handle
45         fixed_size_simd return type that always uses sve.
46         * include/experimental/simd: Include bits/simd_sve.h.
47         * testsuite/experimental/simd/tests/bits/main.h: Enable
48         testing for sve128, sve256, sve512.
49         * include/experimental/bits/simd_sve.h: New file.
51 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
53         * include/std/generator (generator::_Iterator::operator*): Fix
54         return type.
55         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
56         New test.
58 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
60         * include/std/generator: Fix _V badname.
62 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
64         * testsuite/19_diagnostics/stacktrace/current.cc: Check for
65         __cpp_lib_stacktrace instead of check for stacktrace ET.
66         * testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
67         * testsuite/19_diagnostics/stacktrace/hash.cc: Likewise.
68         * testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
69         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
70         * testsuite/19_diagnostics/stacktrace/synopsis.cc: Likewise.
71         * testsuite/19_diagnostics/stacktrace/version.cc: Likewise.
72         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc:
73         Likewise.
74         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
75         Remove.
77 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
79         * testsuite/lib/dg-options.exp (dg-require-cpp-feature-test):
80         New proc.
81         * testsuite/lib/libstdc++.exp (check_v3_target_cpp_feature_test):
82         New proc.
83         * testsuite/std/text_encoding/cons.cc: Use new directive to skip
84         the test if the __cpp_lib_text_encoding feature test macro is
85         not defined.
86         * testsuite/std/text_encoding/requirements.cc: Likewise.
88 2024-03-25  Jonathan Wakely  <jwakely@redhat.com>
90         * testsuite/std/text_encoding/requirements.cc: #undef the
91         correct macro.
93 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
95         * include/std/format (formatter): Disable specializations that
96         would allow sequences of narrow characters to be formatted as
97         wchar_t without conversion, as per LWG 3944.
98         * testsuite/std/format/formatter/lwg3944.cc: New test.
100 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
102         * include/bits/utility.h (__is_in_place_index_v): New variable
103         template.
104         * include/std/variant (__not_in_place_tag): Define in terms of
105         variable templates not a class template.
107 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
109         PR libstdc++/114400
110         * include/std/string_view (operator==): Use std::type_identity_t
111         in C++20 instead of our own __type_identity_t.
113 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
115         PR libstdc++/114401
116         * include/bits/hashtable.h (_Hashtable::_M_reinsert_node): Call
117         release() on node handle instead of just zeroing its pointer.
118         (_Hashtable::_M_reinsert_node_multi): Likewise.
119         (_Hashtable::_M_merge_unique): Likewise.
120         (_Hashtable::_M_merge_multi): Likewise.
121         * include/bits/node_handle.h (_Node_handle_common::release()):
122         New member function.
123         (_Node_handle_common::_Optional_alloc::_M_empty): Remove
124         unnecessary union member.
125         (_Node_handle_common): Declare _Hashtable as a friend.
126         * include/bits/stl_tree.h (_Rb_tree::_M_reinsert_node_unique):
127         Call release() on node handle instead of just zeroing its
128         pointer.
129         (_Rb_tree::_M_reinsert_node_equal): Likewise.
130         (_Rb_tree::_M_reinsert_node_hint_unique): Likewise.
131         (_Rb_tree::_M_reinsert_node_hint_equal): Likewise.
132         * testsuite/23_containers/multiset/modifiers/114401.cc: New test.
133         * testsuite/23_containers/set/modifiers/114401.cc: New test.
134         * testsuite/23_containers/unordered_multiset/modifiers/114401.cc: New test.
135         * testsuite/23_containers/unordered_set/modifiers/114401.cc: New test.
137 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
139         PR libstdc++/113841
140         * include/bits/allocator.h (allocator<cv T>): Add default
141         constructor to partial specializations for cv-qualified types.
142         * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()):
143         Constrain so that it's only present if the allocator is default
144         constructible.
145         * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
146         Likewise.
147         * testsuite/23_containers/vector/cons/113841.cc: New test.
149 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
151         * include/bits/stl_construct.h (destroy_at, construct_at): Guard
152         with feature test macros instead of just __cplusplus.
154 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
156         * include/bits/version.def (generator, tuple_like): Move earlier
157         in the file.
158         * include/bits/version.h: Regenerate.
160 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
162         PR libstdc++/114394
163         * include/std/functional (bind): Use __invoke_result_t instead
164         of result_of::type.
165         * include/std/type_traits (__invoke_result_t): New alias
166         template.
167         * testsuite/20_util/bind/ref_neg.cc: Adjust prune pattern.
169 2024-03-20  François Dumont  <fdumont@gcc.gnu.org>
171         * include/bits/version.def (null_iterators): Remove extra_cond.
172         * include/bits/version.h: Regenerate.
174 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
176         PR libstdc++/114359
177         * include/bits/random.tcc (binomial_distribution::param_type):
178         Ensure arithmetic is done as type double.
179         * testsuite/26_numerics/random/binomial_distribution/114359.cc: New test.
181 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
183         PR libstdc++/101228
184         * include/pstl/parallel_backend_tbb.h (TBB_SUPPRESS_DEPRECATED_MESSAGES):
185         Define before including <tbb/task.h> then undef afterwards.
187 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
189         * include/Makefile.am [MAINTAINER_MODE]: Add target to
190         automatically update <bits/version.h>.
191         * include/Makefile.in: Regenerate.
193 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
195         * doc/xml/manual/build_hacking.xml: Document generated files.
196         Update list of convenience libraries and sub-directories under
197         the src directory.
198         * doc/html/*: Regenerate.
200 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
202         * include/bits/text_encoding-data.h: Regenerate.
203         * include/bits/unicode-data.h: Regenerate.
204         * scripts/gen_text_encoding_data.py: Fix header of generated
205         file to name the correct script.
207 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
209         * testsuite/util/pstl/test_utils.h: Fix typos in comments.
211 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
213         PR libstdc++/114367
214         * include/bits/stl_bvector.h (_M_allocate): Use allocator's
215         construct function to begin lifetime of words.
217 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
219         * testsuite/lib/dg-options.exp (atomic_link_flags): Emit a -B
220         option for the path to the uninstalled libatomic.
222 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
224         * testsuite/lib/libstdc++.exp (v3_target_compile): Instead of
225         /dev/null, use a temporary file for test executables on Darwin.
227 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
229         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_can_advance):
230         Accept 0 offset advance on value-initialized iterator.
231         * testsuite/23_containers/vector/debug/n3644.cc: New test case.
233 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
235         * include/debug/safe_local_iterator.tcc
236         (_Safe_local_iterator::_M_valid_range): Add _M_value_initialized and
237         _M_singular checks.
238         * testsuite/23_containers/unordered_set/debug/114316.cc: New test case.
240 2024-03-17  François Dumont  <fdumont@gcc.gnu.org>
242         PR libstdc++/114316
243         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range):
244         First check if both iterators are value-initialized before checking if
245         singular.
246         * testsuite/23_containers/set/debug/114316.cc: New test case.
247         * testsuite/23_containers/vector/debug/114316.cc: New test case.
249 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
251         PR libstdc++/114325
252         * include/std/format (_Scanner::_M_scan): Pass correct length to
253         __to_chars_10_impl.
254         * testsuite/std/format/functions/format.cc: Check negative
255         integers with empty format-spec.
257 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
259         * include/bits/stl_algo.h (find_end, all_of, none_of, any_of)
260         (find_if_not, is_partitioned, partition_point, remove)
261         (remove_if, unique, lower_bound, upper_bound, equal_range)
262         (binary_search, includes, is_sorted, is_sorted_until, minmax)
263         (minmax_element, is_permutation, clamp, find_if, find_first_of)
264         (adjacent_find, count, count_if, search, search_n, min_element)
265         (max_element): Add nodiscard attribute.
266         * include/bits/stl_algobase.h (min, max, lower_bound, equal)
267         (lexicographical_compare, lexicographical_compare_three_way)
268         (mismatch): Likewise.
269         * include/bits/stl_heap.h (is_heap, is_heap_until): Likewise.
270         * testsuite/25_algorithms/equal/debug/1_neg.cc: Add dg-warning.
271         * testsuite/25_algorithms/equal/debug/2_neg.cc: Likewise.
272         * testsuite/25_algorithms/equal/debug/3_neg.cc: Likewise.
273         * testsuite/25_algorithms/find_first_of/concept_check_1.cc:
274         Likewise.
275         * testsuite/25_algorithms/is_permutation/2.cc: Likewise.
276         * testsuite/25_algorithms/lexicographical_compare/71545.cc:
277         Likewise.
278         * testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
279         * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc:
280         Likewise.
281         * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc:
282         Likewise.
283         * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc:
284         Likewise.
285         * testsuite/25_algorithms/minmax/3.cc: Likewise.
286         * testsuite/25_algorithms/search/78346.cc: Likewise.
287         * testsuite/25_algorithms/search_n/58358.cc: Likewise.
288         * testsuite/25_algorithms/unique/1.cc: Likewise.
289         * testsuite/25_algorithms/unique/11480.cc: Likewise.
290         * testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
291         * testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc:
292         Likewise.
293         * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc:
294         Likewise.
295         * testsuite/ext/concept_checks.cc: Likewise.
296         * testsuite/ext/is_heap/47709.cc: Likewise.
297         * testsuite/ext/is_sorted/cxx0x.cc: Likewise.
299 2024-03-14  xndcn  <xndchn@gmail.com>
301         * include/bits/atomic_base.h (__atomic_float::__atomic_float(Fp)):
302         Clear padding.
303         * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc:
304         New test.
306 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
308         PR libstdc++/66146
309         * doc/xml/manual/status_cxx2011.xml: Remove mention of Linux in
310         note about std::call_once.
311         * doc/xml/manual/status_cxx2014.xml: Likewise.
312         * doc/xml/manual/status_cxx2017.xml: Likewise.
313         * doc/html/manual/status.html: Regenerate.
315 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
317         * doc/xml/manual/status_cxx2023.xml: Update C++23 status table.
318         * doc/html/manual/status.html: Regenerate.
319         * include/bits/version.def: Fix typo in comment.
321 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
323         * testsuite/libstdc++-prettyprinters/cxx11.cc: Move custom_cat
324         to namespace scope.
326 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
328         * doc/xml/manual/debug.xml: Improve docs on debug builds and
329         using ASan. Mention _GLIBCXX_ASSERTIONS. Reorder sections to put
330         the most relevant ones first.
331         * doc/xml/manual/using.xml: Add comma.
332         * doc/html/*: Regenerate.
334 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
336         * doc/xml/manual/debug.xml: Document that concept checking might
337         be removed in future.
338         * doc/xml/manual/extensions.xml: Likewise.
340 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
342         PR libstdc++/114240
343         * include/bits/chrono_io.h (_Parser::operator()): Assume
344         hours(0) for a time_point, so that a time is not required
345         to be present.
346         * testsuite/std/time/parse/114240.cc: New test.
348 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
350         PR libstdc++/114279
351         * include/bits/chrono_io.h (_Parser::_M_is_leap_second): New
352         data member.
353         (_Parser::_M_reserved): Reserve padding bits for future use.
354         (_Parser::operator()): Set _M_is_leap_second if %S reads 60s.
355         (from_stream): Only allow _M_is_leap_second for utc_time and
356         local_time. Adjust arithmetic for utc_time so that leap seconds
357         are preserved. Use time_point_cast to convert to a possibly
358         lower-precision result type.
359         * testsuite/std/time/parse.cc: Move to ...
360         * testsuite/std/time/parse/parse.cc: ... here.
361         * testsuite/std/time/parse/114279.cc: New test.
363 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
365         * include/bits/chrono_io.h (_Parser::operator()): Use
366         std::from_chars to parse fractional seconds.
368 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
370         PR libstdc++/114244
371         * include/bits/chrono_io.h (_Parser::operator()): Remove
372         redundant uses of duration_cast. Use chrono::round to convert
373         long double value to durations with integer representations.
374         Check represenation type when deciding whether to skip parsing
375         fractional seconds.
376         * testsuite/20_util/duration/114244.cc: New test.
377         * testsuite/20_util/duration/io.cc: Check that a floating-point
378         duration with ratio<1> precision can be parsed.
380 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
382         PR libstdc++/114103
383         * include/bits/version.def (atomic_lock_free_type_aliases): Add
384         extra_cond to check for at least one always-lock-free type.
385         * include/bits/version.h: Regenerate.
386         * include/std/atomic (atomic_signed_lock_free)
387         (atomic_unsigned_lock_free): Only use always-lock-free types.
388         * src/c++20/tzdb.cc (time_zone::_Impl::RulesCounter): Don't use
389         atomic counter if lock-free aliases aren't available.
390         * testsuite/29_atomics/atomic/lock_free_aliases.cc: XFAIL for
391         targets without lock-free word-size compare_exchange.
393 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
395         * include/std/chrono (__get_leap_second_info): Update expiry
396         time for hardcoded list of leap seconds.
397         * testsuite/std/time/tzdb/leap_seconds.cc: Update comment.
399 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
401         * testsuite/23_containers/deque/allocator/default_init.cc: Use
402         std::memset instead of __builtin_memset.
403         * testsuite/23_containers/forward_list/allocator/default_init.cc:
404         Likewise.
405         * testsuite/23_containers/list/allocator/default_init.cc:
406         Likewise.
407         * testsuite/23_containers/map/allocator/default_init.cc:
408         Likewise.
409         * testsuite/23_containers/set/allocator/default_init.cc:
410         Likewise.
411         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
412         Likewise.
413         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
414         Likewise.
415         * testsuite/23_containers/vector/allocator/default_init.cc:
416         Likewise.
417         * testsuite/23_containers/vector/bool/allocator/default_init.cc:
418         Likewise.
419         * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
420         Likewise.
421         * testsuite/util/atomic/wait_notify_util.h: Likewise.
423 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
425         * include/std/format (_Arg_store::_S_make_elt): Add two
426         static_assert checks to give more user-friendly error messages.
427         * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune another
428         form of "in requirements with" note.
429         * testsuite/std/format/arguments/args_neg.cc: Check for
430         user-friendly diagnostics for non-formattable types.
431         * testsuite/std/format/string_neg.cc: Likewise.
433 2024-03-04  Jonathan Wakely  <jwakely@redhat.com>
435         PR libstdc++/114147
436         * include/std/tuple (tuple::tuple(allocator_arg_t, const Alloc&)):
437         Add missing overload of allocator-extended default constructor.
438         (tuple<T1,T2>::tuple(allocator_arg_t, const Alloc&)): Likewise.
439         * testsuite/20_util/tuple/cons/114147.cc: New test.
441 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
443         * include/std/format (basic_format_arg::handle::__maybe_const_t):
444         Fix condition to check if const type is formattable.
445         (basic_format_arg::handle::handle(T&)): Remove redundant
446         static_assert.
447         * testsuite/std/format/formatter/basic.cc: New test.
449 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
451         PR libstdc++/113960
452         * include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
453         (__memcmp_ordered_with): New concept.
454         (lexicographical_compare_three_way): Use __memcmp_ordered_with
455         instead of __is_byte_iter. Use correct length for memcmp.
456         * testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
457         New test.
459 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
461         PR libstdc++/114152
462         * include/experimental/scope (scope_exit scope_fail): Make
463         destructor unconditionally noexcept.
464         (scope_sucess): Fix noexcept-specifier.
465         * testsuite/experimental/scopeguard/114152.cc: New test.
467 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
469         * doc/xml/manual/appendix_contributing.xml: Change URLs to use
470         https.
471         * doc/html/manual/*: Regenerate.
473 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
475         * doc/xml/manual/appendix_contributing.xml: Replace outdated
476         info on ChangeLog entries.
477         * doc/html/manual/appendix_contributing.html: Regenerate.
479 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
481         * include/bits/stl_bvector.h (vector<bool, A>::at): Add
482         nodiscard.
483         * include/bits/stl_vector.h (vector<T, A>::at): Likewise.
484         (operator==, operator<=>, operator<, operator!=, operator>)
485         (operator<=, operator>=): Likewise.
486         * include/debug/vector (operator==, operator<=>, operator<)
487         (operator!=, operator>, operator<=, operator>=): Likewise.
488         * testsuite/23_containers/vector/nodiscard.cc: New test.
490 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
492         * include/bits/atomic_base.h (operator|, operator&): Add
493         noexcept.
494         * include/bits/fs_fwd.h (operator&, operator|, operator^)
495         (operator~): Add nodiscard to overloads for copy_options, perms,
496         perm_options, and directory_options.
497         * include/bits/ios_base.h (operator&, operator|, operator^)
498         (operator~): Add nodiscard and noexcept to overloads for
499         _Ios_Fmtflags, _Ios_Openmode, and _Ios_Iostate.
500         (operator|=, operator&=, operator^=): Add constexpr for C++14.
501         * include/bits/regex_constants.h (operator&, operator|, operator^)
502         (operator~): Add nodiscard and noexcept to overloads for
503         syntax_option_type and match_flag_type.
504         (operator|=, operator&=, operator^=): Add noexcept.
505         * include/std/charconv (operator&, operator|, operator^)
506         (operator~): Add nodiscard to overloads for chars_format.
507         * include/std/future (operator&, operator|, operator^)
508         (operator~): Add nodiscard for overloads for launch.
509         (operator&=, operator|=, operator^=): Add constexpr for C++14.
510         * include/experimental/bits/fs_fwd.h  (operator&, operator|)
511         (operator^, operator~): Add nodiscard to overloads for
512         copy_options, perms, and directory_options.
513         * testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc:
514         Add dg-warning for nodiscard warnings.
515         * testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc:
516         Likewise.
517         * testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
518         Likewise.
519         * testsuite/27_io/filesystem/operations/bitmask_types.cc:
520         New test.
522 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
524         * testsuite/27_io/basic_ostream/print/1.cc: Check error
525         handling.
526         * testsuite/27_io/print/1.cc: Likewise.
528 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
530         * include/std/ostream (vprint_unicode) [__CYGWIN__]: Use POSIX
531         code path for Cygwin instead of Windows.
532         * include/std/print (vprint_unicode) [__CYGWIN__]: Likewise.
533         * testsuite/27_io/basic_ostream/print/1.cc: Only add -lstdc++exp
534         for *-*-mingw* targets.
535         * testsuite/27_io/print/1.cc: Likewise.
537 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
539         * include/bits/alloc_traits.h: Include <bits/stl_iterator.h> for
540         __make_move_if_noexcept_iterator.
542 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
544         * include/std/stacktrace: Add nodiscard attribute to all
545         functions without side effects.
547 2024-02-20  François Dumont  <fdumont@gcc.gnu.org>
549         * include/bits/stl_algobase.h (std::__niter_wrap): Add a call to
550         std::__niter_base on res iterator.
552 2024-02-19  Iain Sandoe  <iain@sandoe.co.uk>
553             Jonathan Wakely  <jwakely@redhat.com>
555         PR target/112397
556         * configure: Regenerate.
557         * configure.ac: Detect if we are building for Darwin.
558         * libsupc++/Makefile.am: If we are building for Darwin, then
559         suppress hot/cold partitioning for the array allocators.
560         * libsupc++/Makefile.in: Regenerated.
562 2024-02-17  François Dumont  <fdumont@gcc.gnu.org>
564         * include/bits/stl_algobase.h (std::__niter_base): Redefine the overload
565         definitions for __gnu_debug::_Safe_iterator.
566         * include/debug/safe_iterator.tcc (std::__niter_base): Adapt declarations.
568 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
570         PR libstdc++/87744
571         PR libstdc++/113961
572         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
573         line number.
575 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
577         PR libstdc++/87744
578         PR libstdc++/113931
579         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
580         line number.
582 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
584         * doc/xml/manual/debug_mode.xml: Update docs for backtraces.
585         * doc/html/manual/debug_mode_using.html: Regenerate.
587 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
589         * doc/xml/manual/test.xml: Fix spelling of <envar> elements.
590         * doc/html/manual/test.html: Regenerate.
592 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
594         PR libstdc++/113806
595         * include/std/bitset (bitset::operator>>=): Remove redundant
596         call to _M_do_sanitize.
598 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
600         PR libstdc++/113807
601         * include/std/bitset (bitset::set()): Use memset instead of a
602         loop over the individual words.
604 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
606         PR libstdc++/113811
607         * include/bits/stl_algo.h (__rotate): Use unsigned values for
608         division.
610 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
612         PR libstdc++/99117
613         * include/std/valarray (valarray::operator=(const _Expr&)):
614         Use loop to copy instead of __valarray_copy with _Array.
615         * testsuite/26_numerics/valarray/99117.cc: New test.
617 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
619         * src/c++20/tzdata.zi: Import new file from 2024a release.
620         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
621         Update expiry date for leap seconds list.
623 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
625         PR libstdc++/87744
626         * include/bits/random.h [!__SIZEOF_INT128__] (_Select_uint_least_t):
627         Define specialization for 64-bit generators with
628         non-power-of-two modulus and large constants.
629         (__mod): Use if constexpr unconditionally.
630         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
631         line number.
632         * testsuite/26_numerics/random/linear_congruential_engine/87744.cc:
633         New test.
635 2024-02-14  Gerald Pfeifer  <gerald@pfeifer.com>
637         * doc/xml/manual/status_cxx2023.xml: Fix C++ item p2442 to be
638         version 1.
639         * doc/html/manual/status.html: Regenerate.
641 2024-02-12  Paul Keir  <paul.keir@uws.ac.uk>
643         PR libstdc++/113294
644         * include/bits/basic_string.h (basic_string::operator=): Use
645         _M_use_local_data() instead of _M_local_buf on the moved-from
646         string.
647         * testsuite/21_strings/basic_string/modifiers/constexpr.cc
648         (test_move): New test.
650 2024-02-09  Ken Matsui  <kmatsui@gcc.gnu.org>
652         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
653         Removed.
654         * include/std/type_traits (is_same): Use
655         _GLIBCXX_USE_BUILTIN_TRAIT instead of
656         _GLIBCXX_HAVE_BUILTIN_IS_SAME.
657         (is_same_v): Likewise.
659 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
661         * include/bits/shared_ptr_atomic.h: Fix typo in comment.
663 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
665         PR libstdc++/100147
666         * include/bits/gslice.h (operator=): Add comment about lack of
667         self-assignment check.
669 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
671         * include/tr2/type_traits (bases, direct_bases): Use
672         __has_builtin to check if required built-ins are supported.
674 2024-02-07  Patrick Palka  <ppalka@redhat.com>
676         PR testsuite/113710
677         PR c++/113814
678         * include/bits/stl_pair.h (tuple_element): Add forward
679         declaration of the partial specialization for tuple.
681 2024-02-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
683         * testsuite/lib/libstdc++.exp: Use "nul" for Windows, "/dev/null"
684         for other environments.
686 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
688         * include/std/format (__format::_Spec::_M_reserved): Define new
689         bit-field members to reserve padding bits for future extensions.
691 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
693         * src/experimental/Makefile.am: Use libstdc++fsconvenience.a
694         instead of libstdc++fs.a.
695         * src/experimental/Makefile.in: Regenerate.
696         * src/filesystem/Makefile.am: Build libstdc++fsconvenience.a as
697         well.
698         * src/filesystem/Makefile.in: Regenerate.
700 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
702         * include/bits/text_encoding-data.h: Regenerate.
703         * include/bits/unicode-data.h: Regenerate.
704         * scripts/gen_text_encoding_data.py: Add copyright and license
705         text to the output.
707 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
709         PR libstdc++/113335
710         * include/bits/std_function.h (__function_guide_helper): Add
711         partial specialization for explicit object member functions, as
712         per LWG 3617.
713         * testsuite/20_util/function/cons/deduction_c++23.cc: Check
714         explicit object member functions.
715         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
716         Likewise.
718 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
720         * testsuite/17_intro/names.cc [_AIX]: Undefine "u".
722 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
724         * include/experimental/internet (network_v6::network): Define.
725         (network_v6::hosts): Finish implementing.
726         (network_v6::to_string): Do not concatenate std::string to
727         arbitrary std::basic_string specialization.
728         * testsuite/experimental/net/internet/network/v6/cons.cc: New
729         test.
731 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
733         PR libstdc++/90276
734         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Fix
735         comparison function to use less-than instead of equality.
737 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
739         PR libstdc++/90276
740         * testsuite/util/pstl/test_utils.h (reverse_invoker): Do not use
741         perfect forwarding for iterator arguments.
743 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
745         * include/std/string_view (basic_string_view(R&&)): Remove
746         constraint that traits_type must be the same, as per LWG 3857.
747         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
748         Explicit conversion between different specializations should be
749         allowed.
750         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
751         Likewise.
753 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
755         * include/std/syncstream (basic_osyncstream::operator=): Remove
756         noexcept, as per LWG 3867.
758 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
760         * include/std/generator (promise_type::yield_value): Remove
761         noexcept from fourth overload, as per LWG 3894.
763 2024-02-01  Patrick Palka  <ppalka@redhat.com>
765         PR libstdc++/113309
766         PR libstdc++/109203
767         * include/bits/ranges_util.h (__detail::__pair_like): Don't
768         define in C++23 mode.
769         (__detail::__pair_like_convertible_from): Adjust as per P2165R4.
770         (__detail::__is_subrange<subrange>): Moved from <ranges>.
771         (__detail::__is_tuple_like_v<subrange>): Likewise.
772         * include/bits/stl_iterator.h: Include <bits/utility.h> for
773         C++23.
774         (__different_from): Move to <concepts>.
775         (__iter_key_t): Adjust for C++23 as per P2165R4.
776         (__iter_val_t): Likewise.
777         * include/bits/stl_pair.h (pair, array): Forward declare.
778         (get): Forward declare all overloads relevant to P2165R4
779         tuple-like constructors.
780         (__is_tuple_v): Define for C++23.
781         (__is_tuple_like_v): Define for C++23.
782         (__tuple_like): Define for C++23 as per P2165R4.
783         (__pair_like): Define for C++23 as per P2165R4.
784         (__eligibile_tuple_like): Define for C++23.
785         (__eligibile_pair_like): Define for C++23.
786         (pair::_S_constructible_from_pair_like): Define for C++23.
787         (pair::_S_convertible_from_pair_like): Define for C++23.
788         (pair::_S_dangles_from_pair_like): Define for C++23.
789         (pair::pair): Define overloads taking a tuple-like type for
790         C++23 as per P2165R4.
791         (pair::_S_assignable_from_tuple_like): Define for C++23.
792         (pair::_S_const_assignable_from_tuple_like): Define for C++23.
793         (pair::operator=): Define overloads taking a tuple-like type for
794         C++23 as per P2165R4.
795         * include/bits/utility.h (ranges::__detail::__is_subrange):
796         Moved from <ranges>.
797         * include/bits/version.def (tuple_like): Define for C++23.
798         * include/bits/version.h: Regenerate.
799         * include/std/concepts (__different_from): Moved from
800         <bits/stl_iterator.h>.
801         (ranges::__swap::__adl_swap): Clarify which __detail namespace.
802         * include/std/map (__cpp_lib_tuple_like): Define C++23.
803         * include/std/ranges (__detail::__is_subrange): Moved to
804         <bits/utility.h>.
805         (__detail::__is_subrange<subrange>): Moved to <bits/ranges_util.h>
806         (__detail::__has_tuple_element): Adjust for C++23 as per P2165R4.
807         (__detail::__tuple_or_pair): Remove as per P2165R4.  Replace all
808         uses with plain tuple as per P2165R4.
809         * include/std/tuple (__cpp_lib_tuple_like): Define for C++23.
810         (__tuple_like_tag_t): Define for C++23.
811         (__tuple_cmp): Forward declare for C++23.
812         (_Tuple_impl::_Tuple_impl): Define overloads taking
813         __tuple_like_tag_t and a tuple-like type for C++23.
814         (_Tuple_impl::_M_assign): Likewise.
815         (tuple::__constructible_from_tuple_like): Define for C++23.
816         (tuple::__convertible_from_tuple_like): Define for C++23.
817         (tuple::__dangles_from_tuple_like): Define for C++23.
818         (tuple::tuple): Define overloads taking a tuple-like type for
819         C++23 as per P2165R4.
820         (tuple::__assignable_from_tuple_like): Define for C++23.
821         (tuple::__const_assignable_from_tuple_like): Define for C++23.
822         (tuple::operator=): Define overloads taking a tuple-like type
823         for C++23 as per P2165R4.
824         (tuple::__tuple_like_common_comparison_category): Define for C++23.
825         (tuple::operator<=>): Define overload taking a tuple-like type
826         for C++23 as per P2165R4.
827         (array, get): Forward declarations moved to <bits/stl_pair.h>.
828         (tuple_cat): Constrain with __tuple_like for C++23 as per P2165R4.
829         (apply): Likewise.
830         (make_from_tuple): Likewise.
831         (__tuple_like_common_reference): Define for C++23.
832         (basic_common_reference): Adjust as per P2165R4.
833         (__tuple_like_common_type): Define for C++23.
834         (common_type): Adjust as per P2165R4.
835         * include/std/unordered_map (__cpp_lib_tuple_like): Define for
836         C++23.
837         * include/std/utility (__cpp_lib_tuple_like): Define for C++23.
838         * testsuite/std/ranges/zip/1.cc (test01): Adjust to handle pair
839         and 2-tuple interchangeably.
840         (test05): New test.
841         * testsuite/20_util/pair/p2165r4.cc: New test.
842         * testsuite/20_util/tuple/p2165r4.cc: New test.
844 2024-02-01  Patrick Palka  <ppalka@redhat.com>
846         * include/bits/stl_pair.h (pair::_S_const_assignable): Define,
847         factored out from ...
848         (pair::operator=): ... the constraints of the const overloads.
850 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
852         * include/bits/version.tpl: Do not use def-file-line for each
853         macro being defined.
854         * include/bits/version.h: Regenerate.
856 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
858         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Adjust
859         dg-error pattern.
860         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
861         Likewise.
862         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
863         Likewise.
864         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
865         Likewise.
866         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
867         Likewise.
868         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
869         Likewise.
870         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
871         Likewise.
872         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
873         Likewise.
874         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
875         Likewise.
877 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
879         * include/experimental/internet (network_v4::to_string()):
880         Remove lambda and use of resize_and_overwrite.
882 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
884         * acinclude.m4 (GLIBCXX_CHECK_TEXT_ENCODING): Use <xlocale.h> if
885         needed for newlocale.
886         * configure: Regenerate.
887         * src/c++26/text_encoding.cc: Use <xlocale.h>.
889 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
890             Ewan Higgs  <ewan.higgs@gmail.com>
892         * include/bits/text_encoding-data.h: Regenerate.
893         * scripts/gen_text_encoding_data.py: Add extra_aliases dict
894         containing "ASCII".
895         * testsuite/std/text_encoding/cons.cc: Check "ascii" is known.
897 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
899         * doc/xml/manual/using.xml: Update tables of supported headers.
900         * doc/html/*: Regenerate.
902 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
904         * include/std/bitset (_Base_bitset::_M_do_to_ullong): Avoid
905         -Wshift-count-overflow warning.
907 2024-01-30  Jonathan Wakely  <jwakely@redhat.com>
909         * testsuite/std/time/clock/gps/io.cc: Fix expected result in
910         assertion and call test_format() from main.
912 2024-01-29  François Dumont  <fdumont@gcc.gnu.org>
914         * doc/xml/manual/debug_mode.xml: Link against libstdc++exp.a to use
915         _GLIBCXX_DEBUG_BACKTRACE macro.
917 2024-01-24  Huanghui Nie  <nnnjkk@gmail.com>
918             Théo Papadopoulo   <papadopoulo@gmail.com>
920         * include/bits/hashtable.h (_Hahstable<>::_M_remove_bucket_begin): Remove
921         _M_before_begin check and cleanup implementation.
923 2024-01-22  Jonathan Wakely  <jwakely@redhat.com>
925         * testsuite/std/time/clock/file/io.cc: Fix expected result in
926         assertion and call test_format() from main.
928 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
930         PR libstdc++/113500
931         * include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix
932         printing of subseconds with floating-point rep.
933         (__formatter_chrono::_M_format_to_ostream): Do not write
934         time_point specializations directly to the ostream.
935         (formatter<chrono::sys_time<D>, C>::parse): Do not allow an
936         empty chrono-spec if the type fails to meet the constraints for
937         writing to an ostream with operator<<.
938         * testsuite/std/time/clock/file/io.cc: Check formatting
939         non-integral times with empty chrono-specs.
940         * testsuite/std/time/clock/gps/io.cc: Likewise.
941         * testsuite/std/time/clock/utc/io.cc: Likewise.
942         * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
944 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
946         * include/bits/chrono.h (__file_clock::from_sys)
947         (__file_clock::to_sys, __file_clock::_S_from_sys)
948         (__file_clock::_S_to_sys): Use common_type for return type.
949         * testsuite/std/time/clock/file/members.cc: Check round trip
950         conversion for time with lower precision that seconds.
952 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
954         PR libstdc++/113512
955         * include/std/format (__formatter_fp::format): Fix logic for
956         alternate forms.
957         * testsuite/std/format/functions/format.cc: Check buggy cases of
958         alternate forms with g presentation type.
960 2024-01-20  Marek Polacek  <polacek@redhat.com>
962         PR c++/111410
963         * include/std/ranges: Add #pragma to disable -Wdangling-reference with
964         std::ranges::views::__adaptor::operator|.
966 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
968         * include/std/format (_Spec::_M_parse_fill_and_align): Do not
969         use CTAD for _Utf32_view.
971 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
973         PR libstdc++/108822
974         * include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
975         wrong fold-operator.
976         * testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
977         element and three elements. Check allocator-extended
978         constructors.
980 2024-01-19  Patrick Palka  <ppalka@redhat.com>
982         * include/precompiled/stdc++.h [_GLIBCXX_HOSTED]: Include
983         <print> and <text_encoding> for C++23 and C++26 respectively.
985 2024-01-18  Patrick Palka  <ppalka@redhat.com>
987         * include/bits/stl_pair.h [__cplusplus > 202002L]:
988         Guard P2321R2 changes with __glibcxx_ranges_zip instead.
990 2024-01-18  Patrick Palka  <ppalka@redhat.com>
992         * include/std/tuple [__cplusplus > 202002L]: Guard P2321R2
993         changes with __cpp_lib_ranges_zip instead.
995 2024-01-18  Patrick Palka  <ppalka@redhat.com>
997         PR libstdc++/109536
998         * include/debug/safe_base.h (_Safe_sequence_base::_M_swap):
999         Remove _GLIBCXX20_CONSTEXPR from non-inline member function.
1000         * include/debug/safe_iterator.h
1001         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN): Define.
1002         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END): Define.
1003         (_Safe_iterator::operator=): Use them around the code path that
1004         defines a variable of type __gnu_cxx::__scoped_lock.
1005         (_Safe_iterator::operator++): Likewise.
1006         (_Safe_iterator::operator--): Likewise.
1007         (_Safe_iterator::operator+=): Likewise.
1008         (_Safe_iterator::operator-=): Likewise.
1009         * testsuite/23_containers/vector/element_access/constexpr.cc
1010         (test_iterators): Test more iterator operations.
1011         * testsuite/23_containers/vector/bool/element_access/constexpr.cc
1012         (test_iterators): Likewise.
1013         * testsuite/std/ranges/adaptors/all.cc (test08) [_GLIBCXX_DEBUG]:
1014         Remove.
1016 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
1018         * include/bits/unicode.h (__charset_alias_match): Initialize
1019         __var_a and __var_b.
1021 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
1023         PR libstdc++/113450
1024         * testsuite/std/format/functions/format.cc: Use signed char
1025         instead of int8_t.
1027 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
1029         PR libstdc++/113318
1030         * acinclude.m4 (GLIBCXX_CONFIGURE): Add c++26 directory.
1031         (GLIBCXX_CHECK_TEXT_ENCODING): Define.
1032         * config.h.in: Regenerate.
1033         * configure: Regenerate.
1034         * configure.ac: Use GLIBCXX_CHECK_TEXT_ENCODING.
1035         * include/Makefile.am: Add new headers.
1036         * include/Makefile.in: Regenerate.
1037         * include/bits/locale_classes.h (locale::encoding): Declare new
1038         member function.
1039         * include/bits/unicode.h (__charset_alias_match): New function.
1040         * include/bits/text_encoding-data.h: New file.
1041         * include/bits/version.def (text_encoding): Define.
1042         * include/bits/version.h: Regenerate.
1043         * include/std/text_encoding: New file.
1044         * src/Makefile.am: Add new subdirectory.
1045         * src/Makefile.in: Regenerate.
1046         * src/c++26/Makefile.am: New file.
1047         * src/c++26/Makefile.in: New file.
1048         * src/c++26/text_encoding.cc: New file.
1049         * src/experimental/Makefile.am: Include c++26 convenience
1050         library.
1051         * src/experimental/Makefile.in: Regenerate.
1052         * python/libstdcxx/v6/printers.py (StdTextEncodingPrinter): New
1053         printer.
1054         * scripts/gen_text_encoding_data.py: New file.
1055         * testsuite/22_locale/locale/encoding.cc: New test.
1056         * testsuite/ext/unicode/charset_alias_match.cc: New test.
1057         * testsuite/std/text_encoding/cons.cc: New test.
1058         * testsuite/std/text_encoding/members.cc: New test.
1059         * testsuite/std/text_encoding/requirements.cc: New test.
1061 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
1063         * include/bits/unicode.h (_Grapheme_cluster_view): Require view.
1064         Do not use CTAD for _Utf32_view.
1065         (__format_width, __truncate): Do not use CTAD.
1066         (enable_borrowed_range<_Utf_view<T, R>>): Define specialization.
1067         (enable_borrowed_range<_Grapheme_cluster_view<R>>): Likewise.
1069 2024-01-17  Patrick Palka  <ppalka@redhat.com>
1071         * include/std/ranges (views::_CartesianProduct::operator()):
1072         Adjust identity case as per P2540R1.
1073         * testsuite/std/ranges/cartesian_product/1.cc (test01):
1074         Adjust expected result of the identity case.
1076 2024-01-15  Patrick Palka  <ppalka@redhat.com>
1078         * include/std/variant (__detail::__variant::_Variadic_union):
1079         Add bool __trivially_destructible template parameter.
1080         (__detail::__variant::_Variadic_union::~_Variadic_union):
1081         Use __trivially_destructible in constraints instead.
1082         (__detail::__variant::_Variant_storage): Pass
1083         __trivially_destructible value to _Variadic_union.
1085 2024-01-15  Patrick Palka  <ppalka@redhat.com>
1087         * include/bits/stl_iterator.h (const_iterator): Define conversion
1088         operators as per P2836R1.
1089         * include/bits/version.def (ranges_as_const): Update value.
1090         * include/bits/version.h: Regenerate.
1091         * testsuite/24_iterators/const_iterator/1.cc (test04): New test.
1092         * testsuite/std/ranges/adaptors/as_const/1.cc: Adjust expected
1093         value of __cpp_lib_ranges_as_const.
1094         * testsuite/std/ranges/version_c++23.cc: Likewise.
1096 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1098         PR libstdc++/108822
1099         * include/std/tuple (__assignable, __is_nothrow_assignable):
1100         Move pre-C++20 definitions adjacent to their use.
1102 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1104         PR testsuite/113366
1105         * include/std/format (basic_format_arg): Use __formattable
1106         variable template instead of __format::__formattable_with
1107         concept.
1109 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1111         * src/c++20/tzdata.zi: Import new file from 2023d release.
1112         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
1113         Update expiry date for leap seconds list.
1115 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
1117         PR libstdc++/108822
1118         * include/std/tuple (tuple): Add checks for dangling references.
1119         Reimplement constraints and constant expressions using C++20
1120         features.
1121         * include/std/type_traits [C++20]
1122         (__is_implicitly_default_constructible_v): Define.
1123         (__is_implicitly_default_constructible): Use variable template.
1124         * testsuite/20_util/tuple/dangling_ref.cc: New test.
1126 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1128         PR libstdc++/108827
1129         PR libstdc++/111327
1130         * include/bits/version.def (bind_back): Define.
1131         * include/bits/version.h: Regenerate.
1132         * include/std/functional (_Bind_back): Define for C++23.
1133         (bind_back): Likewise.
1134         * testsuite/20_util/function_objects/bind_back/1.cc: New test
1135         (adapted from corresponding bind_front test).
1136         * testsuite/20_util/function_objects/bind_back/111327.cc: Likewise.
1138 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1140         * include/std/functional (_Bind_front): Remove =default special
1141         member function declarations.
1142         (_Bind_front::operator()): Implement using C++23 deducing this
1143         when available.
1144         * testsuite/20_util/function_objects/bind_front/111327.cc:
1145         Adjust testcase to expect better errors in C++23 mode.
1147 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1149         * include/std/ranges (views::__adaptor::operator|): Perform
1150         perfect forwarding of arguments.
1151         (views::__adaptor::_RangeAdaptor::operator()): Pass dummy
1152         first argument to _Partial.
1153         (views::__adaptor::_Partial::_Partial): Likewise.  Add dummy
1154         first parameter.
1155         (views::__adaptor::_Pipe::_Pipe): Perform perfect forwarding
1156         of arguments.
1157         (to): Pass dummy first argument to _Partial.
1159 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
1161         PR libstdc++/107466
1162         * include/bits/random.tcc (subtract_with_carry_engine::seed):
1163         Implement proposed resolution of LWG 4014.
1164         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1165         line number.
1166         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
1167         Check for expected result of 64-bit engine with seed that
1168         doesn't fit in 32-bits.
1170 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1172         PR libstdc++/113320
1173         * include/std/format (__format::_Runtime_format_string): Add
1174         constructor and disable copy operations.
1175         (basic_format_string(_Runtime_format_string)): Add noexcept and
1176         take parameter by value not rvalue reference.
1177         (runtime_format): Add noexcept.
1178         * testsuite/std/format/runtime_format.cc: Check noexcept. Check
1179         that construction is only possible from prvalues, not xvalues.
1181 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1183         PR libstdc++/105505
1184         * include/bits/stl_pair.h (pair::pair(U1&&, U2&&)) [C++23]: Add
1185         default template arguments, as per P1951R1.
1186         * testsuite/20_util/pair/cons/default_tmpl_args.cc: New test.
1188 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1190         * include/std/format (__format::_Arg_store): Fix PR number in
1191         comment. Simplify preprocessor code.
1193 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1195         * doc/xml/manual/evolution.xml: Fix spelling.
1196         * doc/html/manual/api.html: Regenerate.
1198 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1200         * doc/xml/manual/evolution.xml: Document addition of
1201         libstdc++exp.a.
1202         * doc/html/*: Regenerate.
1204 2024-01-11  Marcus Haehnel  <marcus.haehnel@kernkonzept.com>
1206         * libsupc++/eh_unex_handler.cc: Adjust definition type to
1207         declaration.
1209 2024-01-11  Michael Levine  <mlevine55@bloomberg.net>
1211         * include/std/ranges (__glibcxx_want_ranges_iota): Remove
1212         duplicate definition.
1214 2024-01-11  François Dumont  <fdumont@gcc.gnu.org>
1216         PR libstdc++/112477
1217         * src/c++11/debug.cc
1218         (_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
1219         sequence.
1220         (_Safe_iterator_base::_M_attach_single): Likewise.
1221         (_Safe_local_iterator_base::_M_attach): Likewise.
1222         (_Safe_local_iterator_base::_M_attach_single): Likewise.
1223         * testsuite/23_containers/map/debug/112477.cc: New test case.
1225 2024-01-11  Patrick Palka  <ppalka@redhat.com>
1227         * include/bits/move.h (__like_t): Define in C++23 mode.
1228         * include/std/ranges (views::__adaptor::Partial::operator()):
1229         Implement using C++23 deducing this when available.
1230         (views::__adaptor::_Pipe::operator()): Likewise.
1231         * testsuite/std/ranges/adaptors/100577.cc: Adjust testcase to
1232         accept new "no match for call" errors issued in C++23 mode.
1233         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
1235 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1237         * python/libstdcxx/v6/printers.py (StdIntegralConstantPrinter):
1238         Add printer for std::integral_constant.
1239         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
1241 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1243         PR libstdc++/113258
1244         * libsupc++/new_opa.cc: Prefer to use posix_memalign if
1245         available.
1247 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1249         * src/filesystem/ops-common.h (stat_type): Use using.
1251 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1253         PR libstdc++/113250
1254         * src/c++17/fs_ops.cc (fs::equivalent): Use || instead of &&.
1255         * src/filesystem/ops.cc (fs::equivalent): Likewise.
1256         * testsuite/27_io/filesystem/operations/equivalent.cc: Handle
1257         error codes.
1258         * testsuite/experimental/filesystem/operations/equivalent.cc:
1259         Likewise.
1261 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1263         * include/std/type_traits (is_compound): Do not use __not_.
1264         (is_compound_v): Use is_fundamental_v instead.
1266 2024-01-11  Patrick Palka  <ppalka@redhat.com>
1268         * include/bits/utility.h (_Nth_type): Use
1269         _GLIBCXX_USE_BUILTIN_TRAIT instead of __has_builtin.
1271 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
1273         * include/bits/unicode-data.h: Regenerate.
1274         * include/bits/unicode.h (_Utf_iterator::operator++()): Fix off
1275         by one error.
1276         (__incb_property): Add missing check for values before the
1277         first edge.
1278         (__is_extended_pictographic): Invert return values to fix
1279         copy&pasted logic.
1280         (_Grapheme_cluster_view::_Iterator): Remove second iterator
1281         member and find end of cluster lazily.
1282         * testsuite/ext/unicode/grapheme_view.cc: New test.
1283         * testsuite/ext/unicode/properties.cc: New test.
1284         * testsuite/ext/unicode/view.cc: New test.
1286 2024-01-09  Andreas Schwab  <schwab@linux-m68k.org>
1288         * scripts/extract_symvers.in: Require final colon to only match
1289         .dsynsym in the header of the dynamic symtab.
1291 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
1293         * include/bits/chrono_io.h (__formatter_chrono::_M_F): Simplify
1294         handling of string returned from std::format.
1295         (__formatter_chrono::_M_R_T): Likewise.
1297 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1299         * include/bits/unicode.h (__null_sentinel): Remove.
1300         * testsuite/17_intro/names.cc: Add __null_sentinel.
1302 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1304         * include/std/format (__format::_Runtime_format_string): Define
1305         new class template.
1306         (basic_format_string): Add non-consteval constructor for runtime
1307         format strings.
1308         (runtime_format): Define new function for C++26.
1309         * testsuite/std/format/runtime_format.cc: New test.
1311 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1313         * include/bits/chrono_io.h (__formatter_chrono): Always use
1314         lvalue arguments to make_format_args.
1315         * include/std/format (make_format_args): Change parameter pack
1316         from forwarding references to lvalue references. Remove use of
1317         remove_reference_t which is now unnecessary.
1318         (format_to, formatted_size): Remove incorrect forwarding of
1319         arguments.
1320         * include/std/ostream (print): Remove forwarding of arguments.
1321         * include/std/print (print): Likewise.
1322         * testsuite/20_util/duration/io.cc: Use lvalues as arguments to
1323         make_format_args.
1324         * testsuite/std/format/arguments/args.cc: Likewise.
1325         * testsuite/std/format/arguments/lwg3810.cc: Likewise.
1326         * testsuite/std/format/functions/format.cc: Likewise.
1327         * testsuite/std/format/functions/vformat_to.cc: Likewise.
1328         * testsuite/std/format/string.cc: Likewise.
1329         * testsuite/std/time/day/io.cc: Likewise.
1330         * testsuite/std/time/month/io.cc: Likewise.
1331         * testsuite/std/time/weekday/io.cc: Likewise.
1332         * testsuite/std/time/year/io.cc: Likewise.
1333         * testsuite/std/time/year_month_day/io.cc: Likewise.
1334         * testsuite/std/format/arguments/args_neg.cc: New test.
1336 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1338         * include/Makefile.am: Add new headers.
1339         * include/Makefile.in: Regenerate.
1340         * include/bits/unicode.h: New file.
1341         * include/bits/unicode-data.h: New file.
1342         * include/std/format: Include <bits/unicode.h>.
1343         (__literal_encoding_is_utf8): Move to <bits/unicode.h>.
1344         (_Spec::_M_fill): Change type to char32_t.
1345         (_Spec::_M_parse_fill_and_align): Read a Unicode scalar value
1346         instead of a single character.
1347         (__write_padded): Change __fill_char parameter to char32_t and
1348         encode it into the output.
1349         (__formatter_str::format): Use new __unicode::__field_width and
1350         __unicode::__truncate functions.
1351         * include/std/ostream: Adjust namespace qualification for
1352         __literal_encoding_is_utf8.
1353         * include/std/print: Likewise.
1354         * src/c++23/print.cc: Add [[unlikely]] attribute to error path.
1355         * testsuite/ext/unicode/view.cc: New test.
1356         * testsuite/std/format/functions/format.cc: Add missing examples
1357         from the standard demonstrating alignment with non-ASCII
1358         characters. Add examples checking correct handling of extended
1359         grapheme clusters.
1361 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1363         * include/bits/version.def (format_uchar): Define.
1364         * include/bits/version.h: Regenerate.
1365         * include/std/format (formatter<C, C>::format): Check for
1366         _Pres_c and call _M_format_character directly. Cast C to its
1367         unsigned equivalent for formatting as an integer.
1368         (formatter<char, wchar_t>::format): Likewise.
1369         (basic_format_arg(T&)): Store char arguments as unsigned char
1370         for formatting to a wide string.
1371         * testsuite/std/format/functions/format.cc: Adjust test. Check
1372         formatting of
1374 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1376         PR libstdc++/112997
1377         * libsupc++/unwind-cxx.h (__cxa_call_terminate): Change first
1378         parameter to void*.
1380 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1382         * testsuite/20_util/variant/87619.cc: Remove dg-timeout-factor.
1384 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1386         * include/std/type_traits (is_trivially_destructible_v): Use
1387         built-in directly when concepts are supported.
1388         * testsuite/20_util/is_trivially_destructible/value_v.cc: New
1389         test.
1391 2024-01-06  Gwenole Beauchesne  <gb.devel@gmail.com>
1393         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Use
1394         nonnull arguments to strtoimax() and wcstoimax() functions.
1396 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1398         * src/c++17/fs_path.cc (path::_List::reserve): Limit maximum
1399         size and check for overflows in arithmetic.
1400         (path::operator/=(const path&)): Remove redundant exponential
1401         growth calculation.
1403 2024-01-05  Martin Küttler  <martin.kuettler@kernkonzept.com>
1405         * src/c++17/fs_path.cc (path::_List::reserve): Avoid
1406         floating-point arithmetic.
1408 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1410         PR libstdc++/113241
1411         * include/std/type_traits (is_convertible_v): Guard use of
1412         built-in with preprocessor check.
1414 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1416         PR libstdc++/113200
1417         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Use
1418         __builtin_constant_p to check for unrelated pointers that cannot
1419         be compared during constant evaluation.
1420         * testsuite/21_strings/char_traits/requirements/113200.cc: New
1421         test.
1423 2024-01-05  Cassio Neri  <cassio.neri@gmail.com>
1425         * include/std/chrono: Fix + and - for months and weekdays.
1426         * testsuite/std/time/month/1.cc: Add constexpr tests against overflow.
1427         * testsuite/std/time/month/2.cc: New test for extreme values.
1428         * testsuite/std/time/weekday/1.cc: Add constexpr tests against overflow.
1429         * testsuite/std/time/weekday/2.cc: New test for extreme values.
1431 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1433         PR libstdc++/113099
1434         * include/bits/locale_classes.tcc (__try_use_facet): Use
1435         if-constexpr for C++11 and up.
1437 2024-01-05  Ken Matsui  <kmatsui@gcc.gnu.org>
1439         * include/std/type_traits: Use _GLIBCXX_USE_BUILTIN_TRAIT.
1441 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
1443         * include/std/generator (_Subyield_state::_M_jump_in): Fix typo
1444         reported by Will Hawkins <hawkinsw@obs.cr>.
1446 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
1448         * include/std/generator (_Stateless_alloc): Rename typename _A
1449         to _All.
1451 2024-01-03  Patrick Palka  <ppalka@redhat.com>
1453         PR testsuite/113175
1454         * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
1455         'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
1456         (test03): Likewise.
1459 Copyright (C) 2024 Free Software Foundation, Inc.
1461 Copying and distribution of this file, with or without modification,
1462 are permitted in any medium without royalty provided the copyright
1463 notice and this notice are preserved.