Daily bump.
[gcc.git] / libstdc++-v3 / ChangeLog
blob335f4bc9f61b5d79d6ae1ec73b4b0d62abc92806
1 2024-12-19  François Dumont  <frs.dumont@gmail.com>
3         PR libstdc++/57272
4         * include/bits/stl_tree.h
5         [_GLIBCXX_USE_ALLOC_PTR_FOR_RB_TREE]: New macro to control usage of the
6         code required to support fancy allocator pointer type.
7         (_Rb_tree_node_base::_Const_Base_ptr): Remove.
8         (_Rb_tree_node_base::_S_minimum, _Rb_tree_node_base::_S_maximum): Remove
9         overloads for _Const_Base_ptr.
10         (_Rb_tree_node_base::_M_base_ptr()): New.
11         (_Rb_tree_node::_Link_type): Remove.
12         (_Rb_tree_node::_M_node_ptr()): New.
13         (__rb_tree::_Node_base<>): New.
14         (__rb_tree::_Header<>): New.
15         (__rb_tree::_Node<>): New.
16         (_Rb_tree_increment(const _Rb_tree_node_base*)): Remove declaration.
17         (_Rb_tree_decrement(const _Rb_tree_node_base*)): Remove declaration.
18         (_Rb_tree_iterator<>::_Self): Remove.
19         (_Rb_tree_iterator<>::_Link_type): Rename into...
20         (_Rb_tree_iterator<>::_Node_ptr): ...this.
21         (_Rb_tree_const_iterator<>::_Link_type): Rename into...
22         (_Rb_tree_const_iterator<>::_Node_ptr): ...this.
23         (_Rb_tree_const_iterator<>::_M_const_cast): Remove.
24         (_Rb_tree_const_iterator<>::_M_node): Change type into _Base_ptr.
25         (__rb_tree::_Iterator<>): New.
26         (__rb_tree::_Node_traits<>): New.
27         (_Rb_tree<>::_Node_base, _Rb_tree::_Node): New.
28         (_Rb_tree<>::_Link_type): Rename into...
29         (_Rb_tree<>::_Node_ptr): ...this.
30         (_Rb_tree<>::_Const_Base_ptr, _Rb_tree<>::_Const_Node_ptr): Remove.
31         (_Rb_tree<>::_M_mbegin): Remove.
32         (_Rb_tree<>::_M_begin_node()): New.
33         (_S_key(const _Node&)): New.
34         (_S_key(_Base_ptr)): New, call latter.
35         (_S_key(_Node_ptr)): Likewise.
36         (_Rb_tree<>::_S_left(_Const_Base_ptr)): Remove.
37         (_Rb_tree<>::_S_right(_Const_Base_ptr)): Remove.
38         (_Rb_tree<>::_S_maximum(_Const_Base_ptr)): Remove.
39         (_Rb_tree<>::_S_minimum(_Const_Base_ptr)): Remove.
40         * testsuite/23_containers/map/allocator/ext_ptr.cc: New test case.
41         * testsuite/23_containers/multimap/allocator/ext_ptr.cc: New test case.
42         * testsuite/23_containers/multiset/allocator/ext_ptr.cc: New test case.
43         * testsuite/23_containers/set/allocator/ext_ptr.cc: New test case.
44         * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr.cc:
45         New test case.
46         * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr_ignored.cc:
47         New test case.
49 2024-12-19  Patrick Palka  <ppalka@redhat.com>
50             Jonathan Wakely  <jwakely@redhat.com>
52         * include/Makefile.am: Add new header <flat_set>.
53         * include/Makefile.in: Regenerate.
54         * include/bits/version.def (__cpp_flat_set): Define.
55         * include/bits/version.h: Regenerate
56         * include/precompiled/stdc++.h: Include <flat_set>.
57         * include/std/flat_set: New file.
58         * src/c++23/std.cc.in: Export <flat_set>.
59         * testsuite/23_containers/flat_multiset/1.cc: New test.
60         * testsuite/23_containers/flat_set/1.cc: New test.
62 2024-12-19  Patrick Palka  <ppalka@redhat.com>
63             Jonathan Wakely  <jwakely@redhat.com>
65         * include/Makefile.am: Add new header <flat_map>.
66         * include/Makefile.in: Regenerate.
67         * include/bits/alloc_traits.h (__not_allocator_like): New concept.
68         * include/bits/stl_function.h (__transparent_comparator): Likewise.
69         * include/bits/stl_iterator_base_types.h (__has_input_iter_cat):
70         Likewise.
71         * include/bits/uses_allocator.h (__allocator_for): Likewise.
72         * include/bits/utility.h (sorted_unique_t): Define for C++23.
73         (sorted_unique): Likewise.
74         (sorted_equivalent_t): Likewise.
75         (sorted_equivalent): Likewise.
76         * include/bits/version.def (flat_map): Define.
77         * include/bits/version.h: Regenerate.
78         * include/precompiled/stdc++.h: Include <flat_map>.
79         * include/std/flat_map: New file.
80         * src/c++23/std.cc.in: Export <flat_map>.
81         * testsuite/23_containers/flat_map/1.cc: New test.
82         * testsuite/23_containers/flat_multimap/1.cc: New test.
84 2024-12-19  Patrick Palka  <ppalka@redhat.com>
86         * include/bits/ranges_base.h (__detail::__range_key_type):
87         Define as per P1206R7.
88         (__detail::__range_mapped_type): Likewise.
90 2024-12-18  François Dumont  <frs.dumont@gmail.com>
92         * include/bits/move.h (std::addressof): Call __builtin_addressof.
94 2024-12-18  Tamar Christina  <tamar.christina@arm.com>
96         * include/bits/hashtable.h
97         (_M_find_before_node): Make it likely that the map has at least one
98         entry and so we do at least one iteration.
100 2024-12-18  Jonathan Wakely  <jwakely@redhat.com>
102         PR libstdc++/118088
103         * include/bits/stl_queue.h (priority_queue(priority_queue&&)):
104         Clear the source object after moving from it.
105         (priority_queue(priority_queue&&, const Alloc&)): Likewise.
106         (operator=(priority_queue&&)): Likewise.
107         * testsuite/23_containers/priority_queue/118088.cc: New test.
109 2024-12-18  Tamar Christina  <tamar.christina@arm.com>
111         * include/bits/hashtable.h: Inline _M_locate.
113 2024-12-18  Jonathan Wakely  <jwakely@redhat.com>
115         * include/bits/basic_string.h (__to_wstring_numeric): Add 'i'
116         and 'I' to mapping.
118 2024-12-18  Luca Bacci  <luca.bacci982@gmail.com>
120         PR libstdc++/98723
121         * include/bits/regex_compiler.tcc (_BracketMatcher::_M_apply):
122         Only use transform_primary when an equivalence set is used.
124 2024-12-17  Jonathan Wakely  <jwakely@redhat.com>
126         * include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
127         Add parentheses to avoid -Wparentheses warning.
129 2024-12-17  Jonathan Wakely  <jwakely@redhat.com>
131         PR libstdc++/118035
132         * include/bits/deque.tcc (_M_range_insert_aux): Return
133         immediately if inserting an empty range.
134         * testsuite/23_containers/deque/modifiers/insert/118035.cc: New
135         test.
137 2024-12-16  Jonathan Wakely  <jwakely@redhat.com>
139         * include/bits/hashtable_policy.h (_Local_iterator_base): Use
140         default member-initializers.
142 2024-12-16  Jonathan Wakely  <jwakely@redhat.com>
144         * include/bits/hashtable_policy.h: Replace typedefs with
145         alias-declarations. Remove redundant std:: qualification.
146         (_Mod_range_hashing, _Mask_range_hashing): Remove adaptable
147         function object typedefs.
149 2024-12-16  Jonathan Wakely  <jwakely@redhat.com>
151         * include/bits/hashtable_policy.h (_Hash_code_storage): Remove.
152         (_Hash_obj_storage): New class template. Store the hash
153         function as a union member instead of using a byte buffer.
154         (_Local_iterator_base): Use _Hash_obj_storage instead of
155         _Hash_code_storage, adjust members that construct and destroy
156         the hash object.
157         (_Local_iterator_base::_M_incr): Calculate bucket index.
159 2024-12-16  Jonathan Wakely  <jwakely@redhat.com>
161         * include/bits/hashtable.h (_Hashtable::swap): Swap hash
162         function and equality predicate here. Inline allocator swap
163         instead of using __alloc_on_swap.
164         * include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
165         Replace EBO with no_unique_address attribute. Remove NTTP.
166         (_Hash_code_base): Replace base class with data member using
167         no_unique_address attribute.
168         (_Hash_code_base::_M_swap): Remove.
169         (_Hash_code_base::_M_hash): Remove.
170         (_Hashtable_base): Replace base class with data member using
171         no_unique_address attribute.
172         (_Hashtable_base::_M_swap): Remove.
173         (_Hashtable_alloc): Replace base class with data member using
174         no_unique_address attribute.
176 2024-12-16  Jonathan Wakely  <jwakely@redhat.com>
178         PR libstdc++/57272
179         * include/bits/forward_list.h (__fwd_list::_Node): Add
180         user-provided special member functions to union.
181         * include/bits/stl_list.h (__list::_Node): Likewise.
182         (_Node_base::_M_hook, _Node_base::swap): Use _M_base() instead
183         of std::pointer_traits::pointer_to.
184         (_Node_base::_M_transfer): Likewise. Add noexcept.
185         (_List_base::_M_put_node): Use 'if constexpr' to avoid using
186         pointer_traits::pointer_to when not necessary.
187         (_List_base::_M_destroy_node): Fix parameter to be the pointer
188         type used internally, not the allocator's pointer.
189         (list::_M_create_node): Likewise.
190         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr.cc:
191         Check explicit instantiation of non-trivial value type.
192         * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr.cc:
193         Likewise.
194         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr_ignored.cc:
195         Fix macro name.
196         * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr_ignored.cc:
197         Likewise.
199 2024-12-14  Abdo Eid  <abdoeid.eg@ieee.org>
201         * include/c_compatibility/wchar.h (fgetwc): Remove duplicate
202         using-declaration.
204 2024-12-13  Patrick Palka  <ppalka@redhat.com>
206         PR libstdc++/112349
207         * include/bits/ranges_algo.h (__min_fn::operator()): Turn local
208         object __tmp into a reference.
209         * include/bits/ranges_util.h (__max_fn::operator()): Likewise.
210         * testsuite/25_algorithms/max/constrained.cc (test04): New test.
211         * testsuite/25_algorithms/min/constrained.cc (test04): New test.
213 2024-12-13  Jonathan Wakely  <jwakely@redhat.com>
215         * include/std/spanstream (basic_spanbuf::seekoff): Return an
216         error for invalid seekdir values.
218 2024-12-13  Jonathan Wakely  <jwakely@redhat.com>
220         * include/bits/ranges_cmp.h (not_equal_to): Make order of
221         expressions in noexcept-specifier match the body.
222         * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc:
223         Check noexcept.
225 2024-12-13  Jonathan Wakely  <jwakely@redhat.com>
227         * include/bits/regex.tcc: Fix -Wsign-compare warning.
229 2024-12-13  Jonathan Wakely  <jwakely@redhat.com>
231         * include/pstl/parallel_backend_tbb.h (__merge_func): Fix order
232         of mem-initializers.
234 2024-12-13  Jonathan Wakely  <jwakely@redhat.com>
236         * testsuite/26_numerics/random/random_device/entropy.cc: Fix
237         indentation to avoid -Wmisleading-indentation warning.
239 2024-12-12  Jonathan Wakely  <jwakely@redhat.com>
241         * testsuite/23_containers/unordered_map/modifiers/reserve.cc:
242         Cast to size_t to fix -Wsign-compare warning.
243         * testsuite/23_containers/unordered_set/hash_policy/71181.cc:
244         Likewise.
245         * testsuite/23_containers/unordered_set/insert/move_range.cc:
246         Likewise.
248 2024-12-12  Jonathan Wakely  <jwakely@redhat.com>
250         * include/bits/hashtable_policy.h (_Local_iterator_base): Fix
251         -Wsign-compare warnings.
253 2024-12-12  Jonathan Wakely  <jwakely@redhat.com>
255         * src/c++17/fs_dir.cc: Fix typo in comment.
257 2024-12-11  Jonathan Wakely  <jwakely@redhat.com>
259         PR libstdc++/109517
260         PR libstdc++/109976
261         * include/debug/helper_functions.h (__valid_range_aux): Treat
262         all input iterator ranges as valid during constant evaluation.
264 2024-12-11  Jonathan Wakely  <jwakely@redhat.com>
266         PR libstdc++/106212
267         * include/std/array (operator==): Use std::__equal_aux1 instead
268         of std::equal.
269         * testsuite/23_containers/array/comparison_operators/106212.cc:
270         New test.
272 2024-12-11  Jonathan Wakely  <jwakely@redhat.com>
274         PR libstdc++/117966
275         * include/std/span (span(T (&)[N])): Do not delegate to
276         constructor that performs redundant checks.
277         (span(array<T, N>&), span(const array<T, N>&)): Likewise.
278         (span(Range&&), span(const span<T, N>&)): Likewise.
279         * testsuite/23_containers/span/117966.cc: New test.
281 2024-12-11  Jonathan Wakely  <jwakely@redhat.com>
283         * include/std/generator (_Promise_alloc): Rename template
284         parameter. Use __alloc_rebind to rebind allocator.
285         (_Promise_alloc::operator new): Replace constraints with a
286         static_assert in the body. Rename allocator parameter.
287         (_Promise_alloc<void>::_M_allocate): Rename allocator parameter.
288         Use __alloc_rebind to rebind allocator.
289         (_Promise_alloc<void>::operator new): Rename allocator
290         parameter.
291         * testsuite/24_iterators/range_generators/alloc.cc: New test.
292         * testsuite/24_iterators/range_generators/lwg3900.cc: New test.
294 2024-12-11  Jonathan Wakely  <jwakely@redhat.com>
296         * include/std/ostream (println): Pass stream's locale to
297         std::format, as per LWG 4088.
298         * testsuite/27_io/basic_ostream/print/1.cc: Check std::println
299         with custom locale. Remove unused brit_punc class.
301 2024-12-10  Jonathan Wakely  <jwakely@redhat.com>
303         * include/bits/memory_resource.h (polymoprhic_allocator): Use
304         feature test macro for P0339R6 features.
306 2024-12-10  Marek Polacek  <polacek@redhat.com>
308         PR c++/117788
309         * testsuite/std/ranges/adaptors/conditionally_borrowed.cc: Add a
310         FIXME, adjust.
312 2024-12-10  Jonathan Wakely  <jwakely@redhat.com>
314         * include/bits/stl_uninitialized.h (__is_bitwise_relocatable):
315         Revert to depending on is_trivial.
317 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
319         * include/std/type_traits: Deprecate is_trivial and
320         is_trivial_v.
321         * include/experimental/type_traits: Suppress the deprecation
322         warning.
323         * testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc:
324         Amend the test to suppress the deprecation warning.
325         * testsuite/20_util/is_trivial/requirements/typedefs.cc:
326         Likewise.
327         * testsuite/20_util/is_trivial/value.cc: Likewise.
328         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.
329         * testsuite/experimental/type_traits/value.cc: Likewise.
330         * testsuite/18_support/max_align_t/requirements/2.cc: Update the
331         test with P3247R2's new wording.
333 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
335         * testsuite/20_util/specialized_algorithms/uninitialized_copy/102064.cc:
336         Port away from is_trivial.
337         * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc:
338         Likewise.
339         * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
340         Likewise.
341         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
342         Likewise.
343         * testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc:
344         Likewise.
345         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc:
346         Likewise.
347         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
348         Likewise.
349         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
350         Likewise.
351         * testsuite/23_containers/vector/cons/94540.cc: Likewise.
352         * testsuite/25_algorithms/copy/move_iterators/69478.cc:
353         Likewise.
354         * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
355         Likewise.
356         * testsuite/25_algorithms/move/69478.cc: Likewise.
357         * testsuite/25_algorithms/move_backward/69478.cc: Likewise.
358         * testsuite/25_algorithms/rotate/constrained.cc: Likewise.
359         * testsuite/25_algorithms/rotate_copy/constrained.cc: Likewise.
361 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
363         * include/bits/ranges_uninitialized.h: port some if
364         constexpr away from is_trivial, and towards more specific
365         detections instead.
367 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
369         * include/bits/stl_uninitialized.h: Amended the
370         __is_bitwise_relocatable type trait.
372 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
374         * include/pstl/algorithm_impl.h (__remove_elements): Port away
375         from is_trivial.
376         (__pattern_inplace_merge): Likewise.
377         * include/pstl/glue_memory_impl.h (uninitialized_copy): Likewise.
378         (uninitialized_copy_n): Likewise.
379         (uninitialized_move): Likewise.
380         (uninitialized_move_n): Likewise.
381         (uninitialized_default_construct): Likewise.
382         (uninitialized_default_construct_n): Likewise.
383         (uninitialized_value_construct): Likewise.
384         (uninitialized_value_construct_n): Likewise.
385         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
386         Likewise.
387         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
388         Likewise.
389         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc:
390         Likewise.
391         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
392         Likewise.
394 2024-12-10  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
396         * include/bits/basic_string.h: Add a static_assert on the
397         char-like type.
398         * include/std/string_view: Port away from is_trivial.
400 2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
402         PR libstdc++/102259
403         * config/io/basic_file_stdio.cc (basic_file::xsgetn): Limit n to
404         _GLIBCXX_MAX_READ_SIZE if that macro is defined.
405         * config/os/bsd/darwin/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
406         Define to INT_MAX-1.
407         * config/os/bsd/freebsd/os_defines.h (_GLIBCXX_MAX_READ_SIZE):
408         Likewise.
410 2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
412         * include/bits/allocator.h (allocator::is_always_equal): Do not
413         define for C++26.
414         (allocator<void>::is_always_equal): Likewise.
415         * testsuite/20_util/allocator/requirements/typedefs.cc: Check
416         that is_always_equal is not present in C++26.
417         * testsuite/20_util/allocator/void.cc: Do not require
418         is_always_equal for C++26.
419         * testsuite/23_containers/vector/bool/cons/constexpr.cc: Add
420         missing override of base's is_always_equal.
421         * testsuite/23_containers/vector/cons/constexpr.cc: Likewise.
423 2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
425         PR libstdc++/117962
426         * include/debug/safe_container.h: Make allocator-extended move
427         constructor a no-op during constant evaluation.
429 2024-12-09  Jonathan Wakely  <jwakely@redhat.com>
431         PR libstdc++/117921
432         * testsuite/23_containers/set/modifiers/swap/adl.cc: Add
433         equality comparison for Allocator.
434         * testsuite/23_containers/unordered_set/modifiers/swap-2.cc:
435         Likewise.
437 2024-12-07  Jonathan Wakely  <jwakely@redhat.com>
439         * include/std/format: Fix typo in Doxygen comment.
441 2024-12-07  Matthew Malcomson  <mmalcomson@nvidia.com>
443         * .editorconfig: Adjust globbing style to standard syntax.
445 2024-12-05  Jonathan Wakely  <jwakely@redhat.com>
447         PR libstdc++/117921
448         * include/bits/hashtable_policy.h (_Hash_code_base::_M_swap):
449         Use ADL swap for Hash members.
450         (_Hashtable_base::_M_swap): Use ADL swap for _Equal members.
451         * include/bits/stl_tree.h (_Rb_tree::swap): Use ADL swap for
452         _Compare members.
453         * testsuite/23_containers/set/modifiers/swap/adl.cc: New test.
454         * testsuite/23_containers/unordered_set/modifiers/swap-2.cc: New
455         test.
457 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
459         PR libstdc++/108236
460         * include/pstl/glue_numeric_impl.h (exclusive_scan): Pass __init
461         as rvalue.
462         * include/pstl/numeric_impl.h (__brick_transform_scan): Do not
463         write through __result until after reading through __first. Move
464         __init into return value.
465         (__pattern_transform_scan): Pass __init as rvalue.
466         * include/std/numeric (exclusive_scan): Move construct instead
467         of copy constructing.
468         * testsuite/26_numerics/exclusive_scan/2.cc: New test.
469         * testsuite/26_numerics/pstl/numeric_ops/108236.cc: New test.
471 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
473         * include/bits/alloc_traits.h (__do_alloc_on_copy): Remove.
474         (__do_alloc_on_move __do_alloc_on_swap): Remove.
475         (__alloc_on_copy, __alloc_on_move, __alloc_on_swap): Use if
476         constexpr.
478 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
480         PR libstdc++/57272
481         * include/bits/forward_list.h (_GLIBCXX_USE_ALLOC_PTR_FOR_LIST):
482         Define.
483         (_Fwd_list_node_base::_M_base_ptr): New member functions.
484         (_Fwd_list_node::_M_node_ptr): New member function.
485         (_Fwd_list_iterator, _Fwd_list_const_iterator): Make internal
486         member functions and data member private. Declare forward_list
487         and _Fwd_list_base as friends.
488         (__fwdlist::_Node_base, __fwdlist::_Node, __fwdlist::_Iterator):
489         New class templates.
490         (__fwdlist::_Node_traits): New class template.
491         (_Fwd_list_base): Use _Node_traits to get types. Use _Base_ptr
492         instad of _Fwd_list_node_base*. Use _M_base_ptr() instead of
493         taking address of head node.
494         (forward_list): Likewise.
495         (_Fwd_list_base::_M_get_node): Do not define for versioned
496         namespace.
497         (_Fwd_list_base::_M_put_node): Only convert pointer if needed.
498         (_Fwd_list_base::_M_create_node): Use __allocate_guarded_obj.
499         (_Fwd_list_base::_M_destroy_node): New member function.
500         * include/bits/forward_list.tcc (_Fwd_list_base::_M_insert_after)
501         (forward_list::_M_splice_after, forward_list::insert_after): Use
502         const_iterator::_M_const_cast() instead of casting pointers.
503         (_Fwd_list_base::_M_erase_after): Use _M_destroy_node.
504         (forward_list::remove, forward_list::remove_if): Only do
505         downcasts when accessing the value.
506         (forward_list::sort): Likewise.
507         * testsuite/23_containers/forward_list/capacity/1.cc: Check
508         max_size for new node type.
509         * testsuite/23_containers/forward_list/capacity/node_sizes.cc:
510         New test.
511         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr.cc:
512         New test.
513         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr_ignored.cc:
514         New test.
515         * testsuite/23_containers/forward_list/requirements/completeness.cc: New file.
517 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
519         PR libstdc++/57272
520         PR libstdc++/110952
521         * include/bits/allocated_ptr.h (__allocated_ptr::get): Add
522         const.
523         (__allocated_ptr::operator bool, __allocated_ptr::release): New
524         member functions.
525         (__allocate_guarded): Add inline.
526         (__allocated_obj): New class template.
527         (__allocate_guarded_obj): New function template.
528         * include/bits/list.tcc (_List_base::_M_clear()): Replace uses
529         of raw pointers. Use _M_destroy_node.
530         (list::emplace, list::insert): Likewise.
531         (list::sort): Adjust check for 0 or 1 wsize. Use template
532         argument list for _Scratch_list.
533         * include/bits/stl_list.h (_GLIBCXX_USE_ALLOC_PTR_FOR_LIST):
534         Define.
535         (_List_node_base::_Base_ptr): New typedef.
536         (_List_node_base::_M_base): New member functions.
537         (_List_node_header::_M_base): Make public and add
538         using-declaration for base class overload.
539         (__list::_Node_traits, __list::_Node_base)
540         (__list::_Node_header, __list::_Node, __list::_Iterator): New
541         class templates.
542         (_Scratch_list): Turn class into class template. Use _Base_ptr
543         typedef instead of _List_node_base*.
544         (_List_node::_Node_ptr): New typedef.
545         (_List_node::_M_node_ptr): New member function.
546         (_List_base, _List_impl): Use _Node_traits to get node types.
547         (_List_base::_M_put_node): Convert to fancy pointer if needed.
548         (_List_base::_M_destroy_node): New member function.
549         (_List_base(_List_base&&, _Node_alloc_type&&)): Use if constexpr
550         to make function a no-op for fancy pointers.
551         (_List_base::_S_distance, _List_base::_M_distance)
552         (_List_base::_M_node_count): Likewise.
553         (list): Use _Node_traits to get iterator, node and pointer
554         types.
555         (list::_M_create_node): Use _Node_ptr typedef instead of _Node*.
556         Use __allocate_guarded_obj instead of _M_get_node.
557         (list::end, list::cend, list::empty): Use node header's
558         _M_base() function instead of taking its address.
559         (list::swap): Use _Node_traits to get node base type.
560         (list::_M_create_node, list::_M_insert): Use _Node_ptr instead
561         of _Node*.
562         (list::_M_erase): Likewise. Use _M_destroy_node.
563         (__distance): Overload for __list::_Iterator.
564         (_Node_base::swap, _Node_base::_M_transfer): Define non-inline
565         member functions of class templates.
566         (_Node_header::_M_reverse): Likewise.
567         * testsuite/23_containers/list/capacity/29134.cc: Check max_size
568         for allocator of new node type.
569         * testsuite/23_containers/list/capacity/node_sizes.cc: New test.
570         * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr.cc:
571         New test.
572         * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr_ignored.cc:
573         New test.
574         * testsuite/23_containers/list/requirements/completeness.cc: New file.
576 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
578         * include/bits/stl_list.h (_List_iterator): Remove _Self typedef
579         and just use injected-class-name instead.
580         (_List_const_iterator): Likewise.
582 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
584         * include/bits/stl_list.h (_List_size): New struct.
585         (_List_node_header): Replace _M_size member with _List_size base
586         class.
587         (_List_node_header(_List_node_header&&)): Replace explicit uses
588         of _M_size with initializing the base.
589         (_List_node_header::_M_init): Likewise.
590         (_List_base::_S_distance, _List_base::_M_distance)
591         (_List_base::_M_node_count): Move to end of class body and add
592         comment.
593         (list::_S_distance, list::_M_node_count): Likewise.
594         (list::size): Inline _M_node_count effects to here.
595         (list::splice(iterator, list&, iterator, iterator)): Use #if and
596         call std::distance instead of _S_distance.
598 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
600         * include/bits/stl_bvector.h (vector(const allocator_type&)):
601         Add noexcept, as per LWG 3778.
602         * testsuite/23_containers/vector/bool/cons/lwg3778.cc: New test.
604 2024-12-03  Jonathan Wakely  <jwakely@redhat.com>
606         PR libstdc++/117889
607         PR libstdc++/117858
608         * include/std/optional (optional(const optional<U>&)): Fix copy
609         and paste error in constraints.
610         (optional(optional<U>&&)): Likewise.
611         * testsuite/20_util/optional/assignment/117858.cc: Move to ...
612         * testsuite/20_util/optional/cons/117858.cc: New test.
614 2024-12-02  Jonathan Wakely  <jwakely@redhat.com>
616         * include/bits/stl_construct.h (_Destroy(FwdIter, FwdIter)): Use
617         'if constexpr' instead of dispatching to a member function of a
618         class template.
619         (_Destroy_n(FwdIter, Size)): Likewise.
620         (_Destroy_aux, _Destroy_n_aux): Only define for C++98.
622 2024-12-02  Jonathan Wakely  <jwakely@redhat.com>
624         * src/c++23/std.cc.in: Disable deprecated warnings when
625         exporting std::rel_ops members.
627 2024-11-30  Jonathan Wakely  <jwakely@redhat.com>
629         PR libstdc++/117858
630         * testsuite/20_util/optional/assignment/117858.cc: Also test
631         assignment from rvalue optional.
633 2024-11-30  Jonathan Wakely  <jwakely@redhat.com>
635         PR libstdc++/117858
636         * include/std/optional (operator=(const optional<U>&)): Fix copy
637         and paste error in constraints.
638         (operator=(optional<U>&&)): Likewise.
639         * testsuite/20_util/optional/assignment/117858.cc: New test.
641 2024-11-30  Jonathan Wakely  <jwakely@redhat.com>
643         * include/Makefile.am: Add bits/monostate.h.
644         * include/Makefile.in: Regenerate.
645         * include/std/utility: Include <bits/monostate.h>.
646         * include/std/variant (monostate, hash<monostate>): Move
647         definitions to ...
648         * include/bits/monostate.h: New file.
649         * testsuite/20_util/headers/utility/synopsis.cc: Add monostate
650         and hash<monostate> declarations.
651         * testsuite/20_util/monostate/requirements.cc: New test.
653 2024-11-30  Jonathan Wakely  <jwakely@redhat.com>
655         * testsuite/20_util/headers/utility/synopsis.cc: Add
656         declarations from C++11 and later.
658 2024-11-30  Jakub Jelinek  <jakub@redhat.com>
660         * include/std/functional (_Bind_check_arity): Add , before ... .
661         * include/bits/refwrap.h (_Mem_fn_traits, _Weak_result_type_impl):
662         Likewise.
663         * include/tr1/type_traits (is_function): Likewise.
665 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
667         * include/std/stacktrace (basic_stacktrace::_M_impl::_M_resize):
668         Use std::_Destroy to destroy removed elements.
670 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
672         * python/libstdcxx/v6/printers.py: Reorder registrations.
674 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
676         PR libstdc++/117822
677         * include/std/stacktrace (stacktrace(stacktrace&&, const A&)):
678         Fix typo in qualified-id for is_always_equal trait.
679         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Test
680         allocator-extended constructors and allocator propagation.
682 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
684         * include/bits/stl_relops.h (rel_ops): Add deprecated attribute.
685         * testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc:
686         Add dg-warning for -Wdeprecated warnings.
687         * testsuite/20_util/rel_ops.cc: Likewise.
688         * testsuite/util/testsuite_containers.h: Disable -Wdeprecated
689         warnings when using rel_ops.
691 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
693         * include/bits/stl_list.h: Reduce duplication in doxygen
694         comments.
696 2024-11-28  Marek Polacek  <polacek@redhat.com>
698         PR c++/113798
699         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
700         dg-prune-output.
702 2024-11-28  Jonathan Wakely  <jwakely@redhat.com>
704         PR libstdc++/117210
705         * config/os/bsd/dragonfly/os_defines.h: Include <sys/cdefs.h>.
706         * config/os/bsd/freebsd/os_defines.h: Likewise.
708 2024-11-27  Jan Hubicka  <hubicka@ucw.cz>
710         * include/bits/basic_string.h (basic_string::size(),
711         basic_string::length(), basic_string::capacity()): Add
712         __builtin_unreachable to declare value ranges.
713         (basic_string::empty()): Implement directly
714         (basic_string::max_size()): Account correctly the terminating 0
715         and limits implied by ptrdiff_t.
717 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
719         * include/bits/c++config (__glibcxx_assert): Remove useless
720         __builtin_expect from constexpr-only assertion. Improve
721         comments.
723 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
725         PR libstdc++/117650
726         * include/bits/c++config (__glibcxx_assert_fail): Add cold
727         attribute.
728         * include/debug/formatter.h (_Error_formatter::_M_error):
729         Likewise.
731 2024-11-27  Patrick Palka  <ppalka@redhat.com>
733         * include/std/ranges (views::__adaptor::_RangeAdaptorClosure):
734         Befriend both operator| overloads.
735         * src/c++23/std.cc.in: Don't export views::__adaptor::operator|.
737 2024-11-27  Jason Merrill  <jason@redhat.com>
739         * src/c++23/std.cc.in: Fix iter_move/swap.  Add fold_left_first, to,
740         concat, and some operators.
742 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
744         * include/bits/forward_list.h (forward_list::front): Add
745         non-empty assertions.
746         * include/bits/stl_list.h (list::front, list::back): Add
747         non-empty assertions.
749 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
751         * include/bits/forward_list.h (operator=(forward_list&&)): Use
752         if constexpr instead of dispatching to _M_move_assign.
753         (assign(InputIterator, InputIterator)): Use if constexpr instead
754         of dispatching to _M_assign.
755         (assign(size_type, const T&)): Use if constexpr instead of
756         dispatching to _M_assign_n.
757         (_M_move_assign, _M_assign_n): Do not define for versioned
758         namespace.
759         (_M_assign): Remove.
761 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
763         * include/bits/stl_list.h (operator=(list&&)): Use if constexpr
764         instead of dispatching to _M_move_assign.
765         (_M_move_assign): Do not define for versioned namespace.
767 2024-11-27  Jonathan Wakely  <jwakely@redhat.com>
769         PR libstdc++/105857
770         * config/locale/dragonfly/codecvt_members.cc (do_length): Limit
771         size of alloca buffer to 4k.
772         * config/locale/gnu/codecvt_members.cc (do_length): Likewise.
773         * testsuite/22_locale/codecvt/length/wchar_t/105857.cc: New
774         test.
776 2024-11-26  Jonathan Wakely  <jwakely@redhat.com>
778         PR libstdc++/117751
779         * testsuite/18_support/50594.cc: Edit dg-options to include the
780         -fno-assume-sane-operators-new-delete option.
782 2024-11-26  Jan Hubicka  <hubicka@ucw.cz>
784         * include/bits/deque.tcc (std::deque::_M_reallocate_map): Add
785         __builtin_unreachable check to declare that maps are not very large.
786         * include/bits/stl_deque.h (std::deque::size): Add __builtin_unreachable
787         to check for maximal size of map.
789 2024-11-26  Jonathan Wakely  <jwakely@redhat.com>
791         * include/bits/range_access.h (begin, end, ssize): Add
792         conditional noexcept.
793         * testsuite/18_support/initializer_list/range_access.cc: Check
794         results and noexcept-specifier for std::begin and std::end.
795         * testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
796         Check for conditional noexcept on std::begin and std::end.
797         * testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
798         Likewise.
799         * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
800         Likewise.
801         * testsuite/24_iterators/range_access/range_access.cc: Check
802         conditional noexcept is correct.
803         * testsuite/24_iterators/range_access/range_access_cpp17.cc:
804         Check std::size, std::empty and std::data.
805         * testsuite/24_iterators/range_access/range_access_cpp20.cc:
806         Check conditional noexcept on std::ssize.
808 2024-11-26  Jonathan Wakely  <jwakely@redhat.com>
810         * include/bits/forward_list.h: Use Markdown in Doxygen comments.
812 2024-11-26  Jonathan Wakely  <jwakely@redhat.com>
814         PR libstdc++/117630
815         * src/c++11/Makefile.am: Add new file.
816         * src/c++11/Makefile.in: Regnerate.
817         * src/c++11/cow-stdexcept.cc (error_category::_M_message): Move
818         member function definition to ...
819         * src/c++11/cow-system_error.cc: New file.
821 2024-11-20  Jonathan Wakely  <jwakely@redhat.com>
823         * include/bits/stl_set.h (set::find): Use const_iterator in
824         return type, not iterator.
826 2024-11-20  Jonathan Wakely  <jwakely@redhat.com>
828         PR libstdc++/117686
829         * include/bits/hashtable.h (_Hashtable::_M_emplace_uniq):
830         Adjust usage of __is_key_type to avoid false positive.
831         * testsuite/23_containers/unordered_set/insert/117686.cc:
832         New test.
834 2024-11-19  Jason Merrill  <jason@redhat.com>
836         * src/c++23/libstdc++.modules.json.in: Remove C++ comment.
838 2024-11-18  David Malcolm  <dmalcolm@redhat.com>
840         * testsuite/lib/libstdc++.exp: Add
841         "load_gcc_lib dg-test-cleanup.exp".
843 2024-11-18  Jonathan Wakely  <jwakely@redhat.com>
845         * include/bits/hashtable.h (_Hashtable::_M_src_hash_code):
846         Improve comments.
847         (_Hashtable::_M_merge_unique(_Hashtable&)): Use pointer_traits
848         to get before-begin pointer. Only use static_cast on valid
849         nodes, not the before-begin pointer. Reuse a hash code cached in
850         the node when possible.
851         (_Hashtable::_M_merge_multi(_Hashtable&)): Likewise.
853 2024-11-18  Gerald Pfeifer  <gerald@pfeifer.com>
855         * doc/xml/manual/allocator.xml: Update reference to Angelika
856         Langer's article.
857         * doc/html/manual/memory.html: Regenerate.
859 2024-11-17  Jason Merrill  <jason@redhat.com>
861         PR libstdc++/106852
862         * include/bits/version.def: Add __cpp_lib_modules.
863         * include/bits/version.h: Regenerate.
864         * src/c++23/Makefile.am: Add modules std and std.compat.
865         * src/c++23/Makefile.in: Regenerate.
866         * src/c++23/std-clib.cc.in: New file.
867         * src/c++23/std.cc.in: New file.
868         * src/c++23/std.compat.cc.in: New file.
869         * src/c++23/libstdc++.modules.json.in: New file.
871 2024-11-17  Gerald Pfeifer  <gerald@pfeifer.com>
873         * doc/xml/manual/intro.xml: Move a gcc.gnu.org link to https.
874         * doc/html/manual/license.html: Regenerate.
876 2024-11-17  Gerald Pfeifer  <gerald@pfeifer.com>
878         * doc/xml/manual/io.xml: Update link to Angelika Langer's book.
879         * doc/html/manual/streambufs.html: Regenerate.
881 2024-11-17  Jan Hubicka  <hubicka@ucw.cz>
883         PR tree-optimization/109442
884         * include/bits/stl_vector.h: (vector::size(),
885         vector::capacity()): Add __builtin_unreachable call to announce
886         that size and capacity are non-negative.
888 2024-11-16  Jonathan Wakely  <jwakely@redhat.com>
890         * Makefile.am: Use $(MAKE) -C dir instead of cd dir && $(MAKE).
891         * Makefile.in: Regenerate.
893 2024-11-15  Jonathan Wakely  <jwakely@redhat.com>
895         * include/bits/stl_list.h (list::emplace_back): Fix indentation.
897 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
899         * include/bits/ranges_algo.h (__is_permutation_fn::operator()):
900         Short-circuit for sized ranges with different sizes, as per LWG
901         3560.
902         * include/bits/ranges_algobase.h (__equal_fn::operator()):
903         Likewise.
904         * include/bits/stl_algo.h (__is_permutation): Use if-constexpr
905         for random access iterator branches.
906         * include/bits/stl_algobase.h (__equal4): Likewise.
907         * testsuite/25_algorithms/equal/lwg3560.cc: New test.
908         * testsuite/25_algorithms/is_permutation/lwg3560.cc: New test.
910 2024-11-14  Patrick Palka  <ppalka@redhat.com>
912         * include/std/ranges (keys_view): Adjust as per LWG 3563.
913         (values_view): Likewise.
914         * testsuite/std/ranges/adaptors/elements.cc (test08): New test.
916 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
918         * include/bits/ranges_util.h (subrange::begin): Fix constraint,
919         as per LWG 3589.
920         * testsuite/std/ranges/subrange/lwg3589.cc: New test.
922 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
924         * include/bits/c++config (_GLIBCXX_NODISCARD): Expand for C++11
925         and C++14.
926         * testsuite/22_locale/locale/cons/12438.cc: Adjust dg-warning to
927         expect nodiscard warnings for C++11 and C++14 as well.
928         * testsuite/22_locale/locale/operations/2.cc: Likewise.
929         * testsuite/25_algorithms/equal/debug/1_neg.cc: Likewise.
930         * testsuite/25_algorithms/equal/debug/2_neg.cc: Likewise.
931         * testsuite/25_algorithms/equal/debug/3_neg.cc: Likewise.
932         * testsuite/25_algorithms/find_first_of/concept_check_1.cc:
933         Likewise.
934         * testsuite/25_algorithms/is_permutation/2.cc: Likewise.
935         * testsuite/25_algorithms/lexicographical_compare/71545.cc:
936         Likewise.
937         * testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
938         * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc:
939         Likewise.
940         * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc:
941         Likewise.
942         * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc: Likewise.
943         * testsuite/25_algorithms/minmax/3.cc: Likewise.
944         * testsuite/25_algorithms/search/78346.cc: Likewise.
945         * testsuite/25_algorithms/search_n/58358.cc: Likewise.
946         * testsuite/25_algorithms/unique/1.cc: Likewise.
947         * testsuite/25_algorithms/unique/11480.cc: Likewise.
948         * testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
949         * testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc:
950         Likewise.
951         * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc: Likewise.
952         * testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc:
953         Likewise.
954         * testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc:
955         Likewise.
956         * testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
957         Likewise.
958         * testsuite/ext/concept_checks.cc: Likewise.
959         * testsuite/ext/is_heap/47709.cc: Likewise.
960         * testsuite/ext/is_sorted/cxx0x.cc: Likewise.
962 2024-11-14  Jason Merrill  <jason@redhat.com>
964         * include/precompiled/stdc++.h: <coroutine> is C++20.
966 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
968         * include/bits/stl_iterator.h (operator+): Add constraint to
969         move_iterator operator.
970         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
972 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
974         * include/bits/stl_iterator.h (__normal_iterator): Replace
975         enable_if constraint with requires-clause.
977 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
979         * include/bits/stl_iterator.h: Make use of feature test macros
980         more consistent. Improve doxygen comments.
982 2024-11-14  Jonathan Wakely  <jwakely@redhat.com>
984         PR libstdc++/117560
985         * include/bits/fs_dir.h (enable_borrowed_range, enable_view):
986         Define specializations for directory iterators, as per LWG 3480.
987         * testsuite/27_io/filesystem/iterators/lwg3480.cc: New test.
989 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
991         * doc/xml/manual/evolution.xml: Document removal of nested types
992         from std::hash specializations.
993         * doc/html/manual/api.html: Regenerate.
994         * include/bits/functional_hash.h (__hash_base): Remove
995         deprecated nested types for C++20.
996         (__hash_empty_base): Define new class template.
997         (__is_hash_enabled_for): Define new variable template.
998         (__poison_hash): Remove.
999         (__hash_not_enabled): Define new class template.
1000         (__hash_enum): Remove partial specialization for non-enums.
1001         (hash): Derive from __hash_not_enabled for non-enums, instead of
1002         __hash_enum.
1003         * include/bits/unique_ptr.h (__uniq_ptr_hash): Derive from
1004         __hash_base. Conditionally derive from __hash_empty_base.
1005         (__uniq_ptr_hash<>): Remove disabled specialization.
1006         (hash): Do not derive from __hash_base unconditionally.
1007         Conditionally derive from either __uniq_ptr_hash or
1008         __hash_not_enabled.
1009         * include/std/optional (__optional_hash_call_base): Remove.
1010         (__optional_hash): Define new class template.
1011         (hash): Derive from either
1012         (hash): Conditionally derive from either __optional_hash or
1013         __hash_not_enabled. Remove nested typedefs.
1014         * include/std/variant (_Base_dedup): Replace __poison_hash with
1015         __hash_empty_base.
1016         (__variant_hash_call_base_impl): Remove.
1017         (__variant_hash): Define new class template.
1018         (hash): Conditionally derive from either __variant_hash or
1019         __hash_not_enabled. Remove nested typedefs.
1020         * testsuite/20_util/optional/hash.cc: Check whether nested types
1021         are present.
1022         * testsuite/20_util/variant/hash.cc: Likewise.
1023         * testsuite/20_util/optional/hash_abi.cc: New test.
1024         * testsuite/20_util/unique_ptr/hash/abi.cc: New test.
1025         * testsuite/20_util/unique_ptr/hash/types.cc: New test.
1026         * testsuite/20_util/variant/hash_abi.cc: New test.
1028 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1030         * include/bits/hashtable.h (__location_type): New struct.
1031         (_M_locate): New member function.
1032         (_M_find_before_node(const key_type&)): Remove.
1033         (_M_find_node): Move variable initialization into condition.
1034         (_M_find_node_tr): Likewise.
1035         (operator=(initializer_list<T>), try_emplace, _M_reinsert_node)
1036         (_M_merge_unique, find, erase(const key_type&)): Use _M_locate
1037         for lookup.
1039 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1041         * include/bits/hashtable.h (_M_merge_unique): Add overload for
1042         merging from same type.
1043         (_M_merge_unique<Compatible>): Simplify size tracking. Add
1044         comment.
1045         (_M_merge_multi): Add overload for merging from same type.
1046         (_M_merge_multi<Compatible>): Add comment.
1047         * include/bits/unordered_map.h (unordered_map::merge): Check for
1048         self-merge in the lvalue overload. Call _M_merge_unique directly
1049         for the rvalue overload.
1050         (unordered_multimap::merge): Likewise.
1051         * include/bits/unordered_set.h (unordered_set::merge): Likewise.
1052         (unordered_multiset::merge): Likewise.
1053         * testsuite/23_containers/unordered_map/modifiers/merge.cc:
1054         Add more tests.
1055         * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
1056         Likewise.
1057         * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
1058         Likewise.
1059         * testsuite/23_containers/unordered_set/modifiers/merge.cc:
1060         Likewise.
1062 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1064         * include/bits/hashtable_policy.h (_Hashtable_base::_S_equals):
1065         Remove.
1066         (_Hashtable_base::_S_node_equals): Remove.
1067         (_Hashtable_base::_M_key_equals_tr): Fix inaccurate
1068         static_assert string.
1069         (_Hashtable_base::_M_equals, _Hashtable_base::_M_equals_tr): Use
1070         'if constexpr' instead of _S_equals.
1071         (_Hashtable_base::_M_node_equals): Use 'if constexpr' instead of
1072         _S_node_equals.
1074 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1076         * include/bits/hashtable.h (_Hashtable): Remove _Equality base
1077         class.
1078         (_Hashtable::_M_equal): Define equality comparison here instead
1079         of in _Equality::_M_equal.
1080         * include/bits/hashtable_policy.h (_Equality): Remove.
1082 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1084         * include/bits/hashtable.h (_Hashtable): Remove inheritance from
1085         __detail::_Insert and move its members into _Hashtable.
1086         * include/bits/hashtable_policy.h (__detail::_Insert): Remove.
1088 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1090         * include/bits/hashtable.h (operator=(const _Hashtable&)): Use
1091         RAII instead of try-catch.
1092         (_M_assign(_Ht&&, _NodeGenerator&)): Likewise.
1094 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1096         * include/bits/hashtable.h (_Hashtable::__fwd_value_for):
1097         Remove.
1098         (_Hashtable::_M_assign): Use static_cast instead of
1099         __fwd_value_for.
1101 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1103         * include/bits/hashtable.h (_Hashtable): Remove typedefs for
1104         node generators.
1105         (_Hashtable::_M_assign(_Ht&&)): Add new overload.
1106         (_Hashtable::operator=(initializer_list<value_type>)): Add local
1107         typedef for node generator.
1108         (_Hashtable::_M_assign_elements): Likewise.
1109         (_Hashtable::operator=(const _Hashtable&)): Use new _M_assign
1110         overload.
1111         (_Hashtable(const _Hashtable&)): Likewise.
1112         (_Hashtable(const _Hashtable&, const allocator_type&)):
1113         Likewise.
1114         (_Hashtable(_Hashtable&&, __node_alloc_type&&, false_type)):
1115         Likewise.
1116         * include/bits/hashtable_policy.h (_Insert): Remove typedef for
1117         node generator.
1119 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1121         * include/bits/hashtable.h (_Hashtable::_M_erase): Remove
1122         overloads for erasing by key, moving logic to ...
1123         (_Hashtable::erase): ... here.
1125 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1127         PR libstdc++/115285
1128         * include/bits/hashtable.h (_Hashtable::_M_emplace): Replace
1129         with _M_emplace_uniq and _M_emplace_multi.
1130         (_Hashtable::_S_forward_key, _Hashtable::_M_insert_unique)
1131         (_Hashtable::_M_insert_unique_aux, _Hashtable::_M_insert):
1132         Remove.
1133         * include/bits/hashtable_policy.h (_ConvertToValueType):
1134         Remove.
1135         (_Insert_base::_M_insert_range): Remove overload for unique keys
1136         and rename overload for non-unique keys to ...
1137         (_Insert_base::_M_insert_range_multi): ... this.
1138         (_Insert_base::insert): Call _M_emplace_uniq or _M_emplace_multi
1139         instead of _M_insert.  Add insert overloads from _Insert.
1140         (_Insert_base): Rename to _Insert.
1141         (_Insert): Remove
1142         * testsuite/23_containers/unordered_map/96088.cc: Adjust
1143         expected number of allocations.
1144         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
1146 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1148         * include/bits/hashtable_policy.h (_ReuseOrAllocNode::operator()):
1149         Replace parameter pack with a single parameter. Assign to
1150         existing value when possible.
1151         * testsuite/23_containers/unordered_multiset/allocator/move_assign.cc:
1152         Adjust expected count of operations.
1153         * testsuite/23_containers/unordered_set/allocator/move_assign.cc:
1154         Likewise.
1156 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1158         * include/bits/hashtable.h (operator=(initializer_list)):
1159         Refactor to not use _M_insert_range.
1161 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1163         * testsuite/util/testsuite_performance.h (time_counter): Add
1164         comment about times.
1165         (time_counter::system_time): Use correct split value.
1167 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1169         * scripts/check_performance: Add timestamp to output file at
1170         start of run.
1172 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1174         * testsuite/util/testsuite_performance.h: Use
1175         __gnu_cxx::__is_single_threaded instead of __gthread_active_p().
1177 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1179         * testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc: Replace
1180         std::unary_function with result_type and argument_type typedefs.
1181         * testsuite/util/performance/assoc/multimap_common_type.hpp:
1182         Likewise.
1184 2024-11-13  Jonathan Wakely  <jwakely@redhat.com>
1186         * testsuite/performance/20_util/memory_resource/pools.cc: Fix
1187         -Wunused-value warnings about unnamed std::lock_guard objects.
1189 2024-11-11  Jonathan Wakely  <jwakely@redhat.com>
1191         * include/bits/locale_conv.h (wstring_convert, wbuffer_convert):
1192         Adjust strings passed to exception constructors.
1194 2024-11-11  Jonathan Wakely  <jwakely@redhat.com>
1196         PR libstdc++/117520
1197         * include/std/text_encoding (aliases_view:_Iterator::operator+=):
1198         Fix typos that caused == to be used instead of =.
1199         (aliases_view::_Iterator): Fix friend declaration.
1200         * testsuite/std/text_encoding/members.cc: Adjust expected
1201         behaviour of invalid subscript. Add tests for other erroneous
1202         operations on iterators.
1204 2024-11-11  Jonathan Wakely  <jwakely@redhat.com>
1206         * include/bits/unicode.h (_Utf_iterator::_M_read_utf16): Add
1207         parentheses.
1209 2024-11-08  Jakub Jelinek  <jakub@redhat.com>
1211         * libsupc++/new (::operator new, ::operator new[]): Add malloc
1212         attribute where missing.  Add alloc_align attribute when
1213         std::align_val_t is present and where it was missing.  Formatting fix.
1215 2024-11-08  Jonathan Wakely  <jwakely@redhat.com>
1217         * include/bits/hashtable.h (_Hashtable): Add 'inline' to some
1218         one-line constructors.
1220 2024-11-08  Jonathan Wakely  <jwakely@redhat.com>
1222         * include/bits/hashtable_policy.h (_Insert_base::try_emplace):
1223         Do not define for C++11 and C++14.
1224         * include/debug/map.h (try_emplace): Use feature test macro.
1225         * include/debug/unordered_map (try_emplace): Likewise.
1226         * testsuite/17_intro/names.cc: Define try_emplace before C++17.
1228 2024-11-08  Jonathan Wakely  <jwakely@redhat.com>
1230         * include/bits/hashtable_policy.h (__distance_fw): Replace tag
1231         dispatching with 'if constexpr'.
1233 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1235         * include/bits/hashtable.h (_M_insert_unique_node): Improve
1236         comment.
1238 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1240         PR libstdc++/115285
1241         * include/bits/hashtable.h (_Hashtable::_S_forward_key): Remove.
1242         (_Hashtable::_M_insert_unique_aux): Replace _S_forward_key with
1243         a static_cast to a type defined using conditional_t.
1244         (_Hashtable::_M_insert): Replace _ConvertToValueType with a
1245         static_cast to a type defined using conditional_t.
1246         * include/bits/hashtable_policy.h (_ConvertToValueType): Remove.
1247         * testsuite/23_containers/unordered_map/insert/115285.cc: New test.
1248         * testsuite/23_containers/unordered_set/insert/115285.cc: New test.
1249         * testsuite/23_containers/unordered_set/96088.cc: Adjust
1250         expected number of allocations.
1252 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1254         * include/bits/stl_pair.h (__is_pair): Define for C++11 and
1255         C++14 as well.
1257 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1259         * include/bits/hashtable.h (_Hashtable): Fix comment grammar.
1261 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1263         * include/bits/hashtable.h: Add is_permutation to comment.
1264         * include/bits/hashtable_policy.h: Remove it from comment.
1266 2024-11-07  Jonathan Wakely  <jwakely@redhat.com>
1268         * include/bits/hashtable.h: Fix spelling in comment.
1270 2024-11-06  Jonathan Wakely  <jwakely@redhat.com>
1272         * doc/xml/manual/evolution.xml: Document deprecations.
1273         * doc/html/*: Regenerate.
1274         * include/c_compatibility/complex.h (_GLIBCXX_COMPLEX_H): Move
1275         include guard to start of file. Include <complex> directly
1276         instead of <ccomplex>.
1277         * include/c_compatibility/tgmath.h: Include <cmath> and
1278         <complex> directly, instead of <ctgmath>.
1279         * include/c_global/ccomplex: Add deprecated #warning for C++17
1280         and #error for C++20 if _GLIBCXX_USE_DEPRECATED == 0.
1281         * include/c_global/ciso646: Likewise.
1282         * include/c_global/cstdalign: Likewise.
1283         * include/c_global/cstdbool: Likewise.
1284         * include/c_global/ctgmath: Likewise.
1285         * include/c_std/ciso646: Likewise.
1286         * include/precompiled/stdc++.h: Do not include ccomplex,
1287         ciso646, cstdalign, cstdbool, or ctgmath in C++17 and later.
1288         * testsuite/18_support/headers/cstdalign/macros.cc: Check for
1289         warnings and errors for unsupported dialects.
1290         * testsuite/18_support/headers/cstdbool/macros.cc: Likewise.
1291         * testsuite/26_numerics/headers/ctgmath/complex.cc: Likewise.
1292         * testsuite/27_io/objects/char/1.cc: Do not include <ciso646>.
1293         * testsuite/27_io/objects/wchar_t/1.cc: Likewise.
1294         * testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc: Removed.
1295         * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: Removed.
1296         * testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc: Removed.
1297         * testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc: Removed.
1298         * testsuite/18_support/headers/ciso646/macros.cc: New test.
1299         * testsuite/18_support/headers/ciso646/macros.h.cc: New test.
1300         * testsuite/18_support/headers/cstdbool/macros.h.cc: New test.
1301         * testsuite/26_numerics/headers/ccomplex/complex.cc: New test.
1302         * testsuite/26_numerics/headers/ccomplex/complex.h.cc: New test.
1303         * testsuite/26_numerics/headers/ctgmath/complex.h.cc: New test.
1304         * testsuite/18_support/headers/cstdalign/macros.h.cc: New file.
1306 2024-11-06  Jonathan Wakely  <jwakely@redhat.com>
1308         * include/c_compatibility/complex.h (_GLIBCXX_COMPLEX_H): Move
1309         include guard to start of the header.
1310         * include/c_global/ctgmath (_GLIBCXX_CTGMATH): Likewise.
1312 2024-11-06  Jonathan Wakely  <jwakely@redhat.com>
1314         * include/bits/shared_ptr_base.h (__shared_ptr_deref): New
1315         function template.
1316         (__shared_ptr_access, __shared_ptr_access<>): Use it.
1318 2024-11-06  Jonathan Wakely  <jwakely@redhat.com>
1320         * src/c++17/fs_dir.cc (fs::directory_iterator::operator*): Use
1321         shared_ptr::operator* instead of shared_ptr::operator->.
1322         (fs::recursive_directory_iterator::options): Likewise.
1323         (fs::recursive_directory_iterator::depth): Likewise.
1324         (fs::recursive_directory_iterator::recursion_pending): Likewise.
1325         (fs::recursive_directory_iterator::operator*): Likewise.
1326         (fs::recursive_directory_iterator::disable_recursion_pending):
1327         Likewise.
1329 2024-11-04  Nathaniel Shead  <nathanieloshead@gmail.com>
1331         PR testsuite/113710
1332         PR c++/113814
1333         * include/bits/stl_pair.h: Remove workaround.
1335 2024-11-04  Jakub Jelinek  <jakub@redhat.com>
1337         PR libstdc++/117406
1338         * testsuite/26_numerics/headers/cmath/117406.cc: Use
1339         std::numeric_limits<int>::max() instead of INT_MAX.
1341 2024-11-02  Jakub Jelinek  <jakub@redhat.com>
1343         PR libstdc++/117406
1344         * include/c_global/cmath (std::ilogb(_Float16), std::llrint(_Float16),
1345         std::llround(_Float16), std::lrint(_Float16), std::lround(_Float16)):
1346         Don't cast __builtin_* return to _Float16.
1347         (std::ilogb(__gnu_cxx::__bfloat16_t),
1348         std::llrint(__gnu_cxx::__bfloat16_t),
1349         std::llround(__gnu_cxx::__bfloat16_t),
1350         std::lrint(__gnu_cxx::__bfloat16_t),
1351         std::lround(__gnu_cxx::__bfloat16_t)): Don't cast __builtin_* return to
1352         __gnu_cxx::__bfloat16_t.
1353         * testsuite/26_numerics/headers/cmath/117406.cc: New test.
1355 2024-11-01  Jonathan Wakely  <jwakely@redhat.com>
1357         * include/bits/unordered_map.h: Check __glibcxx_node_extract and
1358         __glibcxx_unordered_map_try_emplace instead of __cplusplus.
1359         * include/bits/unordered_set.h: Check __glibcxx_node_extract
1360         instead of __cplusplus.
1362 2024-11-01  Jonathan Wakely  <jwakely@redhat.com>
1364         * include/bits/hashtable.h: Improve comments.
1366 2024-11-01  Jonathan Wakely  <jwakely@redhat.com>
1368         PR libstdc++/111055
1369         * include/bits/forward_list.h
1370         (forward_list(from_range, R&&, const Alloc&), assign_range)
1371         (prepend_range, insert_range_after): Define.
1372         * include/bits/stl_list.h (list(from_range, R&&, const Alloc&))
1373         (assign_range, prepend_range, append_range, insert_range):
1374         Define.
1375         * include/debug/forward_list
1376         (forward_list(from_range, R&&, const Alloc&), assign_range)
1377         (prepend_range, insert_range_after): Define.
1378         * include/debug/list (list(from_range, R&&, const Alloc&))
1379         (assign_range, prepend_range, append_range, insert_range):
1380         Define.
1381         * testsuite/23_containers/forward_list/cons/from_range.cc: New
1382         test.
1383         * testsuite/23_containers/forward_list/modifiers/assign_range.cc:
1384         New test.
1385         * testsuite/23_containers/forward_list/modifiers/insert_range_after.cc:
1386         New test.
1387         * testsuite/23_containers/forward_list/modifiers/prepend_range.cc:
1388         New test.
1389         * testsuite/23_containers/list/cons/from_range.cc: New test.
1390         * testsuite/23_containers/list/modifiers/append_range.cc: New
1391         test.
1392         * testsuite/23_containers/list/modifiers/assign/assign_range.cc:
1393         New test.
1394         * testsuite/23_containers/list/modifiers/insert/insert_range.cc:
1395         New test.
1396         * testsuite/23_containers/list/modifiers/prepend_range.cc: New
1397         test.
1399 2024-11-01  Jonathan Wakely  <jwakely@redhat.com>
1401         * testsuite/23_containers/unordered_set/pr115285.cc: Include
1402         missing header for std::vector.
1404 2024-11-01  Jonathan Wakely  <jwakely@redhat.com>
1406         * libsupc++/typeinfo: Remove whitespace in #endif
1408 2024-10-31  Jonathan Wakely  <jwakely@redhat.com>
1410         * libsupc++/new (operator new): Add attribute align_alloc(2) to
1411         overloads taking a std::align_val_t argument.
1412         * testsuite/18_support/new_aligned_warn.cc: New test.
1414 2024-10-30  Jonathan Wakely  <jwakely@redhat.com>
1416         * testsuite/23_containers/vector/cons/from_range.cc: Fix copy &
1417         paste error in comment.
1418         * testsuite/23_containers/vector/modifiers/append_range.cc:
1419         Likewise.
1420         * testsuite/23_containers/vector/modifiers/assign/assign_range.cc:
1421         Likewise.
1422         * testsuite/23_containers/vector/modifiers/insert/insert_range.cc:
1423         Likewise.
1425 2024-10-30  Jonathan Wakely  <jwakely@redhat.com>
1427         * doc/xml/manual/using_exceptions.xml: Fix typos and grammatical
1428         errors.
1429         * doc/html/manual/using_exceptions.html: Regenerate.
1431 2024-10-30  Jonathan Wakely  <jwakely@redhat.com>
1433         * include/bits/c++config (_GLIBCXX_DOUBLE_IS_IEEE_BINARY32):
1434         Define.
1435         (_GLIBCXX_LDOUBLE_IS_IEEE_BINARY64): Define.
1436         (_GLIBCXX_LDOUBLE_IS_IEEE_BINARY32): Define.
1437         * include/bits/cpp_type_traits.h (__memcpyable): Define
1438         specializations when double and long double are compatible.
1440 2024-10-30  Jonathan Wakely  <jwakely@redhat.com>
1442         * include/bits/cpp_type_traits.h (__memcpyable): Add
1443         specializations for compatible floating-point types.
1445 2024-10-29  Patrick Palka  <ppalka@redhat.com>
1447         PR libstdc++/112641
1448         * include/std/ranges (drop_view::begin): Reimplement const
1449         overload so that it's O(1) always.
1450         * testsuite/std/ranges/adaptors/drop.cc (test10): New test.
1452 2024-10-29  Jakub Jelinek  <jakub@redhat.com>
1454         PR libstdc++/117321
1455         * include/c_global/cmath (nextafter(_Float16, _Float16)): Use
1456         if consteval rather than if (std::__is_constant_evaluated()) around
1457         the __builtin_nextafterf16 call.
1458         (nextafter(__gnu_cxx::__bfloat16_t, __gnu_cxx::__bfloat16_t)): Use
1459         if consteval rather than if (std::__is_constant_evaluated()) around
1460         the __builtin_nextafterf16b call.
1461         * testsuite/26_numerics/headers/cmath/117321.cc: New test.
1463 2024-10-28  Jonathan Wakely  <jwakely@redhat.com>
1465         * testsuite/23_containers/vector/bool/cons/from_range.cc: Use
1466         dg-do run instead of compile.
1467         (test_ranges): Use do_test instead of do_test_a for rvalue
1468         range.
1469         (test_constexpr): Call function template instead of just
1470         instantiating it.
1471         * testsuite/23_containers/vector/bool/modifiers/assign/assign_range.cc:
1472         Use dg-do run instead of compile.
1473         (do_test): Use same test logic for vector<bool> as for primary
1474         template.
1475         (test_constexpr): Call function template instead of just
1476         instantiating it.
1477         * testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc:
1478         Use dg-do run instead of compile.
1479         (test_ranges): Use do_test instead of do_test_a for rvalue
1480         range.
1481         (test_constexpr): Call function template instead of just
1482         instantiating it.
1483         * testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc:
1484         Use dg-do run instead of compile.
1485         (do_test): Fix incorrect function arguments to match intended
1486         results.
1487         (test_ranges): Use do_test instead of do_test_a for rvalue
1488         range.
1489         (test_constexpr): Call function template instead of just
1490         instantiating it.
1491         * testsuite/23_containers/vector/cons/from_range.cc: Use dg-do
1492         run instead of compile.
1493         (test_ranges): Fix ill-formed call to do_test.
1494         (test_constexpr): Call function template instead of just
1495         instantiating it.
1496         * testsuite/23_containers/vector/modifiers/append_range.cc:
1497         Use dg-do run instead of compile.
1498         (test_constexpr): Likewise.
1499         * testsuite/23_containers/vector/modifiers/assign/assign_range.cc:
1500         Use dg-do run instead of compile.
1501         (do_test): Do not reuse input ranges.
1502         (test_constexpr): Call function template instead of just
1503         instantiating it.
1504         * testsuite/23_containers/vector/modifiers/insert/insert_range.cc:
1505         Use dg-do run instead of compile.
1506         (do_test): Fix incorrect function arguments to match intended
1507         results.
1508         (test_constexpr): Call function template instead of just
1509         instantiating it.
1511 2024-10-27  Jonathan Wakely  <jwakely@redhat.com>
1513         PR libstdc++/111055
1514         * include/bits/ranges_base.h (__container_compatible_range): New
1515         concept.
1516         * include/bits/stl_bvector.h (vector(from_range, R&&, const Alloc&))
1517         (assign_range, insert_range, append_range): Define.
1518         * include/bits/stl_uninitialized.h (__do_uninit_copy): Support
1519         non-common ranges.
1520         (__uninitialized_copy_a): Likewise.
1521         * include/bits/stl_vector.h (_Vector_base::_M_append_range_to):
1522         New function.
1523         (_Vector_base::_M_append_range): Likewise.
1524         (vector(from_range, R&&, const Alloc&), assign_range): Define.
1525         (append_range): Define.
1526         (insert_range): Declare.
1527         * include/debug/vector (vector(from_range, R&&, const Alloc&))
1528         (assign_range, insert_range, append_range): Define.
1529         * include/bits/vector.tcc (insert_range): Define.
1530         * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_rval):
1531         New class template.
1532         * testsuite/23_containers/vector/bool/cons/from_range.cc: New test.
1533         * testsuite/23_containers/vector/bool/modifiers/assign/assign_range.cc:
1534         New test.
1535         * testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc:
1536         New test.
1537         * testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc:
1538         New test.
1539         * testsuite/23_containers/vector/cons/from_range.cc: New test.
1540         * testsuite/23_containers/vector/modifiers/append_range.cc: New test.
1541         * testsuite/23_containers/vector/modifiers/assign/assign_range.cc:
1542         New test.
1543         * testsuite/23_containers/vector/modifiers/insert/insert_range.cc:
1544         New test.
1546 2024-10-27  Jonathan Wakely  <jwakely@redhat.com>
1548         * include/bits/stl_bvector.h (emplace_back, emplace): Forward
1549         parameter pack to preserve value category.
1550         * testsuite/23_containers/vector/bool/emplace_rvalue.cc: New
1551         test.
1553 2024-10-25  Jonathan Wakely  <jwakely@redhat.com>
1555         * testsuite/21_strings/basic_string/operators/char/op_plus_string_view.cc:
1556         Check __cpp_lib_constexpr_string.
1558 2024-10-25  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
1560         * include/bits/basic_string.h: Implement the four operator+
1561         overloads between basic_string and (types convertible to)
1562         basic_string_view.
1563         * include/bits/version.def: Bump the feature-testing macro.
1564         * include/bits/version.h: Regenerate.
1565         * testsuite/21_strings/basic_string/operators/char/op_plus_fspath_neg.cc: New test.
1566         * testsuite/21_strings/basic_string/operators/char/op_plus_string_view.cc: New test.
1567         * testsuite/21_strings/basic_string/operators/char/op_plus_string_view_compat.cc:
1568         New test.
1570 2024-10-25  Jakub Jelinek  <jakub@redhat.com>
1572         * include/debug/debug.h: Remove trailing whitespace.
1573         * include/parallel/base.h: Likewise.
1574         * include/parallel/types.h: Likewise.
1575         * include/parallel/settings.h: Likewise.
1576         * include/parallel/multiseq_selection.h: Likewise.
1577         * include/parallel/partition.h: Likewise.
1578         * include/parallel/random_number.h: Likewise.
1579         * include/parallel/find_selectors.h: Likewise.
1580         * include/parallel/partial_sum.h: Likewise.
1581         * include/parallel/list_partition.h: Likewise.
1582         * include/parallel/search.h: Likewise.
1583         * include/parallel/algorithmfwd.h: Likewise.
1584         * include/parallel/random_shuffle.h: Likewise.
1585         * include/parallel/multiway_mergesort.h: Likewise.
1586         * include/parallel/sort.h: Likewise.
1587         * include/parallel/algobase.h: Likewise.
1588         * include/parallel/numericfwd.h: Likewise.
1589         * include/parallel/multiway_merge.h: Likewise.
1590         * include/parallel/losertree.h: Likewise.
1591         * include/bits/basic_ios.h: Likewise.
1592         * include/bits/stringfwd.h: Likewise.
1593         * include/bits/ostream_insert.h: Likewise.
1594         * include/bits/stl_heap.h: Likewise.
1595         * include/bits/unordered_map.h: Likewise.
1596         * include/bits/hashtable_policy.h: Likewise.
1597         * include/bits/stl_iterator_base_funcs.h: Likewise.
1598         * include/bits/valarray_before.h: Likewise.
1599         * include/bits/regex.h: Likewise.
1600         * include/bits/postypes.h: Likewise.
1601         * include/bits/stl_iterator.h: Likewise.
1602         * include/bits/localefwd.h: Likewise.
1603         * include/bits/stl_algo.h: Likewise.
1604         * include/bits/ios_base.h: Likewise.
1605         * include/bits/stl_function.h: Likewise.
1606         * include/bits/basic_string.h: Likewise.
1607         * include/bits/hashtable.h: Likewise.
1608         * include/bits/valarray_after.h: Likewise.
1609         * include/bits/char_traits.h: Likewise.
1610         * include/bits/gslice.h: Likewise.
1611         * include/bits/locale_facets_nonio.h: Likewise.
1612         * include/bits/mask_array.h: Likewise.
1613         * include/bits/specfun.h: Likewise.
1614         * include/bits/random.h: Likewise.
1615         * include/bits/slice_array.h: Likewise.
1616         * include/bits/valarray_array.h: Likewise.
1617         * include/tr1/float.h: Likewise.
1618         * include/tr1/functional_hash.h: Likewise.
1619         * include/tr1/math.h: Likewise.
1620         * include/tr1/hashtable_policy.h: Likewise.
1621         * include/tr1/stdio.h: Likewise.
1622         * include/tr1/complex.h: Likewise.
1623         * include/tr1/stdbool.h: Likewise.
1624         * include/tr1/stdarg.h: Likewise.
1625         * include/tr1/inttypes.h: Likewise.
1626         * include/tr1/fenv.h: Likewise.
1627         * include/tr1/stdlib.h: Likewise.
1628         * include/tr1/wchar.h: Likewise.
1629         * include/tr1/tgmath.h: Likewise.
1630         * include/tr1/limits.h: Likewise.
1631         * include/tr1/wctype.h: Likewise.
1632         * include/tr1/stdint.h: Likewise.
1633         * include/tr1/ctype.h: Likewise.
1634         * include/tr1/random.h: Likewise.
1635         * include/tr1/shared_ptr.h: Likewise.
1636         * include/ext/mt_allocator.h: Likewise.
1637         * include/ext/sso_string_base.h: Likewise.
1638         * include/ext/debug_allocator.h: Likewise.
1639         * include/ext/vstring_fwd.h: Likewise.
1640         * include/ext/pointer.h: Likewise.
1641         * include/ext/pod_char_traits.h: Likewise.
1642         * include/ext/malloc_allocator.h: Likewise.
1643         * include/ext/vstring.h: Likewise.
1644         * include/ext/bitmap_allocator.h: Likewise.
1645         * include/ext/pool_allocator.h: Likewise.
1646         * include/ext/type_traits.h: Likewise.
1647         * include/ext/ropeimpl.h: Likewise.
1648         * include/ext/codecvt_specializations.h: Likewise.
1649         * include/ext/throw_allocator.h: Likewise.
1650         * include/ext/extptr_allocator.h: Likewise.
1651         * include/ext/atomicity.h: Likewise.
1652         * include/ext/concurrence.h: Likewise.
1653         * include/c_compatibility/wchar.h: Likewise.
1654         * include/c_compatibility/stdint.h: Likewise.
1655         * include/backward/hash_fun.h: Likewise.
1656         * include/backward/binders.h: Likewise.
1657         * include/backward/hashtable.h: Likewise.
1658         * include/backward/auto_ptr.h: Likewise.
1659         * libsupc++/eh_arm.cc: Likewise.
1660         * libsupc++/unwind-cxx.h: Likewise.
1661         * libsupc++/si_class_type_info.cc: Likewise.
1662         * libsupc++/vec.cc: Likewise.
1663         * libsupc++/class_type_info.cc: Likewise.
1664         * libsupc++/vmi_class_type_info.cc: Likewise.
1665         * libsupc++/guard_error.cc: Likewise.
1666         * libsupc++/bad_typeid.cc: Likewise.
1667         * libsupc++/eh_personality.cc: Likewise.
1668         * libsupc++/atexit_arm.cc: Likewise.
1669         * libsupc++/pmem_type_info.cc: Likewise.
1670         * libsupc++/vterminate.cc: Likewise.
1671         * libsupc++/eh_terminate.cc: Likewise.
1672         * libsupc++/bad_cast.cc: Likewise.
1673         * libsupc++/exception_ptr.h: Likewise.
1674         * libsupc++/eh_throw.cc: Likewise.
1675         * libsupc++/bad_alloc.cc: Likewise.
1676         * libsupc++/nested_exception.cc: Likewise.
1677         * libsupc++/pointer_type_info.cc: Likewise.
1678         * libsupc++/pbase_type_info.cc: Likewise.
1679         * libsupc++/bad_array_new.cc: Likewise.
1680         * libsupc++/pure.cc: Likewise.
1681         * libsupc++/eh_exception.cc: Likewise.
1682         * libsupc++/bad_array_length.cc: Likewise.
1683         * libsupc++/cxxabi.h: Likewise.
1684         * libsupc++/guard.cc: Likewise.
1685         * libsupc++/eh_catch.cc: Likewise.
1686         * libsupc++/cxxabi_forced.h: Likewise.
1687         * libsupc++/tinfo.h: Likewise.
1689 2024-10-24  François Dumont  <frs.dumont@gmail.com>
1691         * testsuite/23_containers/unordered_map/96088.cc (test03): Fix increments
1692         value when _GLIBCXX_USE_CXX11_ABI is equal to 0.
1694 2024-10-24  Jonathan Wakely  <jwakely@redhat.com>
1696         * testsuite/26_numerics/complex/ext_c++23.cc: Fix typo in macro.
1697         * testsuite/26_numerics/headers/cmath/constexpr_std_c++23.cc:
1698         Likewise.
1699         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc:
1700         Likewise.
1701         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc:
1702         Likewise.
1704 2024-10-24  Jonathan Wakely  <jwakely@redhat.com>
1706         * include/std/variant (__throw_bad_variant_access(unsigned)):
1707         Define new function as inline friend, with namespace-scope
1708         declaration using noreturn attribute.
1709         (__throw_bad_variant_access(const char*)): Remove.
1710         (__throw_bad_variant_access(bool)): Remove.
1711         (visit, visit<R>): Adjust calls to __throw_bad_variant_access.
1713 2024-10-24  Ricardo Jesus  <rjj@nvidia.com>
1715         * config/cpu/aarch64/opt/ext/opt_random.h (__VEXT): Replace uses
1716         of __builtin_shuffle with __builtin_shufflevector.
1717         (__aarch64_lsl_128): Move shift amount to a template parameter.
1718         (__aarch64_lsr_128): Move shift amount to a template parameter.
1719         (__aarch64_recursion): Update call sites of __aarch64_lsl_128
1720         and __aarch64_lsr_128.
1722 2024-10-23  Jonathan Wakely  <jwakely@redhat.com>
1724         * testsuite/18_support/headers/cstdalign/macros.cc: New test.
1726 2024-10-23  Jonathan Wakely  <jwakely@redhat.com>
1728         * doc/xml/manual/evolution.xml: Document that assertions are
1729         enabled for unoptimized builds.
1730         * doc/html/*: Regenerate.
1732 2024-10-23  Jonathan Wakely  <jwakely@redhat.com>
1734         * doc/xml/manual/test.xml: Add GLIBCXX_TESTSUITE_STDS example.
1735         * doc/html/manual/test.html: Regenerate.
1737 2024-10-23  Jonathan Wakely  <jwakely@redhat.com>
1739         * include/bits/basic_string.h (assign(Iter, Iter)): Call
1740         std::to_address instead of __to_address.
1742 2024-10-23  François Dumont  <frs.dumont@gmail.com>
1744         PR libstdc++/115285
1745         * include/bits/hashtable.h (_S_forward_key<_Kt>): Always return a temporary
1746         key_type instance.
1747         * testsuite/23_containers/unordered_map/96088.cc: Adapt to additional instanciation.
1748         Also check that mapped_type is not instantiated when there is no insertion.
1749         * testsuite/23_containers/unordered_multimap/96088.cc: Adapt to additional
1750         instanciation.
1751         * testsuite/23_containers/unordered_multiset/96088.cc: Likewise.
1752         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
1753         * testsuite/23_containers/unordered_set/pr115285.cc: New test case.
1755 2024-10-22  Patrick Palka  <ppalka@redhat.com>
1757         * include/std/ranges (concat_view::begin): Add space after
1758         'requires' starting a requires-clause.
1759         (concat_view::end): Likewise.  Refine condition for returning an
1760         iterator rather than default_sentinel as per LWG 4166.
1761         * testsuite/std/ranges/concat/1.cc (test03): Verify LWG 4166
1762         example.
1764 2024-10-22  Jonathan Wakely  <jwakely@redhat.com>
1766         * include/bits/basic_string.h (basic_string::assign): Replace
1767         use of __to_address with __niter_base or std::to_address as
1768         appropriate.
1769         * include/bits/ptr_traits.h (__to_address): Add comment.
1770         * include/bits/shared_ptr_base.h (__shared_ptr): Qualify calls
1771         to __to_address.
1772         * include/bits/stl_algo.h (find): Replace use of __to_address
1773         with __niter_base or std::to_address as appropriate. Only use
1774         either of them when the range is not empty.
1775         * include/bits/stl_iterator.h (__to_address): Remove overload
1776         for __normal_iterator.
1777         * include/debug/safe_iterator.h (__to_address): Remove overload
1778         for _Safe_iterator.
1779         * include/std/ranges (views::counted): Replace use of
1780         __to_address with std::to_address.
1781         * testsuite/24_iterators/normal_iterator/to_address.cc: Removed.
1783 2024-10-21  Jonathan Wakely  <jwakely@redhat.com>
1785         * testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc:
1786         Move to ...
1787         * testsuite/26_numerics/headers/cmath/specfun_c++17.cc: here and
1788         adjust test to be valid for all -std dialects.
1790 2024-10-21  Jonathan Wakely  <jwakely@redhat.com>
1792         * include/bits/stl_vector.h (vector::_M_data_ptr): Remove
1793         non-const overloads. Always return non-const pointer.
1795 2024-10-21  Jonathan Wakely  <jwakely@redhat.com>
1797         PR libstdc++/117220
1798         * include/bits/stl_iterator.h: Move _GLIBCXX_NODISCARD
1799         annotations after __attribute__((__always_inline__)).
1801 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1803         * include/bits/ranges_algobase.h (ranges::__assign_one): Remove.
1804         (__copy_or_move, __copy_or_move_backward): Use std::__assign_one
1805         instead of ranges::__assign_one.
1807 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1809         * include/bits/stl_algobase.h (__copy_move_a1, __copy_move_a)
1810         (__copy_move_backward_a1, __copy_move_backward_a, move_backward)
1811         (__fill_a1, __fill_a, fill, __fill_n_a, fill_n, __equal_aux):
1812         Add always_inline attribute to one-line forwarding functions.
1814 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1816         * include/bits/stl_algo.h (find): Add nodiscard.
1818 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1820         PR libstdc++/115444
1821         PR libstdc++/114817
1822         * include/bits/stl_algo.h (__copy_n): Remove generic overload
1823         and overload for random access iterators.
1824         (copy_n): Inline generic version of __copy_n here. Do not defer
1825         to std::copy for random access iterators.
1826         * include/bits/stl_algobase.h (__copy_move): Remove.
1827         (__nothrow_contiguous_iterator, __memcpyable_iterators): New
1828         concepts.
1829         (__assign_one, _GLIBCXX_TO_ADDR, _GLIBCXX_ADVANCE): New helpers.
1830         (__copy_move_a2): Inline __copy_move logic and conditional
1831         memmove optimization into the most generic overload.
1832         (__copy_n_a): Likewise.
1833         (__copy_move_backward): Remove.
1834         (__copy_move_backward_a2): Inline __copy_move_backward logic and
1835         memmove optimization into the most generic overload.
1836         * testsuite/20_util/specialized_algorithms/uninitialized_copy/114817.cc:
1837         New test.
1838         * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/114817.cc:
1839         New test.
1840         * testsuite/25_algorithms/copy/114817.cc: New test.
1841         * testsuite/25_algorithms/copy/115444.cc: New test.
1842         * testsuite/25_algorithms/copy_n/114817.cc: New test.
1844 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1846         * include/bits/stl_iterator.h (__normal_iterator): Make all
1847         members and overloaded operators constexpr before C++20, and add
1848         always_inline attribute
1849         (__to_address): Add nodiscard and always_inline attributes.
1850         (__make_move_if_noexcept_iterator): Add nodiscard
1851         and make unconditionally constexpr.
1852         (__niter_base(__normal_iterator), __niter_base(Iter)):
1853         Add nodiscard and always_inline attributes.
1854         (__niter_base(reverse_iterator), __niter_base(move_iterator))
1855         (__miter_base): Add inline.
1856         (__niter_wrap(From, To)): Add nodiscard attribute.
1857         (__niter_wrap(const Iter&, Iter)): Add nodiscard and
1858         always_inline attributes.
1860 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1862         PR libstdc++/68350
1863         PR libstdc++/93059
1864         * include/bits/stl_uninitialized.h (__check_constructible)
1865         (_GLIBCXX_USE_ASSIGN_FOR_INIT): Remove.
1866         [C++98] (__unwrappable_niter): New trait.
1867         (__uninitialized_copy<true>): Replace use of std::copy.
1868         (uninitialized_copy): Fix Doxygen comments. Open-code memcpy
1869         optimization for C++11 and later.
1870         (__uninitialized_fill<true>): Replace use of std::fill.
1871         (uninitialized_fill): Fix Doxygen comments. Open-code memset
1872         optimization for C++11 and later.
1873         (__uninitialized_fill_n<true>): Replace use of std::fill_n.
1874         (uninitialized_fill_n): Fix Doxygen comments. Open-code memset
1875         optimization for C++11 and later.
1876         * testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc:
1877         Adjust expected behaviour to match what the standard specifies.
1878         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
1879         Likewise.
1880         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
1881         Adjust dg-error directives.
1882         * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc:
1883         Likewise.
1884         * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc:
1885         Likewise.
1886         * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc:
1887         Likewise.
1888         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc:
1889         Likewise.
1890         * testsuite/23_containers/vector/cons/89164.cc: Likewise.
1891         * testsuite/23_containers/vector/cons/89164_c++17.cc: Likewise.
1893 2024-10-18  Jonathan Wakely  <jwakely@redhat.com>
1895         * include/bits/stl_algobase.h (__niter_base, __niter_wrap): Move
1896         to ...
1897         * include/bits/stl_iterator.h: ... here.
1898         (__niter_base, __miter_base): Move all overloads to the end of
1899         the header.
1900         * testsuite/24_iterators/normal_iterator/wrapping.cc: New test.
1902 2024-10-16  Jonathan Wakely  <jwakely@redhat.com>
1904         * python/libstdcxx/v6/printers.py (strip_fundts_namespace): New.
1905         (StdExpAnyPrinter, StdExpOptionalPrinter): Use it.
1907 2024-10-15  Jonathan Wakely  <jwakely@redhat.com>
1909         PR libstdc++/106676
1910         * include/bits/iterator_concepts.h (__cpp17_fwd_iterator): Use
1911         is_reference instead of is_value_reference.
1912         rvalue references.
1913         * include/std/ranges (transform_view:__iter_cat::_S_iter_cat):
1914         Likewise.
1915         (zip_transform_view::__iter_cat::_S_iter_cat): Likewise.
1916         (adjacent_transform_view::__iter_cat::_S_iter_cat): Likewise.
1917         (join_with_view::__iter_cat::_S_iter_cat): Likewise.
1918         * testsuite/std/ranges/adaptors/transform.cc: Check
1919         iterator_category when the transformation function returns an
1920         rvalue reference type.
1922 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1924         * include/std/ranges (transform_view:_Iterator): Use const F&
1925         to determine value_type and iterator_category of
1926         _Iterator<true>, as per LWG 3564.
1927         * testsuite/std/ranges/adaptors/transform.cc: Check value_type
1928         and iterator_category.
1930 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1932         PR libstdc++/117135
1933         * config/locale/generic/time_members.cc
1934         (__timepunct<wchar_t>::_M_initialize_timepunc): Set
1935         _M_date_time_format for C locale. Set %Ex formats to the same
1936         values as the %x formats.
1938 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1940         * include/bits/version.def (constrained_equality): Bump value.
1941         * include/bits/version.h: Regenerate.
1942         * include/std/expected (operator==): Add constraints and
1943         noexcept specifiers.
1944         * testsuite/20_util/optional/relops/constrained.cc: Adjust
1945         check for feature test macro.
1946         * testsuite/20_util/pair/comparison_operators/constrained.cc:
1947         Likewise.
1948         * testsuite/20_util/tuple/comparison_operators/constrained.cc:
1949         Likewise.
1950         * testsuite/20_util/variant/relops/constrained.cc: Likewise.
1951         * testsuite/20_util/expected/equality_constrained.cc: New test.
1953 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1955         PR libstdc++/117094
1956         * include/bits/ranges_algobase.h (__fill_fn): Use std::move for
1957         iterator that might not be copyable.
1958         * testsuite/25_algorithms/fill/constrained.cc: Check
1959         non-copyable iterator with sized sentinel.
1961 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1963         PR libstdc++/93059
1964         * include/bits/stl_algobase.h (__fill_a1(T*, T*, const T&)):
1965         Change template parameters and enable_if condition to allow the
1966         fill value to be an integer.
1968 2024-10-14  Jonathan Wakely  <jwakely@redhat.com>
1970         PR libstdc++/93059
1971         * include/bits/cpp_type_traits.h (__memcpyable): Add partial
1972         specialization for pointers to distinct types.
1973         (__memcpyable_integer): New trait to control which types can use
1974         cross-type memcpy optimizations.
1976 2024-10-13  Sam James  <sam@gentoo.org>
1978         * testsuite/17_intro/names_fortify.cc: Undefine _FORTIFY_SOURCE.
1980 2024-10-13  Jonathan Wakely  <jwakely@redhat.com>
1982         PR libstdc++/117121
1983         * include/bits/ranges_algobase.h (copy_backward): Decrement
1984         output iterator before assigning one element through it.
1985         * testsuite/25_algorithms/copy/108846.cc: Ensure the algorithm's
1986         effects are correct for a single memcpyable element.
1987         * testsuite/25_algorithms/copy_backward/108846.cc: Likewise.
1988         * testsuite/25_algorithms/copy_n/108846.cc: Likewise.
1990 2024-10-11  Jonathan Wakely  <jwakely@redhat.com>
1992         * include/bits/stl_iterator.h (__niter_base(move_iterator<I>))
1993         (__is_move_iterator, __miter_base, _GLIBCXX_MAKE_MOVE_ITERATOR)
1994         (_GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR): Move earlier in the
1995         file.
1997 2024-10-11  Jonathan Wakely  <jwakely@redhat.com>
1999         * include/bits/cpp_type_traits.h (__is_byte<byte>): Guard with
2000         __glibcxx_byte macro instead of checking __cplusplus.
2002 2024-10-11  Jonathan Wakely  <jwakely@redhat.com>
2004         PR libstdc++/117085
2005         * include/bits/chrono_io.h (__formatter_chrono::_M_c): Add L
2006         option to format string.
2007         * testsuite/std/time/format.cc: Move to...
2008         * testsuite/std/time/format/format.cc: ...here.
2009         * testsuite/std/time/format_localized.cc: Move to...
2010         * testsuite/std/time/format/localized.cc: ...here.
2011         * testsuite/std/time/format/pr117085.cc: New test.
2013 2024-10-11  Jonathan Wakely  <jwakely@redhat.com>
2015         * testsuite/22_locale/time_get/get/char/5.cc: Fix dg-do
2016         directive.
2017         * testsuite/22_locale/time_get/get/wchar_t/5.cc: Likewise.
2019 2024-10-11  Jonathan Wakely  <jwakely@redhat.com>
2021         * testsuite/20_util/duration/io.cc [!__cpp_lib_char8_t]: Define
2022         char8_t as a typedef for unsigned char.
2023         * testsuite/std/format/parse_ctx_neg.cc: Skip for -fno-char8_t.
2025 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2027         PR libstdc++/116210
2028         * testsuite/17_intro/names.cc (sz): Undef for versions of Glibc
2029         that use it in the fortify wrappers.
2030         * testsuite/17_intro/names_fortify.cc: New test.
2032 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2034         PR libstdc++/116969
2035         * include/bits/locale_facets_nonio.tcc (money_put::__do_put):
2036         Remove diagnostic pragmas.
2037         (__glibcxx_snprintfibm128): Declare type manually, instead of
2038         using __typeof__(__builtin_snprintf).
2040 2024-10-09  Frank Scheiner  <frank.scheiner@web.de>
2042         * testsuite/17_intro/names.cc [__linux__ && __ia64__]: Undefine
2043         'u' as used in glibc headers.
2045 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2047         PR libstdc++/116992
2048         * include/bits/semaphore_base.h (_GLIBCXX_USE_POSIX_SEMAPHORE):
2049         Undefine and issue a warning if POSIX sem_t is not supported.
2050         * testsuite/30_threads/semaphore/platform_try_acquire_for.cc:
2051         Prune new warning.
2053 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2055         PR libstdc++/116991
2056         * include/std/complex (__complex_acos): Cast literal to
2057         destination type.
2059 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2061         * include/std/latch (latch::count_down): Add assertions for
2062         preconditions. Cast parameter to avoid -Wsign-compare on some
2063         targets.
2065 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2067         PR libstdc++/112808
2068         * doc/xml/manual/using.xml (_GLIBCXX_ASSERTIONS): Document
2069         implicit definition for -O0 compilation.
2070         (_GLIBCXX_NO_ASSERTIONS): Document.
2071         * doc/html/manual/using_macros.html: Regenerate.
2072         * include/bits/c++config [!__OPTIMIZE__] (_GLIBCXX_ASSERTIONS):
2073         Define for unoptimized builds.
2075 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2077         PR libstdc++/61458
2078         * doc/doxygen/user.cfg.in (GENERATE_BUGLIST): Set to NO.
2079         * include/std/type_traits (__aligned_storage_msa): Remove.
2080         (__aligned_storage_max_align_t): New struct.
2081         (__aligned_storage_default_alignment): New function.
2082         (aligned_storage): Use __aligned_storage_default_alignment for
2083         default alignment. Replace union with a struct containing an
2084         aligned buffer. Improve Doxygen comment.
2085         (aligned_storage_t): Use __aligned_storage_default_alignment for
2086         default alignment.
2088 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2090         * include/bits/shared_ptr_base.h: Remove cv-qualifiers from
2091         type managed by _Sp_counted_ptr_inplace, as per LWG 3210.
2092         * include/bits/stl_construct.h: Do not cast away cv-qualifiers
2093         when passing pointer to placement new.
2094         * include/std/expected: Use remove_cv_t for union member, as per
2095         LWG 3891.
2096         * testsuite/20_util/allocator/void.cc: Do not test construction
2097         via const pointer.
2099 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2101         * include/bits/stl_construct.h (construct_at): Support array
2102         types (LWG 3436).
2103         * testsuite/20_util/specialized_algorithms/construct_at/array.cc:
2104         New test.
2105         * testsuite/20_util/specialized_algorithms/construct_at/array_neg.cc:
2106         New test.
2108 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2110         * include/bits/chrono_io.h (__formatter_chrono::_M_c): Add
2111         [[unlikely]] attribute to condition for missing %c format in
2112         locale. Use %T instead of %H:%M:%S in fallback.
2114 2024-10-09  Jonathan Wakely  <jwakely@redhat.com>
2116         PR libstdc++/116755
2117         * include/bits/chrono_io.h (operator<<): Use +d.count() for
2118         duration inserter.
2119         (__formatter_chrono::_M_format): Likewise for %Q format.
2120         * testsuite/20_util/duration/io.cc: Test durations with
2121         character types as reps.
2123 2024-10-08  Jakub Jelinek  <jakub@redhat.com>
2125         * include/bits/unicode.h (std::__unicode::__v15_1_0): Rename inline
2126         namespace to ...
2127         (std::__unicode::__v16_0_0): ... this.
2128         (_GLIBCXX_GET_UNICODE_DATA): Change from 150100 to 160000.
2129         * include/bits/unicode-data.h: Regenerated.
2130         * testsuite/ext/unicode/properties.cc: Check for _Gcb_SpacingMark
2131         on U+11F03 rather than U+1D16D as the latter lost SpacingMark property
2132         in Unicode 16.0.
2134 2024-10-05  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
2136         * include/bits/version.def: Added the feature-testing macro.
2137         * include/bits/version.h: Regenerated.
2138         * include/std/type_traits: Add support for
2139         std::is_virtual_base_of and std::is_virtual_base_of_v,
2140         implemented in terms of the compiler builtin.
2141         * testsuite/20_util/is_virtual_base_of/value.cc: New test.
2143 2024-10-05  Patrick Palka  <ppalka@redhat.com>
2145         * include/bits/ranges_base.h (__distance_fn::operator()):
2146         Adjust iterator/sentinel overloads as per LWG 3664.
2147         * testsuite/24_iterators/range_operations/distance.cc:
2148         Test LWG 3664 example.
2150 2024-10-04  Patrick Palka  <ppalka@redhat.com>
2152         * include/std/ranges (single_view::empty): Define as per LWG 4035.
2153         (iota_view::empty): Define as per LWG 4001.
2154         (lazy_split_view::_OuterIter::value_type): Remove default
2155         constructor and make other constructor private as per LWG 4013.
2156         (common_view::begin): Disable non-const overload for simple
2157         views as per LWG 4012.
2158         (common_view::end): Likewise.
2159         (adjacent_view::base): Define as per LWG 3848.
2160         (adjacent_transform_view::base): Likewise.
2161         (chunk_view::_InnerIter::iter_move): Define as per LWG 3851.
2162         (chunk_view::_InnerIter::itep_swap): Likewise.
2163         (slide_view::base): Define as per LWG 3848.
2164         (repeat_view): Adjust deduction guide as per LWG 4053.
2165         (_Repeat::operator()): Adjust single-parameter overload as per
2166         LWG 4054.
2167         * testsuite/std/ranges/adaptors/adjacent/1.cc: Verify existence
2168         of base member function.
2169         * testsuite/std/ranges/adaptors/adjacent_transform/1.cc: Likewise.
2170         * testsuite/std/ranges/adaptors/chunk/1.cc: Test LWG 3851 example.
2171         * testsuite/std/ranges/adaptors/slide/1.cc: Verify existence of
2172         base member function.
2173         * testsuite/std/ranges/iota/iota_view.cc: Test LWG 4001 example.
2174         * testsuite/std/ranges/repeat/1.cc: Test LWG 4053/4054 examples.
2176 2024-10-04  Jonathan Wakely  <jwakely@redhat.com>
2178         * include/parallel/algobase.h (search): Use sequential algorithm
2179         for constant evaluation.
2180         * include/parallel/algorithmfwd.h (search): Add
2181         _GLIBCXX20_CONSTEXPR.
2182         * include/parallel/multiway_merge.h: Remove stray semi-colon.
2183         * include/parallel/multiseq_selection.h: Add diagnostic pragmas
2184         for -Wlong-long warning.
2185         * include/parallel/quicksort.h: Likewise.
2186         * include/parallel/random_number.h: Likewise.
2187         * include/parallel/settings.h: Likewise.
2188         * include/parallel/workstealing.h: Replace ++ and -- on volatile
2189         variables.
2190         * testsuite/17_intro/names.cc: Skip names defined by
2191         <tr1/random>.
2192         * testsuite/20_util/pair/dangling_ref.cc: Skip test if Parallel
2193         Mode is enabled.
2194         * testsuite/20_util/tuple/dangling_ref.cc: Likewise.
2196 2024-10-04  Jonathan Wakely  <jwakely@redhat.com>
2198         PR libstdc++/116964
2199         * include/std/shared_mutex (__shared_mutex_cv): Use [this] for
2200         lambda captures.
2201         (shared_timed_mutex) [!_GLIBCXX_USE_PTHREAD_RWLOCK_T]: Likewise.
2203 2024-10-03  Jonathan Wakely  <jwakely@redhat.com>
2205         * include/bits/unicode.h (__unicode::__is_incb_linker): Use
2206         _GLIBCXX_STD_A namespace for std::find.
2208 2024-10-03  Jonathan Wakely  <jwakely@redhat.com>
2210         PR libstdc++/116944
2211         * include/parallel/base.h: Move diagnostic pragmas earlier.
2213 2024-10-03  Jonathan Wakely  <jwakely@redhat.com>
2215         * include/bits/locale_facets_nonio.tcc (money_put::__do_get):
2216         Ignore -Wformat warning for __ibm128 arguments.
2217         * include/tr1/tuple (ignore): Ignore -Wunused warning.
2219 2024-10-03  François Dumont  <fdumont@gcc.gnu.org>
2221         * include/bits/hashtable_policy.h (_NodeBuilder<>::_S_build): Remove
2222         const qualification on _NodeGenerator instance.
2223         (_ReuseOrAllocNode<>::operator()(_Args&&...)): Remove const qualification.
2224         (_ReuseOrAllocNode<>::_M_nodes): Remove mutable.
2225         (_Insert_base<>::_M_insert_range): Remove _NodeGetter const qualification.
2226         (_Hash_code_base<>::_M_bucket_index(const _Hash_node_value<>&, size_t)):
2227         Simplify noexcept declaration, we already static_assert that _RangeHash functor
2228         is noexcept.
2229         * include/bits/hashtable.h: Rework comments. Remove const qualifier on
2230         _NodeGenerator& arguments.
2232 2024-10-02  Jonathan Wakely  <jwakely@redhat.com>
2234         * config/locale/dragonfly/time_members.cc
2235         (__timepunct<char>::_M_initialize_timepunc)
2236         (__timepunct<wchar_t>::_M_initialize_timepunc): Set
2237         _M_date_time_format for C locale. Set %Ex formats to the same
2238         values as the %x formats.
2239         * config/locale/generic/time_members.cc: Likewise.
2240         * config/locale/gnu/time_members.cc: Likewise.
2241         * testsuite/22_locale/time_get/get/char/5.cc: New test.
2242         * testsuite/22_locale/time_get/get/wchar_t/5.cc: New test.
2244 2024-10-02  Jonathan Wakely  <jwakely@redhat.com>
2246         * include/bits/chrono_io.h (__detail::__use_floor): New
2247         function.
2248         (__detail::__round): New function.
2249         (from_stream): Use __detail::__round.
2250         * testsuite/std/time/clock/file/io.cc: Check for expected
2251         rounding in parse.
2252         * testsuite/std/time/clock/gps/io.cc: Likewise.
2254 2024-10-02  Jonathan Wakely  <jwakely@redhat.com>
2256         * include/bits/postypes.h: Fix -Wlong-long warning.
2258 2024-10-01  Hans-Peter Nilsson  <hp@axis.com>
2260         PR libstdc++/116895
2261         * config/os/newlib/ctype_base.h: Avoid signed-overflow warnings by
2262         explicitly casting initializer expressions to mask.
2264 2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
2266         * include/bits/istream.tcc: Add diagnostic pragmas around uses
2267         of long long and extern template.
2268         * include/bits/locale_facets.h: Likewise.
2269         * include/bits/locale_facets.tcc: Likewise.
2270         * include/bits/locale_facets_nonio.tcc: Likewise.
2271         * include/bits/ostream.tcc: Likewise.
2272         * include/bits/stl_algobase.h: Likewise.
2273         * include/c_global/cstdlib: Likewise.
2274         * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp:
2275         Likewise.
2276         * include/ext/pointer.h: Likewise.
2277         * include/ext/stdio_sync_filebuf.h: Likewise.
2278         * include/std/istream: Likewise.
2279         * include/std/ostream: Likewise.
2280         * include/tr1/cmath: Likewise.
2281         * include/tr1/type_traits: Likewise.
2282         * include/tr1/functional_hash.h: Likewise. Remove semi-colons
2283         at namespace scope that aren't needed after macro expansion.
2284         * include/tr1/tuple: Remove semi-colon at namespace scope.
2285         * include/bits/vector.tcc: Change LL suffix to just L.
2287 2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
2289         * include/experimental/bits/fs_path.h (path::_Cvt): Refactor to
2290         use if-constexpr.
2291         (path::string(const Allocator&)): Likewise.
2293 2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
2295         * include/bits/basic_string.tcc (resize_for_overwrite): Fix
2296         -Wsign-compare warning.
2297         * include/bits/cow_string.h (resize_for_overwrite): Likewise.
2299 2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
2301         * testsuite/20_util/bind/dangling_ref.cc: Add an additional
2302         dg-warning for -Wreturn-local-addr warning.
2303         * testsuite/30_threads/packaged_task/cons/dangling_ref.cc:
2304         Likewise.
2306 2024-09-27  Jonathan Wakely  <jwakely@redhat.com>
2308         * include/bits/atomic_base.h (__atomic_base<T*>::_M_type_size):
2309         Replace overloaded functions with static _S_type_size.
2310         * include/std/atomic (atomic<T*>): Use is_object_v instead of
2311         is_object.
2312         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
2313         Add dg-warning for -Wpointer-arith warning.
2315 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2317         * include/bits/cow_string.h (__resize_for_overwrite): Add
2318         inline keyword to function with always_inline attribute.
2320 2024-09-26  Nathaniel Shead  <nathanieloshead@gmail.com>
2322         PR libstdc++/115126
2323         * include/bits/shared_ptr.h (std::__is_shared_ptr): Remove
2324         unnecessary 'static'.
2325         * include/bits/unique_ptr.h (std::__is_unique_ptr): Likewise.
2326         * include/std/future (std::__create_task_state): Likewise.
2327         * include/std/shared_mutex (_GLIBCXX_GTRHW): Likewise.
2328         (__glibcxx_rwlock_init): Likewise.
2329         (__glibcxx_rwlock_timedrdlock): Likewise.
2330         (__glibcxx_rwlock_timedwrlock): Likewise.
2331         (__glibcxx_rwlock_rdlock): Likewise.
2332         (__glibcxx_rwlock_tryrdlock): Likewise.
2333         (__glibcxx_rwlock_wrlock): Likewise.
2334         (__glibcxx_rwlock_trywrlock): Likewise.
2335         (__glibcxx_rwlock_unlock): Likewise.
2336         (__glibcxx_rwlock_destroy): Likewise.
2337         (__glibcxx_rwlock_init): Likewise.
2338         * include/pstl/algorithm_impl.h
2339         (__pstl::__internal::__set_algo_cut_off): Mark inline.
2340         * include/pstl/unseq_backend_simd.h
2341         (__pstl::__unseq_backend::__lane_size): Mark inline.
2343 2024-09-26  Jakub Jelinek  <jakub@redhat.com>
2345         PR libstdc++/116859
2346         * config/os/bsd/freebsd/os_defines.h
2347         (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC,
2348         _GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC): Avoid
2349         -Wexpansion-to-defined warnings.
2350         * config/os/bsd/dragonfly/os_defines.h
2351         (_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC): Likewise.
2353 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2354             Andrew Waterman  <andrew@sifive.com>
2356         PR libstdc++/113578
2357         * include/std/ostream (_S_cast_flt): New static member function
2358         to restore signbit after casting to double or long double.
2359         (operator<<(float), operator<<(_Float16), operator<<(_Float32))
2360         (operator<<(_Float64), operator(_Float128))
2361         (operator<<(__bfloat16_t)): Use _S_cast_flt.
2362         testsuite/27_io/basic_ostream/inserters_arithmetic/lwg4101.cc:
2363         New test.
2364         * testsuite/27_io/basic_ostream/inserters_arithmetic/lwg4101.cc: New file.
2366 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2368         * testsuite/27_io/basic_istringstream/cons/2020.cc: Fix comment
2369         referring to basic_filebuf.
2370         * testsuite/27_io/basic_istringstream/requirements/base_classes.cc:
2371         Likewise.
2372         * testsuite/27_io/basic_ostringstream/cons/2020.cc: Likewise.
2373         * testsuite/27_io/basic_ostringstream/requirements/base_classes.cc:
2374         Likewise.
2375         * testsuite/27_io/basic_stringbuf/cons/2020.cc: Likewise.
2376         * testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc:
2377         Likewise.
2378         * testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc:
2379         Likewise.
2380         * testsuite/27_io/basic_stringstream/cons/2020.cc: Likewise.
2381         * testsuite/27_io/basic_stringstream/requirements/base_classes.cc:
2382         Likewise.
2384 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2386         * include/bits/basic_ios.h (basic_ios::operator bool()):
2387         Add [[nodiscard]] attribute.
2388         (basic_ios::operator!(), basic_ios::rdstate())
2389         (basic_ios::good(), basic_ios::eof(), basic_ios::fail())
2390         (basic_ios::bad(), basic_ios::exceptions(), basic_ios::tie())
2391         (basic_ios::rdbuf(), basic_ios::fill()): Likewise.
2392         * include/bits/ios_base.h (ios_base::flags()): Likewise.
2393         (ios_base::precision(), ios_base::width(), ios_base::getloc()):
2394         Likewise.
2395         * include/std/fstream (basic_filebuf::is_open)
2396         (basic_ifstream::rdbuf(), basic_ifstream::is_open)
2397         (basic_ofstream::rdbuf(), basic_ofstream::is_open)
2398         (basic_fstream::rdbuf(), basic_fstream::is_open): Likewise.
2399         * include/std/spanstream (basic_spanbuf::span())
2400         (basic_ispanstream::span(), basic_ispanstream::rdbuf())
2401         (basic_ospanstream::span(), basic_ospanstream::rdbuf())
2402         (basic_spanstream::span(), basic_spanstream::rdbuf()):
2403         Likewise.
2404         * include/std/sstream (basic_stringbuf::str())
2405         (basic_istringstream::rdbuf(), basic_istringstream::str())
2406         (basic_ostringstream::rdbuf(), basic_ostringstream::str())
2407         (basic_stringstream::rdbuf(), basic_stringstream::str()):
2408         Likewise.
2409         * testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc:
2410         Suppress -Wunused-result warnings.
2411         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc:
2412         Likewise.
2414 2024-09-26  Iain Sandoe  <iain@sandoe.co.uk>
2416         PR libstdc++/116853
2417         * include/bits/basic_string.h: Ignore suggest-attribute=format
2418         warning when using posix vsnprintf in to_string() implementations.
2420 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2422         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
2423         Do not assume allocators only throw std::bad_alloc.
2425 2024-09-26  Jonathan Wakely  <jwakely@redhat.com>
2427         PR libstdc++/116857
2428         * libsupc++/guard.cc (__cxa_guard_acquire): Remove
2429         _GLIBCXX_NOTHROW to match declaration in <cxxabi.h>.
2431 2024-09-25  Sam James  <sam@gentoo.org>
2433         PR libstdc++/101831
2434         * testsuite/23_containers/array/capacity/empty.cc: Add missing brace.
2435         * testsuite/23_containers/array/capacity/max_size.cc: Ditto.
2436         * testsuite/23_containers/array/capacity/size.cc: Ditto.
2438 2024-09-25  Jason Merrill  <jason@redhat.com>
2440         * acinclude.m4 (WARN_FLAGS): Remove -Wsystem-headers.
2441         * configure: Regenerate.
2442         * include/bits/algorithmfwd.h: #ifdef out #pragma GCC system_header.
2443         * include/bits/atomic_base.h
2444         * include/bits/atomic_futex.h
2445         * include/bits/atomic_timed_wait.h
2446         * include/bits/atomic_wait.h
2447         * include/bits/basic_ios.h
2448         * include/bits/basic_string.h
2449         * include/bits/boost_concept_check.h
2450         * include/bits/char_traits.h
2451         * include/bits/charconv.h
2452         * include/bits/chrono.h
2453         * include/bits/chrono_io.h
2454         * include/bits/codecvt.h
2455         * include/bits/concept_check.h
2456         * include/bits/cpp_type_traits.h
2457         * include/bits/elements_of.h
2458         * include/bits/enable_special_members.h
2459         * include/bits/erase_if.h
2460         * include/bits/forward_list.h
2461         * include/bits/functional_hash.h
2462         * include/bits/gslice.h
2463         * include/bits/gslice_array.h
2464         * include/bits/hashtable.h
2465         * include/bits/indirect_array.h
2466         * include/bits/invoke.h
2467         * include/bits/ios_base.h
2468         * include/bits/iterator_concepts.h
2469         * include/bits/locale_classes.h
2470         * include/bits/locale_facets.h
2471         * include/bits/locale_facets_nonio.h
2472         * include/bits/localefwd.h
2473         * include/bits/mask_array.h
2474         * include/bits/max_size_type.h
2475         * include/bits/memory_resource.h
2476         * include/bits/memoryfwd.h
2477         * include/bits/move_only_function.h
2478         * include/bits/node_handle.h
2479         * include/bits/ostream_insert.h
2480         * include/bits/out_ptr.h
2481         * include/bits/parse_numbers.h
2482         * include/bits/postypes.h
2483         * include/bits/quoted_string.h
2484         * include/bits/range_access.h
2485         * include/bits/ranges_base.h
2486         * include/bits/refwrap.h
2487         * include/bits/sat_arith.h
2488         * include/bits/semaphore_base.h
2489         * include/bits/slice_array.h
2490         * include/bits/std_abs.h
2491         * include/bits/std_function.h
2492         * include/bits/std_mutex.h
2493         * include/bits/std_thread.h
2494         * include/bits/stl_iterator_base_funcs.h
2495         * include/bits/stl_iterator_base_types.h
2496         * include/bits/stl_tree.h
2497         * include/bits/stream_iterator.h
2498         * include/bits/streambuf_iterator.h
2499         * include/bits/stringfwd.h
2500         * include/bits/this_thread_sleep.h
2501         * include/bits/unique_lock.h
2502         * include/bits/uses_allocator_args.h
2503         * include/bits/utility.h
2504         * include/bits/valarray_after.h
2505         * include/bits/valarray_array.h
2506         * include/bits/valarray_before.h
2507         * include/bits/version.h
2508         * include/c_compatibility/fenv.h
2509         * include/c_compatibility/inttypes.h
2510         * include/c_compatibility/stdint.h
2511         * include/decimal/decimal.h
2512         * include/experimental/bits/net.h
2513         * include/experimental/bits/shared_ptr.h
2514         * include/ext/aligned_buffer.h
2515         * include/ext/alloc_traits.h
2516         * include/ext/atomicity.h
2517         * include/ext/concurrence.h
2518         * include/ext/numeric_traits.h
2519         * include/ext/pod_char_traits.h
2520         * include/ext/pointer.h
2521         * include/ext/stdio_filebuf.h
2522         * include/ext/stdio_sync_filebuf.h
2523         * include/ext/string_conversions.h
2524         * include/ext/type_traits.h
2525         * include/ext/vstring.h
2526         * include/ext/vstring_fwd.h
2527         * include/ext/vstring_util.h
2528         * include/parallel/algorithmfwd.h
2529         * include/parallel/numericfwd.h
2530         * include/tr1/functional_hash.h
2531         * include/tr1/hashtable.h
2532         * include/tr1/random.h
2533         * libsupc++/exception.h
2534         * libsupc++/hash_bytes.h
2535         * include/bits/basic_ios.tcc
2536         * include/bits/basic_string.tcc
2537         * include/bits/fstream.tcc
2538         * include/bits/istream.tcc
2539         * include/bits/locale_classes.tcc
2540         * include/bits/locale_facets.tcc
2541         * include/bits/locale_facets_nonio.tcc
2542         * include/bits/ostream.tcc
2543         * include/bits/sstream.tcc
2544         * include/bits/streambuf.tcc
2545         * include/bits/string_view.tcc
2546         * include/bits/version.tpl
2547         * include/experimental/bits/string_view.tcc
2548         * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
2549         * include/ext/random.tcc
2550         * include/ext/vstring.tcc
2551         * include/tr2/bool_set.tcc
2552         * include/tr2/dynamic_bitset.tcc
2553         * include/bits/c++config
2554         * include/c/cassert
2555         * include/c/cctype
2556         * include/c/cerrno
2557         * include/c/cfloat
2558         * include/c/ciso646
2559         * include/c/climits
2560         * include/c/clocale
2561         * include/c/cmath
2562         * include/c/csetjmp
2563         * include/c/csignal
2564         * include/c/cstdarg
2565         * include/c/cstddef
2566         * include/c/cstdio
2567         * include/c/cstdlib
2568         * include/c/cstring
2569         * include/c/ctime
2570         * include/c/cuchar
2571         * include/c/cwchar
2572         * include/c/cwctype
2573         * include/c_global/cassert
2574         * include/c_global/ccomplex
2575         * include/c_global/cctype
2576         * include/c_global/cerrno
2577         * include/c_global/cfenv
2578         * include/c_global/cfloat
2579         * include/c_global/cinttypes
2580         * include/c_global/ciso646
2581         * include/c_global/climits
2582         * include/c_global/clocale
2583         * include/c_global/cmath
2584         * include/c_global/csetjmp
2585         * include/c_global/csignal
2586         * include/c_global/cstdalign
2587         * include/c_global/cstdarg
2588         * include/c_global/cstdbool
2589         * include/c_global/cstddef
2590         * include/c_global/cstdint
2591         * include/c_global/cstdio
2592         * include/c_global/cstdlib
2593         * include/c_global/cstring
2594         * include/c_global/ctgmath
2595         * include/c_global/ctime
2596         * include/c_global/cuchar
2597         * include/c_global/cwchar
2598         * include/c_global/cwctype
2599         * include/c_std/cassert
2600         * include/c_std/cctype
2601         * include/c_std/cerrno
2602         * include/c_std/cfloat
2603         * include/c_std/ciso646
2604         * include/c_std/climits
2605         * include/c_std/clocale
2606         * include/c_std/cmath
2607         * include/c_std/csetjmp
2608         * include/c_std/csignal
2609         * include/c_std/cstdarg
2610         * include/c_std/cstddef
2611         * include/c_std/cstdio
2612         * include/c_std/cstdlib
2613         * include/c_std/cstring
2614         * include/c_std/ctime
2615         * include/c_std/cuchar
2616         * include/c_std/cwchar
2617         * include/c_std/cwctype
2618         * include/debug/array
2619         * include/debug/bitset
2620         * include/debug/deque
2621         * include/debug/forward_list
2622         * include/debug/list
2623         * include/debug/map
2624         * include/debug/set
2625         * include/debug/string
2626         * include/debug/unordered_map
2627         * include/debug/unordered_set
2628         * include/debug/vector
2629         * include/decimal/decimal
2630         * include/experimental/algorithm
2631         * include/experimental/any
2632         * include/experimental/array
2633         * include/experimental/buffer
2634         * include/experimental/chrono
2635         * include/experimental/contract
2636         * include/experimental/deque
2637         * include/experimental/executor
2638         * include/experimental/filesystem
2639         * include/experimental/forward_list
2640         * include/experimental/functional
2641         * include/experimental/internet
2642         * include/experimental/io_context
2643         * include/experimental/iterator
2644         * include/experimental/list
2645         * include/experimental/map
2646         * include/experimental/memory
2647         * include/experimental/memory_resource
2648         * include/experimental/net
2649         * include/experimental/netfwd
2650         * include/experimental/numeric
2651         * include/experimental/propagate_const
2652         * include/experimental/ratio
2653         * include/experimental/regex
2654         * include/experimental/scope
2655         * include/experimental/set
2656         * include/experimental/socket
2657         * include/experimental/string
2658         * include/experimental/string_view
2659         * include/experimental/synchronized_value
2660         * include/experimental/system_error
2661         * include/experimental/timer
2662         * include/experimental/tuple
2663         * include/experimental/type_traits
2664         * include/experimental/unordered_map
2665         * include/experimental/unordered_set
2666         * include/experimental/vector
2667         * include/ext/algorithm
2668         * include/ext/cmath
2669         * include/ext/functional
2670         * include/ext/iterator
2671         * include/ext/memory
2672         * include/ext/numeric
2673         * include/ext/random
2674         * include/ext/rb_tree
2675         * include/ext/rope
2676         * include/parallel/algorithm
2677         * include/std/algorithm
2678         * include/std/any
2679         * include/std/array
2680         * include/std/atomic
2681         * include/std/barrier
2682         * include/std/bit
2683         * include/std/bitset
2684         * include/std/charconv
2685         * include/std/chrono
2686         * include/std/codecvt
2687         * include/std/complex
2688         * include/std/concepts
2689         * include/std/condition_variable
2690         * include/std/coroutine
2691         * include/std/deque
2692         * include/std/execution
2693         * include/std/expected
2694         * include/std/filesystem
2695         * include/std/format
2696         * include/std/forward_list
2697         * include/std/fstream
2698         * include/std/functional
2699         * include/std/future
2700         * include/std/generator
2701         * include/std/iomanip
2702         * include/std/ios
2703         * include/std/iosfwd
2704         * include/std/iostream
2705         * include/std/istream
2706         * include/std/iterator
2707         * include/std/latch
2708         * include/std/limits
2709         * include/std/list
2710         * include/std/locale
2711         * include/std/map
2712         * include/std/memory
2713         * include/std/memory_resource
2714         * include/std/mutex
2715         * include/std/numbers
2716         * include/std/numeric
2717         * include/std/optional
2718         * include/std/ostream
2719         * include/std/print
2720         * include/std/queue
2721         * include/std/random
2722         * include/std/ranges
2723         * include/std/ratio
2724         * include/std/regex
2725         * include/std/scoped_allocator
2726         * include/std/semaphore
2727         * include/std/set
2728         * include/std/shared_mutex
2729         * include/std/span
2730         * include/std/spanstream
2731         * include/std/sstream
2732         * include/std/stack
2733         * include/std/stacktrace
2734         * include/std/stdexcept
2735         * include/std/streambuf
2736         * include/std/string
2737         * include/std/string_view
2738         * include/std/syncstream
2739         * include/std/system_error
2740         * include/std/text_encoding
2741         * include/std/thread
2742         * include/std/tuple
2743         * include/std/type_traits
2744         * include/std/typeindex
2745         * include/std/unordered_map
2746         * include/std/unordered_set
2747         * include/std/utility
2748         * include/std/valarray
2749         * include/std/variant
2750         * include/std/vector
2751         * include/std/version
2752         * include/tr1/array
2753         * include/tr1/cfenv
2754         * include/tr1/cinttypes
2755         * include/tr1/cmath
2756         * include/tr1/complex
2757         * include/tr1/cstdbool
2758         * include/tr1/cstdint
2759         * include/tr1/cstdio
2760         * include/tr1/cstdlib
2761         * include/tr1/cwchar
2762         * include/tr1/cwctype
2763         * include/tr1/functional
2764         * include/tr1/memory
2765         * include/tr1/random
2766         * include/tr1/regex
2767         * include/tr1/tuple
2768         * include/tr1/type_traits
2769         * include/tr1/unordered_map
2770         * include/tr1/unordered_set
2771         * include/tr1/utility
2772         * include/tr2/bool_set
2773         * include/tr2/dynamic_bitset
2774         * include/tr2/type_traits
2775         * libsupc++/atomic_lockfree_defines.h
2776         * libsupc++/compare
2777         * libsupc++/cxxabi.h
2778         * libsupc++/cxxabi_forced.h
2779         * libsupc++/cxxabi_init_exception.h
2780         * libsupc++/exception
2781         * libsupc++/initializer_list
2782         * libsupc++/new
2783         * libsupc++/typeinfo: Likewise.
2784         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc
2785         * testsuite/23_containers/array/tuple_interface/get_neg.cc
2786         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc
2787         * testsuite/24_iterators/operations/prev_neg.cc
2788         * testsuite/ext/type_traits/add_unsigned_floating_neg.cc
2789         * testsuite/ext/type_traits/add_unsigned_integer_neg.cc
2790         * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
2791         * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust
2792         line numbers.
2794 2024-09-25  Jason Merrill  <jason@redhat.com>
2796         * include/parallel/base.h: Suppress -Wdeprecated-declarations.
2797         * include/parallel/multiseq_selection.h: Likewise.
2799 2024-09-24  Nathaniel Shead  <nathanieloshead@gmail.com>
2801         * include/std/format: Remove unnecessary 'static'.
2803 2024-09-23  Jason Merrill  <jason@redhat.com>
2805         * include/bits/c++config: Don't try to disable -Wc++??-extensions
2806         when compiling as C.
2808 2024-09-23  Jason Merrill  <jason@redhat.com>
2810         * libsupc++/new: Add _GLIBCXX_TXN_SAFE.
2812 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2814         * include/std/format (__format::__is_formattable_integer): New
2815         variable template and specializations.
2816         (template<integral, __char> struct formatter): Replace
2817         constraints on first arg with __is_formattable_integer.
2818         * testsuite/std/format/formatter/requirements.cc: Check that
2819         std::formatter specializations for char8_t and const int are
2820         disabled.
2822 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2824         PR libstdc++/116754
2825         * include/bits/ranges_algobase.h (__copy_or_move): Fix order of
2826         arguments to __memcpyable.
2828 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2830         PR libstdc++/116755
2831         * include/bits/chrono_io.h (formatter<duration<R,P>>::format):
2832         Cast negative integral durations to unsigned rep.
2833         * testsuite/20_util/duration/io.cc: Test the most negative
2834         integer durations.
2836 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2838         * include/bits/stl_vector.h (operator<=>): Use constexpr
2839         instead of _GLIBCXX20_CONSTEXPR macro.
2841 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2843         * libsupc++/exception_ptr.h (__exception_ptr::_M_safe_bool_dummy):
2844         Remove __attribute__((const)) from function returning void.
2846 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2848         * src/c++11/cxx11-ios_failure.cc (__iosfail_type_info): Unhide
2849         the three-arg overload of __do_upcast.
2851 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2853         * include/bits/version.def: Sort C++26 entries alphabetically.
2854         * include/bits/version.h: Regenerate.
2856 2024-09-22  Jonathan Wakely  <jwakely@redhat.com>
2858         * include/bits/iterator_concepts.h: Add projected_value_t.
2859         * include/bits/algorithmfwd.h: Add the default template
2860         parameter to the relevant forward declarations.
2861         * include/pstl/glue_algorithm_defs.h: Likewise.
2862         * include/bits/ranges_algo.h: Add the default template
2863         parameter to range-based algorithms.
2864         * include/bits/ranges_algobase.h: Likewise.
2865         * include/bits/ranges_util.h: Likewise.
2866         * include/bits/ranges_base.h: Add helper macros.
2867         * include/bits/stl_iterator_base_types.h: Add helper macro.
2868         * include/bits/version.def: Add the new feature-testing macro.
2869         * include/bits/version.h: Regenerate.
2870         * include/std/algorithm: Pull the feature-testing macro.
2871         * include/std/ranges: Likewise.
2872         * include/std/deque: Pull the feature-testing macro, add
2873         the default for std::erase.
2874         * include/std/forward_list: Likewise.
2875         * include/std/list: Likewise.
2876         * include/std/string: Likewise.
2877         * include/std/vector: Likewise.
2878         * testsuite/23_containers/default_template_value.cc: New test.
2879         * testsuite/25_algorithms/default_template_value.cc: New test.
2881 2024-09-21  Jason Merrill  <jason@redhat.com>
2883         * include/c_compatibility/ctype.h
2884         * include/c_compatibility/errno.h
2885         * include/c_compatibility/float.h
2886         * include/c_compatibility/iso646.h
2887         * include/c_compatibility/limits.h
2888         * include/c_compatibility/locale.h
2889         * include/c_compatibility/setjmp.h
2890         * include/c_compatibility/signal.h
2891         * include/c_compatibility/stdarg.h
2892         * include/c_compatibility/stdbool.h
2893         * include/c_compatibility/stddef.h
2894         * include/c_compatibility/stdio.h
2895         * include/c_compatibility/string.h
2896         * include/c_compatibility/tgmath.h
2897         * include/c_compatibility/time.h
2898         * include/c_compatibility/uchar.h
2899         * include/c_compatibility/wchar.h
2900         * include/c_compatibility/wctype.h
2901         * include/c_global/ccomplex
2902         * include/c_global/cctype
2903         * include/c_global/cerrno
2904         * include/c_global/cfloat
2905         * include/c_global/climits
2906         * include/c_global/clocale
2907         * include/c_global/cmath
2908         * include/c_global/csetjmp
2909         * include/c_global/csignal
2910         * include/c_global/cstdalign
2911         * include/c_global/cstdarg
2912         * include/c_global/cstdbool
2913         * include/c_global/cstdio
2914         * include/c_global/cstdlib
2915         * include/c_global/cstring
2916         * include/c_global/ctgmath
2917         * include/c_global/ctime
2918         * include/c_global/cwchar
2919         * include/c_global/cwctype: Move header guard before #includes.
2921 2024-09-20  Jonathan Wakely  <jwakely@redhat.com>
2923         PR libstdc++/116529
2924         * include/bits/unique_ptr.h (unique_ptr(auto_ptr<U>&&)):
2925         Use pointer instead of T*.
2926         * testsuite/20_util/unique_ptr/creation/116529.cc: New test.
2928 2024-09-20  Jonathan Wakely  <jwakely@redhat.com>
2930         PR libstdc++/116777
2931         * doc/xml/manual/using.xml: Document features that are not
2932         supported for the gcc4-compatible ABI.
2933         * doc/html/manual/using_dual_abi.html: Regenerate.
2935 2024-09-19  Jason Merrill  <jason@redhat.com>
2937         * include/bits/algorithmfwd.h:
2938         * include/bits/allocator.h:
2939         * include/bits/codecvt.h:
2940         * include/bits/concept_check.h:
2941         * include/bits/cpp_type_traits.h:
2942         * include/bits/hashtable.h:
2943         * include/bits/iterator_concepts.h:
2944         * include/bits/ostream_insert.h:
2945         * include/bits/ranges_base.h:
2946         * include/bits/regex_automaton.h:
2947         * include/bits/std_abs.h:
2948         * include/bits/stl_algo.h:
2949         * include/c_compatibility/fenv.h:
2950         * include/c_compatibility/inttypes.h:
2951         * include/c_compatibility/stdint.h:
2952         * include/ext/concurrence.h:
2953         * include/ext/type_traits.h:
2954         * testsuite/ext/type_traits/add_unsigned_floating_neg.cc:
2955         * testsuite/ext/type_traits/add_unsigned_integer_neg.cc:
2956         * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc:
2957         * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc:
2958         * include/bits/basic_ios.tcc:
2959         * include/bits/basic_string.tcc:
2960         * include/bits/fstream.tcc:
2961         * include/bits/istream.tcc:
2962         * include/bits/locale_classes.tcc:
2963         * include/bits/locale_facets.tcc:
2964         * include/bits/ostream.tcc:
2965         * include/bits/regex_compiler.tcc:
2966         * include/bits/sstream.tcc:
2967         * include/bits/streambuf.tcc:
2968         * configure: Regenerate.
2969         * include/bits/c++config:
2970         * include/c/cassert:
2971         * include/c/cctype:
2972         * include/c/cerrno:
2973         * include/c/cfloat:
2974         * include/c/climits:
2975         * include/c/clocale:
2976         * include/c/cmath:
2977         * include/c/csetjmp:
2978         * include/c/csignal:
2979         * include/c/cstdarg:
2980         * include/c/cstddef:
2981         * include/c/cstdio:
2982         * include/c/cstdlib:
2983         * include/c/cstring:
2984         * include/c/ctime:
2985         * include/c/cwchar:
2986         * include/c/cwctype:
2987         * include/c_global/climits:
2988         * include/c_global/cmath:
2989         * include/c_global/cstddef:
2990         * include/c_global/cstdlib:
2991         * include/decimal/decimal:
2992         * include/ext/rope:
2993         * include/std/any:
2994         * include/std/charconv:
2995         * include/std/complex:
2996         * include/std/coroutine:
2997         * include/std/format:
2998         * include/std/iomanip:
2999         * include/std/limits:
3000         * include/std/numbers:
3001         * include/tr1/functional:
3002         * include/tr1/tuple:
3003         * include/tr1/type_traits:
3004         * libsupc++/compare:
3005         * libsupc++/new: Add #pragma GCC diagnostic to suppress
3006         undesired warnings.
3007         * acinclude.m4: Change -Wabi version from 2 to 19.
3009 2024-09-18  Jason Merrill  <jason@redhat.com>
3011         * include/bits/basic_ios.h: Add braces.
3013 2024-09-16  Jonathan Wakely  <jwakely@redhat.com>
3015         * .editorconfig: New file.
3016         * include/std/.editorconfig: New file.
3018 2024-09-16  Gerald Pfeifer  <gerald@pfeifer.com>
3020         * doc/xml/manual/intro.xml: Update link to installation docs.
3021         * doc/html/manual/make.html: Regenerate.
3023 2024-09-15  Jonathan Wakely  <jwakely@redhat.com>
3025         * include/std/span (span::__iter_tag): Declare nested type.
3026         (span::iterator): Use __iter_tag as second template argument.
3027         * include/std/stacktrace (basic_stacktrace::iterator): Use _Impl
3028         as second template argument.
3030 2024-09-15  Jonathan Wakely  <jwakely@redhat.com>
3032         * doc/xml/manual/using.xml (_GLIBCXX_NO_FREESTANDING_CHRONO):
3033         Document macro.
3034         * doc/html/*: Regenerate.
3035         * include/bits/chrono.h [_GLIBCXX_NO_FREESTANDING_CHRONO]:
3036         Only include <bits/require_hosted.h> when this macro is defined.
3037         [_GLIBCXX_HOSTED]: Only define clocks for hosted.
3038         * include/bits/version.def (chrono_udls): Remove hosted=yes.
3039         * include/bits/version.h: Regenerate.
3040         * include/std/chrono [_GLIBCXX_HOSTED]: Only define clocks and
3041         time zone utilities for hosted.
3042         * testsuite/std/time/freestanding.cc: New test.
3044 2024-09-15  Jonathan Wakely  <jwakely@redhat.com>
3046         * include/bits/locale_classes.h (__is_facet): New helper.
3047         * include/bits/locale_classes.tcc (locale::combine): Check that
3048         _Facet type is valid.
3050 2024-09-15  Jonathan Wakely  <jwakely@redhat.com>
3052         PR libstdc++/110512
3053         * include/pstl/execution_impl.h (__are_random_access_iterators):
3054         Recognize C++20 random access iterators, and use more efficient
3055         implementations.
3056         * testsuite/25_algorithms/pstl/110512.cc: New test.
3058 2024-09-14  Jonathan Wakely  <jwakely@redhat.com>
3060         * include/std/format (__formatter_fp::_M_localize): Add comments
3061         and micro-optimize string copy.
3063 2024-09-14  Jonathan Wakely  <jwakely@redhat.com>
3065         * include/bits/semaphore_base.h (__platform_semaphore): Refactor
3066         loops to all use similar forms.
3067         (__platform_semaphore::_M_try_acquire_until): Use chrono::ceil
3068         to explicitly convert to __clock_t::time_point.
3069         * testsuite/30_threads/semaphore/try_acquire_for.cc: Check that
3070         using a very high resolution timeout compiles.
3071         * testsuite/30_threads/semaphore/platform_try_acquire_for.cc:
3072         New test.
3074 2024-09-13  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
3076         PR libstdc++/108846
3077         PR libstdc++/116471
3078         * include/bits/ranges_algobase.h (__assign_one): New helper
3079         function.
3080         (__copy_or_move): Remove a spurious static_assert; use
3081         __assign_one for memcpyable ranges of length 1.
3082         (__copy_or_move_backward): Likewise.
3083         * testsuite/25_algorithms/copy/108846.cc: Extend to range-based
3084         algorithms, and cover both memcpyable and non-memcpyable
3085         cases.
3086         * testsuite/25_algorithms/copy_backward/108846.cc: Likewise.
3087         * testsuite/25_algorithms/copy_n/108846.cc: Likewise.
3088         * testsuite/25_algorithms/move/108846.cc: Likewise.
3089         * testsuite/25_algorithms/move_backward/108846.cc: Likewise.
3091 2024-09-12  Jonathan Wakely  <jwakely@redhat.com>
3093         * include/std/optional (__is_bool): Remove.
3095 2024-09-12  Jonathan Wakely  <jwakely@redhat.com>
3097         * libsupc++/new (launder): Add static_assert and remove deleted
3098         overloads.
3099         * testsuite/18_support/launder/requirements_neg.cc: Adjust
3100         expected diagnostics.
3102 2024-09-11  Alex Coplan  <alex.coplan@arm.com>
3104         PR libstdc++/116140
3105         * include/bits/stl_algobase.h (std::__find_if): Add #pragma to
3106         request GCC to unroll the loop.
3108 2024-09-10  Jonathan Wakely  <jwakely@redhat.com>
3110         PR libstdc++/116159
3111         * include/std/iostream (ios_base_library_init): Only define for
3112         ELF targets.
3113         * src/c++98/ios_init.cc (ios_base_library_init): Likewise.
3115 2024-09-10  Jonathan Wakely  <jwakely@redhat.com>
3117         PR libstdc++/116641
3118         * include/bits/basic_string.h (operator=(basic_string&&)): Call
3119         _M_assign instead of assign.
3120         * testsuite/21_strings/basic_string/allocator/116641.cc: New
3121         test.
3123 2024-09-10  Jonathan Wakely  <jwakely@redhat.com>
3125         * testsuite/18_support/new_nothrow.cc (THROW_BAD_ALLOC): Define
3126         macro to add exception specifications for C++98 mode.
3127         (NOEXCEPT): Expand to throw() for C++98 mode.
3128         * testsuite/26_numerics/headers/numeric/synopsis.cc (gcd, lcm):
3129         Add noexcept.
3131 2024-09-06  Jonathan Wakely  <jwakely@redhat.com>
3133         * include/bits/chrono_io.h (from_stream): Fix conversions in
3134         overloads for gps_time and tai_time.
3135         * testsuite/std/time/clock/file/io.cc: Test round tripping using
3136         chrono::parse. Add additional std::format tests.
3137         * testsuite/std/time/clock/gps/io.cc: Likewise.
3138         * testsuite/std/time/clock/local/io.cc: Likewise.
3139         * testsuite/std/time/clock/tai/io.cc: Likewise.
3140         * testsuite/std/time/clock/utc/io.cc: Likewise.
3142 2024-09-06  Jason Merrill  <jason@redhat.com>
3144         * include/bits/regex_constants.h: Add __ to attribute.
3146 2024-09-06  Jason Merrill  <jason@redhat.com>
3148         * include/bits/c++config: Avoid redefining __GLIBCXX__.
3150 2024-09-06  Jason Merrill  <jason@redhat.com>
3152         PR c++/46457
3153         PR c++/81665
3154         * include/bits/regex_constants.h: Use flag_enum.
3156 2024-09-06  Jason Merrill  <jason@redhat.com>
3158         * include/bits/ios_base.h (_GLIBCXX_NOREPLACE_UNUSED): New.
3159         (_Ios_Openmode): Add unused attributes.
3160         * testsuite/27_io/ios_base/types/openmode/case_label.cc: Handle
3161         noreplace.
3163 2024-09-03  Jonathan Wakely  <jwakely@redhat.com>
3165         * src/c++17/fs_ops.cc (auto_win_file_handle): Add error_code&
3166         member and set it if CreateFileW or GetFileInformationByHandle
3167         fails.
3168         (fs::equiv_files) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Simplify
3169         control flow.
3170         (fs::hard_link_count) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Clear ec
3171         on success.
3172         * testsuite/27_io/filesystem/operations/hard_link_count.cc:
3173         Check error handling.
3175 2024-09-03  Jonathan Wakely  <jwakely@redhat.com>
3177         PR libstdc++/116549
3178         * include/bits/stl_iterator.h (disable_sized_sentinel_for):
3179         Define specialization for two move_iterator types, as per LWG
3180         3736.
3181         * testsuite/24_iterators/move_iterator/lwg3736.cc: New test.
3183 2024-09-03  Jonathan Wakely  <jwakely@redhat.com>
3185         * include/experimental/any (experimental::any::_Storage): Use
3186         array of unsigned char instead of deprecated
3187         std::aligned_storage.
3188         * include/std/any (any::_Storage): Likewise.
3189         * testsuite/20_util/any/layout.cc: New test.
3191 2024-09-03  Dhruv Chawla  <dhruvc@nvidia.com>
3193         * include/std/deque: Define macro
3194         __glibcxx_want_allocator_traits_is_always_equal.
3195         * include/std/forward_list: Likewise.
3196         * include/std/list: Likewise.
3197         * include/std/map: Likewise.
3198         * include/std/scoped_allocator: Likewise.
3199         * include/std/set: Likewise.
3200         * include/std/string: Likewise.
3201         * include/std/unordered_map: Likewise.
3202         * include/std/unordered_set: Likewise.
3203         * include/std/vector: Likewise.
3204         * testsuite/20_util/headers/memory/version.cc: New test.
3205         * testsuite/20_util/scoped_allocator/version.cc: Likewise.
3206         * testsuite/21_strings/headers/string/version.cc: Likewise.
3207         * testsuite/23_containers/deque/version.cc: Likewise.
3208         * testsuite/23_containers/forward_list/version.cc: Likewise.
3209         * testsuite/23_containers/list/version.cc: Likewise.
3210         * testsuite/23_containers/map/version.cc: Likewise.
3211         * testsuite/23_containers/set/version.cc: Likewise.
3212         * testsuite/23_containers/unordered_map/version.cc: Likewise.
3213         * testsuite/23_containers/unordered_set/version.cc: Likewise.
3214         * testsuite/23_containers/vector/version.cc: Likewise.
3216 2024-09-02  Alexandre Oliva  <oliva@adacore.com>
3218         * testsuite/30_threads/future/members/poll.cc: Factor out
3219         calibration, and run it unconditionally.  Lower its
3220         strictness.  Bump wait_until_*'s slowness factor.
3222 2024-09-02  Alexandre Oliva  <oliva@adacore.com>
3224         PR libstdc++/91486
3225         * testsuite/30_threads/async/async.cc
3226         (test_pr91486_wait_for): Mark status as unused.
3227         (test_pr91486_wait_until): Likewise.  Initialize epoch later.
3229 2024-09-02  Andreas Schwab  <schwab@suse.de>
3231         PR libstdc++/116513
3232         * libsupc++/compare (_S_fp_bits) [__fmt == _M68k_80bit]: Shift
3233         padding out of exponent word.
3235 2024-08-28  Jonathan Wakely  <jwakely@redhat.com>
3237         * configure.ac: Fix check for O_NONBLOCK.
3238         * config.h.in: Regenerate.
3239         * configure: Regenerate.
3241 2024-08-28  Jonathan Wakely  <jwakely@redhat.com>
3243         * include/experimental/io_context: Remove name of unused
3244         parameter.
3245         * include/experimental/socket: Add [[maybe_unused]] attribute.
3247 2024-08-28  Jonathan Wakely  <jwakely@redhat.com>
3249         * include/std/format (format_parse_context::check_dynamic_spec):
3250         Add [[maybe_unused]] attribute and comment.
3252 2024-08-28  Jonathan Wakely  <jwakely@redhat.com>
3254         * include/std/ranges (to): Remove unused typedef.
3256 2024-08-28  Kim Gräsman  <kim.grasman@gmail.com>
3258         * config/cpu/aarch64/opt/ext/opt_random.h: Improve doxygen file
3259         docs.
3260         * config/cpu/i486/opt/ext/opt_random.h: Likewise.
3262 2024-08-28  Kim Gräsman  <kim.grasman@gmail.com>
3264         * include/bits/cpp_type_traits.h: Improve doxygen file docs.
3266 2024-08-28  Jason Merrill  <jason@redhat.com>
3268         * include/std/istream: Add cast to avoid -Wsign-compare.
3269         * include/std/stacktrace: Likewise.
3271 2024-08-28  Jason Merrill  <jason@redhat.com>
3273         * testsuite/20_util/default_delete/void_neg.cc: Fix regexp quoting.
3275 2024-08-28  Jason Merrill  <jason@redhat.com>
3277         * include/std/coroutine (coroutine_handle): Use nullptr instead of
3278         0 as initializer for _M_fr_ptr.
3280 2024-08-28  Jason Merrill  <jason@redhat.com>
3282         * include/bits/stl_uninitialized.h (__uninitialized_move_copy): Add
3283         missing return.
3285 2024-08-28  Jason Merrill  <jason@redhat.com>
3287         * include/decimal/decimal.h (_DEFINE_DECIMAL_BINARY_OP_WITH_INT):
3288         Remove redundant semicolons.
3290 2024-08-27  Jonathan Wakely  <jwakely@redhat.com>
3292         PR libstdc++/115098
3293         * python/libstdcxx/v6/printers.py (StdBitReferencePrinter): Add
3294         comment.
3295         * testsuite/libstdc++-prettyprinters/simple.cc: Do not default
3296         construct std::vector<bool>::reference.
3297         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
3299 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3301         * doc/xml/manual/documentation_hacking.xml: Update minimum
3302         Doxygen version.
3303         * doc/html/*: Regenerate.
3305 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3307         * include/std/tuple: Do not include implementation details in
3308         Doxygen documentation.
3310 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3312         * include/bits/alloc_traits.h: Improve doxygen docs for
3313         allocator_traits specializations.
3314         * include/bits/memory_resource.h: Likewise.
3316 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3318         * include/std/optional (__is_derived_from_optional): New
3319         concept.
3320         (operator<=>): Use __is_derived_from_optional.
3321         * testsuite/20_util/optional/relops/lwg3746.cc: New test.
3323 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3325         * include/bits/locale_classes.tcc (__try_use_facet): Also avoid
3326         dynamic_cast for const-qualified facet types.
3328 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3330         PR libstdc++/108619
3331         * include/bits/alloc_traits.h (__allocator_traits_base): Add
3332         variable templates for detecting which allocator operations are
3333         supported.
3334         (allocator_traits): Use 'if constexpr' instead of dispatching to
3335         overloads constrained with enable_if.
3336         (allocator_traits<allocator<T>>::construct): Use Construct if
3337         construct_at is not supported. Use
3338         __is_nothrow_new_constructible for noexcept-specifier.
3339         (allocator_traits<allocator<void>>::construct): Use
3340         __is_nothrow_new_constructible for noexcept-specifier.
3341         * include/bits/new_allocator.h (construct): Likewise.
3342         * include/ext/malloc_allocator.h (construct): Likewise.
3343         * include/std/type_traits (__is_nothrow_new_constructible): New
3344         variable template.
3345         * testsuite/20_util/allocator/89510.cc: Adjust expected results.
3346         * testsuite/ext/malloc_allocator/89510.cc: Likewise.
3347         * testsuite/ext/new_allocator/89510.cc: Likewise.
3348         * testsuite/20_util/allocator_traits/members/108619.cc: New test.
3350 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3352         * include/bits/chrono_io.h (__formatter_chrono::_M_C_y_Y):
3353         Ignore modifiers unless the formatting locale is not the C
3354         locale.
3355         (__formatter_chrono::_M_d_e): Likewise.
3356         (__formatter_chrono::_M_H_I): Likewise.
3357         (__formatter_chrono::_M_m): Likewise.
3358         (__formatter_chrono::_M_M): Likewise.
3359         (__formatter_chrono::_M_S): Likewise.
3360         (__formatter_chrono::_M_u_w): Likewise.
3361         (__formatter_chrono::_M_U_V_W): Likewise.
3363 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3365         PR libstdc++/115939
3366         * include/bits/hashtable_policy.h (_Node_iterator): Add
3367         operator== and operator!=.
3368         (_Node_const_iterator): Likewise.
3369         * testsuite/23_containers/unordered_map/115939.cc: New test.
3371 2024-08-23  Giovanni Bajo  <rasky@develer.com>
3372             Jonathan Wakely  <jwakely@redhat.com>
3374         PR libstdc++/88935
3375         * include/bits/stl_algo.h (random_shuffle) [RAND_MAX < INT_MAX]:
3376         Use xorshift instead of rand().
3377         * testsuite/25_algorithms/random_shuffle/88935.cc: New test.
3379 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3381         PR c++/116369
3382         * include/debug/safe_base.h (_Safe_sequence_base::_M_iterators):
3383         Add mutable specifier.
3384         (_Safe_sequence_base::_M_const_iterators): Likewise.
3386 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3388         * src/c++11/debug.cc: Replace throw() with noexcept.
3390 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3392         * include/std/variant [C++20] (_Uninitialized): Always use the
3393         primary template.
3394         [C++20] (__get_n): Access the _M_storage member directly.
3396 2024-08-23  Jonathan Wakely  <jwakely@redhat.com>
3398         PR libstdc++/115098
3399         * include/bits/stl_bvector.h (_Bit_reference): Make default
3400         constructor private. Declare vector and bit iterators as
3401         friends.
3402         * include/std/bitset (bitset::reference): Make constructor and
3403         data members private.
3404         * testsuite/20_util/bitset/115098.cc: New test.
3405         * testsuite/23_containers/vector/bool/115098.cc: New test.
3407 2024-08-22  Patrick Palka  <ppalka@redhat.com>
3409         * testsuite/25_algorithms/contains/1.cc: Verify value of
3410         __cpp_lib_ranges_contains.
3411         * testsuite/25_algorithms/find_last/1.cc: Verify value of
3412         __cpp_lib_ranges_find_last.
3413         * testsuite/26_numerics/iota/2.cc: Verify value of
3414         __cpp_lib_ranges_iota.
3416 2024-08-22  Patrick Palka  <ppalka@redhat.com>
3418         * include/bits/iterator_concepts.h (__detail::__projected): Define
3419         an optimized partial specialization for when the projection is
3420         std::identity.
3421         * testsuite/24_iterators/indirect_callable/projected.cc: Verify the
3422         optimization.
3424 2024-08-22  Patrick Palka  <ppalka@redhat.com>
3426         * include/bits/iterator_concepts.h (indirectly_unary_invocable):
3427         Relax as per P2997R1.
3428         (indirectly_regular_unary_invocable): Likewise.
3429         (indirect_unary_predicate): Likewise.
3430         (indirect_binary_predicate): Likewise.
3431         (indirect_equivalence_relation): Likewise.
3432         (indirect_strict_weak_order): Likewise.
3433         * include/bits/version.def (ranges): Update value for C++26.
3434         * include/bits/version.h: Regenerate.
3435         * testsuite/24_iterators/indirect_callable/p2997r1.cc: New test.
3436         * testsuite/std/ranges/version_c++23.cc: Remove.
3437         * testsuite/std/ranges/headers/ranges/synopsis.cc: Refine the
3438         __cpp_lib_ranges checks.
3440 2024-08-22  Patrick Palka  <ppalka@redhat.com>
3442         * include/bits/iterator_concepts.h (__detail::__indirect_value):
3443         Define.
3444         (__indirect_value_t): Define as per P2609R3.
3445         (iter_common_reference_t): Adjust as per P2609R3.
3446         (indirectly_unary_invocable): Likewise.
3447         (indirectly_regular_unary_invocable): Likewise.
3448         (indirect_unary_predicate): Likewise.
3449         (indirect_binary_predicate): Likewise.
3450         (indirect_equivalence_relation): Likewise.
3451         (indirect_strict_weak_order): Likewise.
3452         (__detail::__projected::__type): Define member aliases
3453         __projected_Iter and __projected_Proj providing the
3454         template arguments of the current specialization.
3455         * include/bits/version.def (ranges): Update value.
3456         * include/bits/version.h: Regenerate.
3457         * testsuite/24_iterators/indirect_callable/p2609r3.cc: New test.
3458         * testsuite/std/ranges/version_c++23.cc: Update expected value
3459         of __cpp_lib_ranges macro.
3461 2024-08-21  Jonathan Wakely  <jwakely@redhat.com>
3463         PR tree-optimization/102958
3464         * include/bits/char_traits.h (char_traits<char8_t>::length): Use
3465         strlen.
3467 2024-08-21  Jonathan Wakely  <jwakely@redhat.com>
3469         PR libstdc++/114862
3470         * src/c++98/locale_facets.cc (__num_base::_S_format_float):
3471         Check uppercase flag for fixed format.
3472         * testsuite/22_locale/num_put/put/char/lwg4084.cc: New test.
3474 2024-08-21  Jonathan Wakely  <jwakely@redhat.com>
3476         PR libstdc++/116381
3477         * include/std/variant (variant): Fix conditions for
3478         static_assert to match the spec.
3479         * testsuite/20_util/variant/types_neg.cc: New test.
3481 2024-08-20  Jonathan Wakely  <jwakely@redhat.com>
3483         * include/std/optional: Remove redundant redeclaration.
3485 2024-08-20  Jonathan Wakely  <jwakely@redhat.com>
3487         * include/std/text_encoding: Fix indentation.
3489 2024-08-20  Jonathan Wakely  <jwakely@redhat.com>
3491         PR libstdc++/115744
3492         * testsuite/18_support/headers/new/synopsis.cc [C++26]: Add
3493         constexpr to placement operator new and operator new[].
3495 2024-08-18  Gerald Pfeifer  <gerald@pfeifer.com>
3497         * doc/xml/manual/prerequisites.xml: Remove note from the
3498         GCC 4.0.1 days.
3499         * doc/html/manual/setup.html: Regenerate.
3501 2024-08-17  Gerald Pfeifer  <gerald@pfeifer.com>
3503         * doc/xml/manual/abi.xml: Update reference to
3504         gcc.gnu.org/onlinedocs.
3505         * doc/xml/manual/concurrency_extensions.xml (interface): Ditto.
3506         * doc/xml/manual/extensions.xml: Ditto.
3507         * doc/xml/manual/parallel_mode.xml: Ditto.
3508         * doc/xml/manual/shared_ptr.xml: Ditto.
3509         * doc/xml/manual/using_exceptions.xml: Ditto. And change GNU GCC
3510         to GCC.
3511         * doc/html/manual/abi.html: Regenerate.
3512         * doc/html/manual/ext_concurrency_impl.html: Ditto.
3513         * doc/html/manual/ext_demangling.html: Ditto.
3514         * doc/html/manual/memory.html: Ditto.
3515         * doc/html/manual/parallel_mode_design.html: Ditto.
3516         * doc/html/manual/parallel_mode_using.html: Ditto.
3517         * doc/html/manual/using_exceptions.html: Ditto.
3519 2024-08-17  Gerald Pfeifer  <gerald@pfeifer.com>
3521         * doc/xml/manual/prerequisites.xml: Tweak two links to
3522         installation docs. Fix grammar.
3523         * doc/html/manual/setup.html: Regenerate.
3525 2024-08-16  Hans-Peter Nilsson  <hp@axis.com>
3527         PR libstdc++/116362
3528         * configure.ac: Check newlib configuration whether iconv is enabled.
3529         * configure: Regenerate.
3531 2024-08-16  Hans-Peter Nilsson  <hp@axis.com>
3533         * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune
3534         uncapitalized "in function" warning from linker.
3536 2024-08-08  Jakub Jelinek  <jakub@redhat.com>
3538         PR c++/115744
3539         * libsupc++/new (__glibcxx_want_constexpr_new): Define before
3540         including bits/version.h.
3541         (_GLIBCXX_PLACEMENT_CONSTEXPR): Define.
3542         (operator new, operator new[]): Use it for placement new instead
3543         of inline.
3544         * include/bits/version.def (constexpr_new): New FTM.
3545         * include/bits/version.h: Regenerate.
3547 2024-08-06  Jonathan Wakely  <jwakely@redhat.com>
3549         PR libstdc++/116247
3550         * include/bits/fs_path.h: Use __UINTPTR_TYPE__ instead of
3551         uintptr_t.
3552         * include/bits/shared_ptr_atomic.h: Likewise.
3553         * include/ext/pointer.h: Include <stdint.h>.
3555 2024-08-03  Patrick Palka  <ppalka@redhat.com>
3557         * include/bits/move.h (__like_impl): New metafunction.
3558         (__like_t): Redefine in terms of __like_impl.
3559         (forward_like): Redefine in terms of __like_t.
3560         * testsuite/20_util/forward_like/2_neg.cc: Don't expect
3561         error outside the immediate context anymore.
3563 2024-08-02  Jonathan Wakely  <jwakely@redhat.com>
3565         * testsuite/libstdc++-prettyprinters/shared_ptr.cc: Include
3566         <cstdint>.
3568 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3570         * include/bits/utility.h (__is_in_place_type): Remove.
3571         * include/std/variant (__is_in_place_tag): Remove.
3573 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3575         * include/bits/align.h (align, assume_aligned): Use
3576         __UINTPTR_TYPE__ instead of uintptr_t. Do not include
3577         <stdint.h>.
3578         * include/bits/atomic_base.h (__atomic_ref): Likewise.
3579         * include/bits/atomic_wait.h (__waiter_pool_base::_S_for):
3580         Likewise.
3581         * include/std/atomic: Include <cstdint>.
3583 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3585         * include/bits/atomic_base.h (__atomic_impl::compare_exchange_weak):
3586         Remove unused parameter.
3587         (__atomic_impl::compare_exchange_strong): Likewise.
3589 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3591         PR libstdc++/113807
3592         * include/std/bitset (bitset::_M_is_equal()): Use memcmp to
3593         optimize operator==.
3595 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3597         * testsuite/26_numerics/random/discrete_distribution/operators/values.cc:
3598         Use ARGS to limit number of iterations for simulators.
3600 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3602         PR libstdc++/113841
3603         * include/bits/basic_string.h (basic_string::basic_string()):
3604         Constrain so that it's only present if the allocator is default
3605         constructible.
3606         * include/bits/cow_string.h (basic_string::basic_string()):
3607         Likewise.
3608         * testsuite/21_strings/basic_string/cons/113841.cc: New test.
3610 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3612         PR libstdc++/99942
3613         * include/bits/cow_string.h (data()): Change to noexcept(false).
3615 2024-08-01  Jonathan Wakely  <jwakely@redhat.com>
3617         * testsuite/23_containers/map/operators/1_neg.cc (test01): Remove test variable
3618         and use 'no match' dg-error patter.
3619         * testsuite/23_containers/set/operators/1_neg.cc (test01): Likewise.
3621 2024-07-31  François Dumont  <frs.dumont@gmail.com>
3623         * testsuite/23_containers/map/operators/1_neg.cc (test01): Add test variable
3624         declaration.
3625         * testsuite/23_containers/set/operators/1_neg.cc (test01): Likewise.
3627 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3629         * src/c++20/format.cc [!_GLIBCXX_HAS_GTHREADS] (mutex): Define
3630         dummy mutex type.
3631         * testsuite/std/time/format_localized.cc: Use loop variable
3632         instead of creating the same locale on every iteration.
3634 2024-07-31  Sam James  <sam@gentoo.org>
3636         * testsuite/28_regex/traits/char/translate.cc: Drop bogus 'dg_do run'.
3638 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3640         * src/c++11/system_error.cc (strerror_string): Handle
3641         non-conforming NULL return from strerror.
3643 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3645         * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale):
3646         Only append "@euro" to ".ISO8859-15" locales for Glibc.
3648 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3650         * include/bits/version.def (format): Update value for C++26.
3651         * include/bits/version.h: Regenerate.
3652         * include/std/format (runtime_format, wruntime_format): Check
3653         __cpp_lib_format instead of __cplusplus.
3654         * testsuite/std/format/functions/format.cc: Update expected
3655         value of macro for C++26 mode.
3657 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3659         PR libstdc++/110356
3660         * include/bits/c++config (_GLIBCXX26_DEPRECATED): Define.
3661         (_GLIBCXX26_DEPRECATED_SUGGEST): Define.
3662         * include/bits/version.def (format): Update for C++26.
3663         * include/bits/version.h: Regenerate.
3664         * include/std/format (basic_format_arg::visit): New member
3665         functions.
3666         (visit_format_arg): Add deprecated attribute.
3667         * testsuite/std/format/arguments/args.cc: Expect deprecated
3668         warnings. Check member visit.
3669         * testsuite/std/format/functions/format.cc: Update expected
3670         value for __cpp_lib_format macro.
3671         * testsuite/std/format/parse_ctx.cc: Add dg-warning for
3672         deprecation.
3674 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3676         PR libstdc++/110356
3677         * include/bits/version.def (variant): Update for C++26.
3678         * include/bits/version.h: Regenerate.
3679         * include/std/variant (variant::visit): New member functions.
3680         * testsuite/20_util/variant/visit.cc: Check second alternative.
3681         * testsuite/20_util/variant/visit_member.cc: New test.
3683 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3685         PR libstdc++/115776
3686         * include/bits/version.def (format): Update for C++26.
3687         * include/bits/version.h: Regenerate.
3688         * include/std/format (basic_format_parse_context): Remove
3689         default argument from constructor and split into two
3690         constructors. Make the constructor taking size_t private for
3691         C++26 and later.
3692         (basic_format_parse_context::check_dynamic_spec): New member
3693         function template.
3694         (basic_format_parse_context::check_dynamic_spec_integral): New
3695         member function.
3696         (basic_format_parse_context::check_dynamic_spec_string):
3697         Likewise.
3698         (__format::_Spec::_S_parse_width_or_precision): Use
3699         check_dynamic_spec_integral.
3700         (__format::__to_arg_t_enum): New helper function.
3701         (basic_format_arg):  Declare __to_arg_t_enum as friend.
3702         (__format::_Scanner): Define and use a derived parse context
3703         type.
3704         (__format::_Checking_scanner): Make arg types available to parse
3705         context.
3706         * testsuite/std/format/functions/format.cc: Check for new values
3707         of __cpp_lib_format macro.
3708         * testsuite/std/format/parse_ctx.cc: Check all members of
3709         basic_format_parse_context.
3710         * testsuite/std/format/parse_ctx_neg.cc: New test.
3711         * testsuite/std/format/string.cc: Add more checks for dynamic
3712         width and precision args.
3714 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3716         * include/bits/version.def (format): Update value for P2510R3.
3717         * include/bits/version.h: Regenerate.
3718         * include/std/format (_GLIBCXX_P2518R3): Remove misspelled macro
3719         and check __glibcxx_format instead.
3720         * testsuite/std/format/functions/format.cc: Check value of the
3721         __cpp_lib_format macro for formatting pointers support.
3722         * testsuite/std/format/parse_ctx.cc: Likewise.
3724 2024-07-31  Jonathan Wakely  <jwakely@redhat.com>
3726         PR libstdc++/109162
3727         * acinclude.m4 (libtool_VERSION): Update to 6:34:0.
3728         * config/abi/pre/gnu.ver: Disambiguate old patters. Add new
3729         GLIBCXX_3.4.34 symbol version and new exports.
3730         * configure: Regenerate.
3731         * include/bits/chrono_io.h (_ChronoSpec::_M_locale_specific):
3732         Add new accessor functions to use a reserved bit in _Spec.
3733         (__formatter_chrono::_M_parse): Use _M_locale_specific(true)
3734         when chrono-specs contains locale-dependent conversion
3735         specifiers.
3736         (__formatter_chrono::_M_format): Open iconv descriptor if
3737         conversion to UTF-8 will be needed.
3738         (__formatter_chrono::_M_write): New function to write a
3739         localized string with possible character conversion.
3740         (__formatter_chrono::_M_a_A, __formatter_chrono::_M_b_B)
3741         (__formatter_chrono::_M_p, __formatter_chrono::_M_r)
3742         (__formatter_chrono::_M_x, __formatter_chrono::_M_X)
3743         (__formatter_chrono::_M_locale_fmt): Use _M_write.
3744         * include/bits/version.def (format): Update value.
3745         * include/bits/version.h: Regenerate.
3746         * include/std/format (_GLIBCXX_P2518R3): Check feature test
3747         macro instead of __cplusplus.
3748         (basic_format_context): Declare __formatter_chrono as friend.
3749         * src/c++20/Makefile.am: Add new file.
3750         * src/c++20/Makefile.in: Regenerate.
3751         * src/c++20/format.cc: New file.
3752         * testsuite/std/time/format_localized.cc: New test.
3753         * testsuite/util/testsuite_abi.cc: Add new symbol version.
3755 2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
3757         * include/bits/chrono_io.h (__local_time_fmt_for): New alias
3758         template.
3759         (formatter<zoned_time<D, P>>): Use __local_time_fmt_for.
3760         * testsuite/std/time/zoned_time/io.cc: Check zoned_time<minutes>
3761         can be formatted.
3763 2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
3765         * include/bits/chrono_io.h (__local_fmt_t): Remove unused
3766         declaration.
3767         (__formatter_chrono::_M_format_to_ostream): Add explicit
3768         handling for specializations of __local_time_fmt, including the
3769         time zone abbreviation in the output if __is_neg is true.
3770         (formatter<chrono::tai_time<D>>::format): Add comment.
3771         (formatter<chrono::gps_time<D>>::format): Likewise.
3772         (formatter<chrono::__detail::__local_time_fmt::format): Call
3773         _M_format with true for the __is_neg flag.
3774         * testsuite/std/time/clock/gps/io.cc: Remove unused variable.
3775         * testsuite/std/time/clock/local/io.cc: Fix test error that
3776         checked tai_time instead of local_time. Add tests for
3777         local-time-format-t formatting.
3778         * testsuite/std/time/clock/system/io.cc: Check empty
3779         chrono-specs.
3780         * testsuite/std/time/clock/tai/io.cc: Likewise.
3781         * testsuite/std/time/zoned_time/io.cc: Likewise.
3783 2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
3785         * include/std/expected (expected(U&&), operator=(U&&))
3786         (value_or): Use remove_cv_t on default template argument, as per
3787         LWG 3886.
3788         * include/std/optional (optional(U&&), operator=(U&&))
3789         (value_or): Likewise.
3790         * testsuite/20_util/expected/lwg3886.cc: New test.
3791         * testsuite/20_util/optional/cons/lwg3886.cc: New test.
3793 2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
3795         * src/c++17/fs_ops.cc: Fix file name in comment.
3797 2024-07-30  Jonathan Wakely  <jwakely@redhat.com>
3799         * src/c++17/fs_ops.cc (auto_win_file_handle): Change constructor
3800         parameter from const path& to const wchar_t*.
3801         (fs::equiv_files): New function.
3802         (fs::equivalent): Use equiv_files.
3803         * src/filesystem/ops-common.h (fs::equiv_files): Declare.
3804         (do_copy_file): Use equiv_files.
3805         * src/filesystem/ops.cc (fs::equiv_files): Define.
3806         (fs::copy, fs::equivalent): Use equiv_files.
3807         * testsuite/27_io/filesystem/operations/copy.cc: Test
3808         overwriting directory contents recursively.
3809         * testsuite/27_io/filesystem/operations/copy_file.cc: Test
3810         overwriting existing files.
3812 2024-07-30  Lennox Shou Hao Ho  <lennoxhoe@gmail.com>
3814         PR libstdc++/113663
3815         * src/c++17/fs_ops.cc (fs::equivalent): Moved helper class
3816         auto_handle to anonymous namespace as auto_win_file_handle.
3817         (fs::hard_link_count): Changed Windows implementation to use
3818         information provided by GetFileInformationByHandle which is more
3819         reliable.
3820         * testsuite/27_io/filesystem/operations/hard_link_count.cc: New
3821         test.
3823 2024-07-29  Thomas Schwinge  <tschwinge@baylibre.com>
3825         * testsuite/lib/libstdc++.exp (file-io-diff): Polish.
3827 2024-07-28  Sam James  <sam@gentoo.org>
3829         PR libstdc++/110572
3830         * testsuite/18_support/type_info/110572.cc: Fix dg-do directive order.
3832 2024-07-27  Jonathan Wakely  <jwakely@redhat.com>
3834         * include/std/charconv (__to_chars_16, __to_chars_10)
3835         (__to_chars_8, __to_chars_2, __to_chars): Cast ptrdiff_t to
3836         size_t for comparison.
3837         (__to_chars_i): Check for first >= last instead of first == last
3838         for initial sanity check.
3840 2024-07-27  Jonathan Wakely  <jwakely@redhat.com>
3842         * include/bits/std_function.h: Add comment about LWG 3617 being
3843         supported.
3845 2024-07-27  Jonathan Wakely  <jwakely@redhat.com>
3847         * include/bits/stl_algobase.h (__find_if): Remove overloads for
3848         dispatching on iterator_category. Do not unroll loop manually.
3849         * include/bits/stl_algo.h (__find_if_not): Remove
3850         iterator_category argument from __find_if call.
3852 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3854         * include/std/expected (expected::value): Add assertions for LWG
3855         3843 requirements.
3856         (expected<cv void, E>::value): Add assertions for LWG 3940
3857         requirements.
3859 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3861         * include/std/format (basic_format_args): Remove default
3862         constructor, as per LWG 4106.
3863         * testsuite/std/format/arguments/args.cc: Check it isn't default
3864         constructible.
3866 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3868         * include/bits/utility.h (_Swallow_assign): Make assignment
3869         constexpr for C++11 as well, and add noexcept.
3870         * include/std/tuple (_Swallow_assign, ignore): Move to
3871         bits/utility.h.
3872         * testsuite/20_util/headers/utility/ignore.cc: New test.
3874 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3876         * include/std/optional: Reorder parameters in comparison
3877         operators as per LWG 2945.
3879 2024-07-25  Patrick Palka  <ppalka@redhat.com>
3881         PR libstdc++/116038
3882         * include/std/functional (_Bind_front::operator()): Use __like_t
3883         instead of std::forward when forwarding __self.
3884         (_Bind_back::operator()): Likewise.
3885         * include/std/ranges (_Partial::operator()): Likewise.
3886         (_Pipe::operator()): Likewise.
3887         * testsuite/20_util/function_objects/bind_back/116038.cc: New test.
3888         * testsuite/20_util/function_objects/bind_front/116038.cc: New test.
3889         * testsuite/std/ranges/adaptors/116038.cc: New test.
3891 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3893         * include/std/expected (bad_expected_access<void>): Add noexcept
3894         to special member functions, as per LWG 4031.
3895         * testsuite/20_util/expected/bad.cc: Check for nothrow copy and
3896         move members.
3898 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3900         * include/std/optional (optional): Use C++20 features to
3901         simplify overload sets for constructors and assignment
3902         operators.
3904 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3906         * include/std/optional (optional): Constrain constructors to
3907         prevent problematic bool conversions, as per LWG 3836.
3908         * testsuite/20_util/optional/cons/lwg3836.cc: New test.
3910 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3912         * include/std/expected (expected): Constrain constructors to
3913         prevent problematic bool conversions, as per LWG 3836.
3914         * testsuite/20_util/expected/lwg3836.cc: New test.
3916 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3918         * include/std/optional (_Optional_payload_base::_Storage)
3919         [C++20]: Define constrained non-trivial destructor.
3920         (_Optional_payload_base::_Storage<U, false>) [C++20]: Do not
3921         define partial specialization when primary template has
3922         constrained destructor.
3923         (_Optional_base) [C++20]: Define constrained trivial copy and
3924         move cons and move constructors. Define payload accessors here
3925         instead of inheriting them from _Optional_base_impl.
3926         (_Optional_base_impl, _Optional_base<T, false, true>)
3927         (_Optional_base<T, true, false>, _Optional_base<T, true, true>)
3928         [C++20]: Do not define.
3930 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3932         * include/std/optional (optional): Add using-declaraction for
3933         _Base::_M_get and declare optional<U> as friend.
3934         (optional(const optional<U>&)): Use
3935         _M_get instead of operator*.
3936         (optional(optional<U>&&)): Likewise.
3937         (operator=(const optional<U>&)): Likewise.
3938         (operator=(optional<U>&&)): Likewise.
3939         (and_then, tansform): Likewise.
3941 2024-07-25  Jonathan Wakely  <jwakely@redhat.com>
3943         * include/std/optional (_Optional_base_impl::_M_get()): Move
3944         assertions to ...
3945         (optional::operator->, optional::operator*): ... here.
3947 2024-07-25  Andrew Pinski  <quic_apinski@quicinc.com>
3949         * testsuite/lib/libstdc++.exp (v3_target_compile): Call
3950         string trim on v3_target_compile before calling split.
3952 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
3954         PR libstdc++/116070
3955         * include/std/istream: Check feature test macro before using
3956         is_class_v and is_same_v.
3957         * include/std/ostream: Likewise.
3959 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
3961         PR libstdc++/116070
3962         * include/bits/stl_bvector.h: Check feature test macro before
3963         using is_default_constructible_v.
3965 2024-07-24  Michael Levine  <mlevine55@bloomberg.net>
3967         * include/bits/ranges_algobase.h: Remove duplicate include of
3968         <bits/stl_algobase.h>.
3970 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
3972         PR libstdc++/12048
3973         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: Move to...
3974         * testsuite/ext/stdio_sync_filebuf/wchar_t/12048-1.cc: ...here.
3975         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: Move to...
3976         * testsuite/ext/stdio_sync_filebuf/wchar_t/12048-2.cc: ...here.
3977         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: Move to...
3978         * testsuite/ext/stdio_sync_filebuf/wchar_t/12048-3.cc: ...here.
3979         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: Move to...
3980         * testsuite/ext/stdio_sync_filebuf/wchar_t/12048-4.cc: ...here.
3982 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
3984         * testsuite/lib/libstdc++.exp (libstdc++_init): Do not copy all
3985         data files into test directory.
3987 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
3989         * testsuite/20_util/hash/chi2_q_document_words.cc: Use
3990         dg-additional-files for input text.
3991         * testsuite/performance/ext/pb_ds/all_text_find.cc: Likewise.
3992         * testsuite/performance/ext/pb_ds/multimap_text_find.hpp:
3993         Likewise.
3994         * testsuite/performance/ext/pb_ds/multimap_text_insert.hpp:
3995         Likewise.
3996         * testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp:
3997         Likewise.
3998         * testsuite/performance/ext/pb_ds/priority_queue_text_join.cc:
3999         Likewise.
4000         * testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp: Likewise.
4001         * testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc: Likewise.
4002         * testsuite/performance/ext/pb_ds/priority_queue_text_push.cc:
4003         Likewise.
4004         * testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc: Likewise.
4005         * testsuite/performance/ext/pb_ds/tree_text_insert.cc: Likewise.
4006         * testsuite/performance/ext/pb_ds/tree_text_lor_find.cc:
4007         Likewise.
4009 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
4011         * testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc:
4012         Use dg-additional-files.
4013         * testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc:
4014         Likewise.
4015         * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc:
4016         Likewise.
4017         * testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc:
4018         Likewise.
4019         * testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc:
4020         Likewise.
4021         * testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
4022         Likewise.
4023         * testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc:
4024         Likewise.
4025         * testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc:
4026         Likewise.
4028 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
4030         * testsuite/27_io/basic_filebuf/close/char/1.cc: Remove
4031         @require@ and @diff@. Use dg-final file-io-diff action.
4032         * testsuite/27_io/basic_istream/extractors_other/char/2.cc:
4033         Likewise.
4034         * testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc:
4035         Likewise.
4036         * testsuite/27_io/basic_istream/get/char/2.cc: Likewise.
4037         * testsuite/27_io/basic_istream/get/wchar_t/2.cc: Likewise.
4038         * testsuite/27_io/basic_istream/ignore/char/3.cc: Likewise.
4039         * testsuite/27_io/basic_istream/ignore/wchar_t/3.cc: Likewise.
4040         * testsuite/27_io/basic_istream/peek/char/6414.cc: Likewise.
4041         * testsuite/27_io/basic_istream/peek/wchar_t/6414.cc: Likewise.
4042         * testsuite/27_io/basic_istream/seekg/char/fstream.cc: Likewise.
4043         * testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc:
4044         Likewise.
4045         * testsuite/27_io/basic_istream/tellg/char/fstream.cc: Likewise.
4046         * testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc:
4047         Likewise.
4048         * testsuite/27_io/basic_ofstream/open/char/1.cc: Likewise.
4049         * testsuite/27_io/basic_ostream/inserters_other/char/1.cc:
4050         Likewise.
4051         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc:
4052         Likewise.
4053         * testsuite/27_io/ios_base/sync_with_stdio/1.cc: Likewise.
4054         * testsuite/27_io/basic_ostream/inserters_other/char/2.cc:
4055         Likewise. Check file positions.
4056         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc:
4057         Likewise.
4058         * testsuite/lib/libstdc++.exp (file-io-diff): New proc.
4060 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
4062         * testsuite/27_io/basic_filebuf/imbue/char/2.cc: Use
4063         dg-additional-files.
4064         * testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc: Likewise.
4065         * testsuite/27_io/basic_filebuf/open/char/path.cc: Likewise.
4066         * testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc:
4067         Likewise.
4068         * testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc: Likewise.
4069         * testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc: Likewise.
4070         * testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc: Likewise.
4071         * testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc: Likewise.
4072         * testsuite/27_io/basic_filebuf/setbuf/char/1.cc: Likewise.
4073         * testsuite/27_io/basic_filebuf/sgetn/char/3.cc: Likewise.
4074         * testsuite/27_io/basic_filebuf/underflow/10096.cc: Likewise.
4075         * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
4076         * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
4077         * testsuite/27_io/basic_ifstream/assign/1.cc: Likewise.
4078         * testsuite/27_io/basic_ifstream/cons/move.cc: Likewise.
4079         * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
4080         * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
4081         * testsuite/27_io/basic_ifstream/open/wchar_t/1.cc: Likewise.
4082         * testsuite/27_io/objects/char/10.cc: Likewise.
4083         * testsuite/27_io/objects/char/12048-1.cc: Likewise.
4084         * testsuite/27_io/objects/char/12048-2.cc: Likewise.
4085         * testsuite/27_io/objects/char/12048-3.cc: Likewise.
4086         * testsuite/27_io/objects/char/12048-4.cc: Likewise.
4087         * testsuite/27_io/objects/char/12048-5.cc: Likewise.
4088         * testsuite/27_io/objects/wchar_t/12048-1.cc: Likewise.
4089         * testsuite/27_io/objects/wchar_t/12048-2.cc: Likewise.
4090         * testsuite/27_io/objects/wchar_t/12048-3.cc: Likewise.
4091         * testsuite/27_io/objects/wchar_t/12048-4.cc: Likewise.
4092         * testsuite/27_io/objects/wchar_t/12048-5.cc: Likewise.
4093         * testsuite/ext/stdio_sync_filebuf/char/12048-1.cc: Likewise.
4094         * testsuite/ext/stdio_sync_filebuf/char/12048-2.cc: Likewise.
4095         * testsuite/ext/stdio_sync_filebuf/char/12048-3.cc: Likewise.
4096         * testsuite/ext/stdio_sync_filebuf/char/12048-4.cc: Likewise.
4097         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc: Likewise.
4098         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc: Likewise.
4099         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc: Likewise.
4100         * testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc: Likewise.
4102 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
4104         * testsuite/27_io/basic_filebuf/close/char/2.cc: Remove
4105         @require@ and @diff@ markup. Use dg-additional-files. Remove
4106         unused variable.
4107         * testsuite/27_io/basic_filebuf/close/char/3.cc: Remove
4108         @require@ and @diff@ markup. Use dg-additional-files.
4109         * testsuite/27_io/basic_filebuf/close/char/4.cc: Likewise.
4110         * testsuite/27_io/basic_filebuf/close/char/5.cc: Likewise.
4111         * testsuite/27_io/basic_filebuf/in_avail/char/1.cc: Likewise.
4112         * testsuite/27_io/basic_filebuf/is_open/char/1.cc: Likewise.
4113         * testsuite/27_io/basic_filebuf/open/char/1.cc: Likewise.
4114         * testsuite/27_io/basic_filebuf/open/char/2.cc: Likewise.
4115         * testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc: Likewise.
4116         * testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc: Likewise.
4117         * testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc: Likewise.
4118         * testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc: Likewise.
4119         * testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc: Likewise.
4120         * testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc: Likewise.
4121         * testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc: Likewise.
4122         * testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc: Likewise.
4123         * testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc: Likewise.
4124         * testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc: Likewise.
4125         * testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc: Likewise.
4126         * testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc: Likewise.
4127         * testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc: Likewise.
4128         * testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc: Likewise.
4129         * testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc: Likewise.
4130         * testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc: Likewise.
4131         * testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc: Likewise.
4132         * testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc: Likewise.
4133         * testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc: Likewise.
4134         * testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc: Likewise.
4135         * testsuite/27_io/basic_filebuf/snextc/char/1-in.cc: Likewise.
4136         * testsuite/27_io/basic_filebuf/snextc/char/1-io.cc: Likewise.
4137         * testsuite/27_io/basic_filebuf/snextc/char/1-out.cc: Likewise.
4138         * testsuite/27_io/basic_filebuf/snextc/char/2-in.cc: Likewise.
4139         * testsuite/27_io/basic_filebuf/snextc/char/2-io.cc: Likewise.
4140         * testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc:
4141         Likewise.
4142         * testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc:
4143         Likewise.
4144         * testsuite/27_io/basic_filebuf/sputc/char/1-in.cc: Likewise.
4145         * testsuite/27_io/basic_filebuf/sputc/char/2-in.cc: Likewise.
4146         * testsuite/27_io/basic_filebuf/sputc/char/2-io.cc: Likewise.
4147         * testsuite/27_io/basic_filebuf/sputn/char/1-in.cc: Likewise.
4148         * testsuite/27_io/basic_filebuf/sputn/char/1-io.cc: Likewise.
4149         Remove unused variable.
4150         * testsuite/27_io/basic_filebuf/sputn/char/2-in.cc: Remove
4151         @require@ and @diff@ markup. Use dg-additional-files.
4152         * testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc: Likewise.
4153         * testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc: Likewise.
4154         * testsuite/27_io/basic_ifstream/cons/char/1.cc: Likewise.
4155         * testsuite/27_io/basic_ifstream/open/char/1.cc: Likewise.
4156         * testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc: Likewise.
4157         * testsuite/27_io/basic_istream/readsome/char/6746-2.cc:
4158         Likewise.
4159         * testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc:
4160         Likewise.
4161         * testsuite/27_io/basic_istream/seekg/char/sstream.cc: Likewise.
4162         * testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc:
4163         Likewise.
4164         * testsuite/27_io/basic_istream/tellg/char/1.cc: Likewise.
4165         * testsuite/27_io/basic_istream/tellg/char/sstream.cc: Likewise.
4166         * testsuite/27_io/basic_istream/tellg/wchar_t/1.cc: Likewise.
4167         * testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc:
4168         Likewise.
4169         * testsuite/27_io/basic_ofstream/open/char/1.cc: Likewise.
4170         * testsuite/lib/dg-options.exp (dg-additional-files): Append to
4171         v3_additional_files instead of replacing.
4172         * testsuite/lib/libstdc++.exp (v3_target_compile): Reset
4173         v3_additional_files after copying files.
4175 2024-07-24  Jonathan Wakely  <jwakely@redhat.com>
4177         * testsuite/27_io/basic_filebuf/close/char/4879.cc: Remove
4178         @require@ and @diff@ comments.
4179         * testsuite/27_io/basic_filebuf/close/char/9964.cc: Likewise.
4180         * testsuite/27_io/basic_filebuf/open/char/3.cc: Likewise.
4181         * testsuite/27_io/basic_filebuf/open/char/9507.cc: Likewise.
4182         * testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc: Likewise.
4183         * testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc: Likewise.
4184         * testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc: Likewise.
4185         * testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc: Likewise.
4186         * testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc: Likewise.
4187         * testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc: Likewise.
4188         * testsuite/27_io/basic_filebuf/snextc/char/2-out.cc: Likewise.
4189         * testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc:
4190         Likewise.
4191         * testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc:
4192         Likewise.
4193         * testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc:
4194         Likewise.
4195         * testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc:
4196         Likewise.
4197         * testsuite/27_io/basic_filebuf/sputc/char/1-out.cc: Likewise.
4198         * testsuite/27_io/basic_filebuf/sputc/char/2-out.cc: Likewise.
4199         * testsuite/27_io/basic_filebuf/sputn/char/1-out.cc: Likewise.
4200         * testsuite/27_io/basic_filebuf/sputn/char/2-out.cc: Likewise.
4201         * testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc: Likewise.
4202         * testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc: Likewise.
4203         * testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc: Likewise.
4204         * testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc: Likewise.
4205         * testsuite/27_io/basic_filebuf/sputc/char/1-io.cc: Likewise.
4206         Remove unused variable.
4207         * testsuite/27_io/basic_filebuf/sputn/char/2-io.cc: Likewise.
4208         * testsuite/27_io/basic_ofstream/cons/char/1.cc: Remove
4209         @require@ and @diff@ comments. Remove unused variables.
4210         * testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc: Remove
4211         * testsuite/27_io/ios_base/sync_with_stdio/2.cc: Likewise.
4213 2024-07-23  Jonathan Wakely  <jwakely@redhat.com>
4215         * src/c++23/print.cc (__open_terminal): Use [[maybe_unused]] on
4216         parameter.
4218 2024-07-23  Detlef Vollmann  <dv@vollmann.ch>
4220         PR libstdc++/115482
4221         * src/c++23/print.cc (__open_terminal) [__AVR__]: Do not use
4222         isatty.
4224 2024-07-18  Patrick Palka  <ppalka@redhat.com>
4226         * include/experimental/socket
4227         (basic_socket_iostream::basic_socket_iostream): Fix typo.
4228         * include/tr2/dynamic_bitset
4229         (__dynamic_bitset_base::_M_is_proper_subset_of): Likewise.
4231 2024-07-12  Alexandre Oliva  <oliva@adacore.com>
4233         * testsuite/decimal/binary-arith.cc: Require dfprt.
4234         * testsuite/decimal/comparison.cc: Likewise.
4235         * testsuite/decimal/compound-assignment.cc: Likewise.
4236         * testsuite/decimal/compound-assignment-memfunc.cc: Likewise.
4237         * testsuite/decimal/make-decimal.cc: Likewise.
4238         * testsuite/decimal/pr54036-1.cc: Likewise.
4239         * testsuite/decimal/pr54036-2.cc: Likewise.
4240         * testsuite/decimal/pr54036-3.cc: Likewise.
4241         * testsuite/decimal/unary-arith.cc: Likewise.
4243 2024-07-11  Jonathan Wakely  <jwakely@redhat.com>
4245         * testsuite/29_atomics/atomic_ref/bool.cc: New test.
4247 2024-07-11  Damien Lebrun-Grandie  <dalg24@gmail.com>
4249         * include/bits/atomic_base.h (__atomic_ref): Do not use integral
4250         specialization for bool.
4252 2024-07-11  Gerald Pfeifer  <gerald@pfeifer.com>
4254         * doc/xml/manual/using.xml: Switch gcc.gnu.org links to https.
4255         * doc/html/manual/using_concurrency.html: Regenerate.
4256         * doc/html/manual/using_dynamic_or_shared.html: Ditto.
4257         * doc/html/manual/using_headers.html: Ditto.
4258         * doc/html/manual/using_namespaces.html: Ditto.
4260 2024-07-11  Jonathan Wakely  <jwakely@redhat.com>
4262         PR libstdc++/108636
4263         * testsuite/27_io/filesystem/path/108636.cc: Require normal
4264         mode.
4266 2024-07-10  Jonathan Wakely  <jwakely@redhat.com>
4268         PR libstdc++/114387
4269         * include/std/format (basic_format_context): Define copy
4270         operations as deleted, as per LWG 4061.
4271         * testsuite/std/format/context.cc: New test.
4273 2024-07-10  Jonathan Wakely  <jwakely@redhat.com>
4275         * src/c++26/text_encoding.cc (__locale_encoding): Add to unnamed
4276         namespace.
4277         (std::locale::encoding): Optimize for "C" and "*" names.
4279 2024-07-10  Jonathan Wakely  <jwakely@redhat.com>
4281         PR libstdc++/115854
4282         * include/bits/stl_bvector.h (_Bvector_base): Convert allocator
4283         to rebound type explicitly.
4284         * testsuite/23_containers/vector/allocator/115854.cc: New test.
4285         * testsuite/23_containers/vector/bool/allocator/115854.cc: New test.
4287 2024-07-10  Jonathan Wakely  <jwakely@redhat.com>
4289         PR libstdc++/115799
4290         * include/bits/ranges_util.h (__find_fn): Make conversion
4291         from difference type ti size_t explicit.
4292         * testsuite/25_algorithms/find/bytes.cc: Check ranges::find with
4293         __gnu_test::test_contiguous_range.
4294         * testsuite/std/ranges/range.cc: Adjust expected difference_type
4295         for __gnu_test::test_contiguous_range.
4296         * testsuite/util/testsuite_iterators.h (contiguous_iterator_wrapper):
4297         Use __max_diff_type as difference type.
4298         (test_range::sentinel, test_sized_range_sized_sent::sentinel):
4299         Ensure that operator- returns difference_type.
4301 2024-07-10  Marek Polacek  <polacek@redhat.com>
4303         * testsuite/std/ranges/access/101782.cc: Don't compile with
4304         -fconcepts-ts.
4306 2024-07-08  Jonathan Wakely  <jwakely@redhat.com>
4308         PR libstdc++/115807
4309         * include/c_compatibility/stdatomic.h (_Atomic): Ensure it
4310         refers to std::atomic in the global namespace.
4311         * testsuite/29_atomics/headers/stdatomic.h/115807.cc: New test.
4313 2024-07-07  Gerald Pfeifer  <gerald@pfeifer.com>
4315         * doc/xml/manual/configure.xml: Update Autobook 14 link.
4316         Update GCC installation instructions link.
4317         * doc/html/manual/configure.html: Regenerate.
4319 2024-07-07  Jonathan Wakely  <jwakely@redhat.com>
4321         PR libstdc++/115799
4322         * include/bits/stl_algo.h (find): Use 'if constexpr' so that
4323         memchr optimization is a discarded statement for non-contiguous
4324         iterators.
4325         * testsuite/25_algorithms/find/bytes.cc: Check with input
4326         iterators.
4328 2024-07-07  Jonathan Wakely  <jwakely@redhat.com>
4330         PR libstdc++/115799
4331         * include/bits/ranges_util.h (__find_fn): Return iterator
4332         instead of sentinel.
4333         * testsuite/25_algorithms/find/constrained.cc: Check non-common
4334         contiguous sized range of char.
4336 2024-07-06  Jonathan Wakely  <jwakely@redhat.com>
4338         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Add
4339         attribute names from later standards and remove dg-options.
4340         * testsuite/17_intro/headers/c++1998/stdc++.cc: Add c++98_only
4341         target selector.
4342         * testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc:
4343         Remove content and include stdc++.cc twice instead.
4344         * testsuite/17_intro/headers/c++2011/stdc++.cc: Replace
4345         dg-options with c++11 target selector.
4346         * testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc:
4347         Remove content and include stdc++.cc twice instead.
4348         * testsuite/17_intro/headers/c++2011/all_attributes.cc: Removed.
4349         * testsuite/17_intro/headers/c++2011/all_no_exceptions.cc: Removed.
4350         * testsuite/17_intro/headers/c++2011/all_no_rtti.cc: Removed.
4351         * testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc: Removed.
4352         * testsuite/17_intro/headers/c++2011/charset.cc: Removed.
4353         * testsuite/17_intro/headers/c++2011/operator_names.cc: Removed.
4354         * testsuite/17_intro/headers/c++2014/all_attributes.cc: Removed.
4355         * testsuite/17_intro/headers/c++2014/all_no_exceptions.cc: Removed.
4356         * testsuite/17_intro/headers/c++2014/all_no_rtti.cc: Removed.
4357         * testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc: Removed.
4358         * testsuite/17_intro/headers/c++2014/charset.cc: Removed.
4359         * testsuite/17_intro/headers/c++2014/operator_names.cc: Removed.
4360         * testsuite/17_intro/headers/c++2014/stdc++.cc: Removed.
4361         * testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc: Removed.
4362         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Removed.
4363         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: Removed.
4364         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: Removed.
4365         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: Removed.
4366         * testsuite/17_intro/headers/c++2017/charset.cc: Removed.
4367         * testsuite/17_intro/headers/c++2017/operator_names.cc: Removed.
4368         * testsuite/17_intro/headers/c++2017/stdc++.cc: Removed.
4369         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc: Removed.
4370         * testsuite/17_intro/headers/c++2020/all_attributes.cc: Removed.
4371         * testsuite/17_intro/headers/c++2020/all_no_exceptions.cc: Removed.
4372         * testsuite/17_intro/headers/c++2020/all_no_rtti.cc: Removed.
4373         * testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc: Removed.
4374         * testsuite/17_intro/headers/c++2020/charset.cc: Removed.
4375         * testsuite/17_intro/headers/c++2020/operator_names.cc: Removed.
4376         * testsuite/17_intro/headers/c++2020/stdc++.cc: Removed.
4377         * testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc: Removed.
4379 2024-07-06  Jonathan Wakely  <jwakely@redhat.com>
4381         * include/std/variant (_Variant_storage::_M_reset): Use
4382         __unlikely__ form of attribute instead of unlikely.
4384 2024-07-06  Jonathan Wakely  <jwakely@redhat.com>
4386         PR libstdc++/115797
4387         * include/std/type_traits: Ensure "C++" language linkage.
4388         * testsuite/17_intro/headers/c++2011/linkage.cc: Replace
4389         dg-options with c++11 target selector.
4391 2024-07-05  Jonathan Wakely  <jwakely@redhat.com>
4393         PR c++/115747
4394         * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
4395         Add dg-error for new C++26 diagnostics.
4397 2024-07-05  Jonathan Wakely  <jwakely@redhat.com>
4399         * include/bits/stl_uninitialized.h (_UninitDestroyGuard): New
4400         class template and partial specialization.
4401         (__do_uninit_copy, __do_uninit_fill, __do_uninit_fill_n)
4402         (__uninitialized_copy_a, __uninitialized_fill_a)
4403         (__uninitialized_fill_n_a, __uninitialized_copy_move)
4404         (__uninitialized_move_copy, __uninitialized_fill_move)
4405         (__uninitialized_move_fill, __uninitialized_default_1)
4406         (__uninitialized_default_n_a, __uninitialized_default_novalue_1)
4407         (__uninitialized_default_novalue_n_1, __uninitialized_copy_n)
4408         (__uninitialized_copy_n_pair): Use it.
4410 2024-07-05  Jonathan Wakely  <jwakely@redhat.com>
4412         PR libstdc++/88545
4413         PR libstdc++/115040
4414         * include/bits/cpp_type_traits.h (__can_use_memchr_for_find):
4415         New variable template.
4416         * include/bits/ranges_util.h (__find_fn): Use memchr when
4417         possible.
4418         * include/bits/stl_algo.h (find): Likewise.
4419         * testsuite/25_algorithms/find/bytes.cc: New test.
4421 2024-07-04  John David Anglin  <danglin@gcc.gnu.org>
4423         PR libstdc++/98678
4424         * testsuite/30_threads/future/members/poll.cc: Skip on hppa*-*-linux*.
4426 2024-06-28  Jonathan Wakely  <jwakely@redhat.com>
4428         PR libstdc++/115585
4429         * src/c++11/assert_fail.cc (__glibcxx_assert_fail): Add
4430         definition for non-verbose builds.
4432 2024-06-28  Jonathan Wakely  <jwakely@redhat.com>
4434         PR libstdc++/101485
4435         * include/bits/stl_algobase.h (__equal_aux1): Check for
4436         std::byte as well.
4437         * testsuite/25_algorithms/equal/101485.cc: New test.
4439 2024-06-28  Jonathan Wakely  <jwakely@redhat.com>
4441         PR libstdc++/104395
4442         * include/bits/new_allocator.h: Disable extended alignment
4443         support in C++98 mode.
4444         * include/bits/stl_tempbuf.h: Likewise.
4445         * include/ext/bitmap_allocator.h: Likewise.
4446         * include/ext/malloc_allocator.h: Likewise.
4447         * include/ext/mt_allocator.h: Likewise.
4448         * include/ext/pool_allocator.h: Likewise.
4449         * testsuite/ext/104395.cc: New test.
4451 2024-06-28  Jonathan Wakely  <jwakely@redhat.com>
4453         * include/ext/aligned_buffer.h (__aligned_membuf): Use
4454         alignas(T) directly instead of defining a struct and using 9its
4455         alignment.
4456         (__aligned_buffer): Remove use of std::aligned_storage.
4457         * testsuite/abi/aligned_buffers.cc: New test.
4459 2024-06-27  Jonathan Wakely  <jwakely@redhat.com>
4461         PR libstdc++/37475
4462         * config/locale/gnu/codecvt_members.cc (Guard): New RAII type.
4463         (do_out, do_in): Return partial if the destination is empty but
4464         the source is not. Use Guard to restore locale on scope exit.
4465         Return immediately on any conversion error.
4466         (do_encoding, do_max_length, do_length): Use Guard.
4467         * testsuite/22_locale/codecvt/in/char/37475.cc: New test.
4468         * testsuite/22_locale/codecvt/in/wchar_t/37475.cc: New test.
4469         * testsuite/22_locale/codecvt/out/char/37475.cc: New test.
4470         * testsuite/22_locale/codecvt/out/wchar_t/37475.cc: New test.
4472 2024-06-27  Alexandre Oliva  <oliva@adacore.com>
4474         PR libstdc++/115454
4475         * testsuite/experimental/simd/pr115454_find_last_set.cc: Defer
4476         to check_vect_support_and_set_flags's default dg-do action.
4478 2024-06-27  Jonathan Wakely  <jwakely@redhat.com>
4480         PR libstdc++/115668
4481         * include/bits/chrono_io.h (formatter<duration<R,P, C>::format):
4482         Do not use chrono::abs.
4483         * testsuite/20_util/duration/io.cc: Check formatting a duration
4484         with unsigned rep.
4486 2024-06-27  Jonathan Wakely  <jwakely@redhat.com>
4488         PR libstdc++/103191
4489         * include/bits/stl_bvector.h (vector<bool>::operator[])
4490         (vector<bool>::front, vector<bool>::back): Add debug assertions.
4491         * testsuite/23_containers/vector/bool/element_access/constexpr.cc:
4492         Remove dg-error that no longer triggers.
4494 2024-06-27  Jonathan Wakely  <jwakely@redhat.com>
4496         PR libstdc++/111250
4497         * include/debug/assertions.h (__glibcxx_requires_non_empty_range)
4498         (__glibcxx_requires_nonempty, __glibcxx_requires_subscript):
4499         Define to __glibcxx_assert expressions or to debug mode
4500         __glibcxx_check_xxx expressions.
4501         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4502         Add checks for out-of-bounds accesses in constant expressions.
4503         * testsuite/23_containers/vector/element_access/constexpr.cc:
4504         Likewise.
4506 2024-06-26  Jonathan Wakely  <jwakely@redhat.com>
4508         * scripts/update_release_branch.sh: New file.
4510 2024-06-26  Jonathan Wakely  <jwakely@redhat.com>
4512         * testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc:
4513         Copy defaulted assignment operator from 808590-cxx11.cc to
4514         suppress a warning.
4515         * testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc:
4516         Removed.
4518 2024-06-26  Jonathan Wakely  <jwakely@redhat.com>
4520         PR libstdc++/90276
4521         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
4522         Increase timeout for debug mode.
4523         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc:
4524         Likewise.
4525         * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc:
4526         Likewise.
4527         * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
4528         Likewise.
4529         * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
4530         Likewise.
4531         * testsuite/25_algorithms/pstl/alg_sorting/set_symmetric_difference.cc:
4532         Likewise.
4534 2024-06-26  Jonathan Wakely  <jwakely@redhat.com>
4536         PR libstdc++/90276
4537         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc
4538         [_GLIBCXX_DEBUG]: Add xfail-run-if for debug mode.
4539         * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc
4540         [_GLIBCXX_DEBUG]: Reduce size of test data.
4541         * testsuite/25_algorithms/pstl/alg_sorting/includes.cc:
4542         Likewise.
4543         * testsuite/25_algorithms/pstl/alg_sorting/set_util.h:
4544         Likewise.
4546 2024-06-26  Jonathan Wakely  <jwakely@redhat.com>
4548         * src/c++20/tzdb.cc (minmax_year, minmax_year2): Remove.
4549         (years_from_to): New class replacing minmax_year and
4550         minmax_year2.
4551         (format_abbrev_str, select_std_or_dst_abbrev): Move earlier in
4552         the file. Handle "-" for letters.
4553         (ZoneInfo::to): Use format_abbrev_str to expand %z.
4554         (ZoneInfo::set_abbrev): Remove exception. Change parameter from
4555         reference to value.
4556         (operator>>(istream&, Rule&)): Do not clear letters when it
4557         contains "-".
4558         (time_zone::_M_get_sys_info): Add missing logic to find the Rule
4559         in effect before the time point.
4560         * testsuite/std/time/tzdb/1.cc: Adjust for vanguard format using
4561         "GMT" as the Zone name, not as a Link to "Etc/GMT".
4562         * testsuite/std/time/time_zone/sys_info_abbrev.cc: New test.
4564 2024-06-26  Alexandre Oliva  <oliva@adacore.com>
4565             Marc Poulhiès  <poulhies@adacore.com>
4567         * testsuite/lib/dg-options.exp (add_options_for_libatomic):
4568         None for *-*-vxworks*.
4570 2024-06-25  Jonathan Wakely  <jwakely@redhat.com>
4572         * include/bits/valarray_array.h (_Array_default_ctor): Remove.
4573         (__valarray_default_construct): Inline it into here.
4574         (_Array_init_ctor): Remove.
4575         (__valarray_fill_construct): Inline it into here.
4576         (_Array_copy_ctor): Remove.
4577         (__valarray_copy_construct(const T*, const T*, T*)): Inline it
4578         into here.
4579         (__valarray_copy_construct(const T*, size_t, size_t, T*)):
4580         Use _GLIBCXX17_CONSTEXPR for constant condition.
4582 2024-06-25  Jonathan Wakely  <jwakely@redhat.com>
4584         * doc/xml/faq.xml: Replace viewcvs links with cgit links.
4585         * doc/xml/manual/allocator.xml: Likewise.
4586         * doc/xml/manual/mt_allocator.xml: Likewise.
4587         * doc/html/*: Regenerate.
4589 2024-06-22  Gerald Pfeifer  <gerald@pfeifer.com>
4591         * doc/xml/manual/debug.xml: Move gcc.gnu.org link to https.
4592         Ditto for sourceware.org links.
4593         * doc/html/manual/debug.html: Regenerate.
4595 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4597         PR libstdc++/115497
4598         * include/bits/cpp_type_traits.h (__is_pointer, __is_scalar):
4599         Remove.
4600         (__is_arithmetic): Do not use __is_pointer in the primary
4601         template. Add partial specialization for pointers.
4603 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4605         PR libstdc++/115497
4606         * include/bits/cpp_type_traits.h (__is_void): Remove.
4607         * include/debug/helper_functions.h (_Distance_traits):
4608         Adjust partial specialization to match void directly, instead of
4609         using __is_void<T>::__type and matching __true_type.
4611 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4613         PR libstdc++/115497
4614         * include/bits/deque.tcc (__lex_cmp_dit): Replace __is_pointer
4615         class template with __is_pointer(T) built-in.
4616         (__lexicographical_compare_aux1): Likewise.
4617         * include/bits/stl_algobase.h (__equal_aux1): Likewise.
4618         (__lexicographical_compare_aux1): Likewise.
4620 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4622         PR libstdc++/115497
4623         * include/bits/valarray_array.h (__valarray_default_construct):
4624         Use __is_trivial(_Tp). instead of __is_scalar<_Tp>.
4626 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4628         PR libstdc++/109150
4629         * include/bits/stl_algobase.h (__fill_a1): Combine the
4630         !__is_scalar and __is_scalar overloads into one and rewrite the
4631         condition used to decide whether to perform the load outside the
4632         loop.
4633         * testsuite/25_algorithms/fill/109150.cc: New test.
4634         * testsuite/25_algorithms/fill_n/109150.cc: New test.
4636 2024-06-21  Matthias Kretz  <m.kretz@gsi.de>
4638         PR libstdc++/115575
4639         * testsuite/experimental/simd/pr115454_find_last_set.cc: Require
4640         avx512f_runtime. Don't memcpy fixed_size masks.
4642 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4644         * include/bits/stl_uninitialized.h (uninitialized_default_construct)
4645         (uninitialized_default_construct_n, uninitialized_value_construct)
4646         (uninitialized_value_construct_n): Qualify calls to prevent ADL.
4648 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4650         * include/std/any (any_cast(any*), any_cast(const any*)): Add
4651         static assertion to reject void types, as per LWG 3305.
4652         * testsuite/20_util/any/misc/lwg3305.cc: New test.
4654 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4656         * include/bits/memory_resource.h (polymorphic_allocator::destroy):
4657         Remove deprecated attribute.
4659 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4661         * include/backward/backward_warning.h: Adjust comments to
4662         suggest <spanstream> as another alternative to <strstream>.
4663         * include/backward/strstream (strstreambuf, istrstream)
4664         (ostrstream, strstream): Add deprecated attribute.
4666 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4668         * include/bits/locale_conv.h (wstring_convert): Add deprecated
4669         attribute for C++17 and later.
4670         (wbuffer_convert): Likewise.
4671         * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: Disable
4672         deprecated warnings.
4673         * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: Likewise.
4674         * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc:
4675         Likewise.
4676         * testsuite/22_locale/conversions/buffer/1.cc: Add dg-warning.
4677         * testsuite/22_locale/conversions/buffer/2.cc: Likewise.
4678         * testsuite/22_locale/conversions/buffer/3.cc: Likewise.
4679         * testsuite/22_locale/conversions/buffer/requirements/typedefs.cc:
4680         Likewise.
4681         * testsuite/22_locale/conversions/string/1.cc: Likewise.
4682         * testsuite/22_locale/conversions/string/2.cc: Likewise.
4683         * testsuite/22_locale/conversions/string/3.cc: Likewise.
4684         * testsuite/22_locale/conversions/string/66441.cc: Likewise.
4685         * testsuite/22_locale/conversions/string/requirements/typedefs-2.cc:
4686         Likewise.
4687         * testsuite/22_locale/conversions/string/requirements/typedefs.cc:
4688         Likewise.
4690 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4692         * include/bits/version.def (chrono): Add cxx11abi = yes.
4693         * include/bits/version.h: Regenerate.
4694         * testsuite/std/time/syn_c++20.cc: Adjust expected value for
4695         the feature test macro.
4697 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4699         PR libstdc++/115522
4700         * include/std/array (to_array): Workaround the fact that
4701         std::is_trivial is not sufficient to check that a type is
4702         trivially default constructible and assignable.
4703         * testsuite/23_containers/array/creation/115522.cc: New test.
4705 2024-06-21  Jonathan Wakely  <jwakely@redhat.com>
4707         * testsuite/util/testsuite_allocator.h (tracker_allocator):
4708         Initialize base class in copy constructor.
4710 2024-06-20  Matthias Kretz  <m.kretz@gsi.de>
4712         PR libstdc++/115454
4713         * include/experimental/bits/simd_x86.h (_S_not_equal_to): Use
4714         neq comparison instead of bitwise negation after eq.
4715         (_S_find_last_set): Clear unused high bits before computing
4716         bit_width.
4717         * testsuite/experimental/simd/pr115454_find_last_set.cc: New
4718         test.
4720 2024-06-19  Jonathan Wakely  <jwakely@redhat.com>
4722         * include/std/future: Adjust whitespace to use tabs for
4723         indentation.
4725 2024-06-19  Jonathan Wakely  <jwakely@redhat.com>
4727         * include/std/future (_State_baseV2::_Setter<R, void>): Add
4728         noexcept to call operator.
4729         (_State_baseV2::_Setter<R, __exception_ptr_tag>): Likewise.
4731 2024-06-19  Jonathan Wakely  <jwakely@redhat.com>
4733         * include/bits/stl_pair.h [__cpp_lib_concepts] (pair()): Add
4734         conditional noexcept.
4736 2024-06-19  Jonathan Wakely  <jwakely@redhat.com>
4738         * include/bits/stl_tempbuf.h (__get_temporary_buffer): Cast
4739         argument to size_t to handle negative values and suppress
4740         -Wsign-compare warning.
4741         (_Temporary_buffer): Move diagnostic pragmas to new location of
4742         call to std::get_temporary_buffer.
4744 2024-06-18  Jonathan Wakely  <jwakely@redhat.com>
4746         * include/bits/cpp_type_traits.h: Fix outdated comment about the
4747         number of standard integer types.
4749 2024-06-14  Jonathan Wakely  <jwakely@redhat.com>
4751         PR libstdc++/110572
4752         * libsupc++/typeinfo (type_info::operator==): Add always_inline
4753         attribute for targets where the ABI requries equality to be
4754         non-inline.
4755         * testsuite/18_support/type_info/110572.cc: New test.
4757 2024-06-14  Jonathan Wakely  <jwakely@redhat.com>
4759         * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Fix declaration of
4760         posix_memalign.
4762 2024-06-13  Alexandre Oliva  <oliva@adacore.com>
4764         PR libstdc++/114359
4765         * testsuite/26_numerics/random/binomial_distribution/114359.cc:
4766         Require cmath.
4768 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4770         * include/std/type_traits (__add_rval_ref_t): Use
4771         __add_rvalue_reference built-in trait.
4773 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4775         * include/std/type_traits (__add_lval_ref_t): Use
4776         __add_lvalue_reference built-in trait.
4778 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4779             Jonathan Wakely  <jwakely@redhat.com>
4781         * include/bits/cpp_type_traits.h (__is_pointer): Use
4782         __is_pointer built-in trait.
4783         * include/std/type_traits (is_pointer): Likewise.  Optimize its
4784         implementation.
4785         (is_pointer_v): Likewise.
4787 2024-06-13  Jonathan Wakely  <jwakely@redhat.com>
4789         * include/bits/ranges_base.h (range_common_reference_t): New
4790         alias template, as per LWG 3860.
4791         * testsuite/std/ranges/range.cc: Check it.
4793 2024-06-13  Jonathan Wakely  <jwakely@redhat.com>
4795         * include/bits/ranges_base.h (const_iterator_t): Change
4796         preprocessor condition to use __glibcxx_ranges_as_const.
4797         (const_sentinel_t, range_const_reference_t): Likewise.
4798         (__access::__possibly_const_range, cbegin, cend, crbegin)
4799         (crend, cdata): Likewise.
4800         * include/bits/stl_iterator.h (iter_const_reference_t)
4801         (basic_const_iterator, const_iterator, const_sentinel)
4802         (make_const_iterator): Likewise.
4804 2024-06-13  Jonathan Wakely  <jwakely@redhat.com>
4806         PR libstdc++/115420
4807         * include/bits/hashtable.h (_Hashtable): Add static_assert to
4808         check that hash function is copy constructible.
4809         * testsuite/23_containers/unordered_map/115420.cc: New test.
4811 2024-06-13  Jonathan Wakely  <jwakely@redhat.com>
4813         PR libstdc++/113376
4814         * include/pstl/pstl_config.h: Use #if instead of #ifdef to test
4815         the _PSTL_USAGE_WARNINGS macro.
4817 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4819         * include/std/type_traits (is_nothrow_invocable): Use
4820         __is_nothrow_invocable built-in trait.
4821         * testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc:
4822         Handle the new error from __is_nothrow_invocable.
4823         * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc:
4824         Likewise.
4826 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4828         * include/std/type_traits (is_invocable): Use __is_invocable
4829         built-in trait.
4830         * testsuite/20_util/is_invocable/incomplete_args_neg.cc: Handle
4831         the new error from __is_invocable.
4832         * testsuite/20_util/is_invocable/incomplete_neg.cc: Likewise.
4834 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4836         * include/std/type_traits (rank): Use __array_rank built-in
4837         trait.
4838         (rank_v): Likewise.
4840 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4842         * include/std/type_traits (decay): Use __decay built-in trait.
4844 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4846         * include/std/type_traits (remove_all_extents): Use
4847         __remove_all_extents built-in trait.
4849 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4851         * include/std/type_traits (remove_extent): Use __remove_extent
4852         built-in trait.
4854 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4856         * include/std/type_traits (add_pointer): Use __add_pointer
4857         built-in trait.
4859 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4861         * include/std/type_traits (is_unbounded_array_v): Use
4862         __is_unbounded_array built-in trait.
4864 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4866         * include/std/type_traits (is_volatile): Use __is_volatile
4867         built-in trait.
4868         (is_volatile_v): Likewise.
4870 2024-06-13  Ken Matsui  <kmatsui@gcc.gnu.org>
4872         * include/std/type_traits (is_const): Use __is_const built-in
4873         trait.
4874         (is_const_v): Likewise.
4876 2024-06-12  Alexandre Oliva  <oliva@adacore.com>
4878         * testsuite/26_numerics/headers/cmath/constexpr_std_c++23.cc:
4879         Require cmath.
4880         * testsuite/26_numerics/headers/cmath/functions_std_c++23.cc:
4881         Likewise.
4882         * testsuite/26_numerics/headers/cmath/nextafter_c++23.cc:
4883         Likewise.
4885 2024-06-12  Alexandre Oliva  <oliva@adacore.com>
4887         * testsuite/20_util/from_chars/8.cc: Skip float128_t testing
4888         on aarch64-rtems*.
4889         * testsuite/20_util/to_chars/float128_c++23.cc: Xfail run on
4890         aarch64-rtems*.
4892 2024-06-12  Jonathan Wakely  <jwakely@redhat.com>
4894         PR libstdc++/115399
4895         * include/tr2/dynamic_bitset (operator>>=): Remove redundant
4896         call to _M_do_sanitize.
4897         * include/tr2/dynamic_bitset.tcc (_M_do_left_shift): Zero out
4898         low bits in words that should no longer be populated.
4899         (_M_do_right_shift): Likewise for high bits.
4900         * testsuite/tr2/dynamic_bitset/pr115399.cc: New test.
4902 2024-06-12  Jonathan Wakely  <jwakely@redhat.com>
4904         * include/bits/hashtable.h (_Hashtable::clear): Do not use
4905         memset to zero out bucket pointers.
4906         (_Hashtable::_M_assign_elements): Likewise.
4908 2024-06-11  Jonathan Wakely  <jwakely@redhat.com>
4910         * include/std/chrono (leap_seconds): Add comment.
4911         * testsuite/std/time/leap_seconds/io.cc: New test.
4913 2024-06-10  François Dumont  <fdumont@gcc.gnu.org>
4915         * include/bits/hashtable.h (~_Hashtable()): Replace clear call with
4916         a _M_deallocate_nodes call.
4918 2024-06-08  Deev Patel  <dkp10000@gmail.com>
4919             Jonathan Wakely  <jwakely@redhat.com>
4921         * include/bits/atomic_base.h (__atomic_impl::__clear_padding):
4922         Add missing constexpr specifier.
4923         * testsuite/29_atomics/atomic_float/constinit.cc: New test.
4925 2024-06-08  Michael Levine  <mlevine55@bloomberg.net>
4927         PR libstdc++/108760
4928         * include/bits/ranges_algo.h (ranges::out_value_result):
4929         Move to <bits/ranges_algobase.h>.
4930         (ranges::iota_result, ranges::__iota_fn, ranges::iota): Move to
4931         <numeric>.
4932         * include/bits/ranges_algobase.h (ranges::out_value_result):
4933         Move to here.
4934         * include/std/numeric (ranges::iota_result, ranges::__iota_fn)
4935         (ranges::iota): Move to here.
4936         * testsuite/25_algorithms/iota/1.cc: Renamed to ...
4937         * testsuite/26_numerics/iota/2.cc: ... here.
4939 2024-06-08  Jonathan Wakely  <jwakely@redhat.com>
4941         * include/std/algorithm: Define __glibcxx_want_ranges.
4942         * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Check
4943         feature test macro in C++20 mode.
4945 2024-06-07  Jonathan Wakely  <jwakely@redhat.com>
4947         * include/bits/ranges_algobase.h: Include <bits/stl_algobase.h>.
4949 2024-06-07  Alexandre Oliva  <oliva@adacore.com>
4951         * include/std/variant: Drop obsolete workaround.
4953 2024-06-07  Jonathan Wakely  <jwakely@redhat.com>
4955         * include/bits/ptr_traits.h (to_address): Optimize.
4956         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error text.
4958 2024-06-06  Alexandre Oliva  <oliva@adacore.com>
4960         * include/bits/c++config (_GLIBCXX_CLANG): Define or undefine.
4961         * include/bits/locale_facets_nonio.tcc: Test for it.
4962         * include/bits/stl_bvector.h: Likewise.
4963         * include/c_compatibility/stdatomic.h: Likewise.
4964         * include/experimental/bits/simd.h: Likewise.
4965         * include/experimental/bits/simd_builtin.h: Likewise.
4966         * include/experimental/bits/simd_detail.h: Likewise.
4967         * include/experimental/bits/simd_x86.h: Likewise.
4968         * include/experimental/simd: Likewise.
4969         * include/std/complex: Likewise.
4970         * include/std/ranges: Likewise.
4971         * include/std/variant: Likewise.
4972         * include/pstl/pstl_config.h: Likewise.
4974 2024-06-05  Gerald Pfeifer  <gerald@pfeifer.com>
4976         * doc/xml/faq.xml: Move gcc.gnu.org to https.
4977         * doc/html/faq.html: Regenerate.
4979 2024-06-04  Jonathan Wakely  <jwakely@redhat.com>
4981         PR libstdc++/115335
4982         * include/std/span (span::at): Guard with feature test macro.
4984 2024-06-04  Matthias Kretz  <m.kretz@gsi.de>
4986         PR libstdc++/115308
4987         * include/experimental/bits/simd.h (__int_for_sizeof): Remove
4988         special cases for __clang__.
4989         (_SimdWrapper): Change constructor overload set to allow
4990         conversion from vector types with integral conversions via bit
4991         reinterpretation.
4993 2024-06-03  Jonathan Wakely  <jwakely@redhat.com>
4995         * include/std/stacktrace (basic_stacktrace::_Impl::_M_allocate):
4996         Use __detail::__get_temporary_buffer.
4997         (basic_stacktrace::_Impl::_M_deallocate): Use
4998         __detail::__return_temporary_buffer.
5000 2024-06-03  Jonathan Wakely  <jwakely@redhat.com>
5002         PR libstdc++/105258
5003         * include/bits/stl_tempbuf.h (__detail::__get_temporary_buffer):
5004         New function to do allocation for get_temporary_buffer, with
5005         extended alignment support.
5006         (__detail::__return_temporary_buffer): Support extended
5007         alignment.
5008         (get_temporary_buffer): Use __get_temporary_buffer.
5009         (return_temporary_buffer): Support extended alignment. Add
5010         deprecated attribute.
5011         (_Temporary_buffer): Move allocation and deallocation into a
5012         subobject and remove try-catch block in constructor.
5013         (__uninitialized_construct_buf): Use argument deduction for
5014         value type.
5015         * testsuite/20_util/temporary_buffer.cc: Add dg-warning for new
5016         deprecated warning.
5017         * testsuite/25_algorithms/stable_sort/overaligned.cc: New test.
5019 2024-06-03  François Dumont  <frs.dumont@gmail.com>
5021         PR libstdc++/109849
5022         * include/bits/vector.tcc
5023         (std::vector<>::_M_range_insert(iterator, _FwdIt, _FwdIt,
5024         forward_iterator_tag))[__cplusplus < 201103L]: Add __builtin_unreachable
5025         expression to tell the compiler that the allocated buffer is large enough to
5026         receive current elements plus the elements of the range to insert.
5028 2024-06-03  Jonathan Wakely  <jwakely@redhat.com>
5030         * include/std/string_view (starts_with(basic_string_view)):
5031         Compare lengths first and then call traits_type::compare
5032         directly.
5034 2024-06-02  Gerald Pfeifer  <gerald@pfeifer.com>
5036         * doc/xml/api.xml: Move gcc.gnu.org links to https.
5037         * doc/html/api.html: Regenerate.
5039 2024-06-01  Jonathan Wakely  <jwakely@redhat.com>
5041         PR libstdc++/115269
5042         * doc/xml/manual/using.xml: Replace link to gcc-4.3.2 docs.
5043         Replace list of -std=... options with a single entry for -std.
5044         * doc/html/manual/using.html: Regenerate.
5046 2024-05-30  Alexandre Oliva  <oliva@adacore.com>
5048         * configure.ac [*-*-rtems*]: Set chdir, chmod and mkdir as
5049         available.
5050         * configure: Rebuilt.
5052 2024-05-29  François Dumont  <fdumont@gcc.gnu.org>
5054         * include/bits/vector.tcc (_Guard): Move all the nested duplicated class...
5055         * include/bits/stl_vector.h (_Guard_alloc): ...here and rename.
5056         (_M_allocate_and_copy): Use latter.
5057         (_M_initialize_dispatch): Small code simplification.
5058         (_M_range_initialize): Likewise and set _M_finish first from the result
5059         of __uninitialize_fill_n_a that can throw.
5061 2024-05-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5063         PR libstdc++/111641
5064         * src/libbacktrace/Makefile.am (AM_CFLAGS): Add -funwind-tables.
5065         * src/libbacktrace/Makefile.in: Regenerate.
5066         * testsuite/19_diagnostics/stacktrace/current.cc (dg-options): Add
5067         -funwind-tables.
5068         * testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
5069         * testsuite/19_diagnostics/stacktrace/hash.cc: Likewise.
5070         * testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
5071         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
5073 2024-05-29  Matthias Kretz  <m.kretz@gsi.de>
5075         PR libstdc++/115247
5076         * include/experimental/bits/simd.h (__as_vector): Don't use
5077         vector_size(8) on __i386__.
5078         (__vec_shuffle): Never return MMX vectors, widen to 16 bytes
5079         instead.
5080         (concat): Fix padding calculation to pick up widening logic from
5081         __as_vector.
5083 2024-05-23  Patrick Palka  <ppalka@redhat.com>
5085         * include/bits/version.def (ranges_concat): Define.
5086         * include/bits/version.h: Regenerate.
5087         * include/std/ranges (__detail::__concat_reference_t): Define
5088         for C++26.
5089         (__detail::__concat_value_t): Likewise.
5090         (__detail::__concat_rvalue_reference_t): Likewise.
5091         (__detail::__concat_indirectly_readable_impl): Likewise.
5092         (__detail::__concat_indirectly_readable): Likewise.
5093         (__detail::__concatable): Likewise.
5094         (__detail::__all_but_last_common): Likewise.
5095         (__detail::__concat_is_random_access): Likewise.
5096         (__detail::__concat_is_bidirectional): Likewise.
5097         (__detail::__last_is_common): Likewise.
5098         (concat_view): Likewise.
5099         (__detail::__concat_view_iter_cat): Likewise.
5100         (concat_view::iterator): Likewise.
5101         (views::__detail::__can_concat_view): Likewise.
5102         (views::_Concat, views::concat): Likewise.
5103         * testsuite/std/ranges/concat/1.cc: New test.
5105 2024-05-22  Jonathan Wakely  <jwakely@redhat.com>
5107         * include/bits/locale_classes.h (locale::combine)
5108         (locale::name, locale::operator==, locale::operator!=)
5109         (locale::operator(), locale::classic): Add nodiscard
5110         attribute.
5111         * include/bits/locale_classes.tcc (has_facet, use_facet):
5112         Likewise.
5113         * testsuite/22_locale/locale/cons/12438.cc: Add dg-warning for
5114         nodiscard diagnostic.
5115         * testsuite/22_locale/locale/cons/2.cc: Cast use_facet
5116         expression to void, to suppress diagnostic.
5117         * testsuite/22_locale/locale/cons/unicode.cc: Likewise.
5118         * testsuite/22_locale/locale/operations/2.cc: Add dg-warning.
5120 2024-05-22  Jonathan Wakely  <jwakely@redhat.com>
5122         PR libstdc++/108323
5123         * include/bits/locale_classes.tcc (locale(const locale&, Facet*)):
5124         Return a copy of the first argument when the facet pointer is
5125         null, as per LWG 2295.
5126         (locale::combine): Ensure the result is unnamed.
5127         * src/c++11/localename.cc (_M_replace_categories): Ignore
5128         whether the second locale has a name when cat == none, as per
5129         LWG 3676.
5130         * src/c++98/locale.cc (_M_install_facet): Use __builtin_expect
5131         to predict that the facet pointer is non-null.
5132         * testsuite/22_locale/locale/cons/names.cc: New test.
5134 2024-05-22  Jonathan Wakely  <jwakely@redhat.com>
5136         PR libstdc++/114940
5137         * include/bits/version.def (generator): Depend on
5138         __cpp_sized_deallocation.
5139         * include/bits/version.h: Regenerate.
5140         * include/std/stacktrace (_GLIBCXX_SIZED_DELETE): New macro.
5141         (basic_stacktrace::_Impl::_M_deallocate): Use it.
5143 2024-05-22  Jonathan Wakely  <jwakely@redhat.com>
5145         PR libstdc++/115099
5146         * include/bits/std_thread.h: Declare formatter as friend of
5147         thread::id.
5148         * include/std/thread (operator<<): Convert non-void pointers to
5149         void pointers for output.
5150         (formatter): Add constraint that thread::native_handle_type is a
5151         pointer or integer.
5152         (formatter::format): Reimplement without basic_ostringstream.
5153         * testsuite/30_threads/thread/id/output.cc: Check output
5154         compiles before <sstream> has been included.
5156 2024-05-22  Jonathan Wakely  <jwakely@redhat.com>
5158         PR libstdc++/115145
5159         * include/std/variant (operator==, operator!=, operator<)
5160         (operator<=, operator>, operator>=): Add trailing-return-type to
5161         lambda expressions to trigger conversion to bool.
5162         * testsuite/20_util/variant/relops/115145.cc: New test.
5164 2024-05-17  Björn Schäpers  <bjoern@hazardy.de>
5166         * acinclude.m4 (GLIBCXX_ENABLE_BACKTACE): Add check for
5167         tlhelp32.h, matching libbacktrace.
5168         * config.h.in: Regenerate.
5169         * configure: Regenerate.
5171 2024-05-17  Jonathan Wakely  <jwakely@redhat.com>
5173         PR libstdc++/115119
5174         * include/bits/unicode.h (_Iterator::operator++(int)): Fix typo
5175         in increment expression.
5176         * testsuite/ext/unicode/grapheme_view.cc: Check post-increment
5177         on view's iterator.
5179 2024-05-15  Jonathan Wakely  <jwakely@redhat.com>
5181         PR libstdc++/77704
5182         * include/bits/basic_ios.h (basic_ios::fill()): Do not modify
5183         _M_fill and _M_fill_init in a const member function.
5184         (basic_ios::fill(char_type)): Use _M_fill directly instead of
5185         calling fill(). Set _M_fill_init to true.
5186         * include/bits/basic_ios.tcc (basic_ios::init): Set _M_fill and
5187         _M_fill_init here instead.
5188         * testsuite/27_io/basic_ios/fill/char/1.cc: New test.
5189         * testsuite/27_io/basic_ios/fill/wchar_t/1.cc: New test.
5191 2024-05-15  Jonathan Wakely  <jwakely@redhat.com>
5193         * include/std/variant (__detail::__variant::__compare): New
5194         function template.
5195         (operator==, operator!=, operator<, operator>, operator<=)
5196         (operator>=): Replace macro definition with handwritten function
5197         calling __detail::__variant::__compare.
5198         (operator<=>): Call __detail::__variant::__compare.
5200 2024-05-15  Jonathan Wakely  <jwakely@redhat.com>
5202         PR libstdc++/89624
5203         * include/bits/atomic_base.h (memory_order): Use int as
5204         underlying type.
5205         * testsuite/29_atomics/atomic/89624.cc: New test.
5207 2024-05-14  Jonathan Wakely  <jwakely@redhat.com>
5209         PR libstdc++/115015
5210         * src/c++23/print.cc (__open_terminal(streambuf*)) [!__cpp_rtti]:
5211         Do not use dynamic_cast.
5213 2024-05-14  Jonathan Wakely  <jwakely@redhat.com>
5215         * doc/xml/manual/strings.xml: Clarify that GCC 4.5 added
5216         std::string::shrink_to_fit.
5217         * doc/html/manual/strings.html: Regenerate.
5219 2024-05-14  Jonathan Wakely  <jwakely@redhat.com>
5221         PR libstdc++/115063
5222         * include/std/stacktrace (basic_stacktrace::max_size): Fix typo
5223         in reference to _M_alloc member.
5224         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Check
5225         max_size() compiles.
5227 2024-05-13  Matthias Kretz  <m.kretz@gsi.de>
5229         PR libstdc++/114958
5230         * include/experimental/bits/simd.h (__as_vector): Return scalar
5231         simd as one-element vector. Return vector from single-vector
5232         fixed_size simd.
5233         (__vec_shuffle): New.
5234         (__extract_part): Adjust return type signature.
5235         (split): Use __extract_part for any split into non-fixed_size
5236         simds.
5237         (concat): If the return type stores a single vector, use
5238         __vec_shuffle (which calls __builtin_shufflevector) to produce
5239         the return value.
5240         * include/experimental/bits/simd_builtin.h
5241         (__shift_elements_right): Removed.
5242         (__extract_part): Return single elements directly. Use
5243         __vec_shuffle (which calls __builtin_shufflevector) to for all
5244         non-trivial cases.
5245         * include/experimental/bits/simd_fixed_size.h (__extract_part):
5246         Return single elements directly.
5247         * testsuite/experimental/simd/pr114958.cc: New test.
5249 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5251         * include/bits/unicode.h (_Unicode_view::_M_read_utf8): Ensure
5252         count of characters consumed is correct when the end of the
5253         input is reached unexpectedly.
5254         * testsuite/ext/unicode/view.cc: Test incomplete UTF-8
5255         sequences.
5257 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5259         PR libstdc++/114866
5260         * include/bits/out_ptr.h [!_GLIBCXX_HOSTED]: Don't refer to
5261         shared_ptr, __shared_ptr or __is_shred_ptr.
5262         * testsuite/20_util/headers/memory/114866.cc: New test.
5264 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5266         * include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE):
5267         Simplify.
5269 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5271         * include/bits/stl_pair.h (operator==): Add constraint.
5272         * include/bits/version.def (constrained_equality): Define.
5273         * include/bits/version.h: Regenerate.
5274         * include/std/optional: Define feature test macro.
5275         (__optional_rep_op_t): Use is_convertible_v instead of
5276         is_convertible.
5277         * include/std/tuple: Define feature test macro.
5278         (operator==, __tuple_cmp, operator<=>): Reimplement C++20
5279         comparisons using lambdas. Add constraints.
5280         * include/std/utility: Define feature test macro.
5281         * include/std/variant: Define feature test macro.
5282         (_VARIANT_RELATION_FUNCTION_TEMPLATE): Add constraints.
5283         (variant): Remove unnecessary friend declarations for comparison
5284         operators.
5285         * testsuite/20_util/optional/relops/constrained.cc: New test.
5286         * testsuite/20_util/pair/comparison_operators/constrained.cc:
5287         New test.
5288         * testsuite/20_util/tuple/comparison_operators/constrained.cc:
5289         New test.
5290         * testsuite/20_util/variant/relops/constrained.cc: New test.
5291         * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
5292         Disable for C++20 and later.
5293         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
5294         Remove dg-error line for target c++20.
5296 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5298         * include/backward/auto_ptr.h: Use https for URL in comment.
5299         * include/bits/basic_ios.h: Likewise.
5300         * include/std/iostream: Likewise.
5302 2024-05-07  Jonathan Wakely  <jwakely@redhat.com>
5304         * testsuite/util/testsuite_abi.cc: Update latest versions to
5305         new versions that should be used in future.
5307 2024-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5309         * src/Makefile.am [ENABLE_SYMVERS_SUN]
5310         (libstdc++-symbols.ver-sun): Pass $(libstdc___la_OBJECTS),
5311         $(libstdc___la_LIBADD) to make_sunver.pl unmodified.
5312         * src/Makefile.in: Regenerate.
5314 2024-05-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5316         * testsuite/lib/dg-options.exp (add_options_for_net_ts)
5317         <*-*-solaris2*>: Don't link with -lsocket -lnsl.
5319 2024-05-03  Andreas Schwab  <schwab@linux-m68k.org>
5321         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
5322         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
5324 2024-05-01  Jonathan Wakely  <jwakely@redhat.com>
5326         PR libstdc++/114891
5327         * include/std/generator: Check feature test macro before using
5328         is_pointer_interconvertible_v.
5330 2024-04-30  Christophe Lyon  <christophe.lyon@linaro.org>
5332         * testsuite/lib/gdb-test.exp (gdb-test): Fix regexp.  Quote
5333         newlines in logs.
5335 2024-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5337         Backported from master:
5338         2024-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5340         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
5341         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
5342         Likewise.
5343         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
5344         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
5345         Likewise.
5347 2024-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5349         Backported from master:
5350         2024-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5352         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
5353         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
5354         Likewise.
5355         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
5356         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
5357         Likewise.
5359 2024-04-26  Jonathan Wakely  <jwakely@redhat.com>
5361         PR libstdc++/114863
5362         * include/std/format (__formatter_fp::format): Only use
5363         _M_localized for finite values.
5364         * testsuite/std/format/functions/format.cc: Check localized
5365         formatting of NaN and initiny.
5367 2024-04-26  Jonathan Wakely  <jwakely@redhat.com>
5369         * doc/html/manual/status.html: Regenerate.
5370         * doc/xml/manual/status_cxx1998.xml: Adjust whitespace.
5371         * doc/xml/manual/status_cxx2011.xml: Likewise.
5372         * doc/xml/manual/status_cxx2014.xml: Likewise.
5373         * doc/xml/manual/status_cxx2017.xml: Likewise.
5374         * doc/xml/manual/status_cxx2020.xml: Likewise.
5375         * doc/xml/manual/status_cxx2023.xml: Likewise.
5376         * doc/xml/manual/status_cxxtr1.xml: Likewise.
5377         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
5379 2024-04-25  Jonathan Wakely  <jwakely@redhat.com>
5381         * scripts/run_doxygen: Rename man pages for nested types.
5383 2024-04-25  Jonathan Wakely  <jwakely@redhat.com>
5385         * include/std/chrono (tzdb_list): Fix typo in Doxygen comment.
5387 2024-04-25  Jonathan Wakely  <jwakely@redhat.com>
5389         * scripts/run_doxygen: Adjust sed pattern to match '\fR' for
5390         new man output that Doxygen 1.10 generates.
5392 2024-04-25  Jonathan Wakely  <jwakely@redhat.com>
5394         * doc/doxygen/stdheader.cc (init_map): Add missing headers.
5395         * doc/doxygen/user.cfg.in (EXCLUDE): Exclude generated files for
5396         std::format and std::text_encoding.
5398 2024-04-25  Jonathan Wakely  <jwakely@redhat.com>
5400         * include/std/variant: Add comment to #include.
5402 2024-04-22  Matthias Kretz  <m.kretz@gsi.de>
5404         PR libstdc++/114803
5405         * include/experimental/bits/simd_builtin.h
5406         (_SimdBase2::operator __vector_type_t): There is no __builtin()
5407         function in _SimdWrapper, instead use its conversion operator.
5408         * testsuite/experimental/simd/pr114803_vecbuiltin_cvt.cc: New
5409         test.
5411 2024-04-22  Matthias Kretz  <m.kretz@gsi.de>
5413         * include/experimental/bits/simd.h: Ignore -Wnarrowing for
5414         arm_neon.h.
5415         (__int_for_sizeof): Replace tautological compare with checking
5416         for invalid template parameter value.
5417         * include/experimental/bits/simd_builtin.h (__extract_part):
5418         Remove tautological compare by combining two static_assert.
5420 2024-04-22  Jakub Jelinek  <jakub@redhat.com>
5422         * testsuite/17_intro/names.cc (d, f): Undefine on s390*-linux*.
5423         * testsuite/17_intro/headers/c++1998/all_attributes.cc (packed): Don't
5424         define on s390.
5425         * testsuite/17_intro/headers/c++2011/all_attributes.cc (packed):
5426         Likewise.
5427         * testsuite/17_intro/headers/c++2014/all_attributes.cc (packed):
5428         Likewise.
5429         * testsuite/17_intro/headers/c++2017/all_attributes.cc (packed):
5430         Likewise.
5431         * testsuite/17_intro/headers/c++2020/all_attributes.cc (packed):
5432         Likewise.
5434 2024-04-19  Jonathan Wakely  <jwakely@redhat.com>
5436         * include/bits/refwrap.h (operator<=>): Simplify constraints.
5438 2024-04-19  Jonathan Wakely  <jwakely@redhat.com>
5440         PR libstdc++/114770
5441         * src/c++20/tzdb.cc (do_locate_zone): Support links that have
5442         another link as their target.
5443         * testsuite/std/time/tzdb/1.cc: Check that all zones and links
5444         can be found by locate_zone.
5445         * testsuite/std/time/tzdb/links.cc: New test.
5447 2024-04-18  Alexandre Oliva  <oliva@adacore.com>
5449         * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
5450         Disable SRA.
5452 2024-04-18  Alexandre Oliva  <oliva@adacore.com>
5454         * testsuite/20_util/from_chars/8.cc: Skip float128_t testing
5455         on aarch64-vxworks.
5456         * testsuite/20_util/to_chars/float128_c++23.cc: Xfail run on
5457         aarch64-vxworks.
5459 2024-04-18  Alexandre Oliva  <oliva@adacore.com>
5461         * src/c++20/tzdb.cc (__gnu_cxx::zoneinfo_dir_override): Define
5462         on VxWorks non-RTP.
5464 2024-04-17  Jonathan Wakely  <jwakely@redhat.com>
5466         * include/std/ostream (println(ostream&)): Define new overload.
5467         * include/std/print (println(FILE*), println()): Likewise.
5468         * testsuite/27_io/basic_ostream/print/2.cc: New test.
5469         * testsuite/27_io/print/1.cc: Remove unused header.
5470         * testsuite/27_io/print/3.cc: New test.
5472 2024-04-17  Matthias Kretz  <m.kretz@gsi.de>
5474         * include/experimental/bits/numeric_traits.h: Add include guard.
5476 2024-04-17  Matthias Kretz  <m.kretz@gsi.de>
5478         PR libstdc++/114750
5479         * include/experimental/bits/simd_builtin.h
5480         (_SimdImplBuiltin::_S_load, _S_store): Fall back to copying
5481         scalars if the memory type cannot be vectorized for the target.
5483 2024-04-16  Jonathan Wakely  <jwakely@redhat.com>
5485         * config/locale/dragonfly/numeric_members.cc: Fix typos in
5486         comments.
5487         * config/locale/gnu/numeric_members.cc: Likewise.
5489 2024-04-15  Jonathan Wakely  <jwakely@redhat.com>
5491         * doc/xml/manual/abi.xml: Replace "<next>" with "14.1.0".
5492         * doc/html/manual/abi.html: Regenerate.
5494 2024-04-15  Jonathan Wakely  <jwakely@redhat.com>
5496         * include/bits/refwrap.h (reference_wrapper): Add comparison
5497         operators as proposed by P2944R3.
5498         * include/bits/version.def (reference_wrapper): Define.
5499         * include/bits/version.h: Regenerate.
5500         * include/std/functional: Enable feature test macro.
5501         * testsuite/20_util/reference_wrapper/compare.cc: New test.
5503 2024-04-15  Jonathan Wakely  <jwakely@redhat.com>
5505         PR libstdc++/113386
5506         * include/bits/stl_pair.h (operator==, operator<=>): Support
5507         heterogeneous comparisons, as per LWG 3865.
5508         * testsuite/20_util/pair/comparison_operators/lwg3865.cc: New
5509         test.
5511 2024-04-15  Jonathan Wakely  <jwakely@redhat.com>
5513         PR libstdc++/93672
5514         * src/c++98/istream.cc (istream::ignore(streamsize, int_type)):
5515         Treat all negative delimiter values as eof().
5516         * testsuite/27_io/basic_istream/ignore/char/93672.cc: New test.
5517         * testsuite/27_io/basic_istream/ignore/wchar_t/93672.cc: New
5518         test.
5520 2024-04-15  Andreas Schwab  <schwab@suse.de>
5522         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
5524 2024-04-13  H.J. Lu  <hjl.tools@gmail.com>
5526         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt:
5527         Updated.
5529 2024-04-11  Jakub Jelinek  <jakub@redhat.com>
5531         * doc/xml/manual/abi.xml: Add latest library versions.
5532         * doc/html/manual/abi.html: Regenerate.
5534 2024-04-11  Jakub Jelinek  <jakub@redhat.com>
5536         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
5537         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
5538         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
5539         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
5540         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
5541         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
5542         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
5543         * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Update.
5544         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
5546 2024-04-11  Jonathan Wakely  <jwakely@redhat.com>
5548         PR libstdc++/114692
5549         * config/abi/pre/gnu.ver (GLIBCXX_3.4.32): Move new exports for
5550         __basic_file::native_handle to ...
5551         (GLIBCXX_3.4.33): ... here. Adjust to not match wchar_t
5552         specialization, which isn't used.
5553         * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.33 and update
5554         latest version check.
5556 2024-04-11  Jakub Jelinek  <jakub@redhat.com>
5558         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
5559         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
5560         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
5561         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
5562         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
5563         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
5564         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
5565         * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Update.
5566         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
5568 2024-04-10  Jonathan Wakely  <jwakely@redhat.com>
5570         * testsuite/27_io/manipulators/extended/get_time/char/2.cc:
5571         Adjust input string so that it matches %a with or without a
5572         trailing period.
5573         * testsuite/std/time/year_month_day/io.cc: Adjust expected
5574         format for %x in the fr_FR locale.
5576 2024-04-10  Jonathan Wakely  <jwakely@redhat.com>
5578         * src/c++17/fs_ops.cc (remove_all) [__FreeBSD__ || __DragonFly__]:
5579         Check for EMLINK as well as ELOOP.
5580         [__NetBSD__]: Check for EFTYPE as well as ELOOP.
5582 2024-04-09  Jonathan Wakely  <jwakely@redhat.com>
5584         PR libstdc++/114633
5585         * include/bits/chrono_io.h (_Parser::operator()) <'S'>: Use
5586         stream extraction if std::from_chars is not available.
5588 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
5590         PR libstdc++/114519
5591         * include/bits/unicode.h (_Utf8_view) [!__cpp_char8_t]: Define
5592         using char instead of char8_t.
5593         * testsuite/ext/unicode/view.cc: Use u8""sv literals to create
5594         string views, instead of std::u8string_view.
5596 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
5598         * testsuite/20_util/integer_comparisons/equal_neg.cc: Use
5599         no-opts selector for errors that depend on -fchar8_t.
5600         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc:
5601         Likewise.
5602         * testsuite/20_util/integer_comparisons/greater_neg.cc:
5603         Likewise.
5604         * testsuite/20_util/integer_comparisons/in_range_neg.cc:
5605         Likewise.
5606         * testsuite/20_util/integer_comparisons/less_equal_neg.cc:
5607         Likewise.
5608         * testsuite/20_util/integer_comparisons/less_neg.cc: Likewise.
5609         * testsuite/20_util/integer_comparisons/not_equal_neg.cc:
5610         Likewise.
5611         * testsuite/21_strings/basic_string/hash/hash_char8_t.cc: Skip
5612         if -fno-char8_t is used.
5613         * testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc:
5614         Likewise.
5615         * testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc:
5616         Likewise.
5617         * testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc:
5618         Likewise.
5619         * testsuite/27_io/filesystem/path/factory/u8path-depr.cc: Use
5620         char for u8 literal if char8_t is not available.
5621         * testsuite/27_io/headers/iosfwd/synopsis.cc: Check
5622         __cpp_char8_t.
5623         * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
5624         * testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc:
5625         Remove check for _GLIBCXX_USE_CHAR8_T.
5627 2024-04-08  Jonathan Wakely  <jwakely@redhat.com>
5629         * testsuite/20_util/from_chars/1_neg.cc: Add char8_t cases,
5630         using a struct of that name if -fno-char8_t is active.
5631         * testsuite/20_util/from_chars/1_c++20_neg.cc: Removed.
5633 2024-04-03  Jonathan Wakely  <jwakely@redhat.com>
5635         PR libstdc++/104606
5636         * include/std/optional (operator<=>(const optional<T>&, const U&)):
5637         Reverse order of three_way_comparable_with template arguments.
5638         * testsuite/20_util/optional/relops/104606.cc: New test.
5640 2024-04-02  Jonathan Wakely  <jwakely@redhat.com>
5642         PR libstdc++/114519
5643         * include/bits/unicode.h (_Utf8_view): Guard with check for
5644         char8_t being enabled.
5645         (__literal_encoding_is_unicode): Guard use of char8_t with check
5646         for it being enabled.
5647         * testsuite/std/format/functions/114519.cc: New test.
5649 2024-04-02  Patrick Palka  <ppalka@redhat.com>
5651         * include/std/ranges (ranges::__detail::_Empty): Rename to ...
5652         (ranges::__detail::_Absent): ... this.  Turn into a template
5653         parameterized by the absent type _Tp and discriminator _Disc.
5654         (ranges::__detail::__maybe_present_t): Add an optional
5655         discriminator parameter.
5656         (slide_view::_M_cached_begin): Pass a discriminator argument to
5657         __maybe_present_t.
5658         (slide_view::_M_cached_end): Likewise.
5659         * testsuite/std/ranges/adaptors/sizeof.cc: Verify the size of
5660         slide_view<V> is 3 instead 4 pointers.
5662 2024-04-02  Jakub Jelinek  <jakub@redhat.com>
5664         * acinclude.m4: Fix duplicated words; file file -> file can.
5665         * configure.host: Fix duplicated words; the the -> the.
5667 2024-03-29  Arsen Arsenović  <arsen@aarsen.me>
5669         * testsuite/24_iterators/range_generators/01.cc: Drop GCC
5670         Runtime Library Exception.
5671         * testsuite/24_iterators/range_generators/02.cc: Drop GCC
5672         Runtime Library Exception.
5673         * testsuite/24_iterators/range_generators/copy.cc: Drop GCC
5674         Runtime Library Exception.
5675         * testsuite/24_iterators/range_generators/except.cc: Drop GCC
5676         Runtime Library Exception.
5677         * testsuite/24_iterators/range_generators/subrange.cc: Drop GCC
5678         Runtime Library Exception.
5679         * testsuite/24_iterators/range_generators/synopsis.cc: Drop GCC
5680         Runtime Library Exception.
5681         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
5682         Drop GCC Runtime Library Exception from the "You should have
5683         received a copy" paragraph.
5685 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
5687         * include/experimental/bits/simd_x86.h (_S_masked_unary):
5688         Cast inputs < 16 bytes to 16 byte vectors before calling the
5689         right subtraction builtin. Before returning, truncate to the
5690         return vector type.
5692 2024-03-27  Matthias Kretz  <m.kretz@gsi.de>
5694         * include/experimental/bits/simd_x86.h (_S_masked_unary): Call
5695         the 4- and 8-byte variants of __builtin_ia32_subp[ds] without
5696         rounding direction argument.
5698 2024-03-27  Srinivas Yadav Singanaboina  <vasu.srinivasvasu.14@gmail.com>
5700         * include/Makefile.am: Add simd_sve.h.
5701         * include/Makefile.in: Add simd_sve.h.
5702         * include/experimental/bits/simd.h: Add new SveAbi.
5703         * include/experimental/bits/simd_builtin.h: Use
5704         __no_sve_deduce_t to support existing Neon Abi.
5705         * include/experimental/bits/simd_converter.h: Convert
5706         sequentially when sve is available.
5707         * include/experimental/bits/simd_detail.h: Define sve
5708         specific macro.
5709         * include/experimental/bits/simd_math.h: Fallback frexp
5710         to execute sequntially when sve is available, to handle
5711         fixed_size_simd return type that always uses sve.
5712         * include/experimental/simd: Include bits/simd_sve.h.
5713         * testsuite/experimental/simd/tests/bits/main.h: Enable
5714         testing for sve128, sve256, sve512.
5715         * include/experimental/bits/simd_sve.h: New file.
5717 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
5719         * include/std/generator (generator::_Iterator::operator*): Fix
5720         return type.
5721         * testsuite/24_iterators/range_generators/iter_deref_return.cc:
5722         New test.
5724 2024-03-26  Arsen Arsenović  <arsen@aarsen.me>
5726         * include/std/generator: Fix _V badname.
5728 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
5730         * testsuite/19_diagnostics/stacktrace/current.cc: Check for
5731         __cpp_lib_stacktrace instead of check for stacktrace ET.
5732         * testsuite/19_diagnostics/stacktrace/entry.cc: Likewise.
5733         * testsuite/19_diagnostics/stacktrace/hash.cc: Likewise.
5734         * testsuite/19_diagnostics/stacktrace/output.cc: Likewise.
5735         * testsuite/19_diagnostics/stacktrace/stacktrace.cc: Likewise.
5736         * testsuite/19_diagnostics/stacktrace/synopsis.cc: Likewise.
5737         * testsuite/19_diagnostics/stacktrace/version.cc: Likewise.
5738         * testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc:
5739         Likewise.
5740         * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
5741         Remove.
5743 2024-03-26  Jonathan Wakely  <jwakely@redhat.com>
5745         * testsuite/lib/dg-options.exp (dg-require-cpp-feature-test):
5746         New proc.
5747         * testsuite/lib/libstdc++.exp (check_v3_target_cpp_feature_test):
5748         New proc.
5749         * testsuite/std/text_encoding/cons.cc: Use new directive to skip
5750         the test if the __cpp_lib_text_encoding feature test macro is
5751         not defined.
5752         * testsuite/std/text_encoding/requirements.cc: Likewise.
5754 2024-03-25  Jonathan Wakely  <jwakely@redhat.com>
5756         * testsuite/std/text_encoding/requirements.cc: #undef the
5757         correct macro.
5759 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
5761         * include/std/format (formatter): Disable specializations that
5762         would allow sequences of narrow characters to be formatted as
5763         wchar_t without conversion, as per LWG 3944.
5764         * testsuite/std/format/formatter/lwg3944.cc: New test.
5766 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
5768         * include/bits/utility.h (__is_in_place_index_v): New variable
5769         template.
5770         * include/std/variant (__not_in_place_tag): Define in terms of
5771         variable templates not a class template.
5773 2024-03-23  Jonathan Wakely  <jwakely@redhat.com>
5775         PR libstdc++/114400
5776         * include/std/string_view (operator==): Use std::type_identity_t
5777         in C++20 instead of our own __type_identity_t.
5779 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
5781         PR libstdc++/114401
5782         * include/bits/hashtable.h (_Hashtable::_M_reinsert_node): Call
5783         release() on node handle instead of just zeroing its pointer.
5784         (_Hashtable::_M_reinsert_node_multi): Likewise.
5785         (_Hashtable::_M_merge_unique): Likewise.
5786         (_Hashtable::_M_merge_multi): Likewise.
5787         * include/bits/node_handle.h (_Node_handle_common::release()):
5788         New member function.
5789         (_Node_handle_common::_Optional_alloc::_M_empty): Remove
5790         unnecessary union member.
5791         (_Node_handle_common): Declare _Hashtable as a friend.
5792         * include/bits/stl_tree.h (_Rb_tree::_M_reinsert_node_unique):
5793         Call release() on node handle instead of just zeroing its
5794         pointer.
5795         (_Rb_tree::_M_reinsert_node_equal): Likewise.
5796         (_Rb_tree::_M_reinsert_node_hint_unique): Likewise.
5797         (_Rb_tree::_M_reinsert_node_hint_equal): Likewise.
5798         * testsuite/23_containers/multiset/modifiers/114401.cc: New test.
5799         * testsuite/23_containers/set/modifiers/114401.cc: New test.
5800         * testsuite/23_containers/unordered_multiset/modifiers/114401.cc: New test.
5801         * testsuite/23_containers/unordered_set/modifiers/114401.cc: New test.
5803 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
5805         PR libstdc++/113841
5806         * include/bits/allocator.h (allocator<cv T>): Add default
5807         constructor to partial specializations for cv-qualified types.
5808         * include/bits/stl_vector.h (_Vector_impl::_Vector_impl()):
5809         Constrain so that it's only present if the allocator is default
5810         constructible.
5811         * include/bits/stl_bvector.h (_Bvector_impl::_Bvector_impl()):
5812         Likewise.
5813         * testsuite/23_containers/vector/cons/113841.cc: New test.
5815 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
5817         * include/bits/stl_construct.h (destroy_at, construct_at): Guard
5818         with feature test macros instead of just __cplusplus.
5820 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
5822         * include/bits/version.def (generator, tuple_like): Move earlier
5823         in the file.
5824         * include/bits/version.h: Regenerate.
5826 2024-03-22  Jonathan Wakely  <jwakely@redhat.com>
5828         PR libstdc++/114394
5829         * include/std/functional (bind): Use __invoke_result_t instead
5830         of result_of::type.
5831         * include/std/type_traits (__invoke_result_t): New alias
5832         template.
5833         * testsuite/20_util/bind/ref_neg.cc: Adjust prune pattern.
5835 2024-03-20  François Dumont  <fdumont@gcc.gnu.org>
5837         * include/bits/version.def (null_iterators): Remove extra_cond.
5838         * include/bits/version.h: Regenerate.
5840 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5842         PR libstdc++/114359
5843         * include/bits/random.tcc (binomial_distribution::param_type):
5844         Ensure arithmetic is done as type double.
5845         * testsuite/26_numerics/random/binomial_distribution/114359.cc: New test.
5847 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5849         PR libstdc++/101228
5850         * include/pstl/parallel_backend_tbb.h (TBB_SUPPRESS_DEPRECATED_MESSAGES):
5851         Define before including <tbb/task.h> then undef afterwards.
5853 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5855         * include/Makefile.am [MAINTAINER_MODE]: Add target to
5856         automatically update <bits/version.h>.
5857         * include/Makefile.in: Regenerate.
5859 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5861         * doc/xml/manual/build_hacking.xml: Document generated files.
5862         Update list of convenience libraries and sub-directories under
5863         the src directory.
5864         * doc/html/*: Regenerate.
5866 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5868         * include/bits/text_encoding-data.h: Regenerate.
5869         * include/bits/unicode-data.h: Regenerate.
5870         * scripts/gen_text_encoding_data.py: Fix header of generated
5871         file to name the correct script.
5873 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5875         * testsuite/util/pstl/test_utils.h: Fix typos in comments.
5877 2024-03-19  Jonathan Wakely  <jwakely@redhat.com>
5879         PR libstdc++/114367
5880         * include/bits/stl_bvector.h (_M_allocate): Use allocator's
5881         construct function to begin lifetime of words.
5883 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
5885         * testsuite/lib/dg-options.exp (atomic_link_flags): Emit a -B
5886         option for the path to the uninstalled libatomic.
5888 2024-03-19  Iain Sandoe  <iain@sandoe.co.uk>
5890         * testsuite/lib/libstdc++.exp (v3_target_compile): Instead of
5891         /dev/null, use a temporary file for test executables on Darwin.
5893 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
5895         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_can_advance):
5896         Accept 0 offset advance on value-initialized iterator.
5897         * testsuite/23_containers/vector/debug/n3644.cc: New test case.
5899 2024-03-18  François Dumont  <fdumont@gcc.gnu.org>
5901         * include/debug/safe_local_iterator.tcc
5902         (_Safe_local_iterator::_M_valid_range): Add _M_value_initialized and
5903         _M_singular checks.
5904         * testsuite/23_containers/unordered_set/debug/114316.cc: New test case.
5906 2024-03-17  François Dumont  <fdumont@gcc.gnu.org>
5908         PR libstdc++/114316
5909         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range):
5910         First check if both iterators are value-initialized before checking if
5911         singular.
5912         * testsuite/23_containers/set/debug/114316.cc: New test case.
5913         * testsuite/23_containers/vector/debug/114316.cc: New test case.
5915 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
5917         PR libstdc++/114325
5918         * include/std/format (_Scanner::_M_scan): Pass correct length to
5919         __to_chars_10_impl.
5920         * testsuite/std/format/functions/format.cc: Check negative
5921         integers with empty format-spec.
5923 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
5925         * include/bits/stl_algo.h (find_end, all_of, none_of, any_of)
5926         (find_if_not, is_partitioned, partition_point, remove)
5927         (remove_if, unique, lower_bound, upper_bound, equal_range)
5928         (binary_search, includes, is_sorted, is_sorted_until, minmax)
5929         (minmax_element, is_permutation, clamp, find_if, find_first_of)
5930         (adjacent_find, count, count_if, search, search_n, min_element)
5931         (max_element): Add nodiscard attribute.
5932         * include/bits/stl_algobase.h (min, max, lower_bound, equal)
5933         (lexicographical_compare, lexicographical_compare_three_way)
5934         (mismatch): Likewise.
5935         * include/bits/stl_heap.h (is_heap, is_heap_until): Likewise.
5936         * testsuite/25_algorithms/equal/debug/1_neg.cc: Add dg-warning.
5937         * testsuite/25_algorithms/equal/debug/2_neg.cc: Likewise.
5938         * testsuite/25_algorithms/equal/debug/3_neg.cc: Likewise.
5939         * testsuite/25_algorithms/find_first_of/concept_check_1.cc:
5940         Likewise.
5941         * testsuite/25_algorithms/is_permutation/2.cc: Likewise.
5942         * testsuite/25_algorithms/lexicographical_compare/71545.cc:
5943         Likewise.
5944         * testsuite/25_algorithms/lower_bound/33613.cc: Likewise.
5945         * testsuite/25_algorithms/lower_bound/debug/irreflexive.cc:
5946         Likewise.
5947         * testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc:
5948         Likewise.
5949         * testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc:
5950         Likewise.
5951         * testsuite/25_algorithms/minmax/3.cc: Likewise.
5952         * testsuite/25_algorithms/search/78346.cc: Likewise.
5953         * testsuite/25_algorithms/search_n/58358.cc: Likewise.
5954         * testsuite/25_algorithms/unique/1.cc: Likewise.
5955         * testsuite/25_algorithms/unique/11480.cc: Likewise.
5956         * testsuite/25_algorithms/upper_bound/33613.cc: Likewise.
5957         * testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc:
5958         Likewise.
5959         * testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc:
5960         Likewise.
5961         * testsuite/ext/concept_checks.cc: Likewise.
5962         * testsuite/ext/is_heap/47709.cc: Likewise.
5963         * testsuite/ext/is_sorted/cxx0x.cc: Likewise.
5965 2024-03-14  xndcn  <xndchn@gmail.com>
5967         * include/bits/atomic_base.h (__atomic_float::__atomic_float(Fp)):
5968         Clear padding.
5969         * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc:
5970         New test.
5972 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
5974         PR libstdc++/66146
5975         * doc/xml/manual/status_cxx2011.xml: Remove mention of Linux in
5976         note about std::call_once.
5977         * doc/xml/manual/status_cxx2014.xml: Likewise.
5978         * doc/xml/manual/status_cxx2017.xml: Likewise.
5979         * doc/html/manual/status.html: Regenerate.
5981 2024-03-14  Jonathan Wakely  <jwakely@redhat.com>
5983         * doc/xml/manual/status_cxx2023.xml: Update C++23 status table.
5984         * doc/html/manual/status.html: Regenerate.
5985         * include/bits/version.def: Fix typo in comment.
5987 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
5989         * testsuite/libstdc++-prettyprinters/cxx11.cc: Move custom_cat
5990         to namespace scope.
5992 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
5994         * doc/xml/manual/debug.xml: Improve docs on debug builds and
5995         using ASan. Mention _GLIBCXX_ASSERTIONS. Reorder sections to put
5996         the most relevant ones first.
5997         * doc/xml/manual/using.xml: Add comma.
5998         * doc/html/*: Regenerate.
6000 2024-03-13  Jonathan Wakely  <jwakely@redhat.com>
6002         * doc/xml/manual/debug.xml: Document that concept checking might
6003         be removed in future.
6004         * doc/xml/manual/extensions.xml: Likewise.
6006 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
6008         PR libstdc++/114240
6009         * include/bits/chrono_io.h (_Parser::operator()): Assume
6010         hours(0) for a time_point, so that a time is not required
6011         to be present.
6012         * testsuite/std/time/parse/114240.cc: New test.
6014 2024-03-09  Jonathan Wakely  <jwakely@redhat.com>
6016         PR libstdc++/114279
6017         * include/bits/chrono_io.h (_Parser::_M_is_leap_second): New
6018         data member.
6019         (_Parser::_M_reserved): Reserve padding bits for future use.
6020         (_Parser::operator()): Set _M_is_leap_second if %S reads 60s.
6021         (from_stream): Only allow _M_is_leap_second for utc_time and
6022         local_time. Adjust arithmetic for utc_time so that leap seconds
6023         are preserved. Use time_point_cast to convert to a possibly
6024         lower-precision result type.
6025         * testsuite/std/time/parse.cc: Move to ...
6026         * testsuite/std/time/parse/parse.cc: ... here.
6027         * testsuite/std/time/parse/114279.cc: New test.
6029 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6031         * include/bits/chrono_io.h (_Parser::operator()): Use
6032         std::from_chars to parse fractional seconds.
6034 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6036         PR libstdc++/114244
6037         * include/bits/chrono_io.h (_Parser::operator()): Remove
6038         redundant uses of duration_cast. Use chrono::round to convert
6039         long double value to durations with integer representations.
6040         Check represenation type when deciding whether to skip parsing
6041         fractional seconds.
6042         * testsuite/20_util/duration/114244.cc: New test.
6043         * testsuite/20_util/duration/io.cc: Check that a floating-point
6044         duration with ratio<1> precision can be parsed.
6046 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6048         PR libstdc++/114103
6049         * include/bits/version.def (atomic_lock_free_type_aliases): Add
6050         extra_cond to check for at least one always-lock-free type.
6051         * include/bits/version.h: Regenerate.
6052         * include/std/atomic (atomic_signed_lock_free)
6053         (atomic_unsigned_lock_free): Only use always-lock-free types.
6054         * src/c++20/tzdb.cc (time_zone::_Impl::RulesCounter): Don't use
6055         atomic counter if lock-free aliases aren't available.
6056         * testsuite/29_atomics/atomic/lock_free_aliases.cc: XFAIL for
6057         targets without lock-free word-size compare_exchange.
6059 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6061         * include/std/chrono (__get_leap_second_info): Update expiry
6062         time for hardcoded list of leap seconds.
6063         * testsuite/std/time/tzdb/leap_seconds.cc: Update comment.
6065 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6067         * testsuite/23_containers/deque/allocator/default_init.cc: Use
6068         std::memset instead of __builtin_memset.
6069         * testsuite/23_containers/forward_list/allocator/default_init.cc:
6070         Likewise.
6071         * testsuite/23_containers/list/allocator/default_init.cc:
6072         Likewise.
6073         * testsuite/23_containers/map/allocator/default_init.cc:
6074         Likewise.
6075         * testsuite/23_containers/set/allocator/default_init.cc:
6076         Likewise.
6077         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
6078         Likewise.
6079         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
6080         Likewise.
6081         * testsuite/23_containers/vector/allocator/default_init.cc:
6082         Likewise.
6083         * testsuite/23_containers/vector/bool/allocator/default_init.cc:
6084         Likewise.
6085         * testsuite/29_atomics/atomic/compare_exchange_padding.cc:
6086         Likewise.
6087         * testsuite/util/atomic/wait_notify_util.h: Likewise.
6089 2024-03-07  Jonathan Wakely  <jwakely@redhat.com>
6091         * include/std/format (_Arg_store::_S_make_elt): Add two
6092         static_assert checks to give more user-friendly error messages.
6093         * testsuite/lib/prune.exp (libstdc++-dg-prune): Prune another
6094         form of "in requirements with" note.
6095         * testsuite/std/format/arguments/args_neg.cc: Check for
6096         user-friendly diagnostics for non-formattable types.
6097         * testsuite/std/format/string_neg.cc: Likewise.
6099 2024-03-04  Jonathan Wakely  <jwakely@redhat.com>
6101         PR libstdc++/114147
6102         * include/std/tuple (tuple::tuple(allocator_arg_t, const Alloc&)):
6103         Add missing overload of allocator-extended default constructor.
6104         (tuple<T1,T2>::tuple(allocator_arg_t, const Alloc&)): Likewise.
6105         * testsuite/20_util/tuple/cons/114147.cc: New test.
6107 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
6109         * include/std/format (basic_format_arg::handle::__maybe_const_t):
6110         Fix condition to check if const type is formattable.
6111         (basic_format_arg::handle::handle(T&)): Remove redundant
6112         static_assert.
6113         * testsuite/std/format/formatter/basic.cc: New test.
6115 2024-02-29  Jonathan Wakely  <jwakely@redhat.com>
6117         PR libstdc++/113960
6118         * include/bits/stl_algobase.h (__is_byte_iter): Replace with ...
6119         (__memcmp_ordered_with): New concept.
6120         (lexicographical_compare_three_way): Use __memcmp_ordered_with
6121         instead of __is_byte_iter. Use correct length for memcmp.
6122         * testsuite/25_algorithms/lexicographical_compare_three_way/113960.cc:
6123         New test.
6125 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6127         PR libstdc++/114152
6128         * include/experimental/scope (scope_exit scope_fail): Make
6129         destructor unconditionally noexcept.
6130         (scope_sucess): Fix noexcept-specifier.
6131         * testsuite/experimental/scopeguard/114152.cc: New test.
6133 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6135         * doc/xml/manual/appendix_contributing.xml: Change URLs to use
6136         https.
6137         * doc/html/manual/*: Regenerate.
6139 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6141         * doc/xml/manual/appendix_contributing.xml: Replace outdated
6142         info on ChangeLog entries.
6143         * doc/html/manual/appendix_contributing.html: Regenerate.
6145 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6147         * include/bits/stl_bvector.h (vector<bool, A>::at): Add
6148         nodiscard.
6149         * include/bits/stl_vector.h (vector<T, A>::at): Likewise.
6150         (operator==, operator<=>, operator<, operator!=, operator>)
6151         (operator<=, operator>=): Likewise.
6152         * include/debug/vector (operator==, operator<=>, operator<)
6153         (operator!=, operator>, operator<=, operator>=): Likewise.
6154         * testsuite/23_containers/vector/nodiscard.cc: New test.
6156 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6158         * include/bits/atomic_base.h (operator|, operator&): Add
6159         noexcept.
6160         * include/bits/fs_fwd.h (operator&, operator|, operator^)
6161         (operator~): Add nodiscard to overloads for copy_options, perms,
6162         perm_options, and directory_options.
6163         * include/bits/ios_base.h (operator&, operator|, operator^)
6164         (operator~): Add nodiscard and noexcept to overloads for
6165         _Ios_Fmtflags, _Ios_Openmode, and _Ios_Iostate.
6166         (operator|=, operator&=, operator^=): Add constexpr for C++14.
6167         * include/bits/regex_constants.h (operator&, operator|, operator^)
6168         (operator~): Add nodiscard and noexcept to overloads for
6169         syntax_option_type and match_flag_type.
6170         (operator|=, operator&=, operator^=): Add noexcept.
6171         * include/std/charconv (operator&, operator|, operator^)
6172         (operator~): Add nodiscard to overloads for chars_format.
6173         * include/std/future (operator&, operator|, operator^)
6174         (operator~): Add nodiscard for overloads for launch.
6175         (operator&=, operator|=, operator^=): Add constexpr for C++14.
6176         * include/experimental/bits/fs_fwd.h  (operator&, operator|)
6177         (operator^, operator~): Add nodiscard to overloads for
6178         copy_options, perms, and directory_options.
6179         * testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc:
6180         Add dg-warning for nodiscard warnings.
6181         * testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc:
6182         Likewise.
6183         * testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc:
6184         Likewise.
6185         * testsuite/27_io/filesystem/operations/bitmask_types.cc:
6186         New test.
6188 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6190         * testsuite/27_io/basic_ostream/print/1.cc: Check error
6191         handling.
6192         * testsuite/27_io/print/1.cc: Likewise.
6194 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6196         * include/std/ostream (vprint_unicode) [__CYGWIN__]: Use POSIX
6197         code path for Cygwin instead of Windows.
6198         * include/std/print (vprint_unicode) [__CYGWIN__]: Likewise.
6199         * testsuite/27_io/basic_ostream/print/1.cc: Only add -lstdc++exp
6200         for *-*-mingw* targets.
6201         * testsuite/27_io/print/1.cc: Likewise.
6203 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6205         * include/bits/alloc_traits.h: Include <bits/stl_iterator.h> for
6206         __make_move_if_noexcept_iterator.
6208 2024-02-28  Jonathan Wakely  <jwakely@redhat.com>
6210         * include/std/stacktrace: Add nodiscard attribute to all
6211         functions without side effects.
6213 2024-02-20  François Dumont  <fdumont@gcc.gnu.org>
6215         * include/bits/stl_algobase.h (std::__niter_wrap): Add a call to
6216         std::__niter_base on res iterator.
6218 2024-02-19  Iain Sandoe  <iain@sandoe.co.uk>
6219             Jonathan Wakely  <jwakely@redhat.com>
6221         PR target/112397
6222         * configure: Regenerate.
6223         * configure.ac: Detect if we are building for Darwin.
6224         * libsupc++/Makefile.am: If we are building for Darwin, then
6225         suppress hot/cold partitioning for the array allocators.
6226         * libsupc++/Makefile.in: Regenerated.
6228 2024-02-17  François Dumont  <fdumont@gcc.gnu.org>
6230         * include/bits/stl_algobase.h (std::__niter_base): Redefine the overload
6231         definitions for __gnu_debug::_Safe_iterator.
6232         * include/debug/safe_iterator.tcc (std::__niter_base): Adapt declarations.
6234 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
6236         PR libstdc++/87744
6237         PR libstdc++/113961
6238         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
6239         line number.
6241 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
6243         PR libstdc++/87744
6244         PR libstdc++/113931
6245         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
6246         line number.
6248 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
6250         * doc/xml/manual/debug_mode.xml: Update docs for backtraces.
6251         * doc/html/manual/debug_mode_using.html: Regenerate.
6253 2024-02-16  Jonathan Wakely  <jwakely@redhat.com>
6255         * doc/xml/manual/test.xml: Fix spelling of <envar> elements.
6256         * doc/html/manual/test.html: Regenerate.
6258 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6260         PR libstdc++/113806
6261         * include/std/bitset (bitset::operator>>=): Remove redundant
6262         call to _M_do_sanitize.
6264 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6266         PR libstdc++/113807
6267         * include/std/bitset (bitset::set()): Use memset instead of a
6268         loop over the individual words.
6270 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6272         PR libstdc++/113811
6273         * include/bits/stl_algo.h (__rotate): Use unsigned values for
6274         division.
6276 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6278         PR libstdc++/99117
6279         * include/std/valarray (valarray::operator=(const _Expr&)):
6280         Use loop to copy instead of __valarray_copy with _Array.
6281         * testsuite/26_numerics/valarray/99117.cc: New test.
6283 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6285         * src/c++20/tzdata.zi: Import new file from 2024a release.
6286         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
6287         Update expiry date for leap seconds list.
6289 2024-02-15  Jonathan Wakely  <jwakely@redhat.com>
6291         PR libstdc++/87744
6292         * include/bits/random.h [!__SIZEOF_INT128__] (_Select_uint_least_t):
6293         Define specialization for 64-bit generators with
6294         non-power-of-two modulus and large constants.
6295         (__mod): Use if constexpr unconditionally.
6296         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
6297         line number.
6298         * testsuite/26_numerics/random/linear_congruential_engine/87744.cc:
6299         New test.
6301 2024-02-14  Gerald Pfeifer  <gerald@pfeifer.com>
6303         * doc/xml/manual/status_cxx2023.xml: Fix C++ item p2442 to be
6304         version 1.
6305         * doc/html/manual/status.html: Regenerate.
6307 2024-02-12  Paul Keir  <paul.keir@uws.ac.uk>
6309         PR libstdc++/113294
6310         * include/bits/basic_string.h (basic_string::operator=): Use
6311         _M_use_local_data() instead of _M_local_buf on the moved-from
6312         string.
6313         * testsuite/21_strings/basic_string/modifiers/constexpr.cc
6314         (test_move): New test.
6316 2024-02-09  Ken Matsui  <kmatsui@gcc.gnu.org>
6318         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
6319         Removed.
6320         * include/std/type_traits (is_same): Use
6321         _GLIBCXX_USE_BUILTIN_TRAIT instead of
6322         _GLIBCXX_HAVE_BUILTIN_IS_SAME.
6323         (is_same_v): Likewise.
6325 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
6327         * include/bits/shared_ptr_atomic.h: Fix typo in comment.
6329 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
6331         PR libstdc++/100147
6332         * include/bits/gslice.h (operator=): Add comment about lack of
6333         self-assignment check.
6335 2024-02-08  Jonathan Wakely  <jwakely@redhat.com>
6337         * include/tr2/type_traits (bases, direct_bases): Use
6338         __has_builtin to check if required built-ins are supported.
6340 2024-02-07  Patrick Palka  <ppalka@redhat.com>
6342         PR testsuite/113710
6343         PR c++/113814
6344         * include/bits/stl_pair.h (tuple_element): Add forward
6345         declaration of the partial specialization for tuple.
6347 2024-02-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
6349         * testsuite/lib/libstdc++.exp: Use "nul" for Windows, "/dev/null"
6350         for other environments.
6352 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
6354         * include/std/format (__format::_Spec::_M_reserved): Define new
6355         bit-field members to reserve padding bits for future extensions.
6357 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
6359         * src/experimental/Makefile.am: Use libstdc++fsconvenience.a
6360         instead of libstdc++fs.a.
6361         * src/experimental/Makefile.in: Regenerate.
6362         * src/filesystem/Makefile.am: Build libstdc++fsconvenience.a as
6363         well.
6364         * src/filesystem/Makefile.in: Regenerate.
6366 2024-02-04  Jonathan Wakely  <jwakely@redhat.com>
6368         * include/bits/text_encoding-data.h: Regenerate.
6369         * include/bits/unicode-data.h: Regenerate.
6370         * scripts/gen_text_encoding_data.py: Add copyright and license
6371         text to the output.
6373 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6375         PR libstdc++/113335
6376         * include/bits/std_function.h (__function_guide_helper): Add
6377         partial specialization for explicit object member functions, as
6378         per LWG 3617.
6379         * testsuite/20_util/function/cons/deduction_c++23.cc: Check
6380         explicit object member functions.
6381         * testsuite/30_threads/packaged_task/cons/deduction_c++23.cc:
6382         Likewise.
6384 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6386         * testsuite/17_intro/names.cc [_AIX]: Undefine "u".
6388 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6390         * include/experimental/internet (network_v6::network): Define.
6391         (network_v6::hosts): Finish implementing.
6392         (network_v6::to_string): Do not concatenate std::string to
6393         arbitrary std::basic_string specialization.
6394         * testsuite/experimental/net/internet/network/v6/cons.cc: New
6395         test.
6397 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6399         PR libstdc++/90276
6400         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Fix
6401         comparison function to use less-than instead of equality.
6403 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6405         PR libstdc++/90276
6406         * testsuite/util/pstl/test_utils.h (reverse_invoker): Do not use
6407         perfect forwarding for iterator arguments.
6409 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6411         * include/std/string_view (basic_string_view(R&&)): Remove
6412         constraint that traits_type must be the same, as per LWG 3857.
6413         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc:
6414         Explicit conversion between different specializations should be
6415         allowed.
6416         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc:
6417         Likewise.
6419 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6421         * include/std/syncstream (basic_osyncstream::operator=): Remove
6422         noexcept, as per LWG 3867.
6424 2024-02-02  Jonathan Wakely  <jwakely@redhat.com>
6426         * include/std/generator (promise_type::yield_value): Remove
6427         noexcept from fourth overload, as per LWG 3894.
6429 2024-02-01  Patrick Palka  <ppalka@redhat.com>
6431         PR libstdc++/113309
6432         PR libstdc++/109203
6433         * include/bits/ranges_util.h (__detail::__pair_like): Don't
6434         define in C++23 mode.
6435         (__detail::__pair_like_convertible_from): Adjust as per P2165R4.
6436         (__detail::__is_subrange<subrange>): Moved from <ranges>.
6437         (__detail::__is_tuple_like_v<subrange>): Likewise.
6438         * include/bits/stl_iterator.h: Include <bits/utility.h> for
6439         C++23.
6440         (__different_from): Move to <concepts>.
6441         (__iter_key_t): Adjust for C++23 as per P2165R4.
6442         (__iter_val_t): Likewise.
6443         * include/bits/stl_pair.h (pair, array): Forward declare.
6444         (get): Forward declare all overloads relevant to P2165R4
6445         tuple-like constructors.
6446         (__is_tuple_v): Define for C++23.
6447         (__is_tuple_like_v): Define for C++23.
6448         (__tuple_like): Define for C++23 as per P2165R4.
6449         (__pair_like): Define for C++23 as per P2165R4.
6450         (__eligibile_tuple_like): Define for C++23.
6451         (__eligibile_pair_like): Define for C++23.
6452         (pair::_S_constructible_from_pair_like): Define for C++23.
6453         (pair::_S_convertible_from_pair_like): Define for C++23.
6454         (pair::_S_dangles_from_pair_like): Define for C++23.
6455         (pair::pair): Define overloads taking a tuple-like type for
6456         C++23 as per P2165R4.
6457         (pair::_S_assignable_from_tuple_like): Define for C++23.
6458         (pair::_S_const_assignable_from_tuple_like): Define for C++23.
6459         (pair::operator=): Define overloads taking a tuple-like type for
6460         C++23 as per P2165R4.
6461         * include/bits/utility.h (ranges::__detail::__is_subrange):
6462         Moved from <ranges>.
6463         * include/bits/version.def (tuple_like): Define for C++23.
6464         * include/bits/version.h: Regenerate.
6465         * include/std/concepts (__different_from): Moved from
6466         <bits/stl_iterator.h>.
6467         (ranges::__swap::__adl_swap): Clarify which __detail namespace.
6468         * include/std/map (__cpp_lib_tuple_like): Define C++23.
6469         * include/std/ranges (__detail::__is_subrange): Moved to
6470         <bits/utility.h>.
6471         (__detail::__is_subrange<subrange>): Moved to <bits/ranges_util.h>
6472         (__detail::__has_tuple_element): Adjust for C++23 as per P2165R4.
6473         (__detail::__tuple_or_pair): Remove as per P2165R4.  Replace all
6474         uses with plain tuple as per P2165R4.
6475         * include/std/tuple (__cpp_lib_tuple_like): Define for C++23.
6476         (__tuple_like_tag_t): Define for C++23.
6477         (__tuple_cmp): Forward declare for C++23.
6478         (_Tuple_impl::_Tuple_impl): Define overloads taking
6479         __tuple_like_tag_t and a tuple-like type for C++23.
6480         (_Tuple_impl::_M_assign): Likewise.
6481         (tuple::__constructible_from_tuple_like): Define for C++23.
6482         (tuple::__convertible_from_tuple_like): Define for C++23.
6483         (tuple::__dangles_from_tuple_like): Define for C++23.
6484         (tuple::tuple): Define overloads taking a tuple-like type for
6485         C++23 as per P2165R4.
6486         (tuple::__assignable_from_tuple_like): Define for C++23.
6487         (tuple::__const_assignable_from_tuple_like): Define for C++23.
6488         (tuple::operator=): Define overloads taking a tuple-like type
6489         for C++23 as per P2165R4.
6490         (tuple::__tuple_like_common_comparison_category): Define for C++23.
6491         (tuple::operator<=>): Define overload taking a tuple-like type
6492         for C++23 as per P2165R4.
6493         (array, get): Forward declarations moved to <bits/stl_pair.h>.
6494         (tuple_cat): Constrain with __tuple_like for C++23 as per P2165R4.
6495         (apply): Likewise.
6496         (make_from_tuple): Likewise.
6497         (__tuple_like_common_reference): Define for C++23.
6498         (basic_common_reference): Adjust as per P2165R4.
6499         (__tuple_like_common_type): Define for C++23.
6500         (common_type): Adjust as per P2165R4.
6501         * include/std/unordered_map (__cpp_lib_tuple_like): Define for
6502         C++23.
6503         * include/std/utility (__cpp_lib_tuple_like): Define for C++23.
6504         * testsuite/std/ranges/zip/1.cc (test01): Adjust to handle pair
6505         and 2-tuple interchangeably.
6506         (test05): New test.
6507         * testsuite/20_util/pair/p2165r4.cc: New test.
6508         * testsuite/20_util/tuple/p2165r4.cc: New test.
6510 2024-02-01  Patrick Palka  <ppalka@redhat.com>
6512         * include/bits/stl_pair.h (pair::_S_const_assignable): Define,
6513         factored out from ...
6514         (pair::operator=): ... the constraints of the const overloads.
6516 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
6518         * include/bits/version.tpl: Do not use def-file-line for each
6519         macro being defined.
6520         * include/bits/version.h: Regenerate.
6522 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
6524         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Adjust
6525         dg-error pattern.
6526         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
6527         Likewise.
6528         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
6529         Likewise.
6530         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
6531         Likewise.
6532         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
6533         Likewise.
6534         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
6535         Likewise.
6536         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
6537         Likewise.
6538         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
6539         Likewise.
6540         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
6541         Likewise.
6543 2024-02-01  Jonathan Wakely  <jwakely@redhat.com>
6545         * include/experimental/internet (network_v4::to_string()):
6546         Remove lambda and use of resize_and_overwrite.
6548 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
6550         * acinclude.m4 (GLIBCXX_CHECK_TEXT_ENCODING): Use <xlocale.h> if
6551         needed for newlocale.
6552         * configure: Regenerate.
6553         * src/c++26/text_encoding.cc: Use <xlocale.h>.
6555 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
6556             Ewan Higgs  <ewan.higgs@gmail.com>
6558         * include/bits/text_encoding-data.h: Regenerate.
6559         * scripts/gen_text_encoding_data.py: Add extra_aliases dict
6560         containing "ASCII".
6561         * testsuite/std/text_encoding/cons.cc: Check "ascii" is known.
6563 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
6565         * doc/xml/manual/using.xml: Update tables of supported headers.
6566         * doc/html/*: Regenerate.
6568 2024-01-31  Jonathan Wakely  <jwakely@redhat.com>
6570         * include/std/bitset (_Base_bitset::_M_do_to_ullong): Avoid
6571         -Wshift-count-overflow warning.
6573 2024-01-30  Jonathan Wakely  <jwakely@redhat.com>
6575         * testsuite/std/time/clock/gps/io.cc: Fix expected result in
6576         assertion and call test_format() from main.
6578 2024-01-29  François Dumont  <fdumont@gcc.gnu.org>
6580         * doc/xml/manual/debug_mode.xml: Link against libstdc++exp.a to use
6581         _GLIBCXX_DEBUG_BACKTRACE macro.
6583 2024-01-24  Huanghui Nie  <nnnjkk@gmail.com>
6584             Théo Papadopoulo   <papadopoulo@gmail.com>
6586         * include/bits/hashtable.h (_Hahstable<>::_M_remove_bucket_begin): Remove
6587         _M_before_begin check and cleanup implementation.
6589 2024-01-22  Jonathan Wakely  <jwakely@redhat.com>
6591         * testsuite/std/time/clock/file/io.cc: Fix expected result in
6592         assertion and call test_format() from main.
6594 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
6596         PR libstdc++/113500
6597         * include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix
6598         printing of subseconds with floating-point rep.
6599         (__formatter_chrono::_M_format_to_ostream): Do not write
6600         time_point specializations directly to the ostream.
6601         (formatter<chrono::sys_time<D>, C>::parse): Do not allow an
6602         empty chrono-spec if the type fails to meet the constraints for
6603         writing to an ostream with operator<<.
6604         * testsuite/std/time/clock/file/io.cc: Check formatting
6605         non-integral times with empty chrono-specs.
6606         * testsuite/std/time/clock/gps/io.cc: Likewise.
6607         * testsuite/std/time/clock/utc/io.cc: Likewise.
6608         * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
6610 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
6612         * include/bits/chrono.h (__file_clock::from_sys)
6613         (__file_clock::to_sys, __file_clock::_S_from_sys)
6614         (__file_clock::_S_to_sys): Use common_type for return type.
6615         * testsuite/std/time/clock/file/members.cc: Check round trip
6616         conversion for time with lower precision that seconds.
6618 2024-01-21  Jonathan Wakely  <jwakely@redhat.com>
6620         PR libstdc++/113512
6621         * include/std/format (__formatter_fp::format): Fix logic for
6622         alternate forms.
6623         * testsuite/std/format/functions/format.cc: Check buggy cases of
6624         alternate forms with g presentation type.
6626 2024-01-20  Marek Polacek  <polacek@redhat.com>
6628         PR c++/111410
6629         * include/std/ranges: Add #pragma to disable -Wdangling-reference with
6630         std::ranges::views::__adaptor::operator|.
6632 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
6634         * include/std/format (_Spec::_M_parse_fill_and_align): Do not
6635         use CTAD for _Utf32_view.
6637 2024-01-19  Jonathan Wakely  <jwakely@redhat.com>
6639         PR libstdc++/108822
6640         * include/std/tuple (__glibcxx_no_dangling_refs) [C++17]: Fix
6641         wrong fold-operator.
6642         * testsuite/20_util/tuple/dangling_ref.cc: Check tuples with one
6643         element and three elements. Check allocator-extended
6644         constructors.
6646 2024-01-19  Patrick Palka  <ppalka@redhat.com>
6648         * include/precompiled/stdc++.h [_GLIBCXX_HOSTED]: Include
6649         <print> and <text_encoding> for C++23 and C++26 respectively.
6651 2024-01-18  Patrick Palka  <ppalka@redhat.com>
6653         * include/bits/stl_pair.h [__cplusplus > 202002L]:
6654         Guard P2321R2 changes with __glibcxx_ranges_zip instead.
6656 2024-01-18  Patrick Palka  <ppalka@redhat.com>
6658         * include/std/tuple [__cplusplus > 202002L]: Guard P2321R2
6659         changes with __cpp_lib_ranges_zip instead.
6661 2024-01-18  Patrick Palka  <ppalka@redhat.com>
6663         PR libstdc++/109536
6664         * include/debug/safe_base.h (_Safe_sequence_base::_M_swap):
6665         Remove _GLIBCXX20_CONSTEXPR from non-inline member function.
6666         * include/debug/safe_iterator.h
6667         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_BEGIN): Define.
6668         (_GLIBCXX20_CONSTEXPR_NON_LITERAL_SCOPE_END): Define.
6669         (_Safe_iterator::operator=): Use them around the code path that
6670         defines a variable of type __gnu_cxx::__scoped_lock.
6671         (_Safe_iterator::operator++): Likewise.
6672         (_Safe_iterator::operator--): Likewise.
6673         (_Safe_iterator::operator+=): Likewise.
6674         (_Safe_iterator::operator-=): Likewise.
6675         * testsuite/23_containers/vector/element_access/constexpr.cc
6676         (test_iterators): Test more iterator operations.
6677         * testsuite/23_containers/vector/bool/element_access/constexpr.cc
6678         (test_iterators): Likewise.
6679         * testsuite/std/ranges/adaptors/all.cc (test08) [_GLIBCXX_DEBUG]:
6680         Remove.
6682 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
6684         * include/bits/unicode.h (__charset_alias_match): Initialize
6685         __var_a and __var_b.
6687 2024-01-18  Jonathan Wakely  <jwakely@redhat.com>
6689         PR libstdc++/113450
6690         * testsuite/std/format/functions/format.cc: Use signed char
6691         instead of int8_t.
6693 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
6695         PR libstdc++/113318
6696         * acinclude.m4 (GLIBCXX_CONFIGURE): Add c++26 directory.
6697         (GLIBCXX_CHECK_TEXT_ENCODING): Define.
6698         * config.h.in: Regenerate.
6699         * configure: Regenerate.
6700         * configure.ac: Use GLIBCXX_CHECK_TEXT_ENCODING.
6701         * include/Makefile.am: Add new headers.
6702         * include/Makefile.in: Regenerate.
6703         * include/bits/locale_classes.h (locale::encoding): Declare new
6704         member function.
6705         * include/bits/unicode.h (__charset_alias_match): New function.
6706         * include/bits/text_encoding-data.h: New file.
6707         * include/bits/version.def (text_encoding): Define.
6708         * include/bits/version.h: Regenerate.
6709         * include/std/text_encoding: New file.
6710         * src/Makefile.am: Add new subdirectory.
6711         * src/Makefile.in: Regenerate.
6712         * src/c++26/Makefile.am: New file.
6713         * src/c++26/Makefile.in: New file.
6714         * src/c++26/text_encoding.cc: New file.
6715         * src/experimental/Makefile.am: Include c++26 convenience
6716         library.
6717         * src/experimental/Makefile.in: Regenerate.
6718         * python/libstdcxx/v6/printers.py (StdTextEncodingPrinter): New
6719         printer.
6720         * scripts/gen_text_encoding_data.py: New file.
6721         * testsuite/22_locale/locale/encoding.cc: New test.
6722         * testsuite/ext/unicode/charset_alias_match.cc: New test.
6723         * testsuite/std/text_encoding/cons.cc: New test.
6724         * testsuite/std/text_encoding/members.cc: New test.
6725         * testsuite/std/text_encoding/requirements.cc: New test.
6727 2024-01-17  Jonathan Wakely  <jwakely@redhat.com>
6729         * include/bits/unicode.h (_Grapheme_cluster_view): Require view.
6730         Do not use CTAD for _Utf32_view.
6731         (__format_width, __truncate): Do not use CTAD.
6732         (enable_borrowed_range<_Utf_view<T, R>>): Define specialization.
6733         (enable_borrowed_range<_Grapheme_cluster_view<R>>): Likewise.
6735 2024-01-17  Patrick Palka  <ppalka@redhat.com>
6737         * include/std/ranges (views::_CartesianProduct::operator()):
6738         Adjust identity case as per P2540R1.
6739         * testsuite/std/ranges/cartesian_product/1.cc (test01):
6740         Adjust expected result of the identity case.
6742 2024-01-15  Patrick Palka  <ppalka@redhat.com>
6744         * include/std/variant (__detail::__variant::_Variadic_union):
6745         Add bool __trivially_destructible template parameter.
6746         (__detail::__variant::_Variadic_union::~_Variadic_union):
6747         Use __trivially_destructible in constraints instead.
6748         (__detail::__variant::_Variant_storage): Pass
6749         __trivially_destructible value to _Variadic_union.
6751 2024-01-15  Patrick Palka  <ppalka@redhat.com>
6753         * include/bits/stl_iterator.h (const_iterator): Define conversion
6754         operators as per P2836R1.
6755         * include/bits/version.def (ranges_as_const): Update value.
6756         * include/bits/version.h: Regenerate.
6757         * testsuite/24_iterators/const_iterator/1.cc (test04): New test.
6758         * testsuite/std/ranges/adaptors/as_const/1.cc: Adjust expected
6759         value of __cpp_lib_ranges_as_const.
6760         * testsuite/std/ranges/version_c++23.cc: Likewise.
6762 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
6764         PR libstdc++/108822
6765         * include/std/tuple (__assignable, __is_nothrow_assignable):
6766         Move pre-C++20 definitions adjacent to their use.
6768 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
6770         PR testsuite/113366
6771         * include/std/format (basic_format_arg): Use __formattable
6772         variable template instead of __format::__formattable_with
6773         concept.
6775 2024-01-15  Jonathan Wakely  <jwakely@redhat.com>
6777         * src/c++20/tzdata.zi: Import new file from 2023d release.
6778         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds)
6779         Update expiry date for leap seconds list.
6781 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
6783         PR libstdc++/108822
6784         * include/std/tuple (tuple): Add checks for dangling references.
6785         Reimplement constraints and constant expressions using C++20
6786         features.
6787         * include/std/type_traits [C++20]
6788         (__is_implicitly_default_constructible_v): Define.
6789         (__is_implicitly_default_constructible): Use variable template.
6790         * testsuite/20_util/tuple/dangling_ref.cc: New test.
6792 2024-01-13  Patrick Palka  <ppalka@redhat.com>
6794         PR libstdc++/108827
6795         PR libstdc++/111327
6796         * include/bits/version.def (bind_back): Define.
6797         * include/bits/version.h: Regenerate.
6798         * include/std/functional (_Bind_back): Define for C++23.
6799         (bind_back): Likewise.
6800         * testsuite/20_util/function_objects/bind_back/1.cc: New test
6801         (adapted from corresponding bind_front test).
6802         * testsuite/20_util/function_objects/bind_back/111327.cc: Likewise.
6804 2024-01-13  Patrick Palka  <ppalka@redhat.com>
6806         * include/std/functional (_Bind_front): Remove =default special
6807         member function declarations.
6808         (_Bind_front::operator()): Implement using C++23 deducing this
6809         when available.
6810         * testsuite/20_util/function_objects/bind_front/111327.cc:
6811         Adjust testcase to expect better errors in C++23 mode.
6813 2024-01-13  Patrick Palka  <ppalka@redhat.com>
6815         * include/std/ranges (views::__adaptor::operator|): Perform
6816         perfect forwarding of arguments.
6817         (views::__adaptor::_RangeAdaptor::operator()): Pass dummy
6818         first argument to _Partial.
6819         (views::__adaptor::_Partial::_Partial): Likewise.  Add dummy
6820         first parameter.
6821         (views::__adaptor::_Pipe::_Pipe): Perform perfect forwarding
6822         of arguments.
6823         (to): Pass dummy first argument to _Partial.
6825 2024-01-13  Jonathan Wakely  <jwakely@redhat.com>
6827         PR libstdc++/107466
6828         * include/bits/random.tcc (subtract_with_carry_engine::seed):
6829         Implement proposed resolution of LWG 4014.
6830         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
6831         line number.
6832         * testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc:
6833         Check for expected result of 64-bit engine with seed that
6834         doesn't fit in 32-bits.
6836 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
6838         PR libstdc++/113320
6839         * include/std/format (__format::_Runtime_format_string): Add
6840         constructor and disable copy operations.
6841         (basic_format_string(_Runtime_format_string)): Add noexcept and
6842         take parameter by value not rvalue reference.
6843         (runtime_format): Add noexcept.
6844         * testsuite/std/format/runtime_format.cc: Check noexcept. Check
6845         that construction is only possible from prvalues, not xvalues.
6847 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
6849         PR libstdc++/105505
6850         * include/bits/stl_pair.h (pair::pair(U1&&, U2&&)) [C++23]: Add
6851         default template arguments, as per P1951R1.
6852         * testsuite/20_util/pair/cons/default_tmpl_args.cc: New test.
6854 2024-01-12  Jonathan Wakely  <jwakely@redhat.com>
6856         * include/std/format (__format::_Arg_store): Fix PR number in
6857         comment. Simplify preprocessor code.
6859 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
6861         * doc/xml/manual/evolution.xml: Fix spelling.
6862         * doc/html/manual/api.html: Regenerate.
6864 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
6866         * doc/xml/manual/evolution.xml: Document addition of
6867         libstdc++exp.a.
6868         * doc/html/*: Regenerate.
6870 2024-01-11  Marcus Haehnel  <marcus.haehnel@kernkonzept.com>
6872         * libsupc++/eh_unex_handler.cc: Adjust definition type to
6873         declaration.
6875 2024-01-11  Michael Levine  <mlevine55@bloomberg.net>
6877         * include/std/ranges (__glibcxx_want_ranges_iota): Remove
6878         duplicate definition.
6880 2024-01-11  François Dumont  <fdumont@gcc.gnu.org>
6882         PR libstdc++/112477
6883         * src/c++11/debug.cc
6884         (_Safe_iterator_base::_M_attach): Reset _M_version to 0 if attaching to null
6885         sequence.
6886         (_Safe_iterator_base::_M_attach_single): Likewise.
6887         (_Safe_local_iterator_base::_M_attach): Likewise.
6888         (_Safe_local_iterator_base::_M_attach_single): Likewise.
6889         * testsuite/23_containers/map/debug/112477.cc: New test case.
6891 2024-01-11  Patrick Palka  <ppalka@redhat.com>
6893         * include/bits/move.h (__like_t): Define in C++23 mode.
6894         * include/std/ranges (views::__adaptor::Partial::operator()):
6895         Implement using C++23 deducing this when available.
6896         (views::__adaptor::_Pipe::operator()): Likewise.
6897         * testsuite/std/ranges/adaptors/100577.cc: Adjust testcase to
6898         accept new "no match for call" errors issued in C++23 mode.
6899         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
6901 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
6903         * python/libstdcxx/v6/printers.py (StdIntegralConstantPrinter):
6904         Add printer for std::integral_constant.
6905         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
6907 2024-01-11  Jonathan Wakely  <jwakely@redhat.com>
6909         PR libstdc++/113258
6910         * libsupc++/new_opa.cc: Prefer to use posix_memalign if
6911         available.
6913 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
6915         * src/filesystem/ops-common.h (stat_type): Use using.
6917 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
6919         PR libstdc++/113250
6920         * src/c++17/fs_ops.cc (fs::equivalent): Use || instead of &&.
6921         * src/filesystem/ops.cc (fs::equivalent): Likewise.
6922         * testsuite/27_io/filesystem/operations/equivalent.cc: Handle
6923         error codes.
6924         * testsuite/experimental/filesystem/operations/equivalent.cc:
6925         Likewise.
6927 2024-01-11  Ken Matsui  <kmatsui@gcc.gnu.org>
6929         * include/std/type_traits (is_compound): Do not use __not_.
6930         (is_compound_v): Use is_fundamental_v instead.
6932 2024-01-11  Patrick Palka  <ppalka@redhat.com>
6934         * include/bits/utility.h (_Nth_type): Use
6935         _GLIBCXX_USE_BUILTIN_TRAIT instead of __has_builtin.
6937 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
6939         * include/bits/unicode-data.h: Regenerate.
6940         * include/bits/unicode.h (_Utf_iterator::operator++()): Fix off
6941         by one error.
6942         (__incb_property): Add missing check for values before the
6943         first edge.
6944         (__is_extended_pictographic): Invert return values to fix
6945         copy&pasted logic.
6946         (_Grapheme_cluster_view::_Iterator): Remove second iterator
6947         member and find end of cluster lazily.
6948         * testsuite/ext/unicode/grapheme_view.cc: New test.
6949         * testsuite/ext/unicode/properties.cc: New test.
6950         * testsuite/ext/unicode/view.cc: New test.
6952 2024-01-09  Andreas Schwab  <schwab@linux-m68k.org>
6954         * scripts/extract_symvers.in: Require final colon to only match
6955         .dsynsym in the header of the dynamic symtab.
6957 2024-01-09  Jonathan Wakely  <jwakely@redhat.com>
6959         * include/bits/chrono_io.h (__formatter_chrono::_M_F): Simplify
6960         handling of string returned from std::format.
6961         (__formatter_chrono::_M_R_T): Likewise.
6963 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
6965         * include/bits/unicode.h (__null_sentinel): Remove.
6966         * testsuite/17_intro/names.cc: Add __null_sentinel.
6968 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
6970         * include/std/format (__format::_Runtime_format_string): Define
6971         new class template.
6972         (basic_format_string): Add non-consteval constructor for runtime
6973         format strings.
6974         (runtime_format): Define new function for C++26.
6975         * testsuite/std/format/runtime_format.cc: New test.
6977 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
6979         * include/bits/chrono_io.h (__formatter_chrono): Always use
6980         lvalue arguments to make_format_args.
6981         * include/std/format (make_format_args): Change parameter pack
6982         from forwarding references to lvalue references. Remove use of
6983         remove_reference_t which is now unnecessary.
6984         (format_to, formatted_size): Remove incorrect forwarding of
6985         arguments.
6986         * include/std/ostream (print): Remove forwarding of arguments.
6987         * include/std/print (print): Likewise.
6988         * testsuite/20_util/duration/io.cc: Use lvalues as arguments to
6989         make_format_args.
6990         * testsuite/std/format/arguments/args.cc: Likewise.
6991         * testsuite/std/format/arguments/lwg3810.cc: Likewise.
6992         * testsuite/std/format/functions/format.cc: Likewise.
6993         * testsuite/std/format/functions/vformat_to.cc: Likewise.
6994         * testsuite/std/format/string.cc: Likewise.
6995         * testsuite/std/time/day/io.cc: Likewise.
6996         * testsuite/std/time/month/io.cc: Likewise.
6997         * testsuite/std/time/weekday/io.cc: Likewise.
6998         * testsuite/std/time/year/io.cc: Likewise.
6999         * testsuite/std/time/year_month_day/io.cc: Likewise.
7000         * testsuite/std/format/arguments/args_neg.cc: New test.
7002 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
7004         * include/Makefile.am: Add new headers.
7005         * include/Makefile.in: Regenerate.
7006         * include/bits/unicode.h: New file.
7007         * include/bits/unicode-data.h: New file.
7008         * include/std/format: Include <bits/unicode.h>.
7009         (__literal_encoding_is_utf8): Move to <bits/unicode.h>.
7010         (_Spec::_M_fill): Change type to char32_t.
7011         (_Spec::_M_parse_fill_and_align): Read a Unicode scalar value
7012         instead of a single character.
7013         (__write_padded): Change __fill_char parameter to char32_t and
7014         encode it into the output.
7015         (__formatter_str::format): Use new __unicode::__field_width and
7016         __unicode::__truncate functions.
7017         * include/std/ostream: Adjust namespace qualification for
7018         __literal_encoding_is_utf8.
7019         * include/std/print: Likewise.
7020         * src/c++23/print.cc: Add [[unlikely]] attribute to error path.
7021         * testsuite/ext/unicode/view.cc: New test.
7022         * testsuite/std/format/functions/format.cc: Add missing examples
7023         from the standard demonstrating alignment with non-ASCII
7024         characters. Add examples checking correct handling of extended
7025         grapheme clusters.
7027 2024-01-08  Jonathan Wakely  <jwakely@redhat.com>
7029         * include/bits/version.def (format_uchar): Define.
7030         * include/bits/version.h: Regenerate.
7031         * include/std/format (formatter<C, C>::format): Check for
7032         _Pres_c and call _M_format_character directly. Cast C to its
7033         unsigned equivalent for formatting as an integer.
7034         (formatter<char, wchar_t>::format): Likewise.
7035         (basic_format_arg(T&)): Store char arguments as unsigned char
7036         for formatting to a wide string.
7037         * testsuite/std/format/functions/format.cc: Adjust test. Check
7038         formatting of
7040 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
7042         PR libstdc++/112997
7043         * libsupc++/unwind-cxx.h (__cxa_call_terminate): Change first
7044         parameter to void*.
7046 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
7048         * testsuite/20_util/variant/87619.cc: Remove dg-timeout-factor.
7050 2024-01-07  Jonathan Wakely  <jwakely@redhat.com>
7052         * include/std/type_traits (is_trivially_destructible_v): Use
7053         built-in directly when concepts are supported.
7054         * testsuite/20_util/is_trivially_destructible/value_v.cc: New
7055         test.
7057 2024-01-06  Gwenole Beauchesne  <gb.devel@gmail.com>
7059         * testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Use
7060         nonnull arguments to strtoimax() and wcstoimax() functions.
7062 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
7064         * src/c++17/fs_path.cc (path::_List::reserve): Limit maximum
7065         size and check for overflows in arithmetic.
7066         (path::operator/=(const path&)): Remove redundant exponential
7067         growth calculation.
7069 2024-01-05  Martin Küttler  <martin.kuettler@kernkonzept.com>
7071         * src/c++17/fs_path.cc (path::_List::reserve): Avoid
7072         floating-point arithmetic.
7074 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
7076         PR libstdc++/113241
7077         * include/std/type_traits (is_convertible_v): Guard use of
7078         built-in with preprocessor check.
7080 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
7082         PR libstdc++/113200
7083         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Use
7084         __builtin_constant_p to check for unrelated pointers that cannot
7085         be compared during constant evaluation.
7086         * testsuite/21_strings/char_traits/requirements/113200.cc: New
7087         test.
7089 2024-01-05  Cassio Neri  <cassio.neri@gmail.com>
7091         * include/std/chrono: Fix + and - for months and weekdays.
7092         * testsuite/std/time/month/1.cc: Add constexpr tests against overflow.
7093         * testsuite/std/time/month/2.cc: New test for extreme values.
7094         * testsuite/std/time/weekday/1.cc: Add constexpr tests against overflow.
7095         * testsuite/std/time/weekday/2.cc: New test for extreme values.
7097 2024-01-05  Jonathan Wakely  <jwakely@redhat.com>
7099         PR libstdc++/113099
7100         * include/bits/locale_classes.tcc (__try_use_facet): Use
7101         if-constexpr for C++11 and up.
7103 2024-01-05  Ken Matsui  <kmatsui@gcc.gnu.org>
7105         * include/std/type_traits: Use _GLIBCXX_USE_BUILTIN_TRAIT.
7107 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
7109         * include/std/generator (_Subyield_state::_M_jump_in): Fix typo
7110         reported by Will Hawkins <hawkinsw@obs.cr>.
7112 2024-01-04  Arsen Arsenović  <arsen@aarsen.me>
7114         * include/std/generator (_Stateless_alloc): Rename typename _A
7115         to _All.
7117 2024-01-03  Patrick Palka  <ppalka@redhat.com>
7119         PR testsuite/113175
7120         * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
7121         'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
7122         (test03): Likewise.
7125 Copyright (C) 2024 Free Software Foundation, Inc.
7127 Copying and distribution of this file, with or without modification,
7128 are permitted in any medium without royalty provided the copyright
7129 notice and this notice are preserved.