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