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