c++: Implement C++26 P2809R3 - Trivial infinite loops are not Undefined Behavior
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob1ed8b9bc93f01c804308f14b71ca2d98644caa04
1 2024-04-09  Jonathan Wakely  <jwakely@redhat.com>
3         PR libstdc++/114633
4         * include/bits/chrono_io.h (_Parser::operator()) <'S'>: Use
5         stream extraction if std::from_chars is not available.
7 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
9         PR libstdc++/114519
10         * include/bits/unicode.h (_Utf8_view) [!__cpp_char8_t]: Define
11         using char instead of char8_t.
12         * testsuite/ext/unicode/view.cc: Use u8""sv literals to create
13         string views, instead of std::u8string_view.
15 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
17         * testsuite/20_util/integer_comparisons/equal_neg.cc: Use
18         no-opts selector for errors that depend on -fchar8_t.
19         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc:
20         Likewise.
21         * testsuite/20_util/integer_comparisons/greater_neg.cc:
22         Likewise.
23         * testsuite/20_util/integer_comparisons/in_range_neg.cc:
24         Likewise.
25         * testsuite/20_util/integer_comparisons/less_equal_neg.cc:
26         Likewise.
27         * testsuite/20_util/integer_comparisons/less_neg.cc: Likewise.
28         * testsuite/20_util/integer_comparisons/not_equal_neg.cc:
29         Likewise.
30         * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: Skip
31         if -fno-char8_t is used.
32         * testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc:
33         Likewise.
34         * testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc:
35         Likewise.
36         * testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc:
37         Likewise.
38         * testsuite/27_io/filesystem/path/factory/u8path-depr.cc: Use
39         char for u8 literal if char8_t is not available.
40         * testsuite/27_io/headers/iosfwd/synopsis.cc: Check
41         __cpp_char8_t.
42         * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
43         * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc:
44         Remove check for _GLIBCXX_USE_CHAR8_T.
46 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
48         * testsuite/20_util/from_chars/1_neg.cc: Add char8_t cases,
49         using a struct of that name if -fno-char8_t is active.
50         * testsuite/20_util/from_chars/1_c++20_neg.cc: Removed.
52 2024-04-03  Jonathan Wakely  <jwakely@redhat.com>
54         PR libstdc++/104606
55         * include/std/optional (operator<=>(const optional<T>&, const U&)):
56         Reverse order of three_way_comparable_with template arguments.
57         * testsuite/20_util/optional/relops/104606.cc: New test.
59 2024-04-02  Jonathan Wakely  <jwakely@redhat.com>
61         PR libstdc++/114519
62         * include/bits/unicode.h (_Utf8_view): Guard with check for
63         char8_t being enabled.
64         (__literal_encoding_is_unicode): Guard use of char8_t with check
65         for it being enabled.
66         * testsuite/std/format/functions/114519.cc: New test.
68 2024-04-02  Patrick Palka  <ppalka@redhat.com>
70         * include/std/ranges (ranges::__detail::_Empty): Rename to ...
71         (ranges::__detail::_Absent): ... this.  Turn into a template
72         parameterized by the absent type _Tp and discriminator _Disc.
73         (ranges::__detail::__maybe_present_t): Add an optional
74         discriminator parameter.
75         (slide_view::_M_cached_begin): Pass a discriminator argument to
76         __maybe_present_t.
77         (slide_view::_M_cached_end): Likewise.
78         * testsuite/std/ranges/adaptors/sizeof.cc: Verify the size of
79         slide_view<V> is 3 instead 4 pointers.
81 2024-04-02  Jakub Jelinek  <jakub@redhat.com>
83         * acinclude.m4: Fix duplicated words; file file -> file can.
84         * configure.host: Fix duplicated words; the the -> the.
86 2024-03-29  Arsen Arsenović  <arsen@aarsen.me>
88         * testsuite/24_iterators/range_generators/01.cc: Drop GCC
89         Runtime Library Exception.
90         * testsuite/24_iterators/range_generators/02.cc: Drop GCC
91         Runtime Library Exception.
92         * testsuite/24_iterators/range_generators/copy.cc: Drop GCC
93         Runtime Library Exception.
94         * testsuite/24_iterators/range_generators/except.cc: Drop GCC
95         Runtime Library Exception.
96         * testsuite/24_iterators/range_generators/subrange.cc: Drop GCC
97         Runtime Library Exception.
98         * testsuite/24_iterators/range_generators/synopsis.cc: Drop GCC
99         Runtime Library Exception.
100         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
101         Drop GCC Runtime Library Exception from the "You should have
102         received a copy" paragraph.
104 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
106         * include/experimental/bits/simd_x86.h (_S_masked_unary):
107         Cast inputs < 16 bytes to 16 byte vectors before calling the
108         right subtraction builtin. Before returning, truncate to the
109         return vector type.
111 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
113         * include/experimental/bits/simd_x86.h (_S_masked_unary): Call
114         the 4- and 8-byte variants of __builtin_ia32_subp[ds] without
115         rounding direction argument.
117 2024-03-27  Srinivas Yadav Singanaboina  <vasu.srinivasvasu.14@gmail.com>
119         * include/Makefile.am: Add simd_sve.h.
120         * include/Makefile.in: Add simd_sve.h.
121         * include/experimental/bits/simd.h: Add new SveAbi.
122         * include/experimental/bits/simd_builtin.h: Use
123         __no_sve_deduce_t to support existing Neon Abi.
124         * include/experimental/bits/simd_converter.h: Convert
125         sequentially when sve is available.
126         * include/experimental/bits/simd_detail.h: Define sve
127         specific macro.
128         * include/experimental/bits/simd_math.h: Fallback frexp
129         to execute sequntially when sve is available, to handle
130         fixed_size_simd return type that always uses sve.
131         * include/experimental/simd: Include bits/simd_sve.h.
132         * testsuite/experimental/simd/tests/bits/main.h: Enable
133         testing for sve128, sve256, sve512.
134         * include/experimental/bits/simd_sve.h: New file.
136 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
138         * include/std/generator (generator::_Iterator::operator*): Fix
139         return type.
140         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
141         New test.
143 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
145         * include/std/generator: Fix _V badname.
147 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
149         * testsuite/19_diagnostics/stacktrace/current.cc: Check for
150         __cpp_lib_stacktrace instead of check for stacktrace ET.
151         * testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
152         * testsuite/19_diagnostics/stacktrace/hash.cc: Likewise.
153         * testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
154         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
155         * testsuite/19_diagnostics/stacktrace/synopsis.cc: Likewise.
156         * testsuite/19_diagnostics/stacktrace/version.cc: Likewise.
157         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc:
158         Likewise.
159         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
160         Remove.
162 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
164         * testsuite/lib/dg-options.exp (dg-require-cpp-feature-test):
165         New proc.
166         * testsuite/lib/libstdc++.exp (check_v3_target_cpp_feature_test):
167         New proc.
168         * testsuite/std/text_encoding/cons.cc: Use new directive to skip
169         the test if the __cpp_lib_text_encoding feature test macro is
170         not defined.
171         * testsuite/std/text_encoding/requirements.cc: Likewise.
173 2024-03-25  Jonathan Wakely  <jwakely@redhat.com>
175         * testsuite/std/text_encoding/requirements.cc: #undef the
176         correct macro.
178 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
180         * include/std/format (formatter): Disable specializations that
181         would allow sequences of narrow characters to be formatted as
182         wchar_t without conversion, as per LWG 3944.
183         * testsuite/std/format/formatter/lwg3944.cc: New test.
185 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
187         * include/bits/utility.h (__is_in_place_index_v): New variable
188         template.
189         * include/std/variant (__not_in_place_tag): Define in terms of
190         variable templates not a class template.
192 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
194         PR libstdc++/114400
195         * include/std/string_view (operator==): Use std::type_identity_t
196         in C++20 instead of our own __type_identity_t.
198 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
200         PR libstdc++/114401
201         * include/bits/hashtable.h (_Hashtable::_M_reinsert_node): Call
202         release() on node handle instead of just zeroing its pointer.
203         (_Hashtable::_M_reinsert_node_multi): Likewise.
204         (_Hashtable::_M_merge_unique): Likewise.
205         (_Hashtable::_M_merge_multi): Likewise.
206         * include/bits/node_handle.h (_Node_handle_common::release()):
207         New member function.
208         (_Node_handle_common::_Optional_alloc::_M_empty): Remove
209         unnecessary union member.
210         (_Node_handle_common): Declare _Hashtable as a friend.
211         * include/bits/stl_tree.h (_Rb_tree::_M_reinsert_node_unique):
212         Call release() on node handle instead of just zeroing its
213         pointer.
214         (_Rb_tree::_M_reinsert_node_equal): Likewise.
215         (_Rb_tree::_M_reinsert_node_hint_unique): Likewise.
216         (_Rb_tree::_M_reinsert_node_hint_equal): Likewise.
217         * testsuite/23_containers/multiset/modifiers/114401.cc: New test.
218         * testsuite/23_containers/set/modifiers/114401.cc: New test.
219         * testsuite/23_containers/unordered_multiset/modifiers/114401.cc: New test.
220         * testsuite/23_containers/unordered_set/modifiers/114401.cc: New test.
222 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
224         PR libstdc++/113841
225         * include/bits/allocator.h (allocator<cv T>): Add default
226         constructor to partial specializations for cv-qualified types.
227         * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()):
228         Constrain so that it's only present if the allocator is default
229         constructible.
230         * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
231         Likewise.
232         * testsuite/23_containers/vector/cons/113841.cc: New test.
234 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
236         * include/bits/stl_construct.h (destroy_at, construct_at): Guard
237         with feature test macros instead of just __cplusplus.
239 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
241         * include/bits/version.def (generator, tuple_like): Move earlier
242         in the file.
243         * include/bits/version.h: Regenerate.
245 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
247         PR libstdc++/114394
248         * include/std/functional (bind): Use __invoke_result_t instead
249         of result_of::type.
250         * include/std/type_traits (__invoke_result_t): New alias
251         template.
252         * testsuite/20_util/bind/ref_neg.cc: Adjust prune pattern.
254 2024-03-20  François Dumont  <fdumont@gcc.gnu.org>
256         * include/bits/version.def (null_iterators): Remove extra_cond.
257         * include/bits/version.h: Regenerate.
259 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
261         PR libstdc++/114359
262         * include/bits/random.tcc (binomial_distribution::param_type):
263         Ensure arithmetic is done as type double.
264         * testsuite/26_numerics/random/binomial_distribution/114359.cc: New test.
266 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
268         PR libstdc++/101228
269         * include/pstl/parallel_backend_tbb.h (TBB_SUPPRESS_DEPRECATED_MESSAGES):
270         Define before including <tbb/task.h> then undef afterwards.
272 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
274         * include/Makefile.am [MAINTAINER_MODE]: Add target to
275         automatically update <bits/version.h>.
276         * include/Makefile.in: Regenerate.
278 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
280         * doc/xml/manual/build_hacking.xml: Document generated files.
281         Update list of convenience libraries and sub-directories under
282         the src directory.
283         * doc/html/*: Regenerate.
285 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
287         * include/bits/text_encoding-data.h: Regenerate.
288         * include/bits/unicode-data.h: Regenerate.
289         * scripts/gen_text_encoding_data.py: Fix header of generated
290         file to name the correct script.
292 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
294         * testsuite/util/pstl/test_utils.h: Fix typos in comments.
296 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
298         PR libstdc++/114367
299         * include/bits/stl_bvector.h (_M_allocate): Use allocator's
300         construct function to begin lifetime of words.
302 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
304         * testsuite/lib/dg-options.exp (atomic_link_flags): Emit a -B
305         option for the path to the uninstalled libatomic.
307 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
309         * testsuite/lib/libstdc++.exp (v3_target_compile): Instead of
310         /dev/null, use a temporary file for test executables on Darwin.
312 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
314         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_can_advance):
315         Accept 0 offset advance on value-initialized iterator.
316         * testsuite/23_containers/vector/debug/n3644.cc: New test case.
318 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
320         * include/debug/safe_local_iterator.tcc
321         (_Safe_local_iterator::_M_valid_range): Add _M_value_initialized and
322         _M_singular checks.
323         * testsuite/23_containers/unordered_set/debug/114316.cc: New test case.
325 2024-03-17  François Dumont  <fdumont@gcc.gnu.org>
327         PR libstdc++/114316
328         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range):
329         First check if both iterators are value-initialized before checking if
330         singular.
331         * testsuite/23_containers/set/debug/114316.cc: New test case.
332         * testsuite/23_containers/vector/debug/114316.cc: New test case.
334 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
336         PR libstdc++/114325
337         * include/std/format (_Scanner::_M_scan): Pass correct length to
338         __to_chars_10_impl.
339         * testsuite/std/format/functions/format.cc: Check negative
340         integers with empty format-spec.
342 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
344         * include/bits/stl_algo.h (find_end, all_of, none_of, any_of)
345         (find_if_not, is_partitioned, partition_point, remove)
346         (remove_if, unique, lower_bound, upper_bound, equal_range)
347         (binary_search, includes, is_sorted, is_sorted_until, minmax)
348         (minmax_element, is_permutation, clamp, find_if, find_first_of)
349         (adjacent_find, count, count_if, search, search_n, min_element)
350         (max_element): Add nodiscard attribute.
351         * include/bits/stl_algobase.h (min, max, lower_bound, equal)
352         (lexicographical_compare, lexicographical_compare_three_way)
353         (mismatch): Likewise.
354         * include/bits/stl_heap.h (is_heap, is_heap_until): Likewise.
355         * testsuite/25_algorithms/equal/debug/1_neg.cc: Add dg-warning.
356         * testsuite/25_algorithms/equal/debug/2_neg.cc: Likewise.
357         * testsuite/25_algorithms/equal/debug/3_neg.cc: Likewise.
358         * testsuite/25_algorithms/find_first_of/concept_check_1.cc:
359         Likewise.
360         * testsuite/25_algorithms/is_permutation/2.cc: Likewise.
361         * testsuite/25_algorithms/lexicographical_compare/71545.cc:
362         Likewise.
363         * testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
364         * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc:
365         Likewise.
366         * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc:
367         Likewise.
368         * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc:
369         Likewise.
370         * testsuite/25_algorithms/minmax/3.cc: Likewise.
371         * testsuite/25_algorithms/search/78346.cc: Likewise.
372         * testsuite/25_algorithms/search_n/58358.cc: Likewise.
373         * testsuite/25_algorithms/unique/1.cc: Likewise.
374         * testsuite/25_algorithms/unique/11480.cc: Likewise.
375         * testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
376         * testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc:
377         Likewise.
378         * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc:
379         Likewise.
380         * testsuite/ext/concept_checks.cc: Likewise.
381         * testsuite/ext/is_heap/47709.cc: Likewise.
382         * testsuite/ext/is_sorted/cxx0x.cc: Likewise.
384 2024-03-14  xndcn  <xndchn@gmail.com>
386         * include/bits/atomic_base.h (__atomic_float::__atomic_float(Fp)):
387         Clear padding.
388         * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc:
389         New test.
391 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
393         PR libstdc++/66146
394         * doc/xml/manual/status_cxx2011.xml: Remove mention of Linux in
395         note about std::call_once.
396         * doc/xml/manual/status_cxx2014.xml: Likewise.
397         * doc/xml/manual/status_cxx2017.xml: Likewise.
398         * doc/html/manual/status.html: Regenerate.
400 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
402         * doc/xml/manual/status_cxx2023.xml: Update C++23 status table.
403         * doc/html/manual/status.html: Regenerate.
404         * include/bits/version.def: Fix typo in comment.
406 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
408         * testsuite/libstdc++-prettyprinters/cxx11.cc: Move custom_cat
409         to namespace scope.
411 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
413         * doc/xml/manual/debug.xml: Improve docs on debug builds and
414         using ASan. Mention _GLIBCXX_ASSERTIONS. Reorder sections to put
415         the most relevant ones first.
416         * doc/xml/manual/using.xml: Add comma.
417         * doc/html/*: Regenerate.
419 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
421         * doc/xml/manual/debug.xml: Document that concept checking might
422         be removed in future.
423         * doc/xml/manual/extensions.xml: Likewise.
425 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
427         PR libstdc++/114240
428         * include/bits/chrono_io.h (_Parser::operator()): Assume
429         hours(0) for a time_point, so that a time is not required
430         to be present.
431         * testsuite/std/time/parse/114240.cc: New test.
433 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
435         PR libstdc++/114279
436         * include/bits/chrono_io.h (_Parser::_M_is_leap_second): New
437         data member.
438         (_Parser::_M_reserved): Reserve padding bits for future use.
439         (_Parser::operator()): Set _M_is_leap_second if %S reads 60s.
440         (from_stream): Only allow _M_is_leap_second for utc_time and
441         local_time. Adjust arithmetic for utc_time so that leap seconds
442         are preserved. Use time_point_cast to convert to a possibly
443         lower-precision result type.
444         * testsuite/std/time/parse.cc: Move to ...
445         * testsuite/std/time/parse/parse.cc: ... here.
446         * testsuite/std/time/parse/114279.cc: New test.
448 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
450         * include/bits/chrono_io.h (_Parser::operator()): Use
451         std::from_chars to parse fractional seconds.
453 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
455         PR libstdc++/114244
456         * include/bits/chrono_io.h (_Parser::operator()): Remove
457         redundant uses of duration_cast. Use chrono::round to convert
458         long double value to durations with integer representations.
459         Check represenation type when deciding whether to skip parsing
460         fractional seconds.
461         * testsuite/20_util/duration/114244.cc: New test.
462         * testsuite/20_util/duration/io.cc: Check that a floating-point
463         duration with ratio<1> precision can be parsed.
465 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
467         PR libstdc++/114103
468         * include/bits/version.def (atomic_lock_free_type_aliases): Add
469         extra_cond to check for at least one always-lock-free type.
470         * include/bits/version.h: Regenerate.
471         * include/std/atomic (atomic_signed_lock_free)
472         (atomic_unsigned_lock_free): Only use always-lock-free types.
473         * src/c++20/tzdb.cc (time_zone::_Impl::RulesCounter): Don't use
474         atomic counter if lock-free aliases aren't available.
475         * testsuite/29_atomics/atomic/lock_free_aliases.cc: XFAIL for
476         targets without lock-free word-size compare_exchange.
478 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
480         * include/std/chrono (__get_leap_second_info): Update expiry
481         time for hardcoded list of leap seconds.
482         * testsuite/std/time/tzdb/leap_seconds.cc: Update comment.
484 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
486         * testsuite/23_containers/deque/allocator/default_init.cc: Use
487         std::memset instead of __builtin_memset.
488         * testsuite/23_containers/forward_list/allocator/default_init.cc:
489         Likewise.
490         * testsuite/23_containers/list/allocator/default_init.cc:
491         Likewise.
492         * testsuite/23_containers/map/allocator/default_init.cc:
493         Likewise.
494         * testsuite/23_containers/set/allocator/default_init.cc:
495         Likewise.
496         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
497         Likewise.
498         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
499         Likewise.
500         * testsuite/23_containers/vector/allocator/default_init.cc:
501         Likewise.
502         * testsuite/23_containers/vector/bool/allocator/default_init.cc:
503         Likewise.
504         * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
505         Likewise.
506         * testsuite/util/atomic/wait_notify_util.h: Likewise.
508 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
510         * include/std/format (_Arg_store::_S_make_elt): Add two
511         static_assert checks to give more user-friendly error messages.
512         * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune another
513         form of "in requirements with" note.
514         * testsuite/std/format/arguments/args_neg.cc: Check for
515         user-friendly diagnostics for non-formattable types.
516         * testsuite/std/format/string_neg.cc: Likewise.
518 2024-03-04  Jonathan Wakely  <jwakely@redhat.com>
520         PR libstdc++/114147
521         * include/std/tuple (tuple::tuple(allocator_arg_t, const Alloc&)):
522         Add missing overload of allocator-extended default constructor.
523         (tuple<T1,T2>::tuple(allocator_arg_t, const Alloc&)): Likewise.
524         * testsuite/20_util/tuple/cons/114147.cc: New test.
526 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
528         * include/std/format (basic_format_arg::handle::__maybe_const_t):
529         Fix condition to check if const type is formattable.
530         (basic_format_arg::handle::handle(T&)): Remove redundant
531         static_assert.
532         * testsuite/std/format/formatter/basic.cc: New test.
534 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
536         PR libstdc++/113960
537         * include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
538         (__memcmp_ordered_with): New concept.
539         (lexicographical_compare_three_way): Use __memcmp_ordered_with
540         instead of __is_byte_iter. Use correct length for memcmp.
541         * testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
542         New test.
544 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
546         PR libstdc++/114152
547         * include/experimental/scope (scope_exit scope_fail): Make
548         destructor unconditionally noexcept.
549         (scope_sucess): Fix noexcept-specifier.
550         * testsuite/experimental/scopeguard/114152.cc: New test.
552 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
554         * doc/xml/manual/appendix_contributing.xml: Change URLs to use
555         https.
556         * doc/html/manual/*: Regenerate.
558 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
560         * doc/xml/manual/appendix_contributing.xml: Replace outdated
561         info on ChangeLog entries.
562         * doc/html/manual/appendix_contributing.html: Regenerate.
564 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
566         * include/bits/stl_bvector.h (vector<bool, A>::at): Add
567         nodiscard.
568         * include/bits/stl_vector.h (vector<T, A>::at): Likewise.
569         (operator==, operator<=>, operator<, operator!=, operator>)
570         (operator<=, operator>=): Likewise.
571         * include/debug/vector (operator==, operator<=>, operator<)
572         (operator!=, operator>, operator<=, operator>=): Likewise.
573         * testsuite/23_containers/vector/nodiscard.cc: New test.
575 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
577         * include/bits/atomic_base.h (operator|, operator&): Add
578         noexcept.
579         * include/bits/fs_fwd.h (operator&, operator|, operator^)
580         (operator~): Add nodiscard to overloads for copy_options, perms,
581         perm_options, and directory_options.
582         * include/bits/ios_base.h (operator&, operator|, operator^)
583         (operator~): Add nodiscard and noexcept to overloads for
584         _Ios_Fmtflags, _Ios_Openmode, and _Ios_Iostate.
585         (operator|=, operator&=, operator^=): Add constexpr for C++14.
586         * include/bits/regex_constants.h (operator&, operator|, operator^)
587         (operator~): Add nodiscard and noexcept to overloads for
588         syntax_option_type and match_flag_type.
589         (operator|=, operator&=, operator^=): Add noexcept.
590         * include/std/charconv (operator&, operator|, operator^)
591         (operator~): Add nodiscard to overloads for chars_format.
592         * include/std/future (operator&, operator|, operator^)
593         (operator~): Add nodiscard for overloads for launch.
594         (operator&=, operator|=, operator^=): Add constexpr for C++14.
595         * include/experimental/bits/fs_fwd.h  (operator&, operator|)
596         (operator^, operator~): Add nodiscard to overloads for
597         copy_options, perms, and directory_options.
598         * testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc:
599         Add dg-warning for nodiscard warnings.
600         * testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc:
601         Likewise.
602         * testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
603         Likewise.
604         * testsuite/27_io/filesystem/operations/bitmask_types.cc:
605         New test.
607 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
609         * testsuite/27_io/basic_ostream/print/1.cc: Check error
610         handling.
611         * testsuite/27_io/print/1.cc: Likewise.
613 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
615         * include/std/ostream (vprint_unicode) [__CYGWIN__]: Use POSIX
616         code path for Cygwin instead of Windows.
617         * include/std/print (vprint_unicode) [__CYGWIN__]: Likewise.
618         * testsuite/27_io/basic_ostream/print/1.cc: Only add -lstdc++exp
619         for *-*-mingw* targets.
620         * testsuite/27_io/print/1.cc: Likewise.
622 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
624         * include/bits/alloc_traits.h: Include <bits/stl_iterator.h> for
625         __make_move_if_noexcept_iterator.
627 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
629         * include/std/stacktrace: Add nodiscard attribute to all
630         functions without side effects.
632 2024-02-20  François Dumont  <fdumont@gcc.gnu.org>
634         * include/bits/stl_algobase.h (std::__niter_wrap): Add a call to
635         std::__niter_base on res iterator.
637 2024-02-19  Iain Sandoe  <iain@sandoe.co.uk>
638             Jonathan Wakely  <jwakely@redhat.com>
640         PR target/112397
641         * configure: Regenerate.
642         * configure.ac: Detect if we are building for Darwin.
643         * libsupc++/Makefile.am: If we are building for Darwin, then
644         suppress hot/cold partitioning for the array allocators.
645         * libsupc++/Makefile.in: Regenerated.
647 2024-02-17  François Dumont  <fdumont@gcc.gnu.org>
649         * include/bits/stl_algobase.h (std::__niter_base): Redefine the overload
650         definitions for __gnu_debug::_Safe_iterator.
651         * include/debug/safe_iterator.tcc (std::__niter_base): Adapt declarations.
653 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
655         PR libstdc++/87744
656         PR libstdc++/113961
657         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
658         line number.
660 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
662         PR libstdc++/87744
663         PR libstdc++/113931
664         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
665         line number.
667 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
669         * doc/xml/manual/debug_mode.xml: Update docs for backtraces.
670         * doc/html/manual/debug_mode_using.html: Regenerate.
672 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
674         * doc/xml/manual/test.xml: Fix spelling of <envar> elements.
675         * doc/html/manual/test.html: Regenerate.
677 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
679         PR libstdc++/113806
680         * include/std/bitset (bitset::operator>>=): Remove redundant
681         call to _M_do_sanitize.
683 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
685         PR libstdc++/113807
686         * include/std/bitset (bitset::set()): Use memset instead of a
687         loop over the individual words.
689 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
691         PR libstdc++/113811
692         * include/bits/stl_algo.h (__rotate): Use unsigned values for
693         division.
695 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
697         PR libstdc++/99117
698         * include/std/valarray (valarray::operator=(const _Expr&)):
699         Use loop to copy instead of __valarray_copy with _Array.
700         * testsuite/26_numerics/valarray/99117.cc: New test.
702 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
704         * src/c++20/tzdata.zi: Import new file from 2024a release.
705         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
706         Update expiry date for leap seconds list.
708 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
710         PR libstdc++/87744
711         * include/bits/random.h [!__SIZEOF_INT128__] (_Select_uint_least_t):
712         Define specialization for 64-bit generators with
713         non-power-of-two modulus and large constants.
714         (__mod): Use if constexpr unconditionally.
715         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
716         line number.
717         * testsuite/26_numerics/random/linear_congruential_engine/87744.cc:
718         New test.
720 2024-02-14  Gerald Pfeifer  <gerald@pfeifer.com>
722         * doc/xml/manual/status_cxx2023.xml: Fix C++ item p2442 to be
723         version 1.
724         * doc/html/manual/status.html: Regenerate.
726 2024-02-12  Paul Keir  <paul.keir@uws.ac.uk>
728         PR libstdc++/113294
729         * include/bits/basic_string.h (basic_string::operator=): Use
730         _M_use_local_data() instead of _M_local_buf on the moved-from
731         string.
732         * testsuite/21_strings/basic_string/modifiers/constexpr.cc
733         (test_move): New test.
735 2024-02-09  Ken Matsui  <kmatsui@gcc.gnu.org>
737         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
738         Removed.
739         * include/std/type_traits (is_same): Use
740         _GLIBCXX_USE_BUILTIN_TRAIT instead of
741         _GLIBCXX_HAVE_BUILTIN_IS_SAME.
742         (is_same_v): Likewise.
744 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
746         * include/bits/shared_ptr_atomic.h: Fix typo in comment.
748 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
750         PR libstdc++/100147
751         * include/bits/gslice.h (operator=): Add comment about lack of
752         self-assignment check.
754 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
756         * include/tr2/type_traits (bases, direct_bases): Use
757         __has_builtin to check if required built-ins are supported.
759 2024-02-07  Patrick Palka  <ppalka@redhat.com>
761         PR testsuite/113710
762         PR c++/113814
763         * include/bits/stl_pair.h (tuple_element): Add forward
764         declaration of the partial specialization for tuple.
766 2024-02-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
768         * testsuite/lib/libstdc++.exp: Use "nul" for Windows, "/dev/null"
769         for other environments.
771 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
773         * include/std/format (__format::_Spec::_M_reserved): Define new
774         bit-field members to reserve padding bits for future extensions.
776 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
778         * src/experimental/Makefile.am: Use libstdc++fsconvenience.a
779         instead of libstdc++fs.a.
780         * src/experimental/Makefile.in: Regenerate.
781         * src/filesystem/Makefile.am: Build libstdc++fsconvenience.a as
782         well.
783         * src/filesystem/Makefile.in: Regenerate.
785 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
787         * include/bits/text_encoding-data.h: Regenerate.
788         * include/bits/unicode-data.h: Regenerate.
789         * scripts/gen_text_encoding_data.py: Add copyright and license
790         text to the output.
792 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
794         PR libstdc++/113335
795         * include/bits/std_function.h (__function_guide_helper): Add
796         partial specialization for explicit object member functions, as
797         per LWG 3617.
798         * testsuite/20_util/function/cons/deduction_c++23.cc: Check
799         explicit object member functions.
800         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
801         Likewise.
803 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
805         * testsuite/17_intro/names.cc [_AIX]: Undefine "u".
807 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
809         * include/experimental/internet (network_v6::network): Define.
810         (network_v6::hosts): Finish implementing.
811         (network_v6::to_string): Do not concatenate std::string to
812         arbitrary std::basic_string specialization.
813         * testsuite/experimental/net/internet/network/v6/cons.cc: New
814         test.
816 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
818         PR libstdc++/90276
819         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Fix
820         comparison function to use less-than instead of equality.
822 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
824         PR libstdc++/90276
825         * testsuite/util/pstl/test_utils.h (reverse_invoker): Do not use
826         perfect forwarding for iterator arguments.
828 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
830         * include/std/string_view (basic_string_view(R&&)): Remove
831         constraint that traits_type must be the same, as per LWG 3857.
832         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
833         Explicit conversion between different specializations should be
834         allowed.
835         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
836         Likewise.
838 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
840         * include/std/syncstream (basic_osyncstream::operator=): Remove
841         noexcept, as per LWG 3867.
843 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
845         * include/std/generator (promise_type::yield_value): Remove
846         noexcept from fourth overload, as per LWG 3894.
848 2024-02-01  Patrick Palka  <ppalka@redhat.com>
850         PR libstdc++/113309
851         PR libstdc++/109203
852         * include/bits/ranges_util.h (__detail::__pair_like): Don't
853         define in C++23 mode.
854         (__detail::__pair_like_convertible_from): Adjust as per P2165R4.
855         (__detail::__is_subrange<subrange>): Moved from <ranges>.
856         (__detail::__is_tuple_like_v<subrange>): Likewise.
857         * include/bits/stl_iterator.h: Include <bits/utility.h> for
858         C++23.
859         (__different_from): Move to <concepts>.
860         (__iter_key_t): Adjust for C++23 as per P2165R4.
861         (__iter_val_t): Likewise.
862         * include/bits/stl_pair.h (pair, array): Forward declare.
863         (get): Forward declare all overloads relevant to P2165R4
864         tuple-like constructors.
865         (__is_tuple_v): Define for C++23.
866         (__is_tuple_like_v): Define for C++23.
867         (__tuple_like): Define for C++23 as per P2165R4.
868         (__pair_like): Define for C++23 as per P2165R4.
869         (__eligibile_tuple_like): Define for C++23.
870         (__eligibile_pair_like): Define for C++23.
871         (pair::_S_constructible_from_pair_like): Define for C++23.
872         (pair::_S_convertible_from_pair_like): Define for C++23.
873         (pair::_S_dangles_from_pair_like): Define for C++23.
874         (pair::pair): Define overloads taking a tuple-like type for
875         C++23 as per P2165R4.
876         (pair::_S_assignable_from_tuple_like): Define for C++23.
877         (pair::_S_const_assignable_from_tuple_like): Define for C++23.
878         (pair::operator=): Define overloads taking a tuple-like type for
879         C++23 as per P2165R4.
880         * include/bits/utility.h (ranges::__detail::__is_subrange):
881         Moved from <ranges>.
882         * include/bits/version.def (tuple_like): Define for C++23.
883         * include/bits/version.h: Regenerate.
884         * include/std/concepts (__different_from): Moved from
885         <bits/stl_iterator.h>.
886         (ranges::__swap::__adl_swap): Clarify which __detail namespace.
887         * include/std/map (__cpp_lib_tuple_like): Define C++23.
888         * include/std/ranges (__detail::__is_subrange): Moved to
889         <bits/utility.h>.
890         (__detail::__is_subrange<subrange>): Moved to <bits/ranges_util.h>
891         (__detail::__has_tuple_element): Adjust for C++23 as per P2165R4.
892         (__detail::__tuple_or_pair): Remove as per P2165R4.  Replace all
893         uses with plain tuple as per P2165R4.
894         * include/std/tuple (__cpp_lib_tuple_like): Define for C++23.
895         (__tuple_like_tag_t): Define for C++23.
896         (__tuple_cmp): Forward declare for C++23.
897         (_Tuple_impl::_Tuple_impl): Define overloads taking
898         __tuple_like_tag_t and a tuple-like type for C++23.
899         (_Tuple_impl::_M_assign): Likewise.
900         (tuple::__constructible_from_tuple_like): Define for C++23.
901         (tuple::__convertible_from_tuple_like): Define for C++23.
902         (tuple::__dangles_from_tuple_like): Define for C++23.
903         (tuple::tuple): Define overloads taking a tuple-like type for
904         C++23 as per P2165R4.
905         (tuple::__assignable_from_tuple_like): Define for C++23.
906         (tuple::__const_assignable_from_tuple_like): Define for C++23.
907         (tuple::operator=): Define overloads taking a tuple-like type
908         for C++23 as per P2165R4.
909         (tuple::__tuple_like_common_comparison_category): Define for C++23.
910         (tuple::operator<=>): Define overload taking a tuple-like type
911         for C++23 as per P2165R4.
912         (array, get): Forward declarations moved to <bits/stl_pair.h>.
913         (tuple_cat): Constrain with __tuple_like for C++23 as per P2165R4.
914         (apply): Likewise.
915         (make_from_tuple): Likewise.
916         (__tuple_like_common_reference): Define for C++23.
917         (basic_common_reference): Adjust as per P2165R4.
918         (__tuple_like_common_type): Define for C++23.
919         (common_type): Adjust as per P2165R4.
920         * include/std/unordered_map (__cpp_lib_tuple_like): Define for
921         C++23.
922         * include/std/utility (__cpp_lib_tuple_like): Define for C++23.
923         * testsuite/std/ranges/zip/1.cc (test01): Adjust to handle pair
924         and 2-tuple interchangeably.
925         (test05): New test.
926         * testsuite/20_util/pair/p2165r4.cc: New test.
927         * testsuite/20_util/tuple/p2165r4.cc: New test.
929 2024-02-01  Patrick Palka  <ppalka@redhat.com>
931         * include/bits/stl_pair.h (pair::_S_const_assignable): Define,
932         factored out from ...
933         (pair::operator=): ... the constraints of the const overloads.
935 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
937         * include/bits/version.tpl: Do not use def-file-line for each
938         macro being defined.
939         * include/bits/version.h: Regenerate.
941 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
943         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Adjust
944         dg-error pattern.
945         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
946         Likewise.
947         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
948         Likewise.
949         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
950         Likewise.
951         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
952         Likewise.
953         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
954         Likewise.
955         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
956         Likewise.
957         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
958         Likewise.
959         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
960         Likewise.
962 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
964         * include/experimental/internet (network_v4::to_string()):
965         Remove lambda and use of resize_and_overwrite.
967 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
969         * acinclude.m4 (GLIBCXX_CHECK_TEXT_ENCODING): Use <xlocale.h> if
970         needed for newlocale.
971         * configure: Regenerate.
972         * src/c++26/text_encoding.cc: Use <xlocale.h>.
974 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
975             Ewan Higgs  <ewan.higgs@gmail.com>
977         * include/bits/text_encoding-data.h: Regenerate.
978         * scripts/gen_text_encoding_data.py: Add extra_aliases dict
979         containing "ASCII".
980         * testsuite/std/text_encoding/cons.cc: Check "ascii" is known.
982 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
984         * doc/xml/manual/using.xml: Update tables of supported headers.
985         * doc/html/*: Regenerate.
987 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
989         * include/std/bitset (_Base_bitset::_M_do_to_ullong): Avoid
990         -Wshift-count-overflow warning.
992 2024-01-30  Jonathan Wakely  <jwakely@redhat.com>
994         * testsuite/std/time/clock/gps/io.cc: Fix expected result in
995         assertion and call test_format() from main.
997 2024-01-29  François Dumont  <fdumont@gcc.gnu.org>
999         * doc/xml/manual/debug_mode.xml: Link against libstdc++exp.a to use
1000         _GLIBCXX_DEBUG_BACKTRACE macro.
1002 2024-01-24  Huanghui Nie  <nnnjkk@gmail.com>
1003             Théo Papadopoulo   <papadopoulo@gmail.com>
1005         * include/bits/hashtable.h (_Hahstable<>::_M_remove_bucket_begin): Remove
1006         _M_before_begin check and cleanup implementation.
1008 2024-01-22  Jonathan Wakely  <jwakely@redhat.com>
1010         * testsuite/std/time/clock/file/io.cc: Fix expected result in
1011         assertion and call test_format() from main.
1013 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
1015         PR libstdc++/113500
1016         * include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix
1017         printing of subseconds with floating-point rep.
1018         (__formatter_chrono::_M_format_to_ostream): Do not write
1019         time_point specializations directly to the ostream.
1020         (formatter<chrono::sys_time<D>, C>::parse): Do not allow an
1021         empty chrono-spec if the type fails to meet the constraints for
1022         writing to an ostream with operator<<.
1023         * testsuite/std/time/clock/file/io.cc: Check formatting
1024         non-integral times with empty chrono-specs.
1025         * testsuite/std/time/clock/gps/io.cc: Likewise.
1026         * testsuite/std/time/clock/utc/io.cc: Likewise.
1027         * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
1029 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
1031         * include/bits/chrono.h (__file_clock::from_sys)
1032         (__file_clock::to_sys, __file_clock::_S_from_sys)
1033         (__file_clock::_S_to_sys): Use common_type for return type.
1034         * testsuite/std/time/clock/file/members.cc: Check round trip
1035         conversion for time with lower precision that seconds.
1037 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
1039         PR libstdc++/113512
1040         * include/std/format (__formatter_fp::format): Fix logic for
1041         alternate forms.
1042         * testsuite/std/format/functions/format.cc: Check buggy cases of
1043         alternate forms with g presentation type.
1045 2024-01-20  Marek Polacek  <polacek@redhat.com>
1047         PR c++/111410
1048         * include/std/ranges: Add #pragma to disable -Wdangling-reference with
1049         std::ranges::views::__adaptor::operator|.
1051 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
1053         * include/std/format (_Spec::_M_parse_fill_and_align): Do not
1054         use CTAD for _Utf32_view.
1056 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
1058         PR libstdc++/108822
1059         * include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
1060         wrong fold-operator.
1061         * testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
1062         element and three elements. Check allocator-extended
1063         constructors.
1065 2024-01-19  Patrick Palka  <ppalka@redhat.com>
1067         * include/precompiled/stdc++.h [_GLIBCXX_HOSTED]: Include
1068         <print> and <text_encoding> for C++23 and C++26 respectively.
1070 2024-01-18  Patrick Palka  <ppalka@redhat.com>
1072         * include/bits/stl_pair.h [__cplusplus > 202002L]:
1073         Guard P2321R2 changes with __glibcxx_ranges_zip instead.
1075 2024-01-18  Patrick Palka  <ppalka@redhat.com>
1077         * include/std/tuple [__cplusplus > 202002L]: Guard P2321R2
1078         changes with __cpp_lib_ranges_zip instead.
1080 2024-01-18  Patrick Palka  <ppalka@redhat.com>
1082         PR libstdc++/109536
1083         * include/debug/safe_base.h (_Safe_sequence_base::_M_swap):
1084         Remove _GLIBCXX20_CONSTEXPR from non-inline member function.
1085         * include/debug/safe_iterator.h
1086         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN): Define.
1087         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END): Define.
1088         (_Safe_iterator::operator=): Use them around the code path that
1089         defines a variable of type __gnu_cxx::__scoped_lock.
1090         (_Safe_iterator::operator++): Likewise.
1091         (_Safe_iterator::operator--): Likewise.
1092         (_Safe_iterator::operator+=): Likewise.
1093         (_Safe_iterator::operator-=): Likewise.
1094         * testsuite/23_containers/vector/element_access/constexpr.cc
1095         (test_iterators): Test more iterator operations.
1096         * testsuite/23_containers/vector/bool/element_access/constexpr.cc
1097         (test_iterators): Likewise.
1098         * testsuite/std/ranges/adaptors/all.cc (test08) [_GLIBCXX_DEBUG]:
1099         Remove.
1101 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
1103         * include/bits/unicode.h (__charset_alias_match): Initialize
1104         __var_a and __var_b.
1106 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
1108         PR libstdc++/113450
1109         * testsuite/std/format/functions/format.cc: Use signed char
1110         instead of int8_t.
1112 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
1114         PR libstdc++/113318
1115         * acinclude.m4 (GLIBCXX_CONFIGURE): Add c++26 directory.
1116         (GLIBCXX_CHECK_TEXT_ENCODING): Define.
1117         * config.h.in: Regenerate.
1118         * configure: Regenerate.
1119         * configure.ac: Use GLIBCXX_CHECK_TEXT_ENCODING.
1120         * include/Makefile.am: Add new headers.
1121         * include/Makefile.in: Regenerate.
1122         * include/bits/locale_classes.h (locale::encoding): Declare new
1123         member function.
1124         * include/bits/unicode.h (__charset_alias_match): New function.
1125         * include/bits/text_encoding-data.h: New file.
1126         * include/bits/version.def (text_encoding): Define.
1127         * include/bits/version.h: Regenerate.
1128         * include/std/text_encoding: New file.
1129         * src/Makefile.am: Add new subdirectory.
1130         * src/Makefile.in: Regenerate.
1131         * src/c++26/Makefile.am: New file.
1132         * src/c++26/Makefile.in: New file.
1133         * src/c++26/text_encoding.cc: New file.
1134         * src/experimental/Makefile.am: Include c++26 convenience
1135         library.
1136         * src/experimental/Makefile.in: Regenerate.
1137         * python/libstdcxx/v6/printers.py (StdTextEncodingPrinter): New
1138         printer.
1139         * scripts/gen_text_encoding_data.py: New file.
1140         * testsuite/22_locale/locale/encoding.cc: New test.
1141         * testsuite/ext/unicode/charset_alias_match.cc: New test.
1142         * testsuite/std/text_encoding/cons.cc: New test.
1143         * testsuite/std/text_encoding/members.cc: New test.
1144         * testsuite/std/text_encoding/requirements.cc: New test.
1146 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
1148         * include/bits/unicode.h (_Grapheme_cluster_view): Require view.
1149         Do not use CTAD for _Utf32_view.
1150         (__format_width, __truncate): Do not use CTAD.
1151         (enable_borrowed_range<_Utf_view<T, R>>): Define specialization.
1152         (enable_borrowed_range<_Grapheme_cluster_view<R>>): Likewise.
1154 2024-01-17  Patrick Palka  <ppalka@redhat.com>
1156         * include/std/ranges (views::_CartesianProduct::operator()):
1157         Adjust identity case as per P2540R1.
1158         * testsuite/std/ranges/cartesian_product/1.cc (test01):
1159         Adjust expected result of the identity case.
1161 2024-01-15  Patrick Palka  <ppalka@redhat.com>
1163         * include/std/variant (__detail::__variant::_Variadic_union):
1164         Add bool __trivially_destructible template parameter.
1165         (__detail::__variant::_Variadic_union::~_Variadic_union):
1166         Use __trivially_destructible in constraints instead.
1167         (__detail::__variant::_Variant_storage): Pass
1168         __trivially_destructible value to _Variadic_union.
1170 2024-01-15  Patrick Palka  <ppalka@redhat.com>
1172         * include/bits/stl_iterator.h (const_iterator): Define conversion
1173         operators as per P2836R1.
1174         * include/bits/version.def (ranges_as_const): Update value.
1175         * include/bits/version.h: Regenerate.
1176         * testsuite/24_iterators/const_iterator/1.cc (test04): New test.
1177         * testsuite/std/ranges/adaptors/as_const/1.cc: Adjust expected
1178         value of __cpp_lib_ranges_as_const.
1179         * testsuite/std/ranges/version_c++23.cc: Likewise.
1181 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1183         PR libstdc++/108822
1184         * include/std/tuple (__assignable, __is_nothrow_assignable):
1185         Move pre-C++20 definitions adjacent to their use.
1187 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1189         PR testsuite/113366
1190         * include/std/format (basic_format_arg): Use __formattable
1191         variable template instead of __format::__formattable_with
1192         concept.
1194 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
1196         * src/c++20/tzdata.zi: Import new file from 2023d release.
1197         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
1198         Update expiry date for leap seconds list.
1200 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
1202         PR libstdc++/108822
1203         * include/std/tuple (tuple): Add checks for dangling references.
1204         Reimplement constraints and constant expressions using C++20
1205         features.
1206         * include/std/type_traits [C++20]
1207         (__is_implicitly_default_constructible_v): Define.
1208         (__is_implicitly_default_constructible): Use variable template.
1209         * testsuite/20_util/tuple/dangling_ref.cc: New test.
1211 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1213         PR libstdc++/108827
1214         PR libstdc++/111327
1215         * include/bits/version.def (bind_back): Define.
1216         * include/bits/version.h: Regenerate.
1217         * include/std/functional (_Bind_back): Define for C++23.
1218         (bind_back): Likewise.
1219         * testsuite/20_util/function_objects/bind_back/1.cc: New test
1220         (adapted from corresponding bind_front test).
1221         * testsuite/20_util/function_objects/bind_back/111327.cc: Likewise.
1223 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1225         * include/std/functional (_Bind_front): Remove =default special
1226         member function declarations.
1227         (_Bind_front::operator()): Implement using C++23 deducing this
1228         when available.
1229         * testsuite/20_util/function_objects/bind_front/111327.cc:
1230         Adjust testcase to expect better errors in C++23 mode.
1232 2024-01-13  Patrick Palka  <ppalka@redhat.com>
1234         * include/std/ranges (views::__adaptor::operator|): Perform
1235         perfect forwarding of arguments.
1236         (views::__adaptor::_RangeAdaptor::operator()): Pass dummy
1237         first argument to _Partial.
1238         (views::__adaptor::_Partial::_Partial): Likewise.  Add dummy
1239         first parameter.
1240         (views::__adaptor::_Pipe::_Pipe): Perform perfect forwarding
1241         of arguments.
1242         (to): Pass dummy first argument to _Partial.
1244 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
1246         PR libstdc++/107466
1247         * include/bits/random.tcc (subtract_with_carry_engine::seed):
1248         Implement proposed resolution of LWG 4014.
1249         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
1250         line number.
1251         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
1252         Check for expected result of 64-bit engine with seed that
1253         doesn't fit in 32-bits.
1255 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1257         PR libstdc++/113320
1258         * include/std/format (__format::_Runtime_format_string): Add
1259         constructor and disable copy operations.
1260         (basic_format_string(_Runtime_format_string)): Add noexcept and
1261         take parameter by value not rvalue reference.
1262         (runtime_format): Add noexcept.
1263         * testsuite/std/format/runtime_format.cc: Check noexcept. Check
1264         that construction is only possible from prvalues, not xvalues.
1266 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1268         PR libstdc++/105505
1269         * include/bits/stl_pair.h (pair::pair(U1&&, U2&&)) [C++23]: Add
1270         default template arguments, as per P1951R1.
1271         * testsuite/20_util/pair/cons/default_tmpl_args.cc: New test.
1273 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
1275         * include/std/format (__format::_Arg_store): Fix PR number in
1276         comment. Simplify preprocessor code.
1278 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1280         * doc/xml/manual/evolution.xml: Fix spelling.
1281         * doc/html/manual/api.html: Regenerate.
1283 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1285         * doc/xml/manual/evolution.xml: Document addition of
1286         libstdc++exp.a.
1287         * doc/html/*: Regenerate.
1289 2024-01-11  Marcus Haehnel  <marcus.haehnel@kernkonzept.com>
1291         * libsupc++/eh_unex_handler.cc: Adjust definition type to
1292         declaration.
1294 2024-01-11  Michael Levine  <mlevine55@bloomberg.net>
1296         * include/std/ranges (__glibcxx_want_ranges_iota): Remove
1297         duplicate definition.
1299 2024-01-11  François Dumont  <fdumont@gcc.gnu.org>
1301         PR libstdc++/112477
1302         * src/c++11/debug.cc
1303         (_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
1304         sequence.
1305         (_Safe_iterator_base::_M_attach_single): Likewise.
1306         (_Safe_local_iterator_base::_M_attach): Likewise.
1307         (_Safe_local_iterator_base::_M_attach_single): Likewise.
1308         * testsuite/23_containers/map/debug/112477.cc: New test case.
1310 2024-01-11  Patrick Palka  <ppalka@redhat.com>
1312         * include/bits/move.h (__like_t): Define in C++23 mode.
1313         * include/std/ranges (views::__adaptor::Partial::operator()):
1314         Implement using C++23 deducing this when available.
1315         (views::__adaptor::_Pipe::operator()): Likewise.
1316         * testsuite/std/ranges/adaptors/100577.cc: Adjust testcase to
1317         accept new "no match for call" errors issued in C++23 mode.
1318         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
1320 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1322         * python/libstdcxx/v6/printers.py (StdIntegralConstantPrinter):
1323         Add printer for std::integral_constant.
1324         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
1326 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
1328         PR libstdc++/113258
1329         * libsupc++/new_opa.cc: Prefer to use posix_memalign if
1330         available.
1332 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1334         * src/filesystem/ops-common.h (stat_type): Use using.
1336 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1338         PR libstdc++/113250
1339         * src/c++17/fs_ops.cc (fs::equivalent): Use || instead of &&.
1340         * src/filesystem/ops.cc (fs::equivalent): Likewise.
1341         * testsuite/27_io/filesystem/operations/equivalent.cc: Handle
1342         error codes.
1343         * testsuite/experimental/filesystem/operations/equivalent.cc:
1344         Likewise.
1346 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
1348         * include/std/type_traits (is_compound): Do not use __not_.
1349         (is_compound_v): Use is_fundamental_v instead.
1351 2024-01-11  Patrick Palka  <ppalka@redhat.com>
1353         * include/bits/utility.h (_Nth_type): Use
1354         _GLIBCXX_USE_BUILTIN_TRAIT instead of __has_builtin.
1356 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
1358         * include/bits/unicode-data.h: Regenerate.
1359         * include/bits/unicode.h (_Utf_iterator::operator++()): Fix off
1360         by one error.
1361         (__incb_property): Add missing check for values before the
1362         first edge.
1363         (__is_extended_pictographic): Invert return values to fix
1364         copy&pasted logic.
1365         (_Grapheme_cluster_view::_Iterator): Remove second iterator
1366         member and find end of cluster lazily.
1367         * testsuite/ext/unicode/grapheme_view.cc: New test.
1368         * testsuite/ext/unicode/properties.cc: New test.
1369         * testsuite/ext/unicode/view.cc: New test.
1371 2024-01-09  Andreas Schwab  <schwab@linux-m68k.org>
1373         * scripts/extract_symvers.in: Require final colon to only match
1374         .dsynsym in the header of the dynamic symtab.
1376 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
1378         * include/bits/chrono_io.h (__formatter_chrono::_M_F): Simplify
1379         handling of string returned from std::format.
1380         (__formatter_chrono::_M_R_T): Likewise.
1382 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1384         * include/bits/unicode.h (__null_sentinel): Remove.
1385         * testsuite/17_intro/names.cc: Add __null_sentinel.
1387 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1389         * include/std/format (__format::_Runtime_format_string): Define
1390         new class template.
1391         (basic_format_string): Add non-consteval constructor for runtime
1392         format strings.
1393         (runtime_format): Define new function for C++26.
1394         * testsuite/std/format/runtime_format.cc: New test.
1396 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1398         * include/bits/chrono_io.h (__formatter_chrono): Always use
1399         lvalue arguments to make_format_args.
1400         * include/std/format (make_format_args): Change parameter pack
1401         from forwarding references to lvalue references. Remove use of
1402         remove_reference_t which is now unnecessary.
1403         (format_to, formatted_size): Remove incorrect forwarding of
1404         arguments.
1405         * include/std/ostream (print): Remove forwarding of arguments.
1406         * include/std/print (print): Likewise.
1407         * testsuite/20_util/duration/io.cc: Use lvalues as arguments to
1408         make_format_args.
1409         * testsuite/std/format/arguments/args.cc: Likewise.
1410         * testsuite/std/format/arguments/lwg3810.cc: Likewise.
1411         * testsuite/std/format/functions/format.cc: Likewise.
1412         * testsuite/std/format/functions/vformat_to.cc: Likewise.
1413         * testsuite/std/format/string.cc: Likewise.
1414         * testsuite/std/time/day/io.cc: Likewise.
1415         * testsuite/std/time/month/io.cc: Likewise.
1416         * testsuite/std/time/weekday/io.cc: Likewise.
1417         * testsuite/std/time/year/io.cc: Likewise.
1418         * testsuite/std/time/year_month_day/io.cc: Likewise.
1419         * testsuite/std/format/arguments/args_neg.cc: New test.
1421 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1423         * include/Makefile.am: Add new headers.
1424         * include/Makefile.in: Regenerate.
1425         * include/bits/unicode.h: New file.
1426         * include/bits/unicode-data.h: New file.
1427         * include/std/format: Include <bits/unicode.h>.
1428         (__literal_encoding_is_utf8): Move to <bits/unicode.h>.
1429         (_Spec::_M_fill): Change type to char32_t.
1430         (_Spec::_M_parse_fill_and_align): Read a Unicode scalar value
1431         instead of a single character.
1432         (__write_padded): Change __fill_char parameter to char32_t and
1433         encode it into the output.
1434         (__formatter_str::format): Use new __unicode::__field_width and
1435         __unicode::__truncate functions.
1436         * include/std/ostream: Adjust namespace qualification for
1437         __literal_encoding_is_utf8.
1438         * include/std/print: Likewise.
1439         * src/c++23/print.cc: Add [[unlikely]] attribute to error path.
1440         * testsuite/ext/unicode/view.cc: New test.
1441         * testsuite/std/format/functions/format.cc: Add missing examples
1442         from the standard demonstrating alignment with non-ASCII
1443         characters. Add examples checking correct handling of extended
1444         grapheme clusters.
1446 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
1448         * include/bits/version.def (format_uchar): Define.
1449         * include/bits/version.h: Regenerate.
1450         * include/std/format (formatter<C, C>::format): Check for
1451         _Pres_c and call _M_format_character directly. Cast C to its
1452         unsigned equivalent for formatting as an integer.
1453         (formatter<char, wchar_t>::format): Likewise.
1454         (basic_format_arg(T&)): Store char arguments as unsigned char
1455         for formatting to a wide string.
1456         * testsuite/std/format/functions/format.cc: Adjust test. Check
1457         formatting of
1459 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1461         PR libstdc++/112997
1462         * libsupc++/unwind-cxx.h (__cxa_call_terminate): Change first
1463         parameter to void*.
1465 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1467         * testsuite/20_util/variant/87619.cc: Remove dg-timeout-factor.
1469 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
1471         * include/std/type_traits (is_trivially_destructible_v): Use
1472         built-in directly when concepts are supported.
1473         * testsuite/20_util/is_trivially_destructible/value_v.cc: New
1474         test.
1476 2024-01-06  Gwenole Beauchesne  <gb.devel@gmail.com>
1478         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Use
1479         nonnull arguments to strtoimax() and wcstoimax() functions.
1481 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1483         * src/c++17/fs_path.cc (path::_List::reserve): Limit maximum
1484         size and check for overflows in arithmetic.
1485         (path::operator/=(const path&)): Remove redundant exponential
1486         growth calculation.
1488 2024-01-05  Martin Küttler  <martin.kuettler@kernkonzept.com>
1490         * src/c++17/fs_path.cc (path::_List::reserve): Avoid
1491         floating-point arithmetic.
1493 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1495         PR libstdc++/113241
1496         * include/std/type_traits (is_convertible_v): Guard use of
1497         built-in with preprocessor check.
1499 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1501         PR libstdc++/113200
1502         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Use
1503         __builtin_constant_p to check for unrelated pointers that cannot
1504         be compared during constant evaluation.
1505         * testsuite/21_strings/char_traits/requirements/113200.cc: New
1506         test.
1508 2024-01-05  Cassio Neri  <cassio.neri@gmail.com>
1510         * include/std/chrono: Fix + and - for months and weekdays.
1511         * testsuite/std/time/month/1.cc: Add constexpr tests against overflow.
1512         * testsuite/std/time/month/2.cc: New test for extreme values.
1513         * testsuite/std/time/weekday/1.cc: Add constexpr tests against overflow.
1514         * testsuite/std/time/weekday/2.cc: New test for extreme values.
1516 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
1518         PR libstdc++/113099
1519         * include/bits/locale_classes.tcc (__try_use_facet): Use
1520         if-constexpr for C++11 and up.
1522 2024-01-05  Ken Matsui  <kmatsui@gcc.gnu.org>
1524         * include/std/type_traits: Use _GLIBCXX_USE_BUILTIN_TRAIT.
1526 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
1528         * include/std/generator (_Subyield_state::_M_jump_in): Fix typo
1529         reported by Will Hawkins <hawkinsw@obs.cr>.
1531 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
1533         * include/std/generator (_Stateless_alloc): Rename typename _A
1534         to _All.
1536 2024-01-03  Patrick Palka  <ppalka@redhat.com>
1538         PR testsuite/113175
1539         * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
1540         'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
1541         (test03): Likewise.
1544 Copyright (C) 2024 Free Software Foundation, Inc.
1546 Copying and distribution of this file, with or without modification,
1547 are permitted in any medium without royalty provided the copyright
1548 notice and this notice are preserved.