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