Testsuite: fix analyzer tests on Darwin
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob9346b9a3edeab99e24b277c7fbc300cc5b462bce
1 2023-08-18  Jonathan Wakely  <jwakely@redhat.com>
3         PR target/111060
4         * include/std/format (formatter): Only define specializations
5         for 16-bit floating-point types for C++23.
6         * include/std/limits (numeric_limits): Likewise.
8 2023-08-18  Jonathan Wakely  <jwakely@redhat.com>
10         * include/bits/chrono_io.h (operator<<): Make uses of wide
11         strings with streams and std::format type-dependent on _CharT.
12         * include/std/format [!_GLIBCXX_USE_WCHAR_T] Do not use
13         __to_wstring_numeric.
15 2023-08-18  Jonathan Wakely  <jwakely@redhat.com>
17         * include/bits/chrono_io.h (operator<<): Use __format_context.
18         * include/std/format (__format::__format_context): New alias
19         template.
20         [!_GLIBCXX_USE_WCHAR_T] (wformat_args, make_wformat_arg):
21         Disable.
23 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
25         Revert:
26         2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
28         * config/locale/generic/c_locale.cc (__convert_to_v): Reuse
29         double overload for long double if possible.
31 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
33         * src/c++20/tzdb.cc (tzdata_file, leaps_file): Change type to
34         std::string_view.
36 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
38         * config/locale/generic/c_locale.cc (__convert_to_v): Reuse
39         double overload for long double if possible.
41 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
43         * src/c++98/localename.cc (is_C_locale): New function.
44         (locale::locale(const char*)): Use is_C_locale.
46 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
48         PR libstdc++/110945
49         * include/bits/basic_string.h (basic_string::assign(Iter, Iter)):
50         Dispatch to _M_replace or move assignment from a temporary,
51         based on the iterator type.
53 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
55         * include/std/format (formatter): Add partial specializations
56         for extended floating-point types.
57         * testsuite/std/format/functions/format.cc: Move test_float128()
58         to ...
59         * testsuite/std/format/formatter/ext_float.cc: New test.
61 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
63         * include/bits/c++config (__gnu_cxx::__bfloat16_t): Define
64         whenever __BFLT16_DIG__ is defined, not only for C++23.
65         * include/std/limits (numeric_limits<bfloat16_t>): Likewise.
66         (numeric_limits<_Float16>, numeric_limits<_Float32>)
67         (numeric_limits<_Float64>): Likewise for other extended
68         floating-point types.
70 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
72         * include/experimental/internet (address_v4::to_string): Remove
73         unused parameter name.
75 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
77         * libsupc++/compare (__cmp_cat::__unseq): Make ctor consteval.
78         * testsuite/18_support/comparisons/categories/zero_neg.cc: Prune
79         excess errors caused by invalid consteval calls.
81 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
83         * include/bits/chrono_io.h (__units_suffix_misc): Remove.
84         (__units_suffix): Return a known suffix as string view, do not
85         write unknown suffixes to a buffer.
86         (__fmt_units_suffix): New function that formats the suffix using
87         std::format_to.
88         (operator<<, __chrono_formatter::_M_q): Use __fmt_units_suffix.
89         (__chrono_formatter::_M_Z): Correct lifetime of wstring.
91 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
93         * include/std/format [_GLIBCXX_USE_WCHAR_T]: Guard all wide
94         string formatters with this macro.
95         (__formatter_int::_M_format_int, __formatter_fp::format)
96         (formatter<const void*, C>::format): Use __to_wstring_numeric
97         instead of std::ctype::widen.
98         (__formatter_fp::_M_localize): Use hardcoded wchar_t values
99         instead of std::ctype::widen.
100         * testsuite/std/format/functions/format.cc: Add more checks for
101         wstring formatting of arithmetic types.
103 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
105         * include/bits/basic_string.h (to_string(floating-point-type)):
106         Implement using std::to_chars for C++26.
107         * include/bits/version.def (__cpp_lib_to_string): Define.
108         * include/bits/version.h: Regenerate.
109         * testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc:
110         Adjust expected result in C++26 mode.
111         * testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc:
112         Likewise.
113         * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc:
114         Likewise.
115         * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc:
116         Likewise.
117         * testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc:
118         New test.
119         * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc:
120         New test.
121         * testsuite/21_strings/basic_string/numeric_conversions/version.cc:
122         New test.
124 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
126         * include/bits/basic_string.h (to_string(integral-type)): Use
127         resize_and_overwrite when available.
128         (__to_wstring_numeric): New helper functions.
129         (to_wstring): Use std::to_string then __to_wstring_numeric.
130         * testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc:
131         Remove check for no excess capacity.
133 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
135         * include/bits/basic_string.h (__resize_and_overwrite): New
136         function.
137         * include/bits/basic_string.tcc (__resize_and_overwrite): New
138         function.
139         (resize_and_overwrite): Simplify by using reserve instead of
140         growing the string manually. Adjust for C++11 compatibility.
141         * include/bits/cow_string.h (resize_and_overwrite): New
142         function.
143         (__resize_and_overwrite): New function.
144         * include/bits/version.def (__cpp_lib_string_resize_and_overwrite):
145         Do not depend on cxx11abi.
146         * include/bits/version.h: Regenerate.
147         * include/std/format (__formatter_fp::_S_resize_and_overwrite):
148         Remove.
149         (__formatter_fp::format, __formatter_fp::_M_localize): Use
150         __resize_and_overwrite instead of _S_resize_and_overwrite.
151         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
152         Adjust for C++11 compatibility when included by ...
153         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite_ext.cc:
154         New test.
156 2023-08-17  Patrick Palka  <ppalka@redhat.com>
158         * include/bits/regex.h (regex_iterator::iterator_concept):
159         Define for C++20 as per P2770R0.
160         (regex_token_iterator::iterator_concept): Likewise.
161         * include/std/ranges (__detail::__as_lvalue): Define.
162         (join_view::_Iterator): Befriend join_view.
163         (join_view::_Iterator::_M_satisfy): Use _M_get_outer
164         instead of _M_outer.
165         (join_view::_Iterator::_M_get_outer): Define.
166         (join_view::_Iterator::_Iterator): Split constructor taking
167         _Parent argument into two as per P2770R0.  Remove constraint on
168         default constructor.
169         (join_view::_Iterator::_M_outer): Make this data member present
170         only when the underlying range is forward.
171         (join_view::_Iterator::operator++): Use _M_get_outer instead of
172         _M_outer.
173         (join_view::_Iterator::operator--): Use __as_lvalue helper.
174         (join_view::_Iterator::operator==): Adjust constraints as per
175         P2770R0.
176         (join_view::_Sentinel::__equal): Use _M_get_outer instead of
177         _M_outer.
178         (join_view::_M_outer): New data member when the underlying range
179         is non-forward.
180         (join_view::begin): Adjust definition as per P2770R0.
181         (join_view::end): Likewise.
182         (join_with_view::_M_outer_it): New data member when the
183         underlying range is non-forward.
184         (join_with_view::begin): Adjust definition as per P2770R0.
185         (join_with_view::end): Likewise.
186         (join_with_view::_Iterator::_M_outer_it): Make this data member
187         present only when the underlying range is forward.
188         (join_with_view::_Iterator::_M_get_outer): Define.
189         (join_with_view::_Iterator::_Iterator): Split constructor
190         taking _Parent argument into two as per P2770R0.  Remove
191         constraint on default constructor.
192         (join_with_view::_Iterator::_M_update_inner): Adjust definition
193         as per P2770R0.
194         (join_with_view::_Iterator::_M_get_inner): Likewise.
195         (join_with_view::_Iterator::_M_satisfy): Adjust calls to
196         _M_get_inner.  Use _M_get_outer instead of _M_outer_it.
197         (join_with_view::_Iterator::operator==): Adjust constraints
198         as per P2770R0.
199         (join_with_view::_Sentinel::operator==): Use _M_get_outer
200         instead of _M_outer_it.
201         * testsuite/std/ranges/adaptors/p2770r0.cc: New test.
203 2023-08-17  Patrick Palka  <ppalka@redhat.com>
205         PR libstdc++/108827
206         * include/std/ranges (__adaptor::_RangeAdaptorClosure):
207         Convert into a CRTP class template.  Move hidden operator|
208         friends into namespace scope and adjust their constraints.
209         (__closure::__is_range_adaptor_closure_fn): Define.
210         (__closure::__is_range_adaptor_closure): Define.
211         (__adaptor::_Partial): Adjust use of _RangeAdaptorClosure.
212         (__adaptor::_Pipe): Likewise.
213         (views::_All): Likewise.
214         (views::_Join): Likewise.
215         (views::_Common): Likewise.
216         (views::_Reverse): Likewise.
217         (views::_Elements): Likewise.
218         (views::_Adjacent): Likewise.
219         (views::_AsRvalue): Likewise.
220         (views::_Enumerate): Likewise.
221         (views::_AsConst): Likewise.
222         * testsuite/std/ranges/adaptors/all.cc: Reinstate assertion
223         expecting that adding empty range adaptor closure objects to a
224         pipeline doesn't increase the size of a pipeline.
226 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
228         * include/std/format (__format::_Pres_type): Add _Pres_F.
229         (__formatter_fp::parse): Use _Pres_F for 'F'.
230         (__formatter_fp::format): Set __upper for _Pres_F.
231         * testsuite/std/format/functions/format.cc: Check formatting of
232         infinity and NaN for each presentation type.
234 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
236         * include/Makefile.in: Regenerate.
238 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
240         * testsuite/24_iterators/move_iterator/p2520r0.cc: Add no_pch.
241         * testsuite/std/format/functions/format.cc: Likewise.
242         * testsuite/std/format/functions/format_c++23.cc: Likewise.
244 2023-08-17  Jonathan Wakely  <jwakely@redhat.com>
246         * testsuite/lib/dg-options.exp (add_options_for_no_pch): Remove
247         any "-include bits/stdc++.h" from options and add the macro to
248         the existing options instead of replacing them.
250 2023-08-16  Jonathan Wakely  <jwakely@redhat.com>
252         * include/bits/basic_string.tcc (resize_and_overwrite): Invoke
253         the callable with the same size as resize_and_overwrite was
254         called with.
255         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
256         Check with small values for the new size.
257         * testsuite/std/format/functions/format.cc: Check wide
258         formatting of double values that produce small strings.
259         * testsuite/std/format/functions/format_c++23.cc: New test.
261 2023-08-16  Jonathan Wakely  <jwakely@redhat.com>
263         * include/bits/version.def (stds): Update value for C++23.
264         * include/bits/version.h: Regenerate.
266 2023-08-16  Jonathan Wakely  <jwakely@redhat.com>
268         * testsuite/25_algorithms/pstl/alg_sorting/set_difference.cc:
269         Fix name of upstream file this was derived from.
270         * testsuite/25_algorithms/pstl/alg_sorting/set_intersection.cc:
271         Likewise.
272         * testsuite/25_algorithms/pstl/alg_sorting/set_symmetric_difference.cc:
273         Likewise.
274         * testsuite/25_algorithms/pstl/alg_sorting/set_union.cc:
275         Likewise.
276         * testsuite/25_algorithms/pstl/alg_sorting/set_util.h: Likewise.
278 2023-08-16  Arsen Arsenović  <arsen@aarsen.me>
280         * libsupc++/typeinfo: Switch to bits/version.h for
281         __cpp_lib_constexpr_typeinfo.
282         * libsupc++/new: Switch to bits/version.h for
283         __cpp_lib_{launder,hardware_interference_size,destroying_delete}.
284         (launder): Guard behind __cpp_lib_launder.
285         (hardware_destructive_interference_size)
286         (hardware_constructive_interference_size): Guard behind
287         __cpp_lib_hardware_interference_size.
288         * libsupc++/exception: Switch to bits/version.h for
289         __cpp_lib_uncaught_exceptions.
290         (uncaught_exceptions): Guard behind __cpp_lib_uncaught_exceptions.
291         * libsupc++/compare: Switch to bits/version.h for
292         __cpp_lib_three_way_comparison.
293         (three_way_comparable, three_way_comparable_with)
294         (compare_three_way, weak_order, strong_order, partial_order):
295         Guard behind __cpp_lib_three_way_comparison >= 201907L.
296         * include/std/chrono: Drop __cpp_lib_chrono definition.
297         * include/std/vector: Switch to bits/version.h for
298         __cpp_lib_erase_if.
299         (erase, erase_if): Guard behind __cpp_lib_erase_if.
300         * include/std/variant: Switch to bits/version.h for
301         __cpp_lib_variant.  Guard whole header behind that FTM.
302         * include/std/utility: Switch to bits/version.h for
303         __cpp_lib_{exchange_function,constexpr_algorithms,as_const},
304         __cpp_lib_{integer_comparison_functions,to_underlying}, and
305         __cpp_lib_unreachable.
306         (exchange): Guard behind __cpp_lib_exchange_function.
307         (cmp_equal, cmp_not_equal, cmp_less, cmp_greater, cmp_less_equal)
308         (cmp_greater_equal, in_range): Guard behind
309         __cpp_lib_integer_comparison_functions.
310         (to_underlying): Guard behind __cpp_lib_to_underlying.
311         (unreachable): Guard behind __cpp_lib_unreachable.
312         * include/std/type_traits: Switch to bits/version.h for
313         __cpp_lib_is_{null_pointer,final,nothrow_convertible,aggregate},
314         __cpp_lib_is_{constant_evaluated,invocable,layout_compatible},
315         __cpp_lib_is_{pointer_interconvertible,scoped_enum,swappable},
316         __cpp_lib_{logical_traits,reference_from_temporary,remove_cvref},
317         __cpp_lib_{result_of_sfinae,transformation_trait_aliases},
318         __cpp_lib_{type_identity,type_trait_variable_templates},
319         __cpp_lib_{unwrap_ref,void_t,integral_constant_callable},
320         __cpp_lib_{bool_constant,bounded_array_traits}, and
321         __cpp_lib_has_unique_object_representations.
322         (integral_constant::operator()): Guard behind
323         __cpp_lib_integral_constant_callable.
324         (bool_constant): Guard behind __cpp_lib_bool_constant.
325         (conjunction, disjunction, negation, conjunction_v, disjunction_v)
326         (negation_v): Guard behind __cpp_lib_logical_traits.
327         (is_null_pointer): Guard behind __cpp_lib_is_null_pointer.
328         (is_final): Guard behind __cpp_lib_is_final.
329         (is_nothrow_convertible, is_nothrow_convertible_v): Guard behind
330         __cpp_lib_is_nothrow_convertible.
331         (remove_const_t, remove_volatile_t, remove_cv_t)
332         (add_const_t, add_volatile_t, add_cv_t): Guard behind
333         __cpp_lib_transformation_trait_aliases.
334         (void_t): Guard behind __cpp_lib_void_t.
335         (is_swappable_with_v, is_nothrow_swappable_with_v)
336         (is_swappable_with, is_nothrow_swappable_with): Guard behind
337         __cpp_lib_is_swappable.
338         (is_nothrow_invocable_r, is_invocable_r, invoke_result)
339         (is_invocable, invoke_result_t): Guard behind
340         __cpp_lib_is_invocable.
341         (alignment_of_v, extent_v, has_virtual_destructor_v)
342         (is_abstract_v, is_arithmetic_v, is_array_v)
343         (is_assignable_v, is_base_of_v, is_class_v, is_compound_v)
344         (is_constructible_v, is_const_v, is_convertible_v)
345         (is_copy_assignable_v, is_copy_constructible_v)
346         (is_default_constructible_v, is_destructible_v)
347         (is_empty_v, is_enum_v, is_final_v, is_floating_point_v)
348         (is_function_v, is_fundamental_v, is_integral_v)
349         (is_invocable_r_v, is_invocable_v, is_literal_type_v)
350         (is_lvalue_reference_v, is_member_function_pointer_v)
351         (is_member_object_pointer_v, is_member_pointer_v)
352         (is_move_assignable_v, is_move_constructible_v)
353         (is_nothrow_assignable_v, is_nothrow_constructible_v)
354         (is_nothrow_copy_assignable_v, is_nothrow_copy_constructible_v)
355         (is_nothrow_default_constructible_v, is_nothrow_destructible_v)
356         (is_nothrow_invocable_r_v, is_nothrow_invocable_v)
357         (is_nothrow_move_assignable_v, is_nothrow_move_constructible_v)
358         (is_null_pointer_v, is_object_v, is_pod_v, is_pointer_v)
359         (is_polymorphic_v, is_reference_v, is_rvalue_reference_v)
360         (is_same_v, is_scalar_v, is_signed_v, is_standard_layout_v)
361         (is_trivially_assignable_v, is_trivially_constructible_v)
362         (is_trivially_copyable_v, is_trivially_copy_assignable_v)
363         (is_trivially_copy_constructible_v)
364         (is_trivially_default_constructible_v)
365         (is_trivially_destructible_v, is_trivially_move_assignable_v)
366         (is_trivially_move_constructible_v, is_trivial_v, is_union_v)
367         (is_unsigned_v, is_void_v, is_volatile_v, rank_v, as variadic):
368         Guard behind __cpp_lib_type_trait_variable_templates.
369         (has_unique_object_representations)
370         (has_unique_object_representations_v): Guard behind
371         __cpp_lib_has_unique_object_representation.
372         (is_aggregate): Guard behind __cpp_lib_is_aggregate.
373         (remove_cvref, remove_cvref_t): Guard behind
374         __cpp_lib_remove_cvref.
375         (type_identity, type_identity_t): Guard behind
376         __cpp_lib_type_identity.
377         (unwrap_reference, unwrap_reference_t, unwrap_ref_decay)
378         (unwrap_ref_decay_t): Guard behind __cpp_lib_unwrap_ref.
379         (is_bounded_array_v, is_unbounded_array_v, is_bounded_array)
380         (is_unbounded_array): Guard behind __cpp_lib_bounded_array_traits.
381         (is_scoped_enum, is_scoped_enum_v): Guard behind
382         __cpp_lib_is_scoped_enum.
383         (reference_constructs_from_temporary)
384         (reference_constructs_from_temporary_v): Guard behind
385         __cpp_lib_reference_from_temporary.
386         * include/std/tuple: Switch to bits/version.h for
387         __cpp_lib_{constexpr_tuple,tuple_by_type,apply_make_from_tuple}.
388         (get<T>): Guard behind __cpp_lib_tuple_by_type.
389         (apply): Guard behind __cpp_lib_apply.
390         (make_from_tuple): Guard behind __cpp_lib_make_from_tuple.
391         * include/std/syncstream: Switch to bits/version.h for
392         __cpp_lib_syncbuf.  Guard header behind that FTM.
393         * include/std/string_view: Switch to bits/version.h for
394         __cpp_lib_{string_{view,contains},constexpr_string_view} and
395         __cpp_lib_starts_ends_with.
396         (basic_string_view::starts_with, basic_string_view::ends_with):
397         Guard behind __cpp_lib_starts_ends_with.
398         [C++23 && _GLIBCXX_HOSTED && !defined(__cpp_lib_string_contains)]:
399         Assert as impossible ithout a bug in C++23.
400         * include/std/string: Switch to bits/version.h for
401         __cpp_lib_erase_if.
402         (erase, erase_if): Guard behind __cpp_lib_erase_if.
403         * include/std/thread: Switch to bits/version.h for
404         __cpp_lib_jthread.
405         * include/std/stop_token: Switch to bits/version.h for
406         __cpp_lib_jthread.
407         * include/std/spanstream: Switch to bits/version.h for
408         __cpp_lib_spanstream.  Guard header behind that FTM.
409         * include/std/span: Switch to bits/version.h for __cpp_lib_span.
410         Guard header behind that FTM.
411         * include/std/source_location: Switch to bits/version.h for
412         __cpp_lib_source_location.  Guard header with that FTM.
413         * include/std/shared_mutex: Switch to bits/version.h for
414         __cpp_lib_shared{,_timed}_mutex.
415         (shared_mutex): Guard behind __cpp_lib_shared_mutex.
416         * include/std/semaphore: Switch to bits/version.h for
417         __cpp_lib_semaphore.  Guard header behind that FTM.
418         * include/std/ranges: Switch to bits/version.h for
419         __cpp_lib_ranges_{zip,chunk{,_by},slide,join_with},
420         __cpp_lib_ranges_{repeat_stride,cartesian_product,as_rvalue},
421         and __cpp_lib_ranges_{as_const,enumerate,iota}.
422         (ranges::zip et al, ranges::chunk et al, ranges::slide et al)
423         (ranges::chunk_by et al, ranges::join_with et al)
424         (ranges::stride et al, ranges::cartesian_product et al)
425         (ranges::as_rvalue et al, ranges::as_const et al)
426         (ranges::enumerate et al): Guard behind appropriate FTM.
427         * include/std/optional: Switch to bits/version.h for
428         __cpp_lib_optional.  Guard header behind that FTM.
429         * include/std/numeric: Switch to bits/version.h for
430         __cpp_lib_{gcd{,_lcm},lcm,constexpr_numeric,interpolate}
431         and __cpp_lib_parallel_algorithm.
432         (gcd, lcm): Guard behind __cpp_lib_gcd_lcm.
433         (midpoint): Guard behind __cpp_lib_interpolate.
434         * include/std/numbers: Switch to bits/version.h for
435         __cpp_lib_math_constants.  Guard header behind that FTM.
436         * include/std/mutex: Switch to bits/version.h for
437         __cpp_lib_scoped_lock.
438         (scoped_Lock): Guard behind __cpp_lib_scoped_lock.
439         * include/std/memory_resource: Switch to bits/version.h for
440         __cpp_lib_{polymorphic_allocator,memory_resource}.
441         (synchronized_pool_resource): Guard behind
442         __cpp_lib_memory_resource >= 201603L.
443         (polymorphic_allocator): Guard behind
444         __cpp_lib_polymorphic_allocator.
445         * include/std/memory: Switch to bits/version.h for
446         __cpp_lib_{parallel_algorithm,atomic_value_initialization}.
447         * include/std/list: Switch to bits/version.h for
448         __cpp_lib_erase_if.
449         (erase, erase_if): Guard behind __cpp_lib_erase_if.
450         * include/std/latch: Switch to bits/version.h for __cpp_lib_latch.
451         Guard header behind that FTM.
452         * include/std/iterator: Switch to bits/version.h for
453         __cpp_lib_null_iterators.
454         * include/std/iomanip: Switch to bits/version.h for
455         __cpp_lib_quoted_string_io.
456         (quoted): Guard behind __cpp_lib_quoted_string_io.
457         * include/std/functional: Switch to bits/version.h for
458         __cpp_lib_{invoke{,_r},constexpr_functional,bind_front} and
459         __cpp_lib_{not_fn,booyer_moore_searcher}.
460         (invoke): Guard behind __cpp_lib_invoke.
461         (invoke_r): Guard behind __cpp_lib_invoke_r.
462         (bind_front): Guard behind __cpp_lib_bind_front.
463         (not_fn): Guard behind __cpp_lib_not_fn.
464         (boyer_moore_searcher, boyer_moore_horspool_searcher): Guard
465         definition behind __cpp_lib_boyer_moore_searcher.
466         * include/std/forward_list: Switch to bits/version.h for
467         __cpp_lib_erase_if.
468         (erase, erase_if): Guard behind __cpp_lib_erase_if.
469         * include/std/format: Switch to bits/version.h for
470         __cpp_lib_format.  Guard header behind that FTM.
471         * include/std/filesystem: Switch to bits/version.h for
472         __cpp_lib_filesystem.  Guard header behind that FTM.
473         * include/std/expected: Switch to bits/version.h for
474         __cpp_lib_expected.  Guard header behind it.
475         * include/std/execution: Switch to bits/version.h for
476         __cpp_lib_{execution,parallel_algorithm}.  Guard header behind
477         either.
478         * include/std/deque: Switch to bits/version.h for
479         __cpp_lib_erase_if.
480         (erase, erase_if): Guard behind __cpp_lib_erase_if.
481         * include/std/coroutine: Switch to bits/version.h for
482         __cpp_lib_coroutine.  Guard header behind that FTM.
483         * include/std/concepts: Switch to bits/version.h for
484         __cpp_lib_concepts.  Guard header behind that FTM.
485         * include/std/complex: Switch to bits/version.h for
486         __cpp_lib_{complex_udls,constexpr_complex}.
487         (operator""if, operator""i, operator""il): Guard behind
488         __cpp_lib_complex_udls.
489         * include/std/charconv: Swtich to bits/version.h for
490         __cpp_lib_{to_chars,constexpr_charconv}.
491         * include/std/bitset: Switch to bits/version.h for
492         __cpp_lib_constexpr_bitset.
493         * include/std/bit: Switch to bits/version.h for
494         __cpp_lib_{bit_cast,byteswap,bitops,int_pow2,endian}.
495         (bit_cast): Guard behind __cpp_lib_bit_cast.
496         (byteswap): Guard behind __cpp_lib_byteswap.
497         (rotl, rotr, countl_zero, countl_one, countr_zero, countr_one)
498         (popcount): Guard behind __cpp_lib_bitops.
499         (has_single_bit, bit_ceil, bit_floor, bit_width): Guard behind
500         __cpp_lib_int_pow2.
501         (endian): Guard behind __cpp_lib_endian.
502         * include/std/barrier: Switch to bits/version.h for
503         __cpp_lib_barrier.  Guard header behind that FTM.
504         * include/std/atomic: Switch to bits/version.h for
505         __cpp_lib_atomic_{is_always_lock_free,float,ref}
506         and __cpp_lib_lock_free_type_aliases.
507         (*::is_always_lock_free): Guard behind
508         __cpp_lib_atomic_is_always_lock_free.
509         (atomic<float>): Guard behind __cpp_lib_atomic_float.
510         (atomic_ref): Guard behind __cpp_lib_atomic_ref.
511         (atomic_signed_lock_free, atomic_unsigned_lock_free): Guard behind
512         __cpp_lib_atomic_lock_free_type_aliases.
513         * include/std/array: Switch to bits/version.h for
514         __cpp_lib_to_array.
515         (to_array): Guard behind __cpp_lib_to_array.
516         * include/std/any: Switch to bits/version.h for __cpp_lib_any.
517         Guard header behind that FTM.
518         * include/std/algorithm: Switch to bits/version.h for
519         __cpp_lib_parallel_algorithm.
520         * include/c_global/cstddef: Switch to bits/version.h for
521         __cpp_lib_byte.
522         (byte): Guard behind __cpp_lib_byte.
523         * include/c_global/cmath: Switch to bits/version.h for
524         __cpp_lib_{hypot,interpolate}.
525         (hypot3): Guard behind __cpp_lib_hypot.
526         (lerp): Guard behind __cpp_lib_interpolate.
527         * include/c_compatibility/stdatomic.h: Switch to
528         bits/stl_version.h for __cpp_lib_atomic.  Guard header behind that
529         FTM.
530         * include/bits/utility.h: Switch to bits/version.h for
531         __cpp_lib_{tuple_element_t,integer_sequence,ranges_zip}.
532         (tuple_element_t): Guard behind __cpp_lib_tuple_element_t.
533         (integer_sequence et al): Guard behind __cpp_lib_integer_sequence.
534         * include/bits/uses_allocator_args.h: Switch to bits/version.h for
535         __cpp_lib_make_obj_using_allocator.  Guard header behind that FTM.
536         * include/bits/unordered_map.h: Switch to bits/version.h for
537         __cpp_lib_unordered_map_try_emplace.
538         (try_emplace): Guard behind __cpp_lib_unordered_map_try_emplace.
539         * include/bits/unique_ptr.h: Switch to bits/version.h for
540         __cpp_lib_{constexpr_memory,make_unique}.
541         (make_unique): Guard behind __cpp_lib_make_unique.
542         * include/bits/stl_vector.h: Switch to bits/version.h for
543         __cpp_lib_constexpr_vector.
544         * include/bits/stl_uninitialized.h: Switch to bits/version.h for
545         __cpp_lib_raw_memory_algorithms.
546         (uninitialized_default_construct)
547         (uninitialized_default_construct_n, uninitialized_move)
548         (uninitialized_move_n, uninitialized_value_construct)
549         (uninitialized_value_construct_n): Guard behind
550         __cpp_lib_raw_memory_algorithms.
551         * include/bits/stl_tree.h: Switch to bits/version.h for
552         __cpp_lib_generic_associative_lookup.
553         * include/bits/stl_stack.h: Switch to bits/version.h for
554         __cpp_lib_adaptor_iterator_pair_constructor.
555         (stack): Guard iterator-pair constructor behind
556         __cpp_lib_adaptor_iterator_pair_constructor.
557         * include/bits/stl_queue.h: Switch to bits/version.h for
558         __cpp_lib_adaptor_iterator_pair_constructor.
559         (queue): Guard iterator-pair constructor behind
560         __cpp_lib_adaptor_iterator_pair_constructor.
561         * include/bits/stl_pair.h: Switch to bits/version.h for
562         __cpp_lib_{concepts,tuples_by_type}.
563         (get): Guard type-getting overloads behind
564         __cpp_lib_tuples_by_type.
565         * include/bits/stl_map.h: Switch to bits/version.h for
566         __cpp_lib_map_try_emplace.
567         (map<>::try_emplace): Guard behind __cpp_lib_map_try_emplace.
568         * include/bits/stl_list.h: Switch to bits/version.h for
569         __cpp_lib_list_remove_return_type.
570         (__remove_return_type, _GLIBCXX_LIST_REMOVE_RETURN_TYPE_TAG)
571         [C++20]: guard behind __cpp_lib_list_remove_return_type instead.
572         * include/bits/stl_iterator.h: Switch to bits/version.h for
573         __cpp_lib_{constexpr_iterator,array_constexpr} and
574         __cpp_lib_{make_reverse_iterator,move_iterator_concept}.
575         (make_reverse_iterator): Guard behind
576         __cpp_lib_make_reverse_iterator.
577         (iterator_concept et al): Guard __cpp_lib_move_iterator_concept
578         changes behind that FTM.
579         * include/bits/stl_function.h: Switch to bits/version.h for
580         __cpp_lib_transparent_operators.
581         (equal_to, not_equal_to, greater, less, greater_equal)
582         (less_equal, bit_and, bit_or, bit_xor, bit_not, logical_and)
583         (logical_or, logical_not, plus, minus, multiplies, divides)
584         (modulus, negate): Guard '= void' fwdecls behind
585         __cpp_lib_transparent_operators.
586         (plus<void>, minus<void>, multiplies<void>, divides<void>)
587         (modulus<void>, negate<void>, logical_and<void>, logical_or<void>)
588         (logical_not<void>, bit_and<void>, bit_or<void>, bit_xor<void>)
589         (equal_to<void>, not_equal_to<void>, greater<void>, less<void>)
590         (greater_equal<void>, less_equal<void>, bit_not<void>)
591         (__has_is_transparent): Guard behind
592         __cpp_lib_transparent_operators.
593         * include/bits/stl_algobase.h: Switch to bits/version.h for
594         __cpp_lib_robust_nonmodifying_seq_ops.
595         (robust equal, mismatch): Guard behind
596         __cpp_lib_nonmember_container_access.
597         * include/bits/stl_algo.h: Swtich to bits/version.h for
598         __cpp_lib_{clamp,sample}.
599         (clamp): Guard behind __cpp_lib_clamp.
600         (sample): Guard behind __cpp_lib_sample.
601         * include/bits/specfun.h: Switch to bits/version.h for
602         __cpp_lib_math_special_functions and __STDCPP_MATH_SPEC_FUNCS__.
603         * include/bits/shared_ptr_base.h: Switch to bits/version.h for
604         __cpp_lib_{smart_ptr_for_overwrite,shared_ptr_arrays}.
605         (_Sp_overwrite_tag): Guard behind
606         __cpp_lib_smart_ptr_for_overwrite.
607         * include/bits/shared_ptr_atomic.h: Switch to bits/version.h for
608         __cpp_lib_atomic_shared_ptr.
609         * include/bits/shared_ptr.h: Switch to bits/version.h for
610         __cpp_lib_{enable_shared_from_this,shared_ptr_weak_type}.
611         (shared_ptr<T>::weak_type): Guard behind
612         __cpp_lib_shared_ptr_weak_type.
613         (enable_shared_from_this<T>::weak_from_this): Guard behind
614         __cpp_lib_enable_shared_from_this.
615         * include/bits/ranges_cmp.h: Switch to bits/version.h for
616         __cpp_lib_ranges.
617         * include/bits/ranges_algo.h: Switch to bits/version.h for
618         __cpp_lib_{shift,ranges_{contains,find_last,fold,iota}}.
619         * include/bits/range_access.h: Switch to bits/version.h for
620         __cpp_lib_nonmember_container_access
621         (size, empty, data): Guard behind
622         __cpp_lib_nonmember_container_access.
623         (ssize): Guard behind __cpp_lib_ssize.
624         * include/bits/ptr_traits.h: Switch to bits/version.h. for
625         __cpp_lib_{constexpr_memory,to_address}.
626         (to_address): Guard behind __cpp_lib_to_address.
627         * include/bits/node_handle.h: Switch to bits/version.h for
628         __cpp_lib_node_extract.  Guard header behind that FTM.
629         * include/bits/move_only_function.h: Switch to bits/version.h for
630         __cpp_lib_move_only_function.  Guard header behind that FTM.
631         * include/bits/move.h: Switch to bits/version.h for
632         __cpp_lib_addressof_constexpr.
633         * include/bits/ios_base.h: Switch to bits/version.h for
634         __cpp_lib_ios_noreplace.
635         (noreplace): Guard with __cpp_lib_ios_noreplace.
636         * include/bits/hashtable.h: Switch to bits/version.h for
637         __cpp_lib_generic_unordered_lookup.
638         (_M_equal_range_tr, _M_count_tr, _M_find_tr): Guard behind
639         __cpp_lib_generic_unordered_lookup.
640         * include/bits/forward_list.h: Switch to bits/version.h for
641         __cpp_lib_list_remove_return_type.
642         (__remove_return_type): Guard behind
643         __cpp_lib_list_remove_return_type.
644         * include/bits/erase_if.h: Switch to bits/version.h for
645         __cpp_lib_erase_if.
646         * include/bits/cow_string.h: Switch to bits/version.h for
647         __cpp_lib_constexpr_string.
648         * include/bits/chrono.h: Swtich to bits/version.h for
649         __cpp_lib_chrono{,_udls}.
650         (ceil): Guard behind __cpp_lib_chrono.
651         (operator""ns et al): Guard behind __cpp_lib_chrono_udls.
652         * include/bits/char_traits.h: Switch to bits/version.h for
653         __cpp_lib_constexpr_char_traits.
654         * include/bits/basic_string.h: Switch to bits/version.h for
655         __cpp_lib_{constexpr_string,string_{resize_and_overwrite,udls}}.
656         (resize_and_overwrite): Guard behind
657         __cpp_lib_string_resize_and_overwrite.
658         (operator""s): Guard behind __cpp_lib_string_udls.
659         * include/bits/atomic_wait.h: Switch to bits/version.h for
660         __cpp_lib_atomic_wait.  Guard header behind that FTM.
661         * include/bits/atomic_base.h: Switch to bits/version.h for
662         __cpp_lib_atomic_value_initialization and
663         __cpp_lib_atomic_flag_test.
664         (atomic_flag::test): Guard behind __cpp_lib_atomic_flag_test,
665         rather than C++20.
666         * include/bits/allocator.h: Switch to bits/version.h for
667         __cpp_lib_incomplete_container_elements.
668         * include/bits/alloc_traits.h: Switch to using bits/version.h for
669         __cpp_lib_constexpr_dynamic_alloc and
670         __cpp_lib_allocator_traits_is_always_equal.
671         * include/bits/align.h: Switch to bits/version.h for defining
672         __cpp_lib_assume_aligned.
673         (assume_aligned): Guard with __cpp_lib_assume_aligned.
674         * include/bits/algorithmfwd.h: Switch to bits/version.h for
675         defining __cpp_lib_constexpr_algorithms.
676         * include/std/stacktrace: Switch to bits/version.h for
677         __cpp_lib_stacktrace.  Guard header behind that FTM.
678         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
679         Update line numbers.
681 2023-08-16  Arsen Arsenović  <arsen@aarsen.me>
683         * include/Makefile.am (bits_freestanding): Add version.h.
684         (allcreated): Add version.h.
685         (${bits_srcdir}/version.h): New rule.  Regenerates
686         version.h out of version.{def,tpl}.
687         * include/Makefile.in: Regenerate.
688         * include/bits/version.def: New file.  Declares a list of
689         all feature test macros, their values and their preconditions.
690         * include/bits/version.tpl: New file.  Turns version.def
691         into a sequence of #if blocks.
692         * include/bits/version.h: New file.  Generated from
693         version.def.
694         * include/std/version: Replace with a __glibcxx_want_all define
695         and bits/version.h include.
697 2023-08-14  Paul Dreik  <gccpatches@pauldreik.se>
699         PR libstdc++/110860
700         * include/std/format (__formatter_fp::format): Use frexp instead
701         of log10.
703 2023-08-12  Ken Matsui  <kmatsui@gcc.gnu.org>
705         * include/std/type_traits (true_type): Use __bool_constant
706         instead.
707         (false_type): Likewise.
708         (bool_constant): Likewise.
710 2023-08-11  Jonathan Wakely  <jwakely@redhat.com>
712         PR libstdc++/110990
713         * include/std/format (_Seq_sink::get): Only call _M_overflow if
714         its precondition is met.
715         (_Iter_sink::_M_finish): Likewise.
716         (_Iter_sink<C, ContigIter>::_M_overflow): Only switch to the
717         internal buffer after running out of space.
718         (_Iter_sink<C, ContigIter>::_M_finish): Do not use _M_overflow.
719         (_Counting_sink::count): Likewise.
720         * testsuite/std/format/functions/format_to_n.cc: Check cases
721         where the output fits into the buffer.
723 2023-08-11  Jonathan Wakely  <jwakely@redhat.com>
725         PR libstdc++/104167
726         * include/bits/chrono_io.h (operator|=, operator|): Add noexcept
727         to _ChronoParts operators.
728         (from_stream, parse): Define new functions.
729         (__detail::_Parse, __detail::_Parser): New class templates.
730         * include/std/chrono (__cpp_lib_chrono): Define to 201907L for
731         C++20.
732         * include/std/version (__cpp_lib_chrono): Likewise.
733         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc:
734         Adjust expected value of feature test macro.
735         * testsuite/20_util/duration/io.cc: Test parsing.
736         * testsuite/std/time/clock/file/io.cc: Likewise.
737         * testsuite/std/time/clock/gps/io.cc: Likewise.
738         * testsuite/std/time/clock/system/io.cc: Likewise.
739         * testsuite/std/time/clock/tai/io.cc: Likewise.
740         * testsuite/std/time/clock/utc/io.cc: Likewise.
741         * testsuite/std/time/day/io.cc: Likewise.
742         * testsuite/std/time/month/io.cc: Likewise.
743         * testsuite/std/time/month_day/io.cc: Likewise.
744         * testsuite/std/time/weekday/io.cc: Likewise.
745         * testsuite/std/time/year/io.cc: Likewise.
746         * testsuite/std/time/year_month/io.cc: Likewise.
747         * testsuite/std/time/year_month_day/io.cc: Likewise.
748         * testsuite/std/time/syn_c++20.cc: Check value of macro and for
749         the existence of parse and from_stream in namespace chrono.
750         * testsuite/std/time/clock/local/io.cc: New test.
751         * testsuite/std/time/parse.cc: New test.
753 2023-08-11  Jonathan Wakely  <jwakely@redhat.com>
755         PR libstdc++/110860
756         * include/std/format (__formatter_fp::format): Do not call log10
757         with zero values.
759 2023-08-11  Jonathan Wakely  <jwakely@redhat.com>
761         * python/libstdcxx/v6/printers.py (StdChronoCalendarPrinter):
762         Check for out-of-range month an weekday indices.
763         * testsuite/libstdc++-prettyprinters/chrono.cc: Check invalid
764         month and weekday values.
766 2023-08-11  Jonathan Wakely  <jwakely@redhat.com>
768         * include/bits/stl_iterator.h (__clamped_iter_cat_t): Remove.
770 2023-08-10  Jonathan Wakely  <jwakely@redhat.com>
772         PR libstdc++/110974
773         * include/std/format (_Spec::_S_parse_width_or_precision): Check
774         for empty range before dereferencing iterator.
775         * testsuite/std/format/string.cc: Check for expected exception.
776         Fix expected exception message in test_pr110862() and actually
777         call it.
779 2023-08-10  Jonathan Wakely  <jwakely@redhat.com>
781         PR libstdc++/110968
782         * include/std/format (__formatter_fp::format): Check return
783         value of _M_localize.
784         * testsuite/std/format/functions/format.cc: Check classic
785         locale.
787 2023-08-10  Jonathan Wakely  <jwakely@redhat.com>
789         PR libstdc++/110970
790         * include/bits/stl_iterator.h (__detail::__move_iter_cat): Use
791         __iter_category_t.
792         (iterator_traits<common_iterator<I, S>>::_S_iter_cat): Likewise.
793         (__detail::__basic_const_iterator_iter_cat): Likewise.
794         * include/bits/stl_iterator_base_types.h (__iterator_category_t):
795         Rename to __iter_category_t.
797 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
799         * include/bits/chrono.h (duration_cast): Do not use braces
800         around statements for C++11 constexpr rules.
801         * include/bits/stl_algobase.h (__lg): Rewrite as a single
802         statement for C++11 constexpr rules.
803         * include/experimental/bits/fs_path.h (path::string): Use
804         _GLIBCXX17_CONSTEXPR not _GLIBCXX_CONSTEXPR for 'if constexpr'.
805         * include/std/charconv (__to_chars_8): Initialize variable for
806         C++17 constexpr rules.
808 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
810         * include/bits/list.tcc (list::sort(Cmp)): Fix -Wsign-compare
811         warning for loop condition.
813 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
815         * include/std/complex: Add diagnostic pragma for clang.
817 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
819         * include/bits/shared_ptr_atomic.h (atomic): Change class-head
820         to struct.
821         * include/bits/stl_tree.h (_Rb_tree_merge_helper): Change
822         class-head to struct in friend declaration.
823         * include/std/chrono (tzdb_list::_Node): Likewise.
824         * include/std/future (_Task_state_base, _Task_state): Likewise.
825         * include/std/scoped_allocator (__inner_type_impl): Likewise.
826         * include/std/valarray (_BinClos, _SClos, _GClos, _IClos)
827         (_ValFunClos, _RefFunClos): Change class-head to struct.
829 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
831         * include/bits/alloc_traits.h (allocate): Add [[maybe_unused]]
832         attribute.
833         * include/bits/regex_executor.tcc: Remove name of unused
834         parameter.
835         * include/bits/shared_ptr_atomic.h (atomic_is_lock_free):
836         Likewise.
837         * include/bits/stl_uninitialized.h: Likewise.
838         * include/bits/streambuf_iterator.h (operator==): Likewise.
839         * include/bits/uses_allocator.h: Likewise.
840         * include/c_global/cmath (isfinite, isinf, isnan): Likewise.
841         * include/std/chrono (zoned_time): Likewise.
842         * include/std/future (__future_base::_S_allocate_result):
843         Likewise.
844         (packaged_task): Likewise.
845         * include/std/optional (_Optional_payload_base): Likewise.
846         * include/std/scoped_allocator (__inner_type_impl): Likewise.
847         * include/std/tuple (_Tuple_impl): Likewise.
849 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
851         * include/bits/new_allocator.h (__new_allocator): Define copy
852         assignment operator as defaulted.
853         * include/std/complex (complex<float>, complex<double>)
854         (complex<long double>): Define copy constructor as defaulted.
856 2023-08-09  Jonathan Wakely  <jwakely@redhat.com>
858         * include/std/format: Fix some warnings.
859         (__format::__write(Ctx&, basic_string_view<CharT>)): Remove
860         unused function template.
862 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
864         PR libstdc++/110860
865         * include/std/format (__formatter_fp::format): Do not use
866         __builtin_abs and __builtin_log10 with arbitrary floating-point
867         types.
869 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
871         PR libstdc++/110917
872         * include/std/format (__format::_Iter_sink<CharT, OutIter>):
873         Constrain partial specialization for contiguous iterators to
874         require the value type to be CharT.
875         * testsuite/std/format/functions/format_to.cc: New test.
877 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
879         PR libstdc++/110862
880         * include/std/format (_Scanner::_M_on_replacement_field):
881         Check for expected '}' before incrementing iterator.
882         * testsuite/std/format/string.cc: Check "{0:{0}" format string.
884 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
886         * configure: Regenerate.
888 2023-08-07  Alan Modra  <amodra@gmail.com>
890         * configure: Regenerate.
892 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
894         * configure: Regenerate.
896 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
898         * configure: Regenerate.
900 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
902         * configure: Regenerate.
904 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
906         * configure: Regenerate.
908 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
910         * configure: Regenerate.
912 2023-08-06  François Dumont  <fdumont@gcc.gnu.org>
914         * config/abi/pre/gnu-versioned-namespace.ver: Add __cxa_call_terminate
915         symbol export.
917 2023-07-30  François Dumont  <fdumont@gcc.gnu.org>
919         * src/c++11/compatibility-ldbl-facets-aliases.h: Replace #define with
920         proper #error.
921         * src/c++11/locale-inst-monetary.h: Likewise.
922         * src/c++11/locale-inst-numeric.h: Likewise.
924 2023-07-27  Jonathan Wakely  <jwakely@redhat.com>
926         PR libstdc++/108046
927         * include/std/format (__formatter_fp::format): Ensure __expc is
928         always set for all presentation types. Set __z correctly for
929         zero precision.
930         * testsuite/std/format/functions/format.cc: Check problem cases.
932 2023-07-26  Jonathan Wakely  <jwakely@redhat.com>
934         PR libstdc++/110807
935         * testsuite/23_containers/vector/bool/110807.cc: Require c++11.
937 2023-07-26  Jonathan Wakely  <jwakely@redhat.com>
939         PR libstdc++/110807
940         * include/bits/stl_bvector.h (vector(const vector&)): Access
941         iterators before allocating.
942         * include/bits/vector.tcc (vector<bool>::_M_insert_range):
943         Likewise.
944         * testsuite/23_containers/vector/bool/110807.cc: New test.
946 2023-07-26  Jonathan Wakely  <jwakely@redhat.com>
948         * include/bits/algorithmfwd.h (random_shuffle): Add deprecated
949         attribute.
950         * include/bits/stl_algo.h (random_shuffle): Correct comments.
951         * testsuite/25_algorithms/random_shuffle/1.cc: Disable
952         deprecated warnings.
953         * testsuite/25_algorithms/random_shuffle/59603.cc: Likewise.
954         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
955         * testsuite/25_algorithms/random_shuffle/deprecated.cc: New
956         test.
958 2023-07-26  Nathaniel Shead  <nathanieloshead@gmail.com>
960         * testsuite/25_algorithms/equal/constexpr_neg.cc: Update diagnostic
961         locations.
962         * testsuite/26_numerics/gcd/105844.cc: Likewise.
963         * testsuite/26_numerics/lcm/105844.cc: Likewise.
965 2023-07-24  Deev Patel  <pateldeev@nevada.unr.edu>
967         * include/std/format (_Formatting_scanner::_M_on_chars): Add
968         missing constexpr specifier.
969         (_Formatting_scanner::_M_format_arg): Likewise.
971 2023-07-24  Jonathan Wakely  <jwakely@redhat.com>
973         PR libstdc++/110653
974         * include/bits/basic_string.h [!HAVE_STOF] (stof): Do not
975         throw an exception for zero result.
976         [HAVE_BROKEN_STRTOLD] (stold): Do not use strtold.
978 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
980         PR libstdc++/110077
981         * src/c++17/floating_from_chars.cc (from_chars): Only define
982         _Float128 overload when using __strfromf128.
984 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
986         PR libstdc++/110593
987         * include/bits/chrono.h (duration): Improve static assert
988         messages.
989         (__is_ratio): Move to ...
990         * include/std/ratio (__is_ratio): ... here.
991         (__is_ratio_v): New variable template and partial
992         specialization.
993         (__are_both_ratios): New function template.
994         (__ratio_multiply, ratio_equal, ratio_less, __ratio_add):
995         Add static assertion.
996         * testsuite/20_util/ratio/requirements/type_constraints.cc:
997         New test.
998         * testsuite/20_util/duration/requirements/typedefs_neg1.cc:
999         Adjust expected error.
1000         * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1001         Likewise.
1003 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1005         * include/bits/chrono_io.h (__formatter_chrono::_M_format):
1006         Do not set __is_neg for hh_mm_ss before calling
1007         _M_format_to_ostream. Change __print_sign lambda to only check
1008         __is_neg for durations and hh_mm_ss types.
1009         (__formatter_chrono::_M_format_to_ostream): Only check __is_neg
1010         for duration types.
1011         * testsuite/std/time/hh_mm_ss/io.cc: Check negative values.
1013 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1015         PR libstdc++/110719
1016         * include/bits/chrono_io.h (__formatter_chrono::_S_floor_seconds):
1017         Handle duration and hh_mm_ss.
1018         * testsuite/20_util/duration/io.cc: Check locale-specific
1019         formats.
1020         * testsuite/std/time/hh_mm_ss/io.cc: Likewise.
1022 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1024         * include/std/format (__write_padded): Initialize first element
1025         of array to avoid a -Wmaybe-uninitialized warning.
1027 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1029         PR libstdc++/110719
1030         * include/bits/chrono_io.h (__formatter_chrono::_M_parse): Fix
1031         allowed modifiers for %z and %Z. Fix -Wparentheses and
1032         -Wnarrowing warnings.
1033         (__formatter_chrono::_M_format): Call new functions for %d, %e,
1034         %H, %I, %m and %M.
1035         (__formatter_chrono::_M_c): Use _S_floor_seconds to remove
1036         subsecond precision.
1037         (__formatter_chrono::_M_C_y_Y): Use _M_locale_fmt to handle
1038         modifiers.
1039         (__formatter_chrono::_M_e): Replace with _M_d_e and use
1040         _M_locale_fmt.
1041         (__formatter_chrono::_M_I): Replace with _M_H_I and use
1042         _M_locale_fmt.
1043         (__formatter_chrono::_M_m): New function.
1044         (__formatter_chrono::_M_M): New function.
1045         (__formatter_chrono::_M_r): Use _M_locale_fmt.
1046         (__formatter_chrono::_M_S): Likewise.
1047         (__formatter_chrono::_M_u_w): Likewise.
1048         (__formatter_chrono::_M_U_V_W): Likewise.
1049         (__formatter_chrono::_M_X): Use _S_floor_seconds.
1050         (__formatter_chrono::_M_Z): Fix untested branch for wchar_t.
1051         (__formatter_chrono::_S_altnum): Remove function.
1052         (__formatter_chrono::_S_dd_zero_fill): Remove function.
1053         (__formatter_chrono::_S_floor_seconds): New function.
1054         (__formatter_chrono::_M_locale_fmt): New function.
1055         * testsuite/std/time/clock/system/io.cc: Adjust expected output
1056         for locale-specific formats and check modified formats.
1057         * testsuite/std/time/clock/utc/io.cc: Likewise.
1058         * testsuite/std/time/zoned_time/io.cc: New test.
1060 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1062         PR libstdc++/110708
1063         * include/bits/chrono_io.h (__formatter_chrono::_M_parse): Only
1064         allow a single modifier.
1065         * testsuite/std/time/format.cc: Check multiple modifiers.
1067 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1069         PR libstdc++/110653
1070         * testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc:
1071         Remove dg-require-string-conversions.
1072         * testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc:
1073         Likewise.
1074         * testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
1075         Likewise.
1076         * testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
1077         Likewise.
1078         * testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
1079         Likewise.
1081 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1083         PR libstdc++/110653
1084         * include/bits/basic_string.h [!_GLIBCXX_HAVE_STRTOF] (stof):
1085         Define in terms of std::stod.
1087 2023-07-19  Jonathan Wakely  <jwakely@redhat.com>
1089         PR libstdc++/110653
1090         * include/bits/basic_string.h [_GLIBCXX_HAVE_STRTOF] (stof):
1091         Define.
1092         [_GLIBCXX_HAVE_STRTOLD] (stold): Define.
1093         * include/c_global/cstdlib [_GLIBCXX_HAVE_STRTOF] (strtof):
1094         Declare in namespace std.
1095         [_GLIBCXX_HAVE_STRTOLD] (strtold): Likewise.
1097 2023-07-13  Jonathan Wakely  <jwakely@redhat.com>
1099         PR libstdc++/110653
1100         * include/bits/basic_string.h (stoi, stol, stoul, stod): Do not
1101         depend on _GLIBCXX_USE_C99_STDLIB.
1102         [__LONG_WIDTH__ == __LONG_LONG_WIDTH__] (stoll, stoull): Define
1103         in terms of stol and stoul respectively.
1104         [__DBL_MANT_DIG__ == __LDBL_MANT_DIG__] (stold): Define in terms
1105         of stod.
1107 2023-07-12  Jonathan Wakely  <jwakely@redhat.com>
1109         PR libstdc++/95048
1110         * testsuite/27_io/filesystem/path/construct/95048.cc: Check
1111         conversions to wide strings.
1112         * testsuite/experimental/filesystem/path/construct/95048.cc:
1113         Likewise.
1115 2023-07-12  Jonathan Wakely  <jwakely@redhat.com>
1117         * config/io/basic_file_stdio.cc: Define LFS macros.
1118         (__basic_file<char>::open): Use fopen unconditionally.
1119         (get_file_offset): Use lseek unconditionally.
1120         (__basic_file<char>::seekoff): Likewise.
1121         (__basic_file<char>::showmanyc): Use fstat unconditionally.
1123 2023-07-12  Jonathan Wakely  <jwakely@redhat.com>
1125         PR libstdc++/110574
1126         * acinclude.m4 (GLIBCXX_CHECK_LFS): Check for fseeko and ftello
1127         and define _GLIBCXX_USE_FSEEKO_FTELLO.
1128         * config.h.in: Regenerate.
1129         * configure: Regenerate.
1130         * config/io/basic_file_stdio.cc (xwrite) [_GLIBCXX_USE_STDIO_PURE]:
1131         Check for fwrite error correctly.
1132         (__basic_file<char>::xsgetn) [_GLIBCXX_USE_STDIO_PURE]: Check for
1133         fread error correctly.
1134         (get_file_offset): New function.
1135         (__basic_file<char>::seekoff) [_GLIBCXX_USE_STDIO_PURE]: Use
1136         fseeko if available. Use get_file_offset instead of return value
1137         of fseek.
1138         (__basic_file<char>::showmanyc): Use get_file_offset.
1140 2023-07-12  Ken Matsui  <kmatsui@gcc.gnu.org>
1142         * include/std/type_traits (__make_unsigned_selector): Use
1143         __is_enum built-in trait.
1144         (__make_signed_selector): Likewise.
1145         (__underlying_type_impl): Likewise.
1147 2023-07-06  Tianqiang Shuai  <1101282468@qq.com>
1149         * config/io/basic_file_stdio.cc (xwrite) [USE_STDIO_PURE]: Fix
1150         first argument.
1152 2023-07-06  Jonathan Wakely  <jwakely@redhat.com>
1154         PR libstdc++/110574
1155         * doc/xml/manual/configure.xml: Describe stdio_pure argument to
1156         --enable-cstdio.
1157         * doc/html/manual/configure.html: Regenerate.
1159 2023-07-05  Thomas Rodgers  <trodgers@redhat.com>
1161         * testsuite/25_algorithms/pstl/alg_sorting/set.cc: Delete
1162         file.
1163         * testsuite/25_algorithms/pstl/alg_sorting/set_difference.cc:
1164         New file.
1165         * testsuite/25_algorithms/pstl/alg_sorting/set_intersection.cc:
1166         Likewise.
1167         * testsuite/25_algorithms/pstl/alg_sorting/set_symmetric_difference.cc:
1168         Likewise.
1169         * testsuite/25_algorithms/pstl/alg_sorting/set_union.cc:
1170         Likewise.
1171         * testsuite/25_algorithms/pstl/alg_sorting/set_util.h:
1172         Likewise.
1174 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
1176         * testsuite/23_containers/forward_list/debug/iterator1_neg.cc:
1177         Skip as UNSUPPORTED for C++98 mode.
1178         * testsuite/23_containers/forward_list/debug/iterator3_neg.cc:
1179         Likewise.
1181 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
1183         PR libstdc++/110542
1184         * include/bits/stl_uninitialized.h (__uninitialized_default_n):
1185         Do not use std::fill_n during constant evaluation.
1187 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
1189         * include/bits/vector.tcc (_M_default_append): Replace try-block
1190         with RAII types.
1192 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
1194         * include/bits/iterator_concepts.h (projected): Add typename.
1196 2023-07-03  Jonathan Wakely  <jwakely@redhat.com>
1198         * testsuite/27_io/headers/iosfwd/synopsis.cc: Make wsyncbuf and
1199         wosyncstream depend on _GLIBCXX_USE_CXX11_ABI.
1201 2023-07-03  Jonathan Wakely  <jwakely@redhat.com>
1203         * include/pstl/pstl_config.h (_PSTL_PRAGMA_SIMD_SCAN,
1204         _PSTL_PRAGMA_SIMD_INCLUSIVE_SCAN, _PSTL_PRAGMA_SIMD_EXCLUSIVE_SCAN):
1205         Define to OpenMP 5.0 pragmas even for GCC 10.0+.
1206         (_PSTL_UDS_PRESENT): Define to 1 for GCC 10.0+.
1208 2023-07-03  Jonathan Wakely  <jwakely@redhat.com>
1210         * include/bits/alloc_traits.h (_Destroy): Qualify call.
1211         * include/bits/stl_construct.h (_Destroy, _Destroy_n): Likewise.
1212         * testsuite/23_containers/vector/cons/destroy-adl.cc: New test.
1214 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
1216         * testsuite/lib/libstdc++.exp: Remove additional flag handled
1217         by Darwin specs.
1219 2023-06-30  Jonathan Wakely  <jwakely@redhat.com>
1221         PR libstdc++/110432
1222         * acinclude.m4 (GLIBCXX_CHECK_INIT_PRIORITY): New.
1223         * config.h.in: Regenerate.
1224         * configure: Regenerate.
1225         * configure.ac: Use GLIBCXX_CHECK_INIT_PRIORITY.
1226         * include/std/iostream: Use new autoconf macro as well as
1227         __has_attribute.
1228         * src/c++98/ios_base_init.h: Use new autoconf macro instead of
1229         __has_attribute.
1231 2023-06-30  Jonathan Wakely  <jwakely@redhat.com>
1233         * src/c++11/random.cc (random_device::_M_init): Add maybe_unused
1234         attribute.
1236 2023-06-30  Jonathan Wakely  <jwakely@redhat.com>
1238         PR libstdc++/105081
1239         * src/c++11/random.cc (random_device::_M_init): Throw
1240         std::system_error when the requested device is a valid token but
1241         not available at runtime.
1243 2023-06-30  Hans-Peter Nilsson  <hp@axis.com>
1245         PR libstdc++/108672
1246         * include/pstl/unseq_backend_simd.h (__simd_or): Re-apply using
1247         __INT32_TYPE__ instead of int32_t.
1249 2023-06-29  Jonathan Wakely  <jwakely@redhat.com>
1251         * src/c++20/tzdb.cc (USE_ATOMIC_SHARED_PTR): Define consistently
1252         with USE_ATOMIC_LIST_HEAD.
1253         (list_mutex): Replace global object with function. Use local
1254         static object when std::mutex constructor isn't constexpr.
1256 2023-06-29  Jonathan Wakely  <jwakely@redhat.com>
1258         PR libstdc++/110462
1259         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check that
1260         copy_file_range can be called with loff_t* arguments.
1261         * configure: Regenerate.
1262         * src/filesystem/ops-common.h (copy_file_copy_file_range):
1263         Use loff_t for offsets.
1265 2023-06-29  Tom Tromey  <tromey@adacore.com>
1267         * testsuite/lib/gdb-test.exp (gdb-test): Relax type-printer
1268         regexp.
1270 2023-06-28  Jan Hubicka  <jh@suse.cz>
1272         PR middle-end/109849
1273         * include/bits/c++config (std::__terminate): Mark cold.
1274         * include/bits/functexcept.h: Mark everything as cold.
1275         * libsupc++/exception: Mark terminate and unexpected as cold.
1277 2023-06-26  Thomas Rodgers  <trodgers@redhat.com>
1279         * include/pstl/algorithm_fwd.h: Synchronize with upstream.
1280         * include/pstl/algorithm_impl.h: Likewise.
1281         * include/pstl/execution_defs.h: Likewise.
1282         * include/pstl/execution_impl.h: Likewise.
1283         * include/pstl/glue_algorithm_impl.h: Likewise.
1284         * include/pstl/glue_execution_defs.h: Likewise.
1285         * include/pstl/glue_memory_impl.h: Likewise.
1286         * include/pstl/glue_numeric_impl.h: Likewise.
1287         * include/pstl/memory_impl.h: Likewise.
1288         * include/pstl/numeric_fwd.h: Likewise.
1289         * include/pstl/numeric_impl.h: Likewise.
1290         * include/pstl/parallel_backend.h: Likewise.
1291         * include/pstl/parallel_backend_serial.h: Likewise.
1292         * include/pstl/parallel_backend_tbb.h: Likewise.
1293         * include/pstl/parallel_impl.h: Likewise.
1294         * include/pstl/pstl_config.h: Likewise.
1295         * include/pstl/unseq_backend_simd.h: Likewise.
1296         * include/pstl/utils.h: Likewise.
1297         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
1298         Likewise.
1299         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
1300         Likewise.
1301         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc:
1302         Likewise.
1303         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc:
1304         Likewise.
1305         * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
1306         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
1307         Likewise.
1308         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
1309         Likewise.
1310         * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc:
1311         Likewise.
1312         * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc:
1313         Likewise.
1314         * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
1315         Likewise.
1316         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
1317         Likewise.
1318         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
1319         Likewise.
1320         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
1321         Likewise.
1322         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc:
1323         Likewise.
1324         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc:
1325         Likewise.
1326         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
1327         Likewise.
1328         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
1329         Likewise.
1330         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
1331         Likewise.
1332         * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc:
1333         Likewise.
1334         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc:
1335         Likewise.
1336         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc:
1337         Likewise.
1338         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
1339         Likewise.
1340         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
1341         Likewise.
1342         * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc:
1343         Likewise.
1344         * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc:
1345         Likewise.
1346         * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc:
1347         Likewise.
1348         * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc:
1349         Likewise.
1350         * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc:
1351         Likewise.
1352         * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc:
1353         Likewise.
1354         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
1355         Likewise.
1356         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
1357         Likewise.
1358         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc:
1359         Likewise.
1360         * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc:
1361         Likewise.
1362         * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc:
1363         Likewise.
1364         * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc:
1365         Likewise.
1366         * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
1367         Likewise.
1368         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc:
1369         Likewise.
1370         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
1371         Likewise.
1372         * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
1373         Likewise.
1374         * testsuite/25_algorithms/pstl/alg_sorting/includes.cc:
1375         Likewise.
1376         * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc:
1377         Likewise.
1378         * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc:
1379         Likewise.
1380         * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
1381         Likewise.
1382         * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
1383         Likewise.
1384         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc:
1385         Likewise.
1386         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
1387         Likewise.
1388         * testsuite/25_algorithms/pstl/alg_sorting/set.cc:
1389         Likewise.
1390         * testsuite/25_algorithms/pstl/alg_sorting/sort.cc:
1391         Likewise.
1392         * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
1393         Likewise.
1394         * testsuite/26_numerics/pstl/numeric_ops/reduce.cc:
1395         Likewise.
1396         * testsuite/26_numerics/pstl/numeric_ops/scan.cc:
1397         Likewise.
1398         * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc:
1399         Likewise.
1400         * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc:
1401         Likewise.
1402         * testsuite/util/pstl/test_utils.h:
1403         Likewise.
1405 2023-06-26  Jonathan Wakely  <jwakely@redhat.com>
1407         PR libstdc++/110239
1408         * include/std/format (__format::__parse_integer): Fix buffer
1409         overflow for wide chars.
1410         (formatter<const void*, C>::format): Cast to uintptr_t instead
1411         of uint64_t.
1412         * testsuite/std/format/string.cc: Test too-large widths.
1414 2023-06-26  Jonathan Wakely  <jwakely@redhat.com>
1416         * include/bits/iterator_concepts.h (projected): Replace class
1417         template with alias template denoting an ADL-proofed helper.
1418         (incremental_traits<projected<Iter, Proj>>): Remove.
1419         * testsuite/24_iterators/indirect_callable/projected-adl.cc:
1420         New test.
1422 2023-06-26  Jonathan Wakely  <jwakely@redhat.com>
1424         * include/debug/helper_functions.h (__get_distance)
1425         (__check_singular, __valid_range_aux, __valid_range): Qualify
1426         calls to disable ADL.
1427         (__check_singular_aux(const _Safe_iterator_base*)): Declare
1428         overload that was previously found via ADL.
1430 2023-06-23  Jonathan Wakely  <jwakely@redhat.com>
1432         * include/bits/vector.tcc (_M_realloc_insert): Replace try-block
1433         with RAII types.
1435 2023-06-20  Jonathan Wakely  <jwakely@redhat.com>
1437         * include/std/array (to_array(T(&)[N])): Remove redundant
1438         condition.
1439         (to_array(T(&&)[N])): Remove redundant std::move.
1441 2023-06-16  Alexandre Oliva  <oliva@adacore.com>
1443         * testsuite/20_util/from_chars/4.cc: Skip long double on
1444         aarch64-rtems.
1446 2023-06-16  Joel Brobecker  <brobecker@adacore.com>
1448         * configure.ac ["x${with_newlib}" = "xyes"]: Define
1449         HAVE_HYPOTF.  Add compile-checks for various long double
1450         math functions as well.
1451         * configure: Regenerate.
1453 2023-06-14  Jonny Grant  <jg@jguk.org>
1455         * doc/xml/manual/extensions.xml: Remove demangle exception
1456         description and include.
1457         * doc/html/manual/ext_demangling.html: Regenerate.
1459 2023-06-10  Hans-Peter Nilsson  <hp@axis.com>
1461         * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc (main)
1462         [! SIMULATOR_TEST]: Also exclude running test05.
1463         * testsuite/27_io/basic_istream/ignore/char/94749.cc: Ditto.
1465 2023-06-09  Ken Matsui  <kmatsui@cs.washington.edu>
1467         * include/std/type_traits: Use using instead of typedef
1469 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1471         PR libstdc++/110077
1472         * src/c++17/floating_from_chars.cc (from_chars) <_Float128>:
1473         Only define if _Float128 and long double have different
1474         representations.
1476 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1478         PR libstdc++/100285
1479         * include/experimental/internet [IPPROTO_TCP || IPPROTO_UDP]
1480         (basic_endpoint, basic_resolver_entry, resolver_base)
1481         (basic_resolver_results, basic_resolver): Only define if the tcp
1482         or udp protocols will be defined.
1484 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1486         * acinclude.m4 (libtool_VERSION): Update to 6.0.33.
1487         * configure: Regenerate.
1488         * doc/xml/manual/abi.xml: Add libstdc++.so.6.0.33.
1489         * doc/html/manual/abi.html: Regenerate.
1491 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1493         PR libstdc++/110149
1494         * include/std/format (formatter<const void*, charT>::parse):
1495         Only alow 0 and P for C++26 and non-strict modes.
1496         (formatter<const void*, charT>::format): Use toupper for P
1497         type, and insert zero-fill characters for 0 option.
1498         * testsuite/std/format/functions/format.cc: Check pointer
1499         formatting. Only check P2510R3 extensions conditionally.
1500         * testsuite/std/format/parse_ctx.cc: Only check P2510R3
1501         extensions conditionally.
1503 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1505         PR libstdc++/110167
1506         * include/std/array (to_array): Initialize arrays of trivial
1507         types using memcpy. For non-trivial types, use lambda
1508         expressions instead of a separate helper function.
1509         (__to_array): Remove.
1510         * testsuite/23_containers/array/creation/110167.cc: New test.
1512 2023-06-09  Jonathan Wakely  <jwakely@redhat.com>
1514         * testsuite/23_containers/deque/modifiers/emplace/52799.cc:
1515         Removed.
1516         * testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc:
1517         Removed.
1518         * testsuite/23_containers/list/modifiers/emplace/52799.cc:
1519         Removed.
1520         * testsuite/23_containers/list/modifiers/emplace/const_iterator.cc:
1521         Removed.
1522         * testsuite/23_containers/vector/modifiers/emplace/52799.cc:
1523         Removed.
1524         * testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc:
1525         Removed.
1526         * testsuite/23_containers/deque/modifiers/emplace/1.cc: New
1527         test.
1528         * testsuite/23_containers/list/modifiers/emplace/1.cc: New
1529         test.
1530         * testsuite/23_containers/vector/modifiers/emplace/1.cc: New
1531         test.
1533 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
1535         PR libstdc++/110145
1536         * testsuite/20_util/to_chars/double.cc: Include <cfloat>.
1537         (double_to_chars_test_cases,
1538         double_scientific_precision_to_chars_test_cases_2,
1539         double_fixed_precision_to_chars_test_cases_2): #if out 1e126, 4.91e-6
1540         and 5.547e-6 tests if FLT_EVAL_METHOD is negative or larger than 1.
1541         Add unconditional tests with corresponding double constants
1542         0x1.7a2ecc414a03fp+418, 0x1.4981285e98e79p-18 and
1543         0x1.7440bbff418b9p-18.
1545 2023-06-07  Jonathan Wakely  <jwakely@redhat.com>
1547         * testsuite/util/testsuite_abi.cc (check_version): Re-add
1548         CXXABI_1.3.14.
1550 2023-06-07  Jonathan Wakely  <jwakely@redhat.com>
1552         * testsuite/18_support/nested_exception/rethrow_if_nested-term.cc:
1553         Require effective target exceptions_enabled instead of using
1554         dg-skip-if.
1555         * testsuite/23_containers/vector/capacity/constexpr.cc: Expect
1556         shrink_to_fit() to be a no-op without exceptions enabled.
1557         * testsuite/23_containers/vector/capacity/shrink_to_fit.cc:
1558         Likewise.
1559         * testsuite/ext/bitmap_allocator/check_allocate_max_size.cc:
1560         Require effective target exceptions_enabled.
1561         * testsuite/ext/malloc_allocator/check_allocate_max_size.cc:
1562         Likewise.
1563         * testsuite/ext/mt_allocator/check_allocate_max_size.cc:
1564         Likewise.
1565         * testsuite/ext/new_allocator/check_allocate_max_size.cc:
1566         Likewise.
1567         * testsuite/ext/pool_allocator/check_allocate_max_size.cc:
1568         Likewise.
1569         * testsuite/ext/throw_allocator/check_allocate_max_size.cc:
1570         Likewise.
1572 2023-06-07  Jonathan Wakely  <jwakely@redhat.com>
1574         * testsuite/20_util/duration/cons/2.cc: Use values that aren't
1575         affected by rounding.
1576         * testsuite/20_util/from_chars/5.cc: Cast arithmetic result to
1577         double before comparing for equality.
1578         * testsuite/20_util/from_chars/6.cc: Likewise.
1579         * testsuite/20_util/variant/86874.cc: Use values that aren't
1580         affected by rounding.
1581         * testsuite/25_algorithms/lower_bound/partitioned.cc: Compare to
1582         original value instead of to floating-point-literal.
1583         * testsuite/26_numerics/random/discrete_distribution/cons/range.cc:
1584         Cast arithmetic result to double before comparing for equality.
1585         * testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc:
1586         Likewise.
1587         * testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc:
1588         Likewise.
1589         * testsuite/26_numerics/valarray/transcend.cc (eq): Check that
1590         the absolute difference is less than 0.01 instead of comparing
1591         to two decimal places.
1592         * testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc:
1593         Cast arithmetic result to double before comparing for equality.
1594         * testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc:
1595         Likewise.
1596         * testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc:
1597         Likewise.
1598         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc:
1599         Likewise.
1600         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc:
1601         Likewise.
1602         * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc:
1603         Likewise.
1604         * testsuite/ext/random/hoyt_distribution/cons/parms.cc: Likewise.
1606 2023-06-07  Jonathan Wakely  <jwakely@redhat.com>
1608         Revert:
1609         2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1611         * configure.ac: Use AS_IF.
1612         * configure: Regenerate.
1614 2023-06-07  Thomas Schwinge  <thomas@codesourcery.com>
1616         * testsuite/lib/prune.exp (libstdc++-dg-prune): Support
1617         'UNSUPPORTED: [...]: exception handling disabled'.
1619 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1621         * testsuite/util/testsuite_abi.cc (check_version): Add
1622         CXXABI_1.3.15 symver and make it the latestp. Remove
1623         GLIBCXX_IEEE128_3.4.31 and GLIBCXX_LDBL_3.4.31 from latestp.
1625 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1626             Jakub Jelinek  <jakub@redhat.com>
1628         PR libstdc++/104772
1629         * include/std/limits: (numeric_limits<__float128>): Define
1630         for __STRICT_ANSI__ as well.
1631         * testsuite/18_support/numeric_limits/128bit.cc: Remove
1632         check for __STRICT_ANSI__.
1634 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1636         * configure.ac: Use AS_IF.
1637         * configure: Regenerate.
1639 2023-06-06  Matthias Kretz  <m.kretz@gsi.de>
1641         PR libstdc++/109822
1642         * include/experimental/bits/simd_builtin.h (_S_store): Rewrite
1643         to avoid casts to other vector types. Implement store as
1644         succession of power-of-2 sized memcpy to avoid PR90424.
1646 2023-06-06  Matthias Kretz  <m.kretz@gsi.de>
1648         PR libstdc++/110054
1649         * include/experimental/bits/simd_builtin.h (_S_masked_store):
1650         Call into deduced ABI's SimdImpl after conversion.
1651         * include/experimental/bits/simd_x86.h (_S_masked_store_nocvt):
1652         Don't use _mm_maskmoveu_si128. Use the generic fall-back
1653         implementation. Also fix masked stores without SSE2, which
1654         were not doing anything before.
1656 2023-06-06  Matthias Kretz  <m.kretz@gsi.de>
1658         * include/experimental/bits/simd.h (__bit_cast): Use
1659         __gnu__::__vector_size__ instead of gnu::vector_size.
1661 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1663         PR libstdc++/110139
1664         * include/std/array (__array_traits<T, 0>::operator T*()): Make
1665         conversion operator explicit.
1666         (array::front): Use size_type as subscript operand.
1667         (array::data): Use static_cast to make conversion explicit.
1668         * testsuite/23_containers/array/element_access/110139.cc: New
1669         test.
1671 2023-06-06  Joseph Faulls  <Joseph.Faulls@imgtec.com>
1673         * include/bits/locale_classes.tcc: Remove check for
1674         codecvt<char8_t, char, mbstate_t> facet.
1676 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1678         * src/filesystem/ops-common.h (do_copy_file) [O_CLOEXEC]: Set
1679         close-on-exec flag on file descriptors.
1681 2023-06-06  Jonathan Wakely  <jwakely@redhat.com>
1683         PR libstdc++/108178
1684         * src/filesystem/ops-common.h (do_copy_file): Check for empty
1685         files by trying to read a character.
1686         * testsuite/27_io/filesystem/operations/copy_file_108178.cc:
1687         New test.
1689 2023-06-06  Jannik Glückert  <jannik.glueckert@gmail.com>
1691         * acinclude.m4 (_GLIBCXX_USE_COPY_FILE_RANGE): Define.
1692         * config.h.in: Regenerate.
1693         * configure: Regenerate.
1694         * src/filesystem/ops-common.h (copy_file_copy_file_range):
1695         Define new function.
1696         (do_copy_file): Use it.
1698 2023-06-06  Jannik Glückert  <jannik.glueckert@gmail.com>
1700         * acinclude.m4 (_GLIBCXX_HAVE_LSEEK): Define.
1701         * config.h.in: Regenerate.
1702         * configure: Regenerate.
1703         * src/filesystem/ops-common.h (copy_file_sendfile): Define new
1704         function for sendfile logic. Loop to support large files. Skip
1705         zero-length files.
1706         (do_copy_file): Use it.
1708 2023-06-04  Jason Merrill  <jason@redhat.com>
1710         PR c++/97720
1711         * libsupc++/eh_call.cc (__cxa_call_terminate): Take void*.
1712         * config/abi/pre/gnu.ver: Add it.
1714 2023-06-02  François Dumont  <fdumont@gcc.gnu.org>
1716         * include/parallel/algobase.h: Include <parallel/search.h>.
1718 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
1720         * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc:
1721         Add const to equality operator.
1723 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
1725         * include/std/expected (expected::and_then, expected::or_else)
1726         (expected::transform_error): Use _M_val and _M_unex instead of
1727         calling value() and error(), as per LWG 3938.
1728         (expected::transform): Likewise. Remove incorrect std::move
1729         calls from lvalue overloads.
1730         (expected<void, E>::and_then, expected<void, E>::or_else)
1731         (expected<void, E>::transform): Use _M_unex instead of calling
1732         error().
1733         * testsuite/20_util/expected/lwg3877.cc: Add checks for and_then
1734         and transform, and for std::expected<void, E>.
1735         * testsuite/20_util/expected/lwg3938.cc: New test.
1737 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
1739         PR libstdc++/110060
1740         * include/bits/stl_vector.h (_Vector_base::_M_invariant):
1741         Remove.
1742         (vector::size, vector::capacity): Remove calls to _M_invariant.
1743         * include/bits/vector.tcc (vector::_M_fill_assign): Add
1744         optimization hint to reallocating path.
1745         (vector::_M_assign_aux(FwdIter, FwdIter, forward_iterator_tag)):
1746         Likewise.
1747         * testsuite/23_containers/vector/capacity/invariant.cc: Moved
1748         to...
1749         * testsuite/23_containers/vector/modifiers/assign/no_realloc.cc:
1750         ...here. Check assign(FwdIter, FwdIter) too.
1751         * testsuite/23_containers/vector/types/1.cc: Revert addition
1752         of -Wno-stringop-overread option.
1754 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
1756         * doc/xml/manual/evolution.xml: Document removal of implicit
1757         allocator rebinding extensions in strict mode and for C++20.
1758         * doc/html/*: Regenerate.
1760 2023-06-01  Jason Merrill  <jason@redhat.com>
1762         * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Don't check
1763         handlers in the cleanup phase.
1765 2023-06-01  Matthias Kretz  <m.kretz@gsi.de>
1767         PR libstdc++/110050
1768         * include/experimental/bits/simd.h (__vectorized_sizeof): With
1769         __have_neon_a32 only single-precision float works (in addition
1770         to integers).
1772 2023-06-01  François Dumont  <fdumont@gcc.gnu.org>
1774         * include/bits/stl_algo.h
1775         (std::__search, std::search(_FwdIt1, _FwdIt1, _FwdIt2, _FwdIt2, _BinPred)): Move...
1776         * include/bits/stl_algobase.h: ...here.
1777         * include/std/functional: Replace <stl_algo.h> include by <stl_algobase.h>.
1778         * include/parallel/algo.h (std::__parallel::search<_FIt1, _FIt2, _BinaryPred>)
1779         (std::__parallel::__search_switch<_FIt1, _FIt2, _BinaryPred, _ItTag1, _ItTag2>):
1780         Move...
1781         * include/parallel/algobase.h: ...here.
1782         * include/experimental/functional: Remove <bits/stl_algo.h> and <parallel/algorithm>
1783         includes. Include <bits/stl_algobase.h>.
1785 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1787         PR libstdc++/109818
1788         * acinclude.m4 (GLIBCXX_ENABLE_C99): Add separate check for
1789         float_t and double_t and define HAVE_C99_FLT_EVAL_TYPES.
1790         * config.h.in: Regenerate.
1791         * configure: Regenerate.
1792         * include/c_global/cmath (float_t, double_t): Guard using new
1793         _GLIBCXX_HAVE_C99_FLT_EVAL_TYPES macro.
1795 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1797         * acinclude.m4 (GLIBCXX_ENABLE_C99): Add checks for C99 math
1798         functions and define _GLIBCXX_USE_C99_MATH_FUNCS. Move checks
1799         for C99 rounding functions to here.
1800         (GLIBCXX_CHECK_C99_TR1): Remove checks for C99 rounding
1801         functions from here.
1802         * config.h.in: Regenerate.
1803         * configure: Regenerate.
1804         * include/bits/random.h: Use _GLIBCXX_USE_C99_MATH_FUNCS instead
1805         of _GLIBCXX_USE_C99_MATH_TR1.
1806         * include/bits/random.tcc: Likewise.
1807         * include/c_compatibility/math.h: Likewise.
1808         * include/c_global/cmath: Likewise.
1809         * include/ext/random: Likewise.
1810         * include/ext/random.tcc: Likewise.
1811         * include/std/complex: Likewise.
1812         * testsuite/20_util/from_chars/4.cc: Likewise.
1813         * testsuite/20_util/from_chars/8.cc: Likewise.
1814         * testsuite/26_numerics/complex/proj.cc: Likewise.
1815         * testsuite/26_numerics/headers/cmath/60401.cc: Likewise.
1816         * testsuite/26_numerics/headers/cmath/types_std_c++0x.cc:
1817         Likewise.
1818         * testsuite/lib/libstdc++.exp (check_v3_target_cstdint):
1819         Likewise.
1820         * testsuite/util/testsuite_random.h: Likewise.
1822 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1824         * include/bits/stl_vector.h (_Vector_base::_M_invariant()): New
1825         function.
1826         (vector::size(), vector::capacity()): Call _M_invariant().
1827         * testsuite/23_containers/vector/capacity/invariant.cc: New test.
1828         * testsuite/23_containers/vector/types/1.cc: Add suppression for
1829         false positive warning (PR110060).
1831 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1833         PR libstdc++/109921
1834         * src/c++17/floating_from_chars.cc: Check __FLT128_MANT_DIG__ is
1835         defined before trying to use _Float128.
1837 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1839         * acinclude.m4 (GLIBCXX_ZONEINFO_DIR): Fix for 32-bit pointers
1840         to check __INT_PTR_WIDTH__ instead of sizeof(void*).
1841         * configure: Regenerate.
1843 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1845         * include/bits/unique_lock.h: Include <bits/error_constants.h>
1846         here for std::errc constants.
1847         * include/std/mutex: Do not include <bits/error_constants.h> and
1848         <exception> here.
1850 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1852         * configure.ac: Replace use of -o operator for test.
1853         * configure: Regenerate.
1855 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1857         * include/std/scoped_allocator (scoped_allocator_adaptor): Add
1858         noexcept to all constructors except the default constructor.
1859         (scoped_allocator_adaptor::inner_allocator): Add noexcept.
1860         (scoped_allocator_adaptor::outer_allocator): Likewise.
1861         * testsuite/20_util/scoped_allocator/noexcept.cc: New test.
1863 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1865         PR libstdc++/104772
1866         * include/std/limits (numeric_limits<__float128>): Define.
1867         * testsuite/18_support/numeric_limits/128bit.cc: New test.
1869 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1871         * acinclude.m4 (GLIBCXX_ZONEINFO_DIR): Extend logic for avr and
1872         msp430 to all 16-bit targets.
1873         * configure: Regenerate.
1875 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1877         PR libstdc++/109921
1878         * src/c++17/floating_from_chars.cc (USE_STRTOF128_FOR_FROM_CHARS):
1879         Only define when USE_STRTOD_FOR_FROM_CHARS is also defined.
1880         (USE_STRTOD_FOR_FROM_CHARS): Do not undefine when long double is
1881         binary64.
1882         (from_chars(const char*, const char*, double&, chars_format)):
1883         Check __LDBL_MANT_DIG__ == __DBL_MANT_DIG__ here.
1884         (from_chars(const char*, const char*, _Float128&, chars_format))
1885         Only use from_chars_strtod when USE_STRTOD_FOR_FROM_CHARS is
1886         defined, otherwise parse a long double and convert to _Float128.
1888 2023-05-31  Jonathan Wakely  <jwakely@redhat.com>
1890         PR libstdc++/109922
1891         * include/std/iomanip (operator>>(basic_istream&, _Setfill)):
1892         Add deprecated attribute to non-standard overload.
1893         * doc/xml/manual/evolution.xml: Document deprecation.
1894         * doc/html/*: Regenerate.
1895         * testsuite/27_io/manipulators/standard/char/1.cc: Add
1896         dg-warning for expected deprecated warning.
1897         * testsuite/27_io/manipulators/standard/char/2.cc: Likewise.
1898         * testsuite/27_io/manipulators/standard/wchar_t/1.cc: Likewise.
1899         * testsuite/27_io/manipulators/standard/wchar_t/2.cc: Likewise.
1901 2023-05-30  Alexandre Oliva  <oliva@adacore.com>
1903         * testsuite/20_util/from_chars/4.cc: Skip long double test06
1904         on x86_64-vxworks.
1905         * testsuite/20_util/to_chars/long_double.cc: Xfail run on
1906         x86_64-vxworks.
1908 2023-05-30  Matthias Kretz  <m.kretz@gsi.de>
1910         PR libstdc++/109822
1911         * include/experimental/bits/simd.h (to_native): Use int NTTP
1912         as specified in PTS2.
1913         (to_compatible): Likewise. Add missing tag to call mask
1914         generator ctor.
1915         * testsuite/experimental/simd/pr109822_cast_functions.cc: New
1916         test.
1918 2023-05-30  Matthias Kretz  <m.kretz@gsi.de>
1920         * testsuite/experimental/simd/tests/integer_operators.cc:
1921         Compute expected value differently to avoid getting turned into
1922         a vector shift.
1924 2023-05-30  Matthias Kretz  <m.kretz@gsi.de>
1926         * testsuite/experimental/simd/tests/operator_cvt.cc: Make long
1927         double <-> (u)long conversion tests conditional on sizeof(long
1928         double) and sizeof(long).
1930 2023-05-26  Matthias Kretz  <m.kretz@gsi.de>
1932         * include/experimental/bits/simd_ppc.h (_S_bit_shift_left):
1933         Negative __y is UB, so prefer signed compare.
1935 2023-05-25  Jonathan Wakely  <jwakely@redhat.com>
1937         * testsuite/util/testsuite_allocator.h (PointerBase): Add
1938         relational operators.
1940 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
1942         * testsuite/20_util/to_chars/long_double.cc: Expect execution
1943         fail on x86-vxworks.
1945 2023-05-24  Matthias Kretz  <m.kretz@gsi.de>
1947         PR libstdc++/109949
1948         * include/experimental/bits/simd.h (__intrinsic_type): If
1949         __ALTIVEC__ is defined, map gnu::vector_size types to their
1950         corresponding __vector T types without losing unsignedness of
1951         integer types. Also prefer long long over long.
1952         * include/experimental/bits/simd_ppc.h (_S_popcount): Cast mask
1953         object to the expected unsigned vector type.
1955 2023-05-24  Matthias Kretz  <m.kretz@gsi.de>
1957         PR libstdc++/109261
1958         * include/experimental/bits/simd.h (__intrinsic_type):
1959         Specialize __intrinsic_type<double, 8> and
1960         __intrinsic_type<double, 16> in any case, but provide the member
1961         type only with __aarch64__.
1963 2023-05-24  Matthias Kretz  <m.kretz@gsi.de>
1965         PR libstdc++/109261
1966         * include/experimental/bits/simd_neon.h (_S_reduce): Add
1967         constexpr and make NEON implementation conditional on
1968         not __builtin_is_constant_evaluated.
1970 2023-05-23  Matthias Kretz  <m.kretz@gsi.de>
1972         PR libstdc++/109261
1973         * include/experimental/bits/simd.h (_SimdWrapper::_M_set):
1974         Avoid vector builtin subscripting in constant expressions.
1975         (resizing_simd_cast): Avoid memcpy if constant_evaluated.
1976         (const_where_expression, where_expression, where)
1977         (__extract_part, simd_mask, _SimdIntOperators, simd): Add either
1978         _GLIBCXX_SIMD_CONSTEXPR (on public APIs), or constexpr (on
1979         internal APIs).
1980         * include/experimental/bits/simd_builtin.h (__vector_permute)
1981         (__vector_shuffle, __extract_part, _GnuTraits::_SimdCastType1)
1982         (_GnuTraits::_SimdCastType2, _SimdImplBuiltin)
1983         (_MaskImplBuiltin::_S_store): Add constexpr.
1984         (_CommonImplBuiltin::_S_store_bool_array)
1985         (_SimdImplBuiltin::_S_load, _SimdImplBuiltin::_S_store)
1986         (_SimdImplBuiltin::_S_reduce, _MaskImplBuiltin::_S_load): Add
1987         constant_evaluated case.
1988         * include/experimental/bits/simd_fixed_size.h
1989         (_S_masked_load): Reword comment.
1990         (__tuple_element_meta, __make_meta, _SimdTuple::_M_apply_r)
1991         (_SimdTuple::_M_subscript_read, _SimdTuple::_M_subscript_write)
1992         (__make_simd_tuple, __optimize_simd_tuple, __extract_part)
1993         (__autocvt_to_simd, _Fixed::__traits::_SimdBase)
1994         (_Fixed::__traits::_SimdCastType, _SimdImplFixedSize): Add
1995         constexpr.
1996         (_SimdTuple::operator[], _M_set): Add constexpr and add
1997         constant_evaluated case.
1998         (_MaskImplFixedSize::_S_load): Add constant_evaluated case.
1999         * include/experimental/bits/simd_scalar.h: Add constexpr.
2000         * include/experimental/bits/simd_x86.h (_CommonImplX86): Add
2001         constexpr and add constant_evaluated case.
2002         (_SimdImplX86::_S_equal_to, _S_not_equal_to, _S_less)
2003         (_S_less_equal): Value-initialize to satisfy constexpr
2004         evaluation.
2005         (_MaskImplX86::_S_load): Add constant_evaluated case.
2006         (_MaskImplX86::_S_store): Add constexpr and constant_evaluated
2007         case. Value-initialize local variables.
2008         (_MaskImplX86::_S_logical_and, _S_logical_or, _S_bit_not)
2009         (_S_bit_and, _S_bit_or, _S_bit_xor): Add constant_evaluated
2010         case.
2011         * testsuite/experimental/simd/pr109261_constexpr_simd.cc: New
2012         test.
2014 2023-05-22  Matthias Kretz  <m.kretz@gsi.de>
2016         * include/experimental/bits/simd_builtin.h (_S_fpclassify): Move
2017         __infn into #ifdef'ed block.
2018         * testsuite/experimental/simd/tests/fpclassify.cc: Declare
2019         constants only when used.
2020         * testsuite/experimental/simd/tests/frexp.cc: Likewise.
2021         * testsuite/experimental/simd/tests/logarithm.cc: Likewise.
2022         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc:
2023         Likewise.
2024         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
2025         Move totest and expect1 into #ifdef'ed block.
2027 2023-05-19  Gerald Pfeifer  <gerald@pfeifer.com>
2029         * doc/xml/manual/strings.xml: Move lafstern.org reference to https.
2030         * doc/html/manual/strings.html: Regenerate.
2032 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
2034         PR libstdc++/109883
2035         * testsuite/26_numerics/headers/cmath/constexpr_std_c++23.cc: New test.
2037 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
2039         PR libstdc++/109883
2040         * include/c_global/cmath (atan2, fmod, pow): Move
2041         __gnu_cxx::__promote_2 using templates after _Float{16,32,64,128} and
2042         __gnu_cxx::__bfloat16_t overloads.
2043         (copysign, fdim, fmax, fmin, hypot, nextafter, remainder, remquo):
2044         Likewise.
2045         (fma): Move __gnu_cxx::__promote_3 using template after
2046         _Float{16,32,64,128} and __gnu_cxx::__bfloat16_t overloads.
2048 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
2050         * testsuite/18_support/headers/limits/synopsis.cc: Uncomment
2051         checks for float_round_style and float_denorm_style.
2053 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
2055         * include/bits/c++config: Add system_header pragma.
2057 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
2059         * include/std/expected (expected::and_then, expected::or_else)
2060         (expected::transform, expected::transform_error): Fix exception
2061         specifications as per LWG 3877.
2062         (expected<void, E>::and_then, expected<void, E>::transform):
2063         Likewise.
2064         * testsuite/20_util/expected/lwg3877.cc: New test.
2066 2023-05-17  Ken Matsui  <kmatsui@cs.washington.edu>
2068         * include/std/type_traits: Use __bool_constant instead of
2069         integral_constant.
2071 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
2073         * configure: Regenerate.
2075 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2077         PR libstdc++/109741
2078         * acinclude.m4 (GLIBCXX_CHECK_ALIGNAS_CACHELINE): Define.
2079         * config.h.in: Regenerate.
2080         * configure: Regenerate.
2081         * configure.ac: Use GLIBCXX_CHECK_ALIGNAS_CACHELINE.
2082         * src/c++11/shared_ptr.cc (__gnu_internal::get_mutex): Do not
2083         align lock table if not supported. use __GCC_DESTRUCTIVE_SIZE
2084         instead of hardcoded 64.
2086 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2088         * acinclude.m4 (GLIBCXX_USE_C99): Check for isblank in C++11
2089         mode and define _GLIBCXX_USE_C99_CTYPE. Check for <fenv.h>
2090         functions in C++11 mode and define _GLIBCXX_USE_C99_FENV.
2091         * config.h.in: Regenerate.
2092         * configure: Regenerate.
2093         * include/c_compatibility/fenv.h: Check _GLIBCXX_USE_C99_FENV
2094         instead of _GLIBCXX_USE_C99_FENV_TR1.
2095         * include/c_global/cfenv: Likewise.
2096         * include/c_global/cctype: Check _GLIBCXX_USE_C99_CTYPE instead
2097         of _GLIBCXX_USE_C99_CTYPE_TR1.
2099 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2101         * acinclude.m4 (GLIBCXX_USE_C99): Check for <stdint.h> types in
2102         C++11 mode and define _GLIBCXX_USE_C99_STDINT. Check for
2103         <inttypes.h> features in C++11 mode and define
2104         _GLIBCXX_USE_C99_INTTYPES and _GLIBCXX_USE_C99_INTTYPES_WCHAR_T.
2105         * config.h.in: Regenerate.
2106         * configure: Regenerate.
2107         * doc/doxygen/user.cfg.in (PREDEFINED): Add new macros.
2108         * include/bits/chrono.h: Check _GLIBCXX_USE_C99_STDINT instead
2109         of _GLIBCXX_USE_C99_STDINT_TR1.
2110         * include/c_compatibility/inttypes.h: Check
2111         _GLIBCXX_USE_C99_INTTYPES and _GLIBCXX_USE_C99_INTTYPES_WCHAR_T
2112         instead of _GLIBCXX_USE_C99_INTTYPES_TR1 and
2113         _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1.
2114         * include/c_compatibility/stdatomic.h: Check
2115         _GLIBCXX_USE_C99_STDINT instead of _GLIBCXX_USE_C99_STDINT_TR1.
2116         * include/c_compatibility/stdint.h: Likewise.
2117         * include/c_global/cinttypes: Check _GLIBCXX_USE_C99_INTTYPES
2118         and _GLIBCXX_USE_C99_INTTYPES_WCHAR_T instead of
2119         _GLIBCXX_USE_C99_INTTYPES_TR1 and
2120         _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1.
2121         * include/c_global/cstdint: Check _GLIBCXX_USE_C99_STDINT
2122         instead of _GLIBCXX_USE_C99_STDINT_TR1.
2123         * include/std/atomic: Likewise.
2124         * src/c++11/cow-stdexcept.cc: Likewise.
2125         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc:
2126         Likewise.
2127         * testsuite/lib/libstdc++.exp (check_v3_target_cstdint):
2128         Likewise.
2130 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2132         * acinclude.m4 (GLIBCXX_USE_C99): Check for complex inverse trig
2133         functions in C++11 mode and define _GLIBCXX_USE_C99_COMPLEX_ARC.
2134         * config.h.in: Regenerate.
2135         * configure: Regenerate.
2136         * doc/doxygen/user.cfg.in (PREDEFINED): Add new macro.
2137         * include/std/complex: Check _GLIBCXX_USE_C99_COMPLEX_ARC
2138         instead of _GLIBCXX_USE_C99_COMPLEX_TR1.
2140 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2142         * testsuite/ext/debug_allocator/check_deallocate_null.cc: Add
2143         assertion to ensure expected exception is throw.
2145 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2147         * testsuite/libstdc++-prettyprinters/chrono.cc: Only test
2148         printer for chrono::zoned_time for cx11 ABI and tzdb effective
2149         target.
2151 2023-05-16  Jonathan Wakely  <jwakely@redhat.com>
2153         * acinclude.m4 (GLIBCXX_CHECK_PTHREAD_MUTEX_CLOCKLOCK): Define
2154         _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK in terms of _GLIBCXX_TSAN.
2155         * configure: Regenerate.
2157 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2159         * acinclude.m4 (GLIBCXX_CHECK_C99_TR1): Use a non-null pointer
2160         to check for nan, nanf, and nanl.
2161         * configure: Regenerate.
2163 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2165         * include/bits/char_traits.h (char_traits<char16_t>): Do not
2166         depend on _GLIBCXX_USE_C99_STDINT_TR1.
2167         (char_traits<char32_t>): Likewise.
2168         * include/experimental/source_location: Likewise.
2170 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2172         * include/std/atomic (atomic_int_least8_t, atomic_uint_least8_t)
2173         (atomic_int_least16_t, atomic_uint_least16_t)
2174         (atomic_int_least32_t, atomic_uint_least32_t)
2175         (atomic_int_least64_t, atomic_uint_least64_t)
2176         (atomic_int_fast16_t, atomic_uint_fast16_t)
2177         (atomic_int_fast32_t, atomic_uint_fast32_t)
2178         (atomic_int_fast64_t, atomic_uint_fast64_t)
2179         (atomic_intmax_t, atomic_uintmax_t): Define unconditionally.
2180         * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Adjust.
2182 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2184         * include/bits/algorithmfwd.h (shuffle): Do not depend on
2185         _GLIBCXX_USE_C99_STDINT_TR1.
2186         * include/bits/ranges_algo.h (shuffle): Likewise.
2187         * include/bits/stl_algo.h (shuffle): Likewise.
2188         * include/ext/random: Likewise.
2189         * include/ext/throw_allocator.h (random_condition): Likewise.
2190         * include/std/random: Likewise.
2191         * src/c++11/cow-string-inst.cc: Likewise.
2192         * src/c++11/random.cc: Likewise.
2194 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2196         * testsuite/experimental/feat-cxx14.cc: Remove dependency on
2197         _GLIBCXX_USE_C99_STDINT_TR1.
2199 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2201         * testsuite/22_locale/locale/cons/unicode.cc: Remove dependency
2202         on _GLIBCXX_USE_C99_STDINT_TR1.
2204 2023-05-12  Jonathan Wakely  <jwakely@redhat.com>
2206         * testsuite/21_strings/basic_string_view/typedefs.cc: Remove
2207         dependency on _GLIBCXX_USE_C99_STDINT_TR1.
2208         * testsuite/experimental/string_view/typedefs.cc: Likewise.
2210 2023-05-11  Jonathan Wakely  <jwakely@redhat.com>
2212         * src/c++17/floating_from_chars.cc [USE_STRTOD_FOR_FROM_CHARS]
2213         (auto_locale, auto_ferounding): New class types.
2214         (from_chars_impl): Use auto_locale and auto_ferounding.
2216 2023-05-11  Jonathan Wakely  <jwakely@redhat.com>
2218         PR libstdc++/109772
2219         * include/std/chrono (hh_mm_ss::__fits): Remove variable
2220         template.
2221         (hh_mm_ss::__subseconds): Remove __fits from constraints.
2222         * testsuite/std/time/hh_mm_ss/109772.cc: New test.
2223         * testsuite/std/time/hh_mm_ss/1.cc: Adjust expected size for
2224         hh_mm_ss<duration<int, std::pico>>.
2226 2023-05-11  Jonathan Wakely  <jwakely@redhat.com>
2228         * config/abi/pre/gnu.ver: Export basic_string::_S_allocate.
2229         * include/bits/basic_ios.h: Add static assertion checking
2230         traits_type::value_type.
2231         * include/bits/basic_string.h: Likewise. Do not rebind
2232         allocator, and add static assertion checking its value_type.
2233         (basic_string::_Alloc_traits_impl): Remove class template.
2234         (basic_string::_S_allocate): New static member function.
2235         (basic_string::assign): Use _S_allocate.
2236         * include/bits/basic_string.tcc (basic_string::_M_create)
2237         (basic_string::reserve, basic_string::_M_replace): Likewise.
2238         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc:
2239         Disable for C++20 and later.
2240         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/int.cc:
2241         Likweise.
2243 2023-05-11  Jonathan Wakely  <jwakely@redhat.com>
2245         PR libstdc++/109758
2246         * include/bits/std_abs.h (abs(__float128)): Handle negative NaN
2247         and negative zero correctly.
2248         * testsuite/26_numerics/headers/cmath/109758.cc: New test.
2250 2023-05-10  François Dumont  <fdumont@gcc.gnu.org>
2252         * include/bits/hashtable_policy.h
2253         (_NodeBuilder<>::_S_build): Use __node_ptr.
2254         (_ReuseOrAllocNode<>): Use __node_ptr in place of __node_type*.
2255         (_AllocNode<>): Likewise.
2256         (_Equality<>::_M_equal): Remove const_iterator usages. Only preserved
2257         to call std::is_permutation in the non-unique key implementation.
2258         * include/bits/hashtable.h (_Hashtable<>::_M_update_begin()): Capture
2259         _M_begin() once.
2260         (_Hashtable<>::_M_bucket_begin(size_type)): Implement implicitly inline.
2261         (_Hashtable<>::_M_insert_bucket_begin): Likewise.
2262         (_Hashtable<>::_M_remove_bucket_begin): Likewise.
2263         (_Hashtable<>::_M_compute_hash_code): Use __node_ptr rather than
2264         const_iterator.
2265         (_Hashtable<>::find): Likewise.
2266         (_Hashtable<>::_M_emplace): Likewise.
2267         (_Hashtable<>::_M_insert_unique): Likewise.
2269 2023-05-09  Jonathan Wakely  <jwakely@redhat.com>
2271         * python/libstdcxx/v6/printers.py (StdChronoDurationPrinter):
2272         Print floating-point durations correctly.
2273         (StdChronoTimePointPrinter): Support printing only the value,
2274         not the type name. Uncomment handling for known clocks.
2275         (StdChronoZonedTimePrinter): Remove type names from output.
2276         (StdChronoCalendarPrinter): Fix hh_mm_ss member access.
2277         (StdChronoTimeZonePrinter): Add equals sign to output.
2278         * testsuite/libstdc++-prettyprinters/chrono.cc: New test.
2280 2023-05-05  Alexandre Oliva  <oliva@adacore.com>
2282         * testsuite/20_util/from_chars/4.cc: Skip long double test06
2283         on aarch64-vxworks.
2284         * testsuite/20_util/to_chars/long_double.cc: Xfail run on
2285         aarch64-vxworks.
2287 2023-05-04  Jonathan Wakely  <jwakely@redhat.com>
2289         * doc/xml/manual/abi.xml (abi.versioning.history): Document
2290         libstdc++.so.6.0.32 and GLIBCXX_3.4.32 version.
2291         * doc/html/manual/abi.html: Regenerate.
2293 2023-05-04  Florian Weimer  <fweimer@redhat.com>
2295         * doc/xml/manual/abi.xml (abi.versioning.history): Add
2296         GCC_7.0.0, GCC_9.0.0, GCC_11.0, GCC_12.0.0, GCC_13.0.0 for
2297         libgcc_s.
2299 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
2301         * src/c++17/floating_from_chars.cc
2302         (_ZSt10from_charsPKcS0_RDF128_St12chars_format): New alias to
2303         _ZSt10from_charsPKcS0_Ru9__ieee128St12chars_format.
2304         * src/c++17/floating_to_chars.cc (_ZSt8to_charsPcS_DF128_): New alias to
2305         _ZSt8to_charsPcS_u9__ieee128.
2306         (_ZSt8to_charsPcS_DF128_St12chars_format): New alias to
2307         _ZSt8to_charsPcS_u9__ieee128St12chars_format.
2308         (_ZSt8to_charsPcS_DF128_St12chars_formati): New alias to
2309         _ZSt8to_charsPcS_u9__ieee128St12chars_formati.
2310         * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Updated.
2312 2023-05-03  Jakub Jelinek  <jakub@redhat.com>
2314         * configure.host (abi_baseline_pair): Use powerpc64le-linux-gnu
2315         rather than powerpc64-linux-gnu for powerpc64le*-linux*.
2316         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Remove
2317         _ZTI*DF128_, _ZTI*DF64x symbols and symbols in
2318         GLIBCXX_IEEE128_3.4.{29,30,31} and CXXABI_IEEE128_1.3.13 symbol
2319         versions.
2320         * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: New
2321         file.
2323 2023-05-03  Kefu Chai  <kefu.chai@scylladb.com>
2324             Jonathan Wakely  <jwakely@redhat.com>
2326         PR libstdc++/109703
2327         * include/bits/basic_string.h (basic_string(Iter, Iter, Alloc)):
2328         Initialize _M_string_length.
2330 2023-05-02  Jakub Jelinek  <jakub@redhat.com>
2332         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
2333         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
2334         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
2335         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
2336         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
2337         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
2338         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
2339         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
2341 2023-05-02  Jakub Jelinek  <jakub@redhat.com>
2343         PR libstdc++/109694
2344         * src/c++98/ios_init.cc: Add #pragma GCC diagnostic ignored for
2345         -Wattribute-alias.
2347 2023-04-28  Jonathan Wakely  <jwakely@redhat.com>
2349         * include/bits/random.h (gamma_distribution): Add to the right
2350         doxygen group.
2351         (discrete_distribution, piecewise_constant_distribution)
2352         (piecewise_linear_distribution): Create a new doxygen group and
2353         fix the incomplete doxygen comments.
2354         * include/bits/uniform_int_dist.h (uniform_int_distribution):
2355         Add to doxygen group.
2357 2023-04-28  Jonathan Wakely  <jwakely@redhat.com>
2359         * include/bits/uses_allocator.h: Add missing @file comment.
2360         * include/bits/regex.tcc: Remove stray doxygen comments.
2361         * include/experimental/memory_resource: Likewise.
2362         * include/std/bit: Tweak doxygen @cond comments.
2363         * include/std/expected: Likewise.
2364         * include/std/numbers: Likewise.
2366 2023-04-28  Jonathan Wakely  <jwakely@redhat.com>
2368         * doc/doxygen/user.cfg.in (STRIP_FROM_PATH): Remove prefixes
2369         from header paths.
2371 2023-04-28  Jonathan Wakely  <jwakely@redhat.com>
2373         * include/bits/move.h: Simplify opening/closing namespace std.
2375 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
2377         PR libstdc++/108969
2378         * config/abi/pre/gnu.ver (GLIBCXX_3.4.32): Export
2379         _ZSt21ios_base_library_initv.
2380         * testsuite/util/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.32
2381         symver and make it the latestp.
2382         * src/c++98/ios_init.cc (ios_base_library_init): New alias.
2383         * acinclude.m4 (libtool_VERSION): Change to 6:32:0.
2384         * include/std/iostream: If init_priority attribute is supported
2385         and _GLIBCXX_SYMVER_GNU, force undefined _ZSt21ios_base_library_initv
2386         symbol into the object.
2387         * configure: Regenerated.
2389 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2391         * include/bits/mofunc_impl.h: Fix typo in doxygen comment.
2392         * include/std/format: Likewise.
2394 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2396         * doc/doxygen/user.cfg.in (FORMULA_TRANSPARENT, DOT_FONTNAME)
2397         (DOT_FONTSIZE, DOT_TRANSPARENT): Remove obsolete options.
2399 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2401         * doc/doxygen/user.cfg.in (SOURCE_BROWSER): Only set to YES for
2402         HTML docs.
2403         * include/bits/gslice_array.h (_DEFINE_VALARRAY_OPERATOR): Omit
2404         from doxygen docs.
2405         * include/bits/indirect_array.h (_DEFINE_VALARRAY_OPERATOR):
2406         Likewise.
2407         * include/bits/mask_array.h (_DEFINE_VALARRAY_OPERATOR):
2408         Likewise.
2409         * include/bits/slice_array.h (_DEFINE_VALARRAY_OPERATOR):
2410         Likewise.
2411         * include/std/valarray (_DEFINE_VALARRAY_UNARY_OPERATOR)
2412         (_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT)
2413         (_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT)
2414         (_DEFINE_BINARY_OPERATOR): Likewise.
2416 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2418         * include/bits/memory_resource.h: Improve doxygen comments.
2419         * include/std/memory_resource: Likewise.
2421 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2423         PR libstdc++/40380
2424         * include/bits/basic_string.h: Improve doxygen comments.
2425         * include/bits/cow_string.h: Likewise.
2426         * include/bits/forward_list.h: Likewise.
2427         * include/bits/fs_dir.h: Likewise.
2428         * include/bits/fs_path.h: Likewise.
2429         * include/bits/quoted_string.h: Likewise.
2430         * include/bits/stl_bvector.h: Likewise.
2431         * include/bits/stl_map.h: Likewise.
2432         * include/bits/stl_multimap.h: Likewise.
2433         * include/bits/stl_multiset.h: Likewise.
2434         * include/bits/stl_set.h: Likewise.
2435         * include/bits/stl_vector.h: Likewise.
2436         * include/bits/unordered_map.h: Likewise.
2437         * include/bits/unordered_set.h: Likewise.
2438         * include/std/filesystem: Likewise.
2439         * include/std/iomanip: Likewise.
2441 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
2443         PR libstdc++/105081
2444         * src/c++11/random.cc (__throw_syserr): New function.
2445         (random_device::_M_init, random_device::_M_init_pretr1): Use new
2446         function for bad tokens.
2447         (random_device::_M_getval): Use new function for read errors.
2448         * testsuite/util/testsuite_random.h (random_device_available):
2449         Change catch handler to use std::system_error.
2451 2023-04-24  Patrick Palka  <ppalka@redhat.com>
2453         * include/bits/max_size_type.h (__max_diff_type::operator>>=):
2454         Fix propagation of sign bit.
2455         * testsuite/std/ranges/iota/max_size_type.cc: Avoid using the
2456         non-standard 'signed typedef-name'.  Add some compile-time tests
2457         for right-shifting a negative __max_diff_type value by more than
2458         one.
2460 2023-04-19  Patrick Palka  <ppalka@redhat.com>
2461             Jonathan Wakely  <jwakely@redhat.com>
2463         PR c++/100157
2464         * include/bits/utility.h (_Nth_type): Conditionally define in
2465         terms of __type_pack_element if available.
2466         * testsuite/20_util/tuple/element_access/get_neg.cc: Prune
2467         additional errors from the new built-in.
2469 2023-04-19  Jonathan Wakely  <jwakely@redhat.com>
2471         Revert:
2472         2023-04-18  Jonathan Wakely  <jwakely@redhat.com>
2474         PR libstdc++/108969
2475         * src/Makefile.am: Move globals_io.cc to here.
2476         * src/Makefile.in: Regenerate.
2477         * src/c++98/Makefile.am: Remove globals_io.cc from here.
2478         * src/c++98/Makefile.in: Regenerate.
2479         * src/c++98/globals_io.cc [_GLIBCXX_SYMVER_GNU] (cin): Adjust
2480         symbol name and then export with GLIBCXX_3.4.31 symver.
2481         (cout, cerr, clog, wcin, wcout, wcerr, wclog): Likewise.
2482         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt:
2483         Regenerate.
2484         * config/abi/post/i486-linux-gnu/baseline_symbols.txt:
2485         Regenerate.
2486         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt:
2487         Regenerate.
2488         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
2489         Regenerate.
2490         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt:
2491         Regenerate.
2492         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt:
2493         Regenerate.
2494         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt:
2495         Regenerate.
2496         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
2497         Regenerate.
2498         * config/abi/pre/gnu.ver: Add iostream objects to new symver.
2500 2023-04-19  Jonathan Wakely  <jwakely@redhat.com>
2502         Revert:
2503         2023-04-18  Jonathan Wakely  <jwakely@redhat.com>
2505         PR libstdc++/108969
2506         * config/abi/pre/gnu.ver: Fix preprocessor condition.
2508 2023-04-18  Jonathan Wakely  <jwakely@redhat.com>
2510         * doc/xml/manual/extensions.xml: Fix example to declare and
2511         qualify std::free, and use NULL instead of 0.
2512         * doc/html/manual/ext_demangling.html: Regenerate.
2513         * libsupc++/cxxabi.h: Adjust doxygen comments.
2515 2023-04-18  Jonathan Wakely  <jwakely@redhat.com>
2517         PR libstdc++/108969
2518         * config/abi/pre/gnu.ver: Fix preprocessor condition.
2520 2023-04-18  Jonathan Wakely  <jwakely@redhat.com>
2522         PR libstdc++/108969
2523         * src/Makefile.am: Move globals_io.cc to here.
2524         * src/Makefile.in: Regenerate.
2525         * src/c++98/Makefile.am: Remove globals_io.cc from here.
2526         * src/c++98/Makefile.in: Regenerate.
2527         * src/c++98/globals_io.cc [_GLIBCXX_SYMVER_GNU] (cin): Adjust
2528         symbol name and then export with GLIBCXX_3.4.31 symver.
2529         (cout, cerr, clog, wcin, wcout, wcerr, wclog): Likewise.
2530         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt:
2531         Regenerate.
2532         * config/abi/post/i486-linux-gnu/baseline_symbols.txt:
2533         Regenerate.
2534         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt:
2535         Regenerate.
2536         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
2537         Regenerate.
2538         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt:
2539         Regenerate.
2540         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt:
2541         Regenerate.
2542         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt:
2543         Regenerate.
2544         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt:
2545         Regenerate.
2546         * config/abi/pre/gnu.ver: Add iostream objects to new symver.
2548 2023-04-18  Patrick Palka  <ppalka@redhat.com>
2550         PR libstdc++/108827
2551         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Bump value
2552         for C++23.
2553         * include/std/ranges (range_adaptor_closure): Define for C++23.
2554         * include/std/version (__cpp_lib_ranges): Bump value for
2555         C++23.
2556         * testsuite/std/ranges/version_c++23.cc: Bump expected value
2557         of __cpp_lib_ranges.
2558         * testsuite/std/ranges/range_adaptor_closure.cc: New test.
2560 2023-04-18  Patrick Palka  <ppalka@redhat.com>
2562         * include/bits/ranges_algo.h (__cpp_lib_ranges_contains):
2563         Define for C++23.
2564         (__cpp_lib_ranges_iota): Likewise.
2565         (__cpp_lib_ranges_find_last): Likewise.
2566         (__cpp_lib_fold): Rename to ...
2567         (__cpp_lib_ranges_fold): ... this.
2568         * include/std/version: As above.
2569         * testsuite/25_algorithms/fold_left/1.cc: Adjust after
2570         renaming __cpp_lib_fold.
2571         * testsuite/std/ranges/version_c++23.cc: Verify values
2572         of the above feature-test macros.
2574 2023-04-18  Patrick Palka  <ppalka@redhat.com>
2576         PR libstdc++/109525
2577         * include/std/ranges (views::_AsConst::operator()): Add
2578         missing const to constant_range test.
2579         * testsuite/std/ranges/adaptors/as_const/1.cc (test02):
2580         Improve formatting.  Adjust expected type of v2.
2581         (test03): New test.
2583 2023-04-14  Patrick Palka  <ppalka@redhat.com>
2585         * include/bits/ranges_base.h (const_iterator_t): Define for C++23.
2586         (const_sentinel_t): Likewise.
2587         (range_const_reference_t): Likewise.
2588         (constant_range): Likewise.
2589         (__cust_access::__possibly_const_range): Likewise, replacing ...
2590         (__cust_access::__as_const): ... this.
2591         (__cust_access::_CBegin::operator()): Redefine for C++23 as per P2278R4.
2592         (__cust_access::_CEnd::operator()): Likewise.
2593         (__cust_access::_CRBegin::operator()): Likewise.
2594         (__cust_access::_CREnd::operator()): Likewise.
2595         (__cust_access::_CData::operator()): Likewise.
2596         * include/bits/ranges_util.h (ranges::__detail::__different_from):
2597         Make it an alias of std::__detail::__different_from.
2598         (view_interface::cbegin): Define for C++23.
2599         (view_interface::cend): Likewise.
2600         * include/bits/stl_iterator.h (__detail::__different_from): Define.
2601         (iter_const_reference_t): Define for C++23.
2602         (__detail::__constant_iterator): Likewise.
2603         (__detail::__is_const_iterator): Likewise.
2604         (__detail::__not_a_const_iterator): Likewise.
2605         (__detail::__iter_const_rvalue_reference_t): Likewise.
2606         (__detail::__basic_const_iter_cat):: Likewise.
2607         (const_iterator): Likewise.
2608         (__detail::__const_sentinel): Likewise.
2609         (const_sentinel): Likewise.
2610         (basic_const_iterator): Likewise.
2611         (common_type<basic_const_iterator<_Tp>, _Up>): Likewise.
2612         (common_type<_Up, basic_const_iterator<_Tp>>): Likewise.
2613         (common_type<basic_const_iterator<_Tp>, basic_const_iterator<Up>>):
2614         Likewise.
2615         (make_const_iterator): Define for C++23.
2616         (make_const_sentinel): Likewise.
2617         * include/std/ranges (__cpp_lib_ranges_as_const): Likewise.
2618         (as_const_view): Likewise.
2619         (enable_borrowed_range<as_const_view>): Likewise.
2620         (views::__detail::__is_ref_view): Likewise.
2621         (views::__detail::__can_is_const_view): Likewise.
2622         (views::_AsConst, views::as_const): Likewise.
2623         * include/std/span (span::const_iterator): Likewise.
2624         (span::const_reverse_iterator): Likewise.
2625         (span::cbegin): Likewise.
2626         (span::cend): Likewise.
2627         (span::crbegin): Likewise.
2628         (span::crend): Likewise.
2629         * include/std/version (__cpp_lib_ranges_as_const): Likewise.
2630         * testsuite/std/ranges/adaptors/join.cc (test06): Adjust to
2631         behave independently of C++20 vs C++23.
2632         * testsuite/std/ranges/version_c++23.cc: Verify value of
2633         __cpp_lib_ranges_as_const macro.
2634         * testsuite/24_iterators/const_iterator/1.cc: New test.
2635         * testsuite/std/ranges/adaptors/as_const/1.cc: New test.
2637 2023-04-14  Patrick Palka  <ppalka@redhat.com>
2639         * include/bits/ranges_base.h (__cust_access::__as_const)
2640         (__cust_access::_CBegin, __cust::cbegin)
2641         (__cust_access::_CEnd, __cust::cend)
2642         (__cust_access::_CRBegin, __cust::crbegin)
2643         (__cust_access::_CREnd, __cust::crend)
2644         (__cust_access::_CData, __cust::cdata): Move down definitions to
2645         shortly after the definition of input_range.
2647 2023-04-14  Patrick Palka  <ppalka@redhat.com>
2649         * include/bits/ranges_algo.h: Include <optional> for C++23.
2650         (__cpp_lib_fold): Define for C++23.
2651         (in_value_result): Likewise.
2652         (__detail::__flipped): Likewise.
2653         (__detail::__indirectly_binary_left_foldable_impl): Likewise.
2654         (__detail::__indirectly_binary_left_foldable): Likewise.
2655         (___detail:__indirectly_binary_right_foldable): Likewise.
2656         (fold_left_with_iter_result): Likewise.
2657         (__fold_left_with_iter_fn, fold_left_with_iter): Likewise.
2658         (__fold_left_fn, fold_left): Likewise.
2659         (__fold_left_first_with_iter_fn, fold_left_first_with_iter):
2660         Likewise.
2661         (__fold_left_first_fn, fold_left_first): Likewise.
2662         (__fold_right_fn, fold_right): Likewise.
2663         (__fold_right_last_fn, fold_right_last): Likewise.
2664         * include/std/version (__cpp_lib_fold): Likewise.
2665         * testsuite/25_algorithms/fold_left/1.cc: New test.
2666         * testsuite/25_algorithms/fold_right/1.cc: New test.
2668 2023-04-14  Jonathan Wakely  <jwakely@redhat.com>
2670         * include/std/format (formatter): Add comment to deleted default
2671         constructor of primary template.
2672         (_Checking_scanner): Add static_assert.
2674 2023-04-12  Jonathan Wakely  <jwakely@redhat.com>
2676         * doc/xml/manual/using.xml: Document libstdc++exp.a library.
2677         * doc/html/*: Regenerate.
2679 2023-04-12  Jonathan Wakely  <jwakely@redhat.com>
2681         * testsuite/17_intro/names.cc [_AIX]: Do not define policy.
2682         * testsuite/19_diagnostics/error_code/cons/lwg3629.cc: Rename
2683         namespace to avoid clashing with libc struct.
2684         * testsuite/19_diagnostics/error_condition/cons/lwg3629.cc:
2685         Likewise.
2686         * testsuite/23_containers/unordered_map/96088.cc: Skip on AIX.
2687         * testsuite/23_containers/unordered_multimap/96088.cc: Likewise.
2688         * testsuite/23_containers/unordered_multiset/96088.cc: Likewise.
2689         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
2690         * testsuite/experimental/synchronized_value.cc: Require gthreads
2691         and add missing option for pthreads targets.
2693 2023-04-12  Patrick Palka  <ppalka@redhat.com>
2695         * include/std/ranges (__cpp_lib_ranges_enumerate): Define
2696         for C++23.
2697         (__detail::__range_with_movable_reference): Likewise.
2698         (enumerate_view): Likewise.
2699         (enumerate_view::_Iterator): Likewise.
2700         (enumerate_view::_Sentinel): Likewise.
2701         (views::__detail::__can_enumerate_view): Likewise.
2702         (views::_Enumerate, views::enumerate): Likewise.
2703         * include/std/version (__cpp_lib_ranges_enumerate): Likewise.
2704         * testsuite/std/ranges/version_c++23.cc: Verify value of
2705         __cpp_lib_ranges_enumerate.
2706         * testsuite/std/ranges/adaptors/enumerate/1.cc: New test.
2708 2023-04-12  Patrick Palka  <ppalka@redhat.com>
2710         * include/std/ranges (lazy_split_view::_OuterIter::_OuterIter):
2711         Propagate _M_trailing_empty in the const-converting constructor
2712         as per LWG 3904.
2713         * testsuite/std/ranges/adaptors/adjacent/1.cc (test04): Correct
2714         assertion.
2715         * testsuite/std/ranges/adaptors/lazy_split.cc (test12): New test.
2717 2023-04-12  Patrick Palka  <ppalka@redhat.com>
2719         * src/c++17/floating_from_chars.cc: Include <algorithm>,
2720         <iterator>, <limits> and <cstdint>.
2722 2023-04-12  Patrick Palka  <ppalka@redhat.com>
2724         PR libstdc++/108291
2725         * include/std/ranges (chunk_by_view::_M_find_next): Generalize
2726         parameter types of the lambda wrapper passed to adjacent_find.
2727         (chunk_by_view::_M_find_prev): Likewise.
2728         * testsuite/std/ranges/adaptors/chunk_by/1.cc (test04, test05):
2729         New tests.
2731 2023-04-12  Jonathan Wakely  <jwakely@redhat.com>
2733         PR libstdc++/109482
2734         * include/experimental/internet (basic_endpoint::basic_endpoint()):
2735         Ensure that the required union members are active. Only define
2736         as constexpr for C++20 and later.
2737         (basic_endpoint::basic_endpoint(const protocol_type&, port_type)):
2738         Likewise.
2739         * testsuite/experimental/net/internet/endpoint/cons.cc: Only
2740         check constexpr default constructor for C++20 and later.
2741         * testsuite/experimental/net/internet/endpoint/extensible.cc:
2742         Likewise.
2744 2023-04-12  Jonathan Wakely  <jwakely@redhat.com>
2746         * src/c++20/tzdata.zi: Import new file from 2023c release.
2748 2023-04-05  Arsen Arsenović  <arsen@aarsen.me>
2750         * include/precompiled/stdc++.h (C++17): Don't double-include
2751         <charconv>, once with wrong conditions.
2752         * testsuite/18_support/96817.cc: Require hosted.
2753         * testsuite/18_support/bad_exception/59392.cc: Ditto.
2754         * testsuite/20_util/scoped_allocator/108952.cc: Ditto.
2755         * testsuite/20_util/uses_allocator/lwg3527.cc: Ditto.
2756         * testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
2757         Ditto.
2759 2023-04-05  Arsen Arsenović  <arsen@aarsen.me>
2761         * include/bits/c++config: When __STDC_HOSTED__ is zero,
2762         disable _GLIBCXX_DEBUG and, if it was set, enable
2763         _GLIBCXX_ASSERTIONS.
2764         * testsuite/lib/libstdc++.exp (check_v3_target_debug_mode):
2765         Include <bits/c++config.h> when determining whether debug is
2766         set, in order to inherit the logic from above
2768 2023-04-05  Arsen Arsenović  <arsen@aarsen.me>
2770         * testsuite/17_intro/versionconflict.cc: New test.
2771         * include/std/version: Allow disabling the system_header pragma
2772         via _GLIBCXX_TESTING_SYSHDR.
2774 2023-04-05  Arsen Arsenović  <arsen@aarsen.me>
2776         * include/bits/unique_ptr.h (__cpp_lib_constexpr_memory):
2777         Synchronize the definition block with...
2778         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory):
2779         ... this one here.  Also define the 202202L value, rather than
2780         leaving it up to purely unique_ptr.h, so that the value is
2781         synchronized across all headers.
2782         (__gnu_debug::_Safe_iterator_base): Move into new conditional
2783         block.
2784         * include/std/memory (__cpp_lib_atomic_value_initialization):
2785         Define on freestanding under the same conditions as in
2786         atomic_base.h.
2787         * include/std/version (__cpp_lib_robust_nonmodifying_seq_ops):
2788         Also define on freestanding.
2789         (__cpp_lib_to_chars): Ditto.
2790         (__cpp_lib_gcd): Ditto.
2791         (__cpp_lib_gcd_lcm): Ditto.
2792         (__cpp_lib_raw_memory_algorithms): Ditto.
2793         (__cpp_lib_array_constexpr): Ditto.
2794         (__cpp_lib_nonmember_container_access): Ditto.
2795         (__cpp_lib_clamp): Ditto.
2796         (__cpp_lib_constexpr_char_traits): Ditto.
2797         (__cpp_lib_constexpr_string): Ditto.
2798         (__cpp_lib_sample): Ditto.
2799         (__cpp_lib_lcm): Ditto.
2800         (__cpp_lib_constexpr_iterator): Ditto.
2801         (__cpp_lib_constexpr_char_traits): Ditto.
2802         (__cpp_lib_interpolate): Ditto.
2803         (__cpp_lib_constexpr_utility): Ditto.
2804         (__cpp_lib_shift): Ditto.
2805         (__cpp_lib_ranges): Ditto.
2806         (__cpp_lib_move_iterator_concept): Ditto.
2807         (__cpp_lib_constexpr_numeric): Ditto.
2808         (__cpp_lib_constexpr_functional): Ditto.
2809         (__cpp_lib_constexpr_algorithms): Ditto.
2810         (__cpp_lib_constexpr_tuple): Ditto.
2811         (__cpp_lib_constexpr_memory): Ditto.
2813 2023-04-05  John David Anglin  <danglin@gcc.gnu.org>
2815         * testsuite/22_locale/locale/cons/12658_thread-2.cc: Double
2816         timeout factor on hppa*-*-*.
2818 2023-04-05  Jonathan Wakely  <jwakely@redhat.com>
2820         * include/bits/regex.h (sub_match::swap): New function.
2821         * testsuite/28_regex/sub_match/lwg3204.cc: New test.
2823 2023-04-04  Jonathan Wakely  <jwakely@redhat.com>
2825         * doc/xml/manual/extensions.xml: Remove std::bad_exception from
2826         example program.
2827         * doc/html/manual/ext_demangling.html: Regenerate.
2829 2023-03-31  Jonathan Wakely  <jwakely@redhat.com>
2831         PR tree-optimization/107087
2832         * include/bits/cow_string.h (basic_string::size()): Add
2833         optimizer hint that _S_empty_rep()._M_length is always zero.
2834         (basic_string::length()): Call size().
2836 2023-03-31  Jonathan Wakely  <jwakely@redhat.com>
2838         PR libstdc++/109339
2839         * include/std/stop_token (_Stop_state_ptr(const stop_source&)):
2840         Add attribute access with access-mode 'none'.
2841         * testsuite/30_threads/stop_token/stop_source/109339.cc: New test.
2843 2023-03-31  Jonathan Wakely  <jwakely@redhat.com>
2845         * include/experimental/internet (ip::basic_endpoint::_M_if_v6):
2846         Revert change from member function to data member. Fix for
2847         constant evaluation by detecting which union member is active.
2848         (ip::basic_endpoint::resize): Revert changes to update _M_is_v6
2849         flag.
2851 2023-03-29  Jonathan Wakely  <jwakely@redhat.com>
2853         PR libstdc++/109242
2854         * testsuite/20_util/optional/monadic/pr109340.cc: Moved to...
2855         * testsuite/20_util/optional/monadic/pr109242.cc: ...here.
2857 2023-03-29  Jonathan Wakely  <jwakely@redhat.com>
2859         * include/experimental/internet (ip::make_address): Implement
2860         missing overload.
2861         (ip::address_v4::broadcast()): Avoid undefined shift.
2862         (ip::basic_endpoint): Fix member functions for constexpr.
2863         (ip::basic_endpoint::_M_is_v6): Replace member function with
2864         data member, adjust member functions using it.
2865         (ip::basic_endpoint::resize): Update _M_is_v6 based on sockaddr
2866         content.
2867         * testsuite/experimental/net/internet/address/v4/cons.cc: Fix
2868         constexpr checks to work in C++14.
2869         * testsuite/experimental/net/internet/address/v4/creation.cc:
2870         Likewise.
2871         * testsuite/experimental/net/internet/endpoint/cons.cc:
2872         Likewise.
2873         * testsuite/experimental/net/internet/network/v4/cons.cc:
2874         Likewise.
2875         * testsuite/experimental/net/internet/network/v4/members.cc:
2876         Likewise.
2877         * testsuite/experimental/net/internet/endpoint/extensible.cc: New test.
2879 2023-03-29  Jonathan Wakely  <jwakely@redhat.com>
2881         * include/std/expected (expected::value() &): Use const lvalue
2882         for unex member passed to bad_expected_access constructor, as
2883         per LWG 3843.
2885 2023-03-29  Jonathan Wakely  <jwakely@redhat.com>
2887         PR libstdc++/109340
2888         * include/std/expected (expected::transform): Use
2889         std::remove_cv_t instead of std::remove_cvref_t.
2890         (expected::transform_error): Likewise.
2891         (expected<cv void, E>::transform): Likewise.
2892         (expected<cv void, E>::transform_error): Likewise.
2893         * include/std/optional (transform): Use std::remove_cv_t.
2894         * testsuite/20_util/optional/monadic/pr109340.cc: New test.
2896 2023-03-29  Jonathan Wakely  <jwakely@redhat.com>
2898         * include/std/optional (optional): Adjust static assertion to
2899         reject arrays and functions as well as references.
2900         * testsuite/20_util/optional/requirements_neg.cc: New test.
2902 2023-03-28  Jonathan Wakely  <jwakely@redhat.com>
2904         PR libstdc++/103387
2905         * include/bits/istream.tcc (istream::_M_extract(ValueT&)): Use
2906         std::use_facet instead of cached _M_num_get facet.
2907         (istream::operator>>(short&)): Likewise.
2908         (istream::operator>>(int&)): Likewise.
2909         * include/bits/ostream.tcc (ostream::_M_insert(ValueT)): Use
2910         std::use_facet instead of cached _M_num_put facet.
2912 2023-03-28  Jonathan Wakely  <jwakely@redhat.com>
2914         * include/bits/char_traits.h (char_traits::copy): Return without
2915         using memcpy if n==0.
2916         (char_traits::assign): Likewise for memset.
2918 2023-03-28  Jonathan Wakely  <jwakely@redhat.com>
2920         PR libstdc++/109299
2921         * include/bits/basic_string.h (basic_string::_M_is_local()): Add
2922         hint for compiler that local strings fit in the local buffer.
2924 2023-03-28  Jonathan Wakely  <jwakely@redhat.com>
2926         PR libstdc++/109288
2927         * include/std/chrono (__detail::__get_leap_second_info): Update
2928         expiry date of hardcoded leapseconds list.
2929         * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds()):
2930         Likewise.
2931         * src/c++20/tzdata.zi: Import new file from 2023a release.
2932         * testsuite/std/time/time_zone/get_info_local.cc: Only check
2933         transitions for Egypt up to 2014.
2935 2023-03-28  Matthias Kretz  <m.kretz@gsi.de>
2937         * include/experimental/bits/simd.h (is_simd_flag_type): New.
2938         (_IsSimdFlagType): New.
2939         (copy_from, copy_to, load ctors): Constrain _Flags using
2940         _IsSimdFlagType.
2942 2023-03-28  Matthias Kretz  <m.kretz@gsi.de>
2944         * include/experimental/bits/simd_x86.h (_SimdImplX86): Use
2945         _Base::_S_divides if the optimized _S_divides function is hidden
2946         via the preprocessor.
2948 2023-03-27  Jakub Jelinek  <jakub@redhat.com>
2950         * testsuite/experimental/net/timer/waitable/dest.cc: Avoid -Wformat
2951         warning if size_t is not unsigned long.
2953 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2955         * include/bits/shared_ptr_atomic.h (atomic::operator=(nullptr_t)):
2956         Add overload, as per LWG 3893.
2957         * testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc:
2958         Check assignment from nullptr.
2960 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2962         * include/std/format (formatter<const charT[N], charT>): Do not
2963         define partial speclialization, as per LWG 3833.
2964         * testsuite/std/format/formatter/requirements.cc: Check it.
2966 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2968         * include/std/utility (__cpp_lib_constexpr_algorithms): Define,
2969         as per LWG 3792.
2970         * testsuite/20_util/exchange/constexpr.cc: Check for it.
2972 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2974         * include/std/version (__cpp_lib_format): Define.
2975         * testsuite/std/format/functions/format.cc: Check it.
2977 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2979         * include/bits/basic_string.tcc (basic_string::resize_and_overwrite):
2980         Pass rvalues to the callback, as now allowed by LWG 3645.
2981         Enforce preconditions on the return value.
2982         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
2983         Adjust.
2985 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2987         * include/std/format: Add a comment noting that the resolution
2988         of LWG 3720 has been applied..
2990 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2992         * include/bits/regex.h (match_results): Add allocator-extended
2993         copy and move constructors, as per LWG 2195.
2994         * testsuite/28_regex/match_results/ctors/char/alloc.cc: New test.
2996 2023-03-22  Jonathan Wakely  <jwakely@redhat.com>
2998         * include/bits/stream_iterator.h (istream_iterator): Add
2999         constexpr to copy constructor, as per LWG 3600.
3000         * testsuite/24_iterators/istream_iterator/cons/constexpr.cc:
3001         Check copy construction.
3003 2023-03-21  Matthias Kretz  <m.kretz@gsi.de>
3005         * include/experimental/bits/simd_x86.h
3006         (_SimdImplX86::_S_divides): Replace test for __GCC_IEC_559 == 0
3007         with __RECIPROCAL_MATH__.
3009 2023-03-21  Matthias Kretz  <m.kretz@gsi.de>
3011         * include/experimental/bits/simd_detail.h: Don't define
3012         _GLIBCXX_SIMD_WORKAROUND_PR90993 for Clang.
3013         * include/experimental/bits/simd_x86.h (_S_divides): Remove
3014         check for __clang__.
3016 2023-03-21  Matthias Kretz  <m.kretz@gsi.de>
3018         * include/experimental/bits/simd_detail.h: Don't declare the
3019         simd API as constexpr with Clang.
3020         * include/experimental/bits/simd_x86.h (__movm): New.
3021         (_S_blend_avx512): Resolve FIXME. Implement blend using __movm
3022         and ?:.
3023         (_SimdImplX86::_S_masked_unary): Clang does not implement the
3024         same builtins. Implement the function using __movm, ?:, and -
3025         operators on vector_size types instead.
3027 2023-03-21  Matthias Kretz  <m.kretz@gsi.de>
3029         * testsuite/experimental/simd/tests/operators.cc: Clang doesn't
3030         define __GCC_IEC_559. Use __STDC_IEC_559__ instead.
3032 2023-03-20  Jonathan Wakely  <jwakely@redhat.com>
3034         * src/filesystem/ops-common.h (get_temp_directory_from_env): Fix
3035         formatting.
3037 2023-03-20  Marek Polacek  <polacek@redhat.com>
3039         PR c++/109159
3040         * testsuite/20_util/pair/cons/explicit_construct.cc: Adjust dg-error.
3041         * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
3042         * testsuite/23_containers/span/explicit.cc: Likewise.
3044 2023-03-20  Jonathan Wakely  <jwakely@redhat.com>
3046         PR libstdc++/109182
3047         * include/std/expected (expected<void>::expected(in_place_t)):
3048         Remove template-head.
3050 2023-03-18  Jonathan Wakely  <jwakely@redhat.com>
3052         PR libstdc++/109165
3053         * testsuite/18_support/coroutines/hash.cc: Use const object
3054         in second call.
3056 2023-03-17  Jonathan Wakely  <jwakely@redhat.com>
3058         PR libstdc++/109165
3059         * include/std/coroutine (hash<>::operator()): Add const.
3060         * testsuite/18_support/coroutines/hash.cc: New test.
3062 2023-03-14  Patrick Palka  <ppalka@redhat.com>
3064         PR libstdc++/109111
3065         * include/std/ranges (repeat_view): Remove redundant parentheses
3066         in requires-clause.
3067         (repeat_view::_Iterator): Correct the requires-clause.
3069 2023-03-14  Patrick Palka  <ppalka@redhat.com>
3071         * include/bits/stl_iterator.h (move_iterator::_S_iter_concept):
3072         Define.
3073         (__cpp_lib_move_iterator_concept): Define for C++20.
3074         (move_iterator::iterator_concept): Strengthen as per P2520R0.
3075         * include/std/version (__cpp_lib_move_iterator_concept): Define
3076         for C++20.
3077         * testsuite/24_iterators/move_iterator/p2520r0.cc: New test.
3079 2023-03-14  Patrick Palka  <ppalka@redhat.com>
3081         * include/bits/ranges_util.h (view_interface::empty): Add
3082         preferred overloads that use ranges::size when the range is
3083         sized as per LWG 3715.
3084         * testsuite/std/ranges/adaptors/lwg3715.cc: New test.
3086 2023-03-14  Jonathan Wakely  <jwakely@redhat.com>
3088         * include/bits/chrono.h (__is_duration_v, __is_time_point_v):
3089         Only define for C++17 and later.
3091 2023-03-14  Jonathan Wakely  <jwakely@redhat.com>
3093         * src/Makefile.am: Add comment about linker script fragments.
3094         * src/Makefile.in: Regenerate.
3096 2023-03-14  Jonathan Wakely  <jwakely@redhat.com>
3098         PR libstdc++/62196
3099         * include/bits/mask_array.h (mask_array): Add assertions to
3100         assignment operators.
3101         * include/std/valarray (valarray::operator[](valarray<bool>)):
3102         Add assertions.
3103         * testsuite/26_numerics/valarray/mask-1_neg.cc: New test.
3104         * testsuite/26_numerics/valarray/mask-2_neg.cc: New test.
3105         * testsuite/26_numerics/valarray/mask-3_neg.cc: New test.
3106         * testsuite/26_numerics/valarray/mask-4_neg.cc: New test.
3107         * testsuite/26_numerics/valarray/mask-5_neg.cc: New test.
3108         * testsuite/26_numerics/valarray/mask-6_neg.cc: New test.
3109         * testsuite/26_numerics/valarray/mask-7_neg.cc: New test.
3110         * testsuite/26_numerics/valarray/mask-8_neg.cc: New test.
3111         * testsuite/26_numerics/valarray/mask.cc: New test.
3113 2023-03-13  Jakub Jelinek  <jakub@redhat.com>
3115         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3116         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3118 2023-03-13  Jonathan Wakely  <jwakely@redhat.com>
3120         * doc/Makefile.am: Add comment referring to documentation.
3121         * doc/Makefile.in: Regenerate.
3123 2023-03-13  Jonathan Wakely  <jwakely@redhat.com>
3125         * doc/html/*: Regenerate.
3127 2023-03-13  Jonny Grant  <jg@jguk.org>
3129         * doc/xml/faq.xml: Update copyright year.
3131 2023-03-13  Jonathan Wakely  <jwakely@redhat.com>
3133         * include/bits/allocator.h: Fix typo in comment.
3135 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
3137         * config/abi/pre/gnu.ver (CXXABI_1.3.14): Also export __bf16 tinfos
3138         if it isn't mangled as DF16b but u6__bf16.
3140 2023-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
3142         * doc/xml/manual/documentation_hacking.xml: Move www.graphviz.org
3143         to https.
3144         * doc/html/manual/documentation_hacking.html: Regenerate.
3146 2023-03-10  Jonathan Wakely  <jwakely@redhat.com>
3148         PR libstdc++/109064
3149         * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker):
3150         Remove self-recursion in __init__. Add missing _supports.
3151         * testsuite/libstdc++-xmethods/shared_ptr.cc: Check use_count()
3152         and unique().
3154 2023-03-09  Patrick Palka  <ppalka@redhat.com>
3156         * include/std/ranges
3157         (cartesian_product_view::_Iterator::_Iterator): Remove
3158         constraint on default constructor as per LWG 3849.
3159         (cartesian_product_view::_Iterator::_M_prev): Adjust position
3160         of _Nm > 0 test as per LWG 3820.
3161         (cartesian_product_view::_Iterator::_M_advance): Perform bounds
3162         checking only on sized cartesian products.
3163         * testsuite/std/ranges/cartesian_product/1.cc (test08): New test.
3165 2023-03-09  Patrick Palka  <ppalka@redhat.com>
3167         PR libstdc++/109024
3168         * include/std/ranges (chunk_by_view::_M_pred): Remove DMI as per
3169         LWG 3796.
3170         (repeat_view::_M_pred): Likewise.
3171         * testsuite/std/ranges/adaptors/chunk_by/1.cc (test03): New test.
3172         * testsuite/std/ranges/repeat/1.cc (test05): New test.
3174 2023-03-09  Patrick Palka  <ppalka@redhat.com>
3176         PR libstdc++/108362
3177         * include/std/ranges (__detail::__can_single_view): New concept.
3178         (_Single::operator()): Constrain it.  Move [[nodiscard]] to the
3179         end of the function declarator.
3180         (__detail::__can_iota_view): New concept.
3181         (_Iota::operator()): Constrain it.  Move [[nodiscard]] to the
3182         end of the function declarator.
3183         (__detail::__can_istream_view): New concept.
3184         (_Istream::operator()): Constrain it.  Move [[nodiscard]] to the
3185         end of the function declarator.
3186         * testsuite/std/ranges/iota/iota_view.cc (test07): New test.
3187         * testsuite/std/ranges/istream_view.cc (test08): New test.
3188         * testsuite/std/ranges/single_view.cc (test07): New test.
3190 2023-03-09  Patrick Palka  <ppalka@redhat.com>
3192         PR libstdc++/107572
3193         * include/std/ranges (cartesian_product_view::end): When
3194         building the tuple of iterators, avoid calling ranges::begin on
3195         the first range if __empty_tail is false.
3196         * testsuite/std/ranges/cartesian_product/1.cc (test07): New test.
3198 2023-03-09  Jonathan Wakely  <jwakely@redhat.com>
3200         PR libstdc++/108882
3201         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Fix incorrect
3202         patterns.
3204 2023-03-07  Jakub Jelinek  <jakub@redhat.com>
3206         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3207         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3208         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3209         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3210         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3212 2023-03-07  Jonathan Wakely  <jwakely@redhat.com>
3214         PR libstdc++/108882
3215         * config/abi/pre/gnu.ver (GLIBCXX_3.4.31): Adjust patterns to
3216         not match symbols in namespace std::__gnu_cxx11_ieee128.
3217         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Add patterns for
3218         std::__gnu_cxx11_ieee128::money_{get,put}.
3220 2023-03-07  Jonathan Wakely  <jwakely@redhat.com>
3222         * libsupc++/eh_personality.cc: Fix spelling in comment.
3224 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
3226         * testsuite/30_threads/async/async.cc (test04): Initialize
3227         steady_start, renamed from steady_begin, next to slow_start.
3228         Increase tolerance for final wait.
3230 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
3232         * testsuite/libstdc++-prettyprinters/80276.cc: Add
3233         std::string to debug info.
3234         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
3236 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
3238         PR libstdc++/104852
3239         PR libstdc++/95989
3240         PR libstdc++/52590
3241         * include/bits/std_thread.h (thread::_M_thread_deps): New
3242         static implicitly-inline member function.
3243         (std::thread template ctor): Pass it to _M_start_thread.
3244         * src/c++11/thread.cc (thread::_M_start_thread): Name depend
3245         parameter, force it live on entry.
3247 2023-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3249         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
3250         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
3251         Likewise.
3252         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
3253         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
3254         Likewise.
3256 2023-03-01  Jonathan Wakely  <jwakely@redhat.com>
3258         * include/bits/cow_string.h: Fix typo in comment.
3260 2023-03-01  Jonathan Wakely  <jwakely@redhat.com>
3262         * src/c++20/tzdb.cc (chrono::tzdb::current_zone()) Use "UTC" if
3263         current time zone cannot be determined.
3264         * testsuite/std/time/tzdb/1.cc: Remove conditions based on
3265         HAVE_TZDB macro and test all members unconditionally.
3267 2023-02-28  Jonathan Wakely  <jwakely@redhat.com>
3269         PR libstdc++/108952
3270         * include/bits/uses_allocator_args.h
3271         (uses_allocator_construction_args): Implement LWG 3527.
3272         * testsuite/20_util/pair/astuple/get-2.cc: New test.
3273         * testsuite/20_util/scoped_allocator/108952.cc: New test.
3274         * testsuite/20_util/uses_allocator/lwg3527.cc: New test.
3276 2023-02-28  Jonathan Wakely  <jwakely@redhat.com>
3278         PR libstdc++/108846
3279         * include/bits/stl_algobase.h (__copy_move<false, false, RA>)
3280         Add __assign_one static member function.
3281         (__copy_move<true, false, RA>): Likewise.
3282         (__copy_move<IsMove, true, RA>): Do not use memmove for a single
3283         value.
3284         (__copy_move_backward<IsMove, true, RA>): Likewise.
3285         * testsuite/25_algorithms/copy/108846.cc: New test.
3286         * testsuite/25_algorithms/copy_backward/108846.cc: New test.
3287         * testsuite/25_algorithms/copy_n/108846.cc: New test.
3288         * testsuite/25_algorithms/move/108846.cc: New test.
3289         * testsuite/25_algorithms/move_backward/108846.cc: New test.
3291 2023-02-28  Jonathan Wakely  <jwakely@redhat.com>
3293         * src/c++11/codecvt.cc: Add [[likely]] and [[unlikely]]
3294         attributes.
3296 2023-02-27  Jonathan Wakely  <jwakely@redhat.com>
3298         * include/bits/basic_ios.h (basic_ios::_M_setstate): Add
3299         caveat to comment.
3300         * include/bits/basic_string.h (resize_and_overwrite): Add
3301         doxygen comment.
3303 2023-02-24  Matthias Kretz  <m.kretz@gsi.de>
3305         * include/experimental/bits/simd.h: Line breaks and indenting
3306         fixed to follow the libstdc++ standard.
3307         * include/experimental/bits/simd_builtin.h: Likewise.
3308         * include/experimental/bits/simd_fixed_size.h: Likewise.
3309         * include/experimental/bits/simd_neon.h: Likewise.
3310         * include/experimental/bits/simd_ppc.h: Likewise.
3311         * include/experimental/bits/simd_scalar.h: Likewise.
3312         * include/experimental/bits/simd_x86.h: Likewise.
3314 2023-02-24  Matthias Kretz  <m.kretz@gsi.de>
3316         PR libstdc++/108030
3317         * include/experimental/bits/simd_fixed_size.h
3318         (_SimdImplFixedSize::_S_broadcast): Replace inline with
3319         _GLIBCXX_SIMD_INTRINSIC.
3320         (_SimdImplFixedSize::_S_generate): Likewise.
3321         (_SimdImplFixedSize::_S_load): Likewise.
3322         (_SimdImplFixedSize::_S_masked_load): Likewise.
3323         (_SimdImplFixedSize::_S_store): Likewise.
3324         (_SimdImplFixedSize::_S_masked_store): Likewise.
3325         (_SimdImplFixedSize::_S_min): Likewise.
3326         (_SimdImplFixedSize::_S_max): Likewise.
3327         (_SimdImplFixedSize::_S_complement): Likewise.
3328         (_SimdImplFixedSize::_S_unary_minus): Likewise.
3329         (_SimdImplFixedSize::_S_plus): Likewise.
3330         (_SimdImplFixedSize::_S_minus): Likewise.
3331         (_SimdImplFixedSize::_S_multiplies): Likewise.
3332         (_SimdImplFixedSize::_S_divides): Likewise.
3333         (_SimdImplFixedSize::_S_modulus): Likewise.
3334         (_SimdImplFixedSize::_S_bit_and): Likewise.
3335         (_SimdImplFixedSize::_S_bit_or): Likewise.
3336         (_SimdImplFixedSize::_S_bit_xor): Likewise.
3337         (_SimdImplFixedSize::_S_bit_shift_left): Likewise.
3338         (_SimdImplFixedSize::_S_bit_shift_right): Likewise.
3339         (_SimdImplFixedSize::_S_remquo): Add inline keyword (to be
3340         explicit about not always-inline, yet).
3341         (_SimdImplFixedSize::_S_isinf): Likewise.
3342         (_SimdImplFixedSize::_S_isfinite): Likewise.
3343         (_SimdImplFixedSize::_S_isnan): Likewise.
3344         (_SimdImplFixedSize::_S_isnormal): Likewise.
3345         (_SimdImplFixedSize::_S_signbit): Likewise.
3347 2023-02-24  Matthias Kretz  <m.kretz@gsi.de>
3349         PR libstdc++/108856
3350         * include/experimental/bits/simd_builtin.h
3351         (_SimdImplBuiltin::_S_masked_unary): More efficient
3352         implementation of masked inc-/decrement for integers and floats
3353         without AVX2.
3354         * include/experimental/bits/simd_x86.h
3355         (_SimdImplX86::_S_masked_unary): New. Use AVX512 masked subtract
3356         builtins for masked inc-/decrement.
3358 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3360         * include/experimental/executor (executor): Constrain template
3361         constructors.
3363 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3365         * include/experimental/internet (basic_endpoint): Add missing
3366         constexpr to comparison operators.
3367         * testsuite/experimental/net/internet/endpoint/cons.cc: New test.
3369 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3371         * include/experimental/internet (network_v4::netmask()): Avoid
3372         undefined shift.
3373         (network_v4::broadcast()): Optimize and fix for targets with
3374         uint_least32_t wider than 32 bits.
3375         (network_v4::to_string(const Allocator&)): Fix for custom
3376         allocators and optimize using to_chars.
3377         (operator==(const network_v4&, const network_v4&)): Add missing
3378         constexpr.
3379         (operator==(const network_v6&, const network_v6&)): Likewise.
3380         * testsuite/experimental/net/internet/network/v4/cons.cc: New test.
3381         * testsuite/experimental/net/internet/network/v4/members.cc: New test.
3383 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3385         * include/experimental/internet (address_4(const bytes_type&)):
3386         Use __builtin_bit_cast if available, otherwise convert to
3387         network byte order.
3388         (address_v4::to_bytes()): Likewise, but convert from network
3389         byte order.
3390         * testsuite/experimental/net/internet/address/v4/cons.cc: Fix
3391         incorrect tests. Check for constexpr too.
3392         * testsuite/experimental/net/internet/address/v4/creation.cc:
3393         Likewise.
3394         * testsuite/experimental/net/internet/address/v4/members.cc:
3395         Check that bytes_type is a standard-layout type.
3397 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3399         * include/experimental/internet (address_v4::to_string):
3400         Optimize.
3401         * testsuite/experimental/net/internet/address/v4/members.cc:
3402         Check more addresses.
3404 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3406         * include/ext/aligned_buffer.h (__aligned_buffer): Add
3407         diagnostic pragmas.
3409 2023-02-24  Jonathan Wakely  <jwakely@redhat.com>
3411         * testsuite/std/format/arguments/lwg3810.cc: Move dg-options
3412         before dg-do.
3414 2023-02-23  Matthias Kretz  <m.kretz@gsi.de>
3416         * testsuite/experimental/simd/tests/reductions.cc: Introduce
3417         max_distance as the type-dependent max error.
3419 2023-02-23  Matthias Kretz  <m.kretz@gsi.de>
3421         * include/experimental/bits/simd_builtin.h (_S_set): Compare as
3422         int. The actual range of these indexes is very small.
3424 2023-02-23  Matthias Kretz  <m.kretz@gsi.de>
3426         * include/experimental/bits/simd_x86.h (_S_bit_shift_left)
3427         (_S_bit_shift_right): Declare constexpr. The implementation was
3428         already expecting constexpr evaluation.
3430 2023-02-23  Matthias Kretz  <m.kretz@gsi.de>
3432         PR libstdc++/108030
3433         * include/experimental/bits/simd_detail.h
3434         (_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA): Define as empty for
3435         __clang__.
3437 2023-02-23  Matthias Kretz  <m.kretz@gsi.de>
3439         PR libstdc++/108030
3440         * include/experimental/bits/simd.h (__vector_broadcast):
3441         Implement via __vector_broadcast_impl instead of
3442         __call_with_n_evaluations + 2 lambdas.
3443         (__vector_broadcast_impl): New.
3445 2023-02-22  Alexandre Oliva  <oliva@adacore.com>
3447         * src/c++11/shared_ptr.cc (__gnu_internal::get_mutex):
3448         Avoid destruction of the mutex pool.
3450 2023-02-22  Alexandre Oliva  <oliva@adacore.com>
3452         * testsuite/27_io/basic_ofstream/open/char/noreplace.cc: xfail
3453         on vxworks.
3454         * testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc:
3455         Likewise.
3457 2023-02-22  Alexandre Oliva  <oliva@adacore.com>
3459         * testsuite/17_intro/names.cc: Undef func on vxworks >= 7 in
3460         kernel mode.
3462 2023-02-20  Andreas Schwab  <schwab@linux-m68k.org>
3464         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
3466 2023-02-20  Matthias Kretz  <m.kretz@gsi.de>
3468         * include/experimental/bits/simd.h (__extract_part, split):
3469         Use reserved name for template parameter.
3471 2023-02-20  Andreas Schwab  <schwab@suse.de>
3473         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
3475 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
3477         * doc/xml/faq.xml: Switch two links to www.open-std.org to https.
3478         * doc/html/faq.html: Regenerate.
3480 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3482         * include/experimental/bits/simd_math.h (__hypot): Bitcasting
3483         between scalars requires the __bit_cast helper function instead
3484         of simd_bit_cast.
3486 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3488         * include/experimental/bits/simd_x86.h
3489         (_SimdImplX86::_S_not_equal_to, _SimdImplX86::_S_less)
3490         (_SimdImplX86::_S_less_equal): Do not call
3491         __builtin_is_constant_evaluated in constexpr-if.
3493 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3495         * testsuite/experimental/simd/tests/bits/verify.h
3496         (verify::verify): Use %zx for size_t in format string.
3498 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3500         * testsuite/experimental/simd/generate_makefile.sh: Generate and
3501         pre-compile pch.h, which includes all headers that do not depend
3502         on command-line macros.
3503         * testsuite/experimental/simd/tests/bits/main.h: New file.
3504         (iterate_abis, main): Moved from verify.h.
3505         * testsuite/experimental/simd/tests/bits/verify.h
3506         (iterate_abis, main): Moved to main.h.
3507         * testsuite/experimental/simd/tests/bits/conversions.h: Add
3508         include guard.
3509         (genHalfBits): Simplify.
3510         * testsuite/experimental/simd/tests/bits/make_vec.h: Add include
3511         guard.
3512         (make_alternating_mask): Moved from mask_loadstore.
3513         * testsuite/experimental/simd/tests/bits/mathreference.h: Add
3514         include guard.
3515         * testsuite/experimental/simd/tests/bits/test_values.h: Ditto.
3516         * testsuite/experimental/simd/tests/mask_loadstore.cc
3517         (make_mask, make_alternating_mask): Removed.
3518         * testsuite/experimental/simd/tests/mask_reductions.cc: Ditto.
3519         * testsuite/experimental/simd/tests/operators.cc (genHalfBits):
3520         Removed.
3521         * testsuite/experimental/simd/tests/abs.cc: Only include
3522         bits/main.h.
3523         Ditto.
3524         * testsuite/experimental/simd/tests/algorithms.cc: Ditto.
3525         * testsuite/experimental/simd/tests/broadcast.cc: Ditto.
3526         * testsuite/experimental/simd/tests/casts.cc: Ditto.
3527         * testsuite/experimental/simd/tests/fpclassify.cc: Ditto.
3528         * testsuite/experimental/simd/tests/frexp.cc: Ditto.
3529         * testsuite/experimental/simd/tests/generator.cc: Ditto.
3530         * testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto.
3531         * testsuite/experimental/simd/tests/integer_operators.cc: Ditto.
3532         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
3533         * testsuite/experimental/simd/tests/loadstore.cc: Ditto.
3534         * testsuite/experimental/simd/tests/logarithm.cc: Ditto.
3535         * testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto.
3536         * testsuite/experimental/simd/tests/mask_conversions.cc: Ditto.
3537         * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto.
3538         * testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto.
3539         * testsuite/experimental/simd/tests/mask_operators.cc: Ditto.
3540         * testsuite/experimental/simd/tests/math_1arg.cc: Ditto.
3541         * testsuite/experimental/simd/tests/math_2arg.cc: Ditto.
3542         * testsuite/experimental/simd/tests/operator_cvt.cc: Ditto.
3543         * testsuite/experimental/simd/tests/reductions.cc: Ditto.
3544         * testsuite/experimental/simd/tests/remqo.cc: Ditto.
3545         * testsuite/experimental/simd/tests/simd.cc: Ditto.
3546         * testsuite/experimental/simd/tests/sincos.cc: Ditto.
3547         * testsuite/experimental/simd/tests/split_concat.cc: Ditto.
3548         * testsuite/experimental/simd/tests/splits.cc: Ditto.
3549         * testsuite/experimental/simd/tests/trigonometric.cc: Ditto.
3550         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto.
3551         * testsuite/experimental/simd/tests/where.cc: Ditto.
3553 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3555         * testsuite/experimental/simd/README.md: Document the timeout
3556         and timeout-factor directives. Minor typo fixed.
3558 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3560         PR libstdc++/108030
3561         * include/experimental/bits/simd_detail.h: Define
3562         _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
3563         * include/experimental/bits/simd.h: Annotate lambdas with
3564         _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA.
3565         * include/experimental/bits/simd_builtin.h: Ditto.
3566         * include/experimental/bits/simd_converter.h: Ditto.
3567         * include/experimental/bits/simd_fixed_size.h: Ditto.
3568         * include/experimental/bits/simd_math.h: Ditto.
3569         * include/experimental/bits/simd_neon.h: Ditto.
3570         * include/experimental/bits/simd_x86.h: Ditto.
3572 2023-02-16  Matthias Kretz  <m.kretz@gsi.de>
3574         * include/experimental/bits/simd.h
3575         (_SimdWrapper::_M_is_constprop_none_of)
3576         (_SimdWrapper::_M_is_constprop_all_of): Return false unless the
3577         computed result still satisfies __builtin_constant_p.
3579 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3581         * testsuite/std/format/arguments/lwg3810.cc: Replace UTF-8
3582         ellipsis character.
3584 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3586         * include/Makefile.am: Add new header.
3587         * include/Makefile.in: Regenerate.
3588         * include/experimental/synchronized_value: New file.
3589         * testsuite/experimental/synchronized_value.cc: New test.
3591 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3593         * include/experimental/optional: Fix header name in comment.
3595 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3597         * include/std/format (__format::_Arg_store): New class template.
3598         (basic_format_args): Remove nested type _Store and add deduction
3599         guide from _Arg_store.
3600         (basic_format_arg, make_format_args): Adjust.
3601         * testsuite/std/format/arguments/lwg3810.cc: New test.
3603 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3605         * include/bits/stl_pair.h (pair) [C++20]: Add non-dangling
3606         constraints to constructors and add deleted overloads for the
3607         dangling cases, as per P2255R2.
3608         (pair) [!C++20 && _GLIBCXX_DEBUG]: Add static assertions to
3609         make dangling cases ill-formed.
3610         * testsuite/20_util/pair/dangling_ref.cc: New test.
3612 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3614         * testsuite/17_intro/names_pstl.cc: Require et tbb_backend.
3616 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3618         * include/ext/throw_allocator.h: Use reserved names for
3619         parameters.
3621 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3623         * testsuite/17_intro/names_pstl.cc: Add space after effective
3624         target name.
3626 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3628         * include/pstl/algorithm_fwd.h (__pattern_search_n)
3629         (__brick_unique_copy, __brick_adjacent_find)
3630         (__brick_generate_n, __pattern_generate_n): Use reserved names
3631         for parameters.
3632         * include/pstl/algorithm_impl.h (__brick_unique_copy)
3633         (__pattern_reverse, __brick_generate_n): Likewise.
3634         * include/pstl/execution_impl.h (__prefer_unsequenced_tag)
3635         (__prefer_parallel_tag): Likewise.
3636         * include/pstl/glue_algorithm_impl.h (transform): Likewise.
3637         * include/pstl/glue_numeric_defs.h (adjacent_difference):
3638         Likewise.
3639         * include/pstl/numeric_impl.h (__brick_adjacent_difference):
3640         Likewise.
3641         * include/pstl/parallel_backend_tbb.h (__merge_func): Likewise.
3642         * include/pstl/unseq_backend_simd.h (_Combiner)
3643         (__simd_min_element, __simd_minmax_element): Likewise.
3644         * testsuite/17_intro/names_pstl.cc: New test.
3646 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
3648         * include/bits/fs_ops.h (create_directory): Use reserved name
3649         for parameter.
3650         * include/bits/ranges_algo.h (__contains_subrange_fn):
3651         Likewise.
3652         * include/bits/regex_automaton.h (_State_base::_M_print):
3653         Likewise.
3654         * include/bits/regex_automaton.tcc(_State_base::_M_print):
3655         Likewise.
3656         * include/bits/regex_scanner.tcc(_Scanner::_M_print): Likewise.
3657         * include/experimental/bits/fs_ops.h (create_directory):
3658         Likewise.
3659         * include/std/mutex (timed_mutex::_M_clocklock): Likewise.
3660         (recursive_timed_mutex:_M_clocklock): Likewise.
3661         * include/std/tuple (basic_common_reference): Likewise.
3662         * libsupc++/cxxabi_init_exception.h
3663         (__cxa_init_primary_exception): Likewise.
3664         * testsuite/17_intro/names.cc: Add checks.
3666 2023-02-14  Gerald Pfeifer  <gerald@pfeifer.com>
3668         * doc/xml/manual/status_cxx2017.xml: Update an open-std.org link
3669         to www.open-std.org and https.
3670         * doc/html/manual/status.html: Regenerate.
3672 2023-02-14  Thomas W Rodgers  <rodgert@twrodgers.com>
3674         PR libstdc++/103934
3675         * include/std/atomic (atomic_flag_wait): Add.
3676         (atomic_flag_wait_explicit): Add.
3677         (atomic_flag_notify): Add.
3678         (atomic_flag_notify_explicit): Add.
3679         * testsuite/29_atomics/atomic_flag/wait_notify/1.cc:
3680         Add test case to cover missing atomic_flag free functions.
3682 2023-02-14  Thomas W Rodgers  <rodgert@twrodgers.com>
3684         PR libstdc++/103934
3685         * include/std/atomic (atomic_flag_test): Add.
3686         (atomic_flag_test_explicit): Add.
3687         * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add
3688         test case to cover missing atomic_flag free functions.
3689         * testsuite/29_atomics/atomic_flag/test/implicit.cc:
3690         Likewise.
3692 2023-02-13  Gerald Pfeifer  <gerald@pfeifer.com>
3694         * doc/xml/manual/policy_data_structures_biblio.xml: Adjust
3695         "The Component Object Model" reference.
3696         * doc/html/manual/policy_data_structures.html: Regenerate.
3698 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
3700         * doc/xml/manual/containers.xml: Tweak a link to N1780
3701         (C++ standard).
3702         * doc/html/manual/associative.html: Regenerate.
3704 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
3706         * doc/xml/manual/ctype.xml: Change www.unix.org to unix.org.
3707         * doc/html/manual/facets.html: Regenerate.
3709 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
3711         * doc/xml/manual/policy_data_structures_biblio.xml: Update
3712         link to "Worst-case efficient priority queues".
3713         * doc/html/manual/policy_data_structures.html: Regenerate.
3715 2023-02-06  Arsen Arsenović  <arsen@aarsen.me>
3717         * doc/xml/manual/using.xml: Document newly-freestanding
3718         headers and the effect of the -ffreestanding flag.
3719         * doc/xml/manual/status_cxx2023.xml: Document P1642R11 as
3720         completed.
3721         * doc/xml/manual/configure.xml: Document that hosted installs
3722         respect __STDC_HOSTED__.
3723         * doc/xml/manual/test.xml: Document how to run tests in
3724         freestanding mode.
3725         * doc/html/*: Regenerate.
3727 2023-02-06  Jonathan Wakely  <jwakely@redhat.com>
3729         * include/bits/ranges_algo.h (__find_last_fn): Rename T to _Tp.
3730         (__find_last_if_fn): Likewise.
3732 2023-02-06  Jonathan Wakely  <jwakely@redhat.com>
3734         * include/std/type_traits: Add diagnostic pragmas around
3735         references to deprecated std::aligned_storage and
3736         std::aligned_union traits.
3737         * testsuite/20_util/aligned_storage/requirements/alias_decl.cc:
3738         Add dg-warning for et c++23.
3739         * testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc:
3740         Likewise.
3741         * testsuite/20_util/aligned_storage/value.cc: Likewise.
3742         * testsuite/20_util/aligned_union/1.cc: Likewise.
3743         * testsuite/20_util/aligned_union/requirements/alias_decl.cc:
3744         Likewise.
3746 2023-02-06  Nathaniel Shead  <nathanieloshead@gmail.com>
3748         * doc/doxygen/user.cfg.in (PREDEFINED): Add new macros.
3749         * include/bits/c++config (_GLIBCXX23_DEPRECATED)
3750         (_GLIBCXX23_DEPRECATED_SUGGEST): New macros.
3751         * include/std/type_traits (aligned_storage, aligned_union)
3752         (aligned_storage_t, aligned_union_t): Deprecate for C++23.
3753         * testsuite/20_util/aligned_storage/deprecated-2b.cc: New test.
3754         * testsuite/20_util/aligned_union/deprecated-2b.cc: New test.
3756 2023-02-06  Nathaniel Shead  <nathanieloshead@gmail.com>
3758         * doc/doxygen/user.cfg.in (PREDEFINED): Update macros.
3759         * include/bits/c++config (_GLIBCXX20_DEPRECATED): Make
3760         consistent with other 'deprecated' macros.
3761         * include/std/type_traits (is_pod, is_pod_v): Use
3762         _GLIBCXX20_DEPRECATED_SUGGEST instead.
3764 2023-02-06  Arsen Arsenović  <arsen@aarsen.me>
3766         * Makefile.am [!_GLIBCXX_HOSTED]: Enable src/ subdirectory.
3767         * Makefile.in: Regenerate.
3768         * src/Makefile.am [!_GLIBCXX_HOSTED]: Omit compatibility files.
3769         There's no history to be compatible with.
3770         * src/c++11/Makefile.am [!_GLIBCXX_HOSTED]: Omit hosted-only
3771         source files from the build.
3772         * src/c++17/Makefile.am [!_GLIBCXX_HOSTED]: Likewise.
3773         * src/c++20/Makefile.am [!_GLIBCXX_HOSTED]: Likewise.
3774         * src/c++98/Makefile.am [!_GLIBCXX_HOSTED]: Likewise.
3775         * src/Makefile.in: Regenerate.
3776         * src/c++11/Makefile.in: Regenerate.
3777         * src/c++17/Makefile.in: Regenerate.
3778         * src/c++20/Makefile.in: Regenerate.
3779         * src/c++98/Makefile.in: Regenerate.
3781 2023-02-06  Jonathan Wakely  <jwakely@redhat.com>
3783         * src/Makefile.am [GLIBCXX_HOSTED] (SUBDIRS): Do not add
3784         filesystem, libbacktrace and experimental.
3785         * src/Makefile.in: Regenerate.
3787 2023-02-04  Hans-Peter Nilsson  <hp@axis.com>
3789         PR libstdc++/108672
3790         * include/pstl/unseq_backend_simd.h (__simd_or): Use __INT32_TYPE__
3791         instead of int32_t.
3793 2023-02-04  Gerald Pfeifer  <gerald@pfeifer.com>
3795         * doc/xml/manual/documentation_hacking.xml: Adjust link to pdftex.
3796         * doc/html/manual/documentation_hacking.html: Regenerate.
3798 2023-02-04  François Dumont  <fdumont@gcc.gnu.org>
3800         * include/bits/basic_string.h (operator=(basic_string&&)): Transfer move-to
3801         storage to the move-from instance when allocators are equal.
3802         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc (test04):
3803         New test case.
3805 2023-02-03  Samuel Thibault  <samuel.thibault@gnu.org>
3807         * config/os/gnu-linux/os_defines.h [!__linux__]
3808         (_GLIBCXX_NATIVE_THREAD_ID, _GLIBCXX_GTHREAD_USE_WEAK): Do not define.
3810 2023-02-03  Patrick Palka  <ppalka@redhat.com>
3812         * include/bits/ranges_algo.h (__find_last_fn, find_last):
3813         Define.
3814         (__find_last_if_fn, find_last_if): Define.
3815         (__find_last_if_not_fn, find_last_if_not): Define.
3816         * testsuite/25_algorithms/find_last/1.cc: New test.
3817         * testsuite/25_algorithms/find_last_if/1.cc: New test.
3818         * testsuite/25_algorithms/find_last_if_not/1.cc: New test.
3820 2023-02-03  Patrick Palka  <ppalka@redhat.com>
3822         * include/bits/ranges_algo.h (out_value_result): Define.
3823         (iota_result): Define.
3824         (__iota_fn, iota): Define.
3825         * testsuite/25_algorithms/iota/1.cc: New test.
3827 2023-02-03  Patrick Palka  <ppalka@redhat.com>
3829         * include/bits/ranges_algo.h (__contains_fn, contains): Define.
3830         (__contains_subrange_fn, contains_subrange): Define.
3831         * testsuite/25_algorithms/contains/1.cc: New test.
3832         * testsuite/25_algorithms/contains_subrange/1.cc: New test.
3834 2023-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
3836         * doc/xml/manual/abi.xml: Tweak link to ABIcheck project.
3837         * doc/html/manual/abi.html: Regenerate.
3839 2023-02-02  Jonathan Wakely  <jwakely@redhat.com>
3841         * src/filesystem/ops-common.h [AVR] (__unsupported): Always use
3842         errc::function_not_supported instead of errc::not_supported.
3844 2023-02-02  Jonathan Wakely  <jwakely@redhat.com>
3846         * include/std/sstream  (basic_stringbuf::view): Define for old
3847         std::string ABI.
3848         (basic_istringstream::view, basic_0stringstream::view)
3849         (basic_stringstream::view): Likewise.
3850         * testsuite/27_io/basic_istringstream/view/char/1.cc: Remove
3851         { dg-require-effective-target cxx11_abi }.
3852         * testsuite/27_io/basic_istringstream/view/wchar_t/1.cc:
3853         Likewise.
3854         * testsuite/27_io/basic_ostringstream/view/char/1.cc: Likewise.
3855         * testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc:
3856         Likewise.
3857         * testsuite/27_io/basic_stringbuf/view/char/1.cc: Likewise.
3858         * testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc: Likewise.
3859         * testsuite/27_io/basic_stringstream/view/char/1.cc: Likewise.
3860         * testsuite/27_io/basic_stringstream/view/wchar_t/1.cc:
3861         Likewise.
3863 2023-02-02  Jonathan Wakely  <jwakely@redhat.com>
3865         PR libstdc++/108636
3866         * config/abi/pre/gnu.ver (GLIBCXX_3.4.31): Export shared_ptr
3867         conversion operators for directory iterator comparisons with
3868         std::default_sentinel_t.
3869         * include/bits/fs_path.h (path::path(string_view, _Type))
3870         (path::_Cmpt::_Cmpt(string_view, _Type, size_t)): Move inline
3871         definitions to ...
3872         * src/c++17/fs_path.cc: ... here.
3873         * testsuite/27_io/filesystem/path/108636.cc: New test.
3875 2023-02-02  Jonathan Wakely  <jwakely@redhat.com>
3877         * include/std/variant (variant::operator=): Implement resolution
3878         of LWG 3585.
3879         * testsuite/20_util/variant/lwg3585.cc: New test.
3881 2023-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
3883         * doc/xml/manual/using_exceptions.xml: Update a www.open-std.org
3884         link to https.
3885         * doc/html/manual/using_exceptions.html: Regenerate.
3887 2023-02-02  Gerald Pfeifer  <gerald@pfeifer.com>
3889         * doc/xml/manual/debug.xml: Fix link to online GDB manual.
3890         * doc/html/manual/debug.html: Regenerate.
3892 2023-02-01  Jonathan Wakely  <jwakely@redhat.com>
3894         * src/c++11/random.cc (random_device::_M_fini): Do not try to
3895         close the file handle if the target doesn't support the
3896         /dev/random and /dev/urandom files.
3898 2023-02-01  Jonathan Wakely  <jwakely@redhat.com>
3900         * config/os/generic/error_constants.h (errc::value_too_large)
3901         [__AVR__]: Define.
3902         * src/c++11/system_error.cc
3903         (system_category::default_error_condition) [__AVR__]: Only match
3904         recognize values equal to EDOM, ERANGE, ENOSYS and EINTR.
3905         * src/c++17/fs_ops.cc (fs::current_path) [__AVR__]: Do not check
3906         for ENOENT etc. in switch.
3907         (fs::remove_all) [__AVR__]: Likewise.
3908         * src/filesystem/ops-common.h [__AVR__]: Do not use POSIX open,
3909         close etc.
3911 2023-02-01  Jonathan Wakely  <jwakely@redhat.com>
3913         * acinclude.m4 (GLIBCXX_ZONEINFO_DIR) [avr-*-*, msp430-*-*]: Set
3914         embed_zoneinfo=no
3915         * configure: Regenerate.
3917 2023-02-01  Hans-Peter Nilsson  <hp@axis.com>
3919         PR testsuite/108632
3920         * testsuite/std/time/hh_mm_ss/1.cc (size): Add empty
3921         struct at end of S0.
3923 2023-01-30  Gerald Pfeifer  <gerald@pfeifer.com>
3925         * doc/xml/manual/shared_ptr.xml: Move links from both
3926         http://open-std.org and http://www.open-std.org to
3927         https://www.open-std.org.
3928         * doc/html/manual/memory.html: Regenerate.
3930 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
3932         * doc/xml/manual/appendix_contributing.xml: Adjust link to
3933         ISO C++ standard at ANSI.
3934         Move link to www.open-std.org to https.
3935         * doc/html/manual/appendix_contributing.html: Regenerate.
3937 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
3939         * doc/xml/manual/documentation_hacking.xml: Move sourceforge.net
3940         links to https.
3941         * doc/html/manual/documentation_hacking.html: Regenerate.
3943 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
3945         * doc/xml/manual/abi.xml: Update www.open-std.org link to https.
3946         * doc/html/manual/abi.html: Regenerate.
3948 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
3950         PR libstdc++/108568
3951         * testsuite/17_intro/names.cc (__unused): For linux or GNU hurd
3952         include features.h if present and then check __GLIBC__ and
3953         __GLIBC_MINOR__ macros for glibc prior to 2.19, instead of testing
3954         __GLIBC_PREREQ which isn't defined yet.
3956 2023-01-27  Jonathan Wakely  <jwakely@redhat.com>
3958         * src/c++20/tzdb.cc (tzdata_stream): Use constant instead of
3959         string literal.
3961 2023-01-27  Jonathan Wakely  <jwakely@redhat.com>
3963         PR libstdc++/108554
3964         * testsuite/23_containers/map/modifiers/108554.cc: Use dg-bogus.
3966 2023-01-26  Jonathan Wakely  <jwakely@redhat.com>
3968         * src/c++20/tzdb.cc (operator>>(istream&, ZoneInfo&)): Allow
3969         rules named "+" for compatibility with older tzdata.zi files.
3971 2023-01-26  Jonathan Wakely  <jwakely@redhat.com>
3973         PR libstdc++/108554
3974         * include/bits/stl_tree.h (_Rb_tree_insert_and_rebalance): Add
3975         nonnull attribute.
3976         (_Rb_tree_rebalance_for_erase): Add nonnull and returns_nonnull
3977         attributes.
3978         * testsuite/23_containers/map/modifiers/108554.cc: New test.
3980 2023-01-26  Jonathan Wakely  <jwakely@redhat.com>
3982         PR libstdc++/108530
3983         * src/c++20/tzdb.cc (current_zone): Look for TIMEZONE or ZONE in
3984         /etc/sysconfig/clock, not DEFAULT_TIMEZONE.
3986 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
3988         * doc/xml/manual/intro.xml: Update links to www.open-std.org to
3989         use https.
3990         * doc/html/manual/bugs.html: Regenerate.
3992 2023-01-24  Jonathan Wakely  <jwakely@redhat.com>
3994         PR libstdc++/108530
3995         * src/c++20/tzdb.cc (current_zone): Look for DEFAULT_TIMEZONE in
3996         /etc/sysconfig/clock.
3998 2023-01-24  Jonathan Wakely  <jwakely@redhat.com>
4000         PR libstdc++/102301
4001         * include/bits/ranges_base.h: Include <bits/stl_iterator.h> for
4002         std::make_reverse_iterator.
4003         * include/std/tuple: Include <bits/ranges_util.h> for subrange.
4004         (make_from_tuple): Add static assertion from P2255 to diagnose
4005         dangling references.
4006         * testsuite/20_util/tuple/make_from_tuple/dangling_ref.cc: New test.
4007         * testsuite/20_util/tuple/make_from_tuple/tuple_like.cc: New test.
4009 2023-01-23  François Dumont  <fdumont@gcc.gnu.org>
4011         * include/debug/safe_iterator.h (_Safe_iterator<>::_Unchecked): New.
4012         (_Safe_iterator(const _Safe_iterator&, _Unchecked)): New.
4013         (_Safe_iterator::operator++(int)): Use latter.
4014         (_Safe_iterator::operator--(int)): Likewise.
4015         (_Safe_iterator(_Iterator, const _Safe_sequence_base*)): Remove !_M_insular()
4016         check.
4017         * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_Unchecked):
4018         New.
4019         (_Safe_local_iterator(const _Safe_local_iterator&, _Unchecked)): New.
4020         (_Safe_local_iterator::operator++(int)): Use latter.
4021         * src/c++11/debug.cc (_S_debug_messages): Add as comment the _Debug_msg_id
4022         entry associated to the array entry.
4024 2023-01-18  Jonathan Wakely  <jwakely@redhat.com>
4026         * include/bits/fs_path.h (u8path): Add deprecated attribute.
4027         * testsuite/27_io/filesystem/path/construct/90281.cc: Add
4028         -Wno-deprecated-declarations for C++20 and later.
4029         * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc:
4030         Likewise.
4031         * testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise.
4032         * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
4033         * testsuite/27_io/filesystem/path/factory/u8path-depr.cc: New test.
4035 2023-01-18  Jonathan Wakely  <jwakely@redhat.com>
4037         * include/bits/random.h (random_device) [!_GLIBCXX_USE_DEV_RANDOM]:
4038         Always call _M_fini and _M_getentropy.
4040 2023-01-18  Gerald Pfeifer  <gerald@pfeifer.com>
4042         * doc/xml/manual/policy_data_structures_biblio.xml: Adjust links
4043         to www.open-std.org to use https.
4044         (COM: Component Model Object Technologies): Rename from...
4045         (The Component Object Model): ...to.
4046         * doc/html/manual/policy_data_structures.html: Regenerate.
4048 2023-01-18  Dimitrij Mijoski  <dmjpp@hotmail.com>
4050         * testsuite/22_locale/codecvt/codecvt_unicode.cc: Simplify.
4051         * testsuite/22_locale/codecvt/codecvt_unicode.h: Simplify.
4052         * testsuite/22_locale/codecvt/codecvt_unicode_wchar_t.cc: Simplify.
4054 2023-01-17  Jonathan Wakely  <jwakely@redhat.com>
4056         * acinclude.m4 (GLIBCXX_ZONEINFO_DIR): Check $target_os instead
4057         of $host. Fix check for file being present during native build.
4058         * configure: Regenerate.
4060 2023-01-17  Martin Liska  <mliska@suse.cz>
4062         * src/libbacktrace/Makefile.in: Regenerate.
4064 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
4066         * src/c++20/tzdb.cc (_GLIBCXX_USE_CXX11_ABI): Define to 1.
4068 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
4070         PR libstdc++/108413
4071         * include/c_compatibility/stdatomic.h: Change copyright line to
4072         be consistent with other headers contributed under DCO terms.
4073         * include/std/expected: Add full stop to copyright line.
4074         * src/c++20/tzdb.cc: Likewise.
4076 2023-01-15  Gerald Pfeifer  <gerald@pfeifer.com>
4078         * doc/xml/manual/status_cxx2014.xml: Switch www.open-std.org to
4079         https.
4080         * doc/xml/manual/status_cxx2017.xml: Ditto.
4081         * doc/xml/manual/status_cxx2020.xml: Ditto.
4082         * doc/xml/manual/status_cxx2023.xml: Ditto.
4083         * doc/html/manual/status.html: Regenerate.
4085 2023-01-15  Jonathan Wakely  <jwakely@redhat.com>
4087         * testsuite/std/time/tzdb_list/1.cc: Remove dg-xfail-run-if
4088         and fail gracefully if defining the weak symbol doesn't work.
4090 2023-01-15  François Dumont  <fdumont@gcc.gnu.org>
4092         PR libstdc++/108288
4093         * include/debug/safe_iterator.h (_Safe_iterator<>::operator++(int)): Extend deadlock
4094         fix to other iterator category.
4095         (_Safe_iterator<>::operator--(int)): Likewise.
4096         * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::operator++(int)):
4097         Fix deadlock.
4098         * testsuite/util/debug/unordered_checks.h (invalid_local_iterator_pre_increment): New.
4099         (invalid_local_iterator_post_increment): New.
4100         * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_post_increment_neg.cc:
4101         New test.
4102         * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_pre_increment_neg.cc:
4103         New test.
4105 2023-01-15  Jonathan Wakely  <jwakely@redhat.com>
4107         * testsuite/30_threads/jthread/jthread.cc: Remove -pthread from
4108         dg-options.
4110 2023-01-15  Jonathan Wakely  <jwakely@redhat.com>
4112         * testsuite/std/time/clock/utc/io.cc: Use ctype to widen char.
4114 2023-01-14  Björn Schäpers  <bjoern@hazardy.de>
4116         * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Add check for
4117         windows.h. Add pecoff as FORMAT_FILE.
4118         * config.h.in: Regenerate.
4119         * configure: Regenerate.
4120         * src/libbacktrace/Makefile.am: Regenerate.
4121         * src/libbacktrace/Makefile.in: Add pecoff.c as FORMAT_FILE.
4123 2023-01-14  Björn Schäpers  <bjoern@hazardy.de>
4125         * include/std/stacktrace (stacktrace_entry::_S_demangle): Use
4126         raw __name if __cxa_demangle could not demangle it.
4128 2023-01-14  Jonathan Wakely  <jwakely@redhat.com>
4130         PR libstdc++/108409
4131         * src/c++20/tzdb.cc (current_zone()) [_AIX]: Use TZ environment
4132         variable.
4134 2023-01-14  Jonathan Wakely  <jwakely@redhat.com>
4136         * src/c++20/tzdb.cc (TZDB_DISABLED): Disable all code for
4137         loading tzdb.
4138         * testsuite/std/time/tzdb/leap_seconds.cc: Require tzdb
4139         effective target.
4140         * testsuite/std/time/tzdb_list/1.cc: Likewise.
4142 2023-01-14  Jonathan Wakely  <jwakely@redhat.com>
4144         * acinclude.m4 (GLIBCXX_ZONEINFO_DIR): Replace the
4145         --with-libstdcxx-zoneinfo-dir configure option with
4146         --with-libstdcxx-zoneinfo with yes/no/static choices as well as
4147         a directory.
4148         * config.h.in: Regenerate.
4149         * configure: Regenerate.
4150         * doc/xml/manual/configure.xml: Document configure option.
4151         * doc/html/manual/configure.html: Regenerate.
4152         * src/c++20/Makefile.am: Generate tzdata.zi.h header.
4153         * src/c++20/Makefile.in: Regenerate.
4154         * src/c++20/tzdb.cc (__gnu_cxx::zoneinfo_dir_override): Return a
4155         null pointer if no directory is configured.
4156         (zoneinfo_dir): Replace with ...
4157         (zoneinfo_file): New function.
4158         (tzdata_stream): New istream class.
4159         (remote_version, reload_tzdb): Use tzdata_stream.
4160         * testsuite/lib/libstdc++.exp (check_effective_target_tzdb):
4161         Check new _GLIBCXX_STATIC_TZDATA macro and ignore presence of
4162         tzdata.zi file in default location.
4163         * src/c++20/tzdata.zi: New file.
4165 2023-01-14  Jonathan Wakely  <jwakely@redhat.com>
4167         * include/bits/chrono_io.h (operator<<): Fix syntax errors.
4168         * testsuite/std/time/month_day/io.cc: New test.
4169         * testsuite/std/time/month_day_last/io.cc: New test.
4170         * testsuite/std/time/month_weekday/io.cc: New test.
4171         * testsuite/std/time/month_weekday_last/io.cc: New test.
4172         * testsuite/std/time/weekday_indexed/io.cc: New test.
4173         * testsuite/std/time/weekday_last/io.cc: New test.
4174         * testsuite/std/time/year_month/io.cc: New test.
4175         * testsuite/std/time/year_month_day_last/io.cc: New test.
4176         * testsuite/std/time/year_month_weekday/io.cc: New test.
4177         * testsuite/std/time/year_month_weekday_last/io.cc: New test.
4179 2023-01-14  François Dumont  <fdumont@gcc.gnu.org>
4181         * include/std/format [_GLIBCXX_INLINE_VERSION](to_chars): Adapt __asm symbol
4182         specifications.
4183         * config/abi/pre/gnu-versioned-namespace.ver: Add to_chars/from_chars symbols
4184         export.
4186 2023-01-13  Jonathan Wakely  <jwakely@redhat.com>
4188         * include/bits/std_mutex.h: Include <errno.h>.
4190 2023-01-13  Arsen Arsenović  <arsen@aarsen.me>
4192         * testsuite/20_util/to_chars/version.cc: Mark hosted-only.
4193         * testsuite/20_util/uses_allocator/lwg3677.cc: Ditto.
4194         * testsuite/20_util/weak_ptr/cons/self_move.cc: Ditto.
4195         * testsuite/std/ranges/adaptors/as_rvalue/1.cc: Replace usage of
4196         std::make_unique with a freestanding-compatible wrapper around
4197         unique_ptr.
4198         * testsuite/21_strings/basic_string_view/operations/contains/char.cc:
4199         Don't test for presence of __cpp_lib_string_contains on !HOSTED.
4200         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
4201         Ditto.
4202         * testsuite/std/ranges/version_c++23.cc: Don't test for presence
4203         of __cpp_lib_ranges in !HOSTED.
4205 2023-01-13  Arsen Arsenović  <arsen@aarsen.me>
4207         * include/Makefile.am: Install bits/char_traits.h,
4208         std/string_view
4209         * include/Makefile.in: Regenerate.
4210         * include/bits/char_traits.h: Gate hosted-only, wchar-only and
4211         mbstate-only bits behind appropriate #ifs.
4212         * include/std/string_view: Gate <iostream> functionality behind
4213         HOSTED.
4214         * include/std/version: Enable __cpp_lib_constexpr_string_view
4215         and __cpp_lib_starts_ends_with in !HOSTED.
4216         * include/std/ranges: Re-enable __is_basic_string_view on
4217         freestanding, include <string_view> directly.
4218         * include/precompiled/stdc++.h: Include <string_view> when
4219         !HOSTED too.
4220         * testsuite/20_util/function_objects/searchers.cc: Skip testing
4221         boyer_moore searchers on freestanding
4222         * testsuite/21_strings/basic_string_view/capacity/1.cc: Guard
4223         <string>-related tests behind __STDC_HOSTED__.
4224         * testsuite/21_strings/basic_string_view/cons/char/1.cc: Ditto.
4225         * testsuite/21_strings/basic_string_view/cons/char/2.cc: Remove
4226         unused <stdexcept> include.
4227         * testsuite/21_strings/basic_string_view/cons/char/3.cc: Remove
4228         unused <vector> include.
4229         * testsuite/21_strings/basic_string_view/cons/char/range.cc:
4230         Guard <string> related testing behind __STDC_HOSTED__.
4231         * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
4232         Guard <stdexcept> related tests behind __STDC_HOSTED__.
4233         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
4234         Ditto.
4235         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
4236         Guard <stdexcept> tests behind __STDC_HOSTED__.
4237         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
4238         Enable test on freestanding, guard <stdexcept> bits behind
4239         __STDC_HOSTED__.
4240         * testsuite/21_strings/basic_string_view/operations/substr/char.cc:
4241         Guard <stdexcept> bits behind __STDC_HOSTED__.
4242         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc:
4243         Ditto.
4245 2023-01-13  Dimitrij Mijoski  <dmjpp@hotmail.com>
4247         PR libstdc++/86419
4248         * src/c++11/codecvt.cc (read_utf8_code_point): Correctly detect
4249         errors in incomplete multibyte sequences.
4250         (utf16_in): Remove surrogates parameter. Fix conditions for
4251         returning partial.
4252         (utf16_out): Fix condition for returning partial.
4253         (ucs2_in): Do not pass surrogates argument to utf16_in.
4254         * testsuite/22_locale/codecvt/codecvt_unicode.cc: New test.
4255         * testsuite/22_locale/codecvt/codecvt_unicode.h: New header for
4256         tests.
4257         * testsuite/22_locale/codecvt/codecvt_unicode_wchar_t.cc: New
4258         test.
4260 2023-01-13  Jonathan Wakely  <jwakely@redhat.com>
4262         PR libstdc++/108331
4263         * config/io/c_io_stdio.h (__c_lock): Define as a typedef for
4264         __GTHREAD_LEGACY_MUTEX_T if defined.
4266 2023-01-13  Jonathan Wakely  <jwakely@redhat.com>
4268         PR libstdc++/108327
4269         * config/os/gnu-linux/ldbl-extra.ver (GLIBCXX_LDBL_3.4.31):
4270         Export __try_use_facet specializations for facets in namespace
4271         __gnu_cxx_ldbl128.
4272         * config/os/gnu-linux/ldbl-ieee128-extra.ver
4273         (GLIBCXX_IEEE128_3.4.31): Likewise for facets in namespace
4274         __gnu_cxx_ieee128.
4275         * testsuite/util/testsuite_abi.cc: Add to lists of known and
4276         latest versions.
4278 2023-01-13  Jonathan Wakely  <jwakely@redhat.com>
4280         * include/bits/std_mutex.h: Remove <system_error> include.
4281         * include/std/condition_variable: Add <bits/error_constants.h>
4282         include.
4283         * include/std/mutex: Likewise.
4284         * include/std/shared_mutex: Likewise.
4286 2023-01-12  Jonathan Wakely  <jwakely@redhat.com>
4288         PR libstdc++/77691
4289         * include/experimental/memory_resource
4290         (_GLIBCXX_MAX_ALIGN_MATCHES_MALLOC): Define.
4291         (do_allocate, do_deallocate): Check it.
4292         * testsuite/experimental/memory_resource/new_delete_resource.cc:
4293         Relax expected behaviour for 64-bit hppa-hp-hpux11.11.
4295 2023-01-12  Jonathan Wakely  <jwakely@redhat.com>
4297         * doc/xml/manual/abi.xml: Add latest library versions.
4298         * doc/html/manual/abi.html: Regenerate.
4300 2023-01-12  François Dumont  <fdumont@gcc.gnu.org>
4302         PR libstdc++/107189
4303         * include/bits/stl_tree.h (_Rb_tree<>::_M_insert_range_equal): Remove
4304         unused _Alloc_node instance.
4306 2023-01-12  Jonathan Wakely  <jwakely@redhat.com>
4308         * include/bits/atomic_wait.h (__detail::__platform_wait_t):
4309         Define as unsigned long if always lock-free, and unsigned int
4310         otherwise.
4312 2023-01-10  Jonathan Wakely  <jwakely@redhat.com>
4314         * src/c++20/tzdb.cc (tzdb_list::_S_init_tzdb): Use __try and
4315         __catch macros for exception handling.
4317 2023-01-10  Jonathan Wakely  <jwakely@redhat.com>
4319         PR libstdc++/108221
4320         * include/bits/stl_algobase.h (__lg): Replace six overloads with
4321         a single function template for all integer types.
4322         * include/bits/stl_algo.h (__merge_adaptive_resize): Cast
4323         arithmetic results back to _Distance.
4325 2023-01-10  Jonathan Wakely  <jwakely@redhat.com>
4327         PR libstdc++/108221
4328         * include/std/span (span::span()): Un-simplify constraint to
4329         work for size_t of lesser rank than int.
4331 2023-01-07  LIU Hao  <lh_mouse@126.com>
4333         PR middle-end/108300
4334         * src/c++11/system_error.cc: Define `WIN32_LEAN_AND_MEAN` before
4335         <windows.h>.
4336         * src/c++11/thread.cc: Likewise.
4337         * src/c++17/fs_ops.cc: Likewise.
4338         * src/filesystem/ops.cc: Likewise.
4340 2023-01-06  Jonathan Wakely  <jwakely@redhat.com>
4342         PR libstdc++/108228
4343         * src/c++20/tzdb.cc (zoneinfo_dir): Add diagnostic pragma.
4345 2023-01-06  Jonathan Wakely  <jwakely@redhat.com>
4347         PR libstdc++/108235
4348         * src/c++20/tzdb.cc (time_zone::_Impl::RulesCounter): New class
4349         template and partial specialization for synchronizing access to
4350         time_zone::_Impl::infos.
4351         (time_zone::_M_get_sys_info, reload_tzdb): Adjust uses of
4352         rules_counter.
4354 2023-01-06  Patrick Palka  <ppalka@redhat.com>
4356         PR libstdc++/108260
4357         * include/bits/utility.h (__cpp_lib_ranges_zip): Define for C++23.
4358         * include/std/ranges (__cpp_lib_ranges_zip): Likewise.
4359         (__cpp_lib_ranges_chunk): Likewise.
4360         (__cpp_lib_ranges_slide): Likewise.
4361         (__cpp_lib_ranges_chunk_by): Likewise.
4362         (__cpp_lib_ranges_join_with): Likewise.
4363         (__cpp_lib_ranges_repeat): Likewise.
4364         (__cpp_lib_ranges_stride): Likewise.
4365         (__cpp_lib_ranges_cartesian_product): Likewise.
4366         (__cpp_lib_ranges_as_rvalue): Likewise.
4367         * include/std/version: Ditto.
4368         * testsuite/20_util/tuple/p2321r2.cc: Verify value of
4369         feature-test macro.
4370         * testsuite/std/ranges/adaptors/as_rvalue/1.cc: Likewise.
4371         * testsuite/std/ranges/adaptors/chunk/1.cc: Likewise.
4372         * testsuite/std/ranges/adaptors/chunk_by/1.cc: Likewise.
4373         * testsuite/std/ranges/adaptors/join_with/1.cc: Likewise.
4374         * testsuite/std/ranges/adaptors/slide/1.cc: Likewise.
4375         * testsuite/std/ranges/adaptors/stride/1.cc: Likewise.
4376         * testsuite/std/ranges/cartesian_product/1.cc: Likewise.
4377         * testsuite/std/ranges/repeat/1.cc: Likewise.
4378         * testsuite/std/ranges/zip/1.cc: Likewise.
4379         * testsuite/std/ranges/version_c++23.cc: New test.
4381 2023-01-06  Jonathan Wakely  <jwakely@redhat.com>
4383         PR libstdc++/108214
4384         * include/std/bitset (operator>>): Use alloca in the right
4385         scope, not in a constructor.
4386         * testsuite/20_util/bitset/io/input.cc: Check case from PR.
4388 2023-01-06  Jonathan Wakely  <jwakely@redhat.com>
4390         PR libstdc++/108221
4391         * include/std/format (basic_format_arg) [!__cpp_lib_to_chars]:
4392         Disable visiting floating-point types.
4394 2023-01-06  Jonathan Wakely  <jwakely@redhat.com>
4396         PR libstdc++/108288
4397         * include/debug/safe_iterator.h (_Safe_iterator::operator++(int))
4398         (_Safe_iterator::operator--(int)): Do not hold lock around
4399         construction of return value.
4401 2023-01-05  John David Anglin  <danglin@gcc.gnu.org>
4403         * config/cpu/hppa/atomicity.h (_PA_LDCW_INSN): Define.
4404         (__exchange_and_add): Use _PA_LDCW_INSN.  Use ordered store for
4405         lock release.  Revise loop.
4406         (__atomic_add): Likewise.
4408 2023-01-05  Jonathan Wakely  <jwakely@redhat.com>
4410         PR libstdc++/108212
4411         * python/libstdcxx/v6/printers.py (_utc_timezone): New global
4412         variable.
4413         (StdChronoTimePointPrinter::to_string): Use it.
4415 2023-01-05  Jonathan Wakely  <jwakely@redhat.com>
4417         PR libstdc++/108290
4418         * include/std/functional (_Bind_front): Add no_unique_address
4419         attribute to data members.
4420         * testsuite/20_util/function_objects/bind_front/107784.cc: Check
4421         size of call wrappers with empty types for targets and bound
4422         arguments.
4424 2023-01-05  Jonathan Wakely  <jwakely@redhat.com>
4426         PR libstdc++/108211
4427         * src/c++20/tzdb.cc (chrono::current_zone()): Check for zone
4428         using only last component of the name.
4430 2023-01-05  Jonathan Wakely  <jwakely@redhat.com>
4432         PR libstdc++/108228
4433         PR libstdc++/108235
4434         * config/abi/pre/gnu.ver: Move zoneinfo_dir_override export to
4435         the latest symbol version.
4436         * src/c++20/tzdb.cc (USE_ATOMIC_SHARED_PTR): Define to 0 if
4437         atomic<_Node*> is not always lock free.
4438         (USE_ATOMIC_LIST_HEAD): New macro.
4439         [__hpux__] (__gnu_cxx::zoneinfo_dir_override()): Provide
4440         definition of weak symbol.
4441         (tzdb_list::_Node::_S_head): Rename to _S_head_cache.
4442         (tzdb_list::_Node::_S_list_head): New function for accessing
4443         list head efficiently.
4444         (tzdb_list::_Node::_S_cache_list_head): New function for
4445         updating _S_list_head.
4447 2023-01-05  Jonathan Wakely  <jwakely@redhat.com>
4449         PR libstdc++/108265
4450         * include/std/chrono (hh_mm_ss): Do not use chrono::abs if
4451         duration rep is unsigned.
4452         * testsuite/std/time/hh_mm_ss/1.cc: Check unsigned rep.
4454 2023-01-04  Iain Sandoe  <iain@sandoe.co.uk>
4456         PR libstdc++/108228
4457         * config/abi/pre/gnu.ver (GLIBCXX_3.4):
4458         Add __gnu_cxx::zoneinfo_dir_override().
4460 2023-01-04  Jonathan Wakely  <jwakely@redhat.com>
4462         PR libstdc++/108258
4463         * include/std/array (__array_traits<T, 0>::operator T*()): Add
4464         constexpr.
4465         * testsuite/23_containers/array/element_access/constexpr_c++17.cc: Check
4466         std::array<T, 0>::data().
4469 Copyright (C) 2023 Free Software Foundation, Inc.
4471 Copying and distribution of this file, with or without modification,
4472 are permitted in any medium without royalty provided the copyright
4473 notice and this notice are preserved.