1 2024-04-02 Jonathan Wakely <jwakely@redhat.com>
4 * include/bits/unicode.h (_Utf8_view): Guard with check for
6 (__literal_encoding_is_unicode): Guard use of char8_t with check
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
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
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
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
82 * testsuite/24_iterators/range_generators/iter_deref_return.cc:
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:
101 * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
104 2024-03-26 Jonathan Wakely <jwakely@redhat.com>
106 * testsuite/lib/dg-options.exp (dg-require-cpp-feature-test):
108 * testsuite/lib/libstdc++.exp (check_v3_target_cpp_feature_test):
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
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
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
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>
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>
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()):
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
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>
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
172 * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
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
185 * include/bits/version.h: Regenerate.
187 2024-03-22 Jonathan Wakely <jwakely@redhat.com>
190 * include/std/functional (bind): Use __invoke_result_t instead
192 * include/std/type_traits (__invoke_result_t): New alias
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>
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>
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
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>
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
265 * testsuite/23_containers/unordered_set/debug/114316.cc: New test case.
267 2024-03-17 François Dumont <fdumont@gcc.gnu.org>
270 * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range):
271 First check if both iterators are value-initialized before checking if
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>
279 * include/std/format (_Scanner::_M_scan): Pass correct length to
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:
302 * testsuite/25_algorithms/is_permutation/2.cc: Likewise.
303 * testsuite/25_algorithms/lexicographical_compare/71545.cc:
305 * testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
306 * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc:
308 * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc:
310 * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc:
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:
320 * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc:
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)):
330 * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc:
333 2024-03-14 Jonathan Wakely <jwakely@redhat.com>
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
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>
370 * include/bits/chrono_io.h (_Parser::operator()): Assume
371 hours(0) for a time_point, so that a time is not required
373 * testsuite/std/time/parse/114240.cc: New test.
375 2024-03-09 Jonathan Wakely <jwakely@redhat.com>
378 * include/bits/chrono_io.h (_Parser::_M_is_leap_second): New
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>
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
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>
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:
432 * testsuite/23_containers/list/allocator/default_init.cc:
434 * testsuite/23_containers/map/allocator/default_init.cc:
436 * testsuite/23_containers/set/allocator/default_init.cc:
438 * testsuite/23_containers/unordered_map/allocator/default_init.cc:
440 * testsuite/23_containers/unordered_set/allocator/default_init.cc:
442 * testsuite/23_containers/vector/allocator/default_init.cc:
444 * testsuite/23_containers/vector/bool/allocator/default_init.cc:
446 * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
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>
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
474 * testsuite/std/format/formatter/basic.cc: New test.
476 2024-02-29 Jonathan Wakely <jwakely@redhat.com>
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:
486 2024-02-28 Jonathan Wakely <jwakely@redhat.com>
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
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
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
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:
544 * testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
546 * testsuite/27_io/filesystem/operations/bitmask_types.cc:
549 2024-02-28 Jonathan Wakely <jwakely@redhat.com>
551 * testsuite/27_io/basic_ostream/print/1.cc: Check error
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>
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>
599 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
602 2024-02-16 Jonathan Wakely <jwakely@redhat.com>
606 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
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>
622 * include/std/bitset (bitset::operator>>=): Remove redundant
623 call to _M_do_sanitize.
625 2024-02-15 Jonathan Wakely <jwakely@redhat.com>
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>
634 * include/bits/stl_algo.h (__rotate): Use unsigned values for
637 2024-02-15 Jonathan Wakely <jwakely@redhat.com>
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>
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
659 * testsuite/26_numerics/random/linear_congruential_engine/87744.cc:
662 2024-02-14 Gerald Pfeifer <gerald@pfeifer.com>
664 * doc/xml/manual/status_cxx2023.xml: Fix C++ item p2442 to be
666 * doc/html/manual/status.html: Regenerate.
668 2024-02-12 Paul Keir <paul.keir@uws.ac.uk>
671 * include/bits/basic_string.h (basic_string::operator=): Use
672 _M_use_local_data() instead of _M_local_buf on the moved-from
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):
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>
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>
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
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
734 2024-02-02 Jonathan Wakely <jwakely@redhat.com>
737 * include/bits/std_function.h (__function_guide_helper): Add
738 partial specialization for explicit object member functions, as
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:
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
758 2024-02-02 Jonathan Wakely <jwakely@redhat.com>
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>
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
777 * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
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>
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
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):
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
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.
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
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.
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
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
887 * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
889 * testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
891 * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
893 * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
895 * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
897 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
899 * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
901 * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
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
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>
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>
982 * include/std/format (__formatter_fp::format): Fix logic for
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>
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>
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
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>
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]:
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>
1051 * testsuite/std/format/functions/format.cc: Use signed char
1054 2024-01-17 Jonathan Wakely <jwakely@redhat.com>
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
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
1078 * src/experimental/Makefile.in: Regenerate.
1079 * python/libstdcxx/v6/printers.py (StdTextEncodingPrinter): New
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>
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>
1132 * include/std/format (basic_format_arg): Use __formattable
1133 variable template instead of __format::__formattable_with
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>
1145 * include/std/tuple (tuple): Add checks for dangling references.
1146 Reimplement constraints and constant expressions using C++20
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>
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
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
1182 (views::__adaptor::_Pipe::_Pipe): Perform perfect forwarding
1184 (to): Pass dummy first argument to _Partial.
1186 2024-01-13 Jonathan Wakely <jwakely@redhat.com>
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
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>
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>
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
1229 * doc/html/*: Regenerate.
1231 2024-01-11 Marcus Haehnel <marcus.haehnel@kernkonzept.com>
1233 * libsupc++/eh_unex_handler.cc: Adjust definition type to
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>
1244 * src/c++11/debug.cc
1245 (_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
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>
1271 * libsupc++/new_opa.cc: Prefer to use posix_memalign if
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>
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
1285 * testsuite/experimental/filesystem/operations/equivalent.cc:
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
1303 (__incb_property): Add missing check for values before the
1305 (__is_extended_pictographic): Invert return values to fix
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
1333 (basic_format_string): Add non-consteval constructor for runtime
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
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
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
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
1401 2024-01-07 Jonathan Wakely <jwakely@redhat.com>
1404 * libsupc++/unwind-cxx.h (__cxa_call_terminate): Change first
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
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
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>
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>
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
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>
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
1478 2024-01-03 Patrick Palka <ppalka@redhat.com>
1481 * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
1482 'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
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.