2026-04-06 Matthias Kretz PR libstdc++/124722 * include/bits/version.def: Check for __SSE2__ rather than x86. * include/bits/version.h: Regenerate. * testsuite/std/simd/arithmetic.cc: Build with -msse2. * testsuite/std/simd/arithmetic_expensive.cc: Likewise. * testsuite/std/simd/creation.cc: Likewise. * testsuite/std/simd/creation_expensive.cc: Likewise. * testsuite/std/simd/loads.cc: Likewise. * testsuite/std/simd/loads_expensive.cc: Likewise. * testsuite/std/simd/mask.cc: Likewise. * testsuite/std/simd/mask2.cc: Likewise. * testsuite/std/simd/mask2_expensive.cc: Likewise. * testsuite/std/simd/mask_expensive.cc: Likewise. * testsuite/std/simd/reductions.cc: Likewise. * testsuite/std/simd/reductions_expensive.cc: Likewise. * testsuite/std/simd/shift_left.cc: Likewise. * testsuite/std/simd/shift_left_expensive.cc: Likewise. * testsuite/std/simd/shift_right.cc: Likewise. * testsuite/std/simd/shift_right_expensive.cc: Likewise. * testsuite/std/simd/simd_alg.cc: Likewise. * testsuite/std/simd/simd_alg_expensive.cc: Likewise. * testsuite/std/simd/sse_intrin.cc: Likewise. * testsuite/std/simd/stores.cc: Likewise. * testsuite/std/simd/stores_expensive.cc: Likewise. * testsuite/std/simd/traits_common.cc: Likewise. * testsuite/std/simd/traits_math.cc: Likewise. 2026-04-04 Matthias Kretz PR libstdc++/124722 * testsuite/std/simd/traits_impl.cc: Add __STDCPP_FLOAT16_T__ and __STDCPP_BFLOAT16_T__ guards. 2026-04-04 Tomasz Kamiński * testsuite/20_util/optional/ref/access.cc: Provide definition for foo(). 2026-04-03 Jakub Jelinek * include/bits/version.def (is_structural): New. * include/bits/version.h: Regenerate. * include/std/type_traits (__glibcxx_want_is_structural): Define. (std::is_structural): New type trait. (std::is_structural_v): New type trait variable template. * include/std/meta (std::meta::is_structural_type): New declaration. * src/c++23/std.cc.in: Export std::is_structural, std::is_structural_v and std::meta::is_structural_type. * testsuite/20_util/is_structural/requirements/explicit_instantiation.cc: New test. * testsuite/20_util/is_structural/requirements/typedefs.cc: New test. * testsuite/20_util/is_structural/value.cc: New test. * testsuite/20_util/variable_templates_for_traits.cc: Test is_structural_v. 2026-04-03 Jakub Jelinek * libsupc++/exception_ptr.h (std::make_exception_ptr): Use __builtin_current_exception() instead of current_exception() if the builtin exists. * libsupc++/nested_exception.h: Revert 2026-01-07 and 2025-07-10 changes. * testsuite/18_support/exception_ptr/exception_ptr_cast.cc (test01): Use __builtin_current_exception instead of std::current_exception if __has_builtin(__builtin_current_exception). Otherwise don't try to constant evaluate test01. 2026-04-02 Patrick Palka * include/std/ranges (zip_view::size): Uglify 'sizes' parameter. 2026-04-02 Tomasz Kamiński * include/bits/version.def (inplace_vector): Bump to 202603. * include/bits/version.h: Regenerate. * include/std/inplace_vector (inplace_vector::try_emplace_back) (inplace_vector::try_push_back): Change return type to optional<_Tp&> and adjust implementation accordingly. (inplace_vector::try_append_range): Remove. * include/debug/inplace_vector (inplace_vector::try_emplace_back) (inplace_vector::try_push_back, inplace_vector::try_append_range): Likewise. * testsuite/23_containers/inplace_vector/modifiers/single_insert.cc: Updated check for the optional return. Added test for type convertible to optional * testsuite/23_containers/inplace_vector/debug/invalidation/try_emplace_back.cc: Use has_value() to check if engaged optional is returned. * testsuite/23_containers/inplace_vector/debug/invalidation/try_push_back.cc: Likewise. * testsuite/23_containers/inplace_vector/modifiers/multi_insert.cc: Remove try_append_range tests. * testsuite/23_containers/inplace_vector/debug/invalidation/try_append_range.cc: Removed. * testsuite/23_containers/inplace_vector/version.cc: Updated expected feature test macro value. 2026-04-02 Jonathan Wakely * include/std/version: Add Doxygen documentation comment. 2026-04-02 Jonathan Wakely * include/bits/regex_constants.h (format_default): Simplify description of $n in Doxygen comment. 2026-04-02 Jonathan Wakely * include/bits/stl_pair.h (pair): Adjust Doxygen comment. 2026-04-02 Jonathan Wakely * include/bits/chrono.h (floor, ceil, round): Fix Doxygen comments to use correct parameter name and describe return value more accurately. 2026-04-02 Jonathan Wakely * include/bits/unordered_map.h (unordered_map::erase(K&&)): Change parameter name to __x. * include/bits/unordered_set.h (unordered_set::erase(K&&)) (unordered_multiset::erase(K&&)): Likewise. 2026-04-02 Jonathan Wakely * include/bits/ostream.h (operator<<): Do not include deleted overloads in @{ group. * include/bits/stl_queue.h (priority_queue): Add @{ group around constructors. * include/bits/unordered_map.h: Remove stray @{. Move #endif to encompass @} that is within the #if group. 2026-04-02 Jonathan Wakely * include/bits/move.h (swap): Remove @return from Doxygen comment. * include/bits/stl_algo.h (inplace_merge, shuffle) (random_shuffle, partial_sort, nth_element, sort) (stable_sort): Likewise. * include/bits/stl_algobase.h (iter_swap, fill): Likewise. * include/bits/stl_deque.h (_Deque_base::_M_initialize_map) (deque::_M_range_initialize, deque::_M_fill_initialize): Likewise. * include/bits/stl_iterator_base_funcs.h (advance): Likewise. * include/bits/stl_numeric.h (iota): Likewise. * include/bits/stl_tempbuf.h (return_temporary_buffer): Likewise. * include/bits/stl_uninitialized.h (uninitialized_fill): Likewise. 2026-04-02 Jonathan Wakely * include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp: Add missing #endif. 2026-04-02 Jonathan Wakely * doc/doxygen/doxygroups.cc: Define variable_templates group. * include/bits/binders.h: Fix @file name. * include/bits/formatfwd.h: Add missing @cond * include/bits/forward_list.h: Add closing backtick in comment. * include/bits/out_ptr.h (out_ptr, inout_ptr): Fix names in @param comments. * include/bits/regex_constants.h: Escape backtick in comment. * include/bits/stl_map.h: Add missing @{. * include/bits/stl_set.h: Likewise. * include/bits/stl_pair.h: Move declaration of complex into #if group where it's used. Fix nesting of @cond and @endcond in #if groups. * include/std/functional: Move @cond inside #if group. * include/std/type_traits: Likewise. * libsupc++/exception: Fix typo'd backtick. 2026-04-02 Jonathan Wakely * doc/doxygen/user.cfg.in (INPUT): Add header. (EXCLUDE_SYMBOLS): Exclude include guards and other internal macros from generated documentation. (PREDEFINED): Update __cplusplus to C++26 value. Remove unnecessary spaces in macro expansions. Add missing _GLIBCXX_ABI_TAG_CXX11 macro. 2026-04-02 Jonathan Wakely * doc/doxygen/user.cfg.in: Update Doxygen config. 2026-04-02 Jonathan Wakely * include/bits/stl_map.h (map::try_emplace): Move #endif and use Doxygen's @{ to document all three overloads. (map::insert_or_assign): Use relevant feature test macro. 2026-04-02 Tomasz Kamiński * include/bits/version.def (submdspan): Update to 202603, and list all papers in comment. * include/bits/version.h: Regenerate. * include/std/mdspan: Replaced std::strided_stride to std::extent_slice, __is_strided_slice to __is_extent_slice, _SliceKind::__unit_strided_slice to __unit_stride_slice. * src/c++23/std.cc.in (std::extent_slice): Replaced std::strided_slice to std::extent_slice. * testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: Replaced all occurences of strided_slice to extent_slice. * testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: Likewise. * testsuite/23_containers/mdspan/submdspan/strided_slice.cc: Move to... * testsuite/23_containers/mdspan/submdspan/extent_slice.cc: ...here and handle rename. * testsuite/23_containers/mdspan/submdspan/strided_slice_neg.cc: Move to... * testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc: ...here and handle rename. * testsuite/23_containers/mdspan/submdspan/selections/testcases.h: Replaced all occurences of strided_slice to extent_slice. * testsuite/23_containers/mdspan/submdspan/subextents.cc: Likewise. * testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: Likewise. * testsuite/23_containers/mdspan/submdspan/submdspan_mapping.cc: Likewise. * testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc: Likewise. 2026-04-02 Tomasz Kamiński * include/std/mdspan (__mdspan::__static_slice_extent) (__mdspan::__dynamic_slice_extent): Return unmodified extent value for strided_slice. (__mdspan::__substrides_generic, __mdspan::__substrides_standardized): Multipliy stride, if more than one element is requested. (__mdspan::__canonical_range_slice): Define. (__mdspan::__slice_cast): Use __canonical_range_slice for range_slice and two elements tuples. (__mdspan::__check_inrange_index): Define. (__mdspan::__check_valid_slice): Validate if slice.offset + (slice.extent - 1) * slice.stride fits into extent of given dimension. Check stride if slice.extent > 1. * testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: Add test for range_slice. * testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: Add tests validating new conditions. * testsuite/23_containers/mdspan/submdspan/selections/testcases.h: Adjusted for change of meaing of strided_slice::extent. * testsuite/23_containers/mdspan/submdspan/subextents.cc: Adjusted for change of meaing of strided_slice::extent. And expanded range_slice tests. * testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: Adjusted for change of meaing of strided_slice::extent. * testsuite/23_containers/mdspan/submdspan/submdspan_neg.cc: Adjust test for stride value. 2026-04-02 Tomasz Kamiński * src/c++23/std.cc.in (range_slice): Export. * include/std/mdspan (range_slice, __mdspan::__is_range_slice): Define. (__mdspan::__slice_cast): Handle strided_slice. * testsuite/23_containers/mdspan/submdspan/subextents.cc: Sanity tests for range_slice. 2026-04-02 Jonathan Wakely * Makefile.am (new-abi-baseline): New target. * Makefile.in: Regenerate. 2026-04-02 Jonathan Wakely * include/std/format (dynamic_format): Check new value for feature test macro. 2026-04-02 Tomasz Kamiński * src/c++23/std.cc.in (std::saturatint_cast): Fixed typo... (std::saturating_cast): ...by exporting this. 2026-04-02 Tomasz Kamiński * src/c++23/std.cc.in (std::runtime_format, std::add_sat) (std::sub_sat, std::mul_sat, std::div_sat, std::saturate_cast): Replace exports with... (std::dynamic_format, std::saturating_add, std::saturating_sub) (std::saturating_mul, std::saturating_div, std::saturating_cast): ...exports of new names. 2026-04-01 Jakub Jelinek * include/std/meta (std::meta::__detail::__statically_sized): New concept. (std::meta::define_static_array): Change return type to auto. If __statically_sized<_Rg>, return span with ranges::size(__r) as second argument. 2026-04-01 François Dumont Jonathan Wakely * include/bits/cow_string.h (basic_string::replace(iterator, iterator, _InputIte, _InputIte)): Move __glibcxx_requires_valid_range to... (basic_string::_M_replace_dispatch(iterator, iterator, _InputIte, _InputIte, __fase_type)): ...here. * testsuite/21_strings/basic_string/debug/append_neg.cc: New test case. * testsuite/21_strings/basic_string/debug/assign_neg.cc: New test case. * testsuite/21_strings/basic_string/debug/construct_neg.cc: New test case. * testsuite/21_strings/basic_string/debug/insert_neg.cc: New test case. * testsuite/21_strings/basic_string/debug/replace_neg.cc: New test case. 2026-04-01 Patrick Palka * include/std/ranges (iota_view::_Sentinel): Remove _M_equal and _M_distance_from. Inline logic into friend operators. (basic_istream_view::_Iterator): Remove _M_at_end. Inline logic into operator==. (transform_view::_Sentinel): Remove __distance_from and __equal. Inline logic into friend operators. (join_view::_Sentinel): Remove __equal. Inline logic into operator==. (lazy_split_view::_OuterIter): Remove __at_end. Inline logic into operator==. (split_view::_Sentinel): Remove _M_equal. Inline logic into operator==. (elements_view::_Sentinel): Remove _M_equal and _M_distance_from. Inline logic into friend operators. 2026-04-01 Patrick Palka * include/bits/version.def (ranges_filter): Define for C++20. * include/bits/version.h: Regenerate. * include/std/ranges: Provide __cpp_lib_ranges_filter. (filter_view::_Iterator): Add _Const template parameter. (filter_view::_Iterator::_S_iter_concept): Return input_iterator_tag if _Const. (filter_view::_Iterator::_Parent): New. (filter_view::_Iterator::_Base): New. (filter_view::_Iterator::_Vp_iter): Replace with ... (filter_view::_Iterator::_Base_iter): ... this. (filter_view::_Iterator::_M_current): Adjust to consider _Const. (filter_view::_Iterator::_M_parent): Likewise. (filter_view::_Iterator::value_type): Likewise. (filter_view::_Iterator::difference_type): Likewise. (filter_view::_Iterator::_Iterator): Likewise. Add const-converting overload. (filter_view::_Iterator::base): Adjust to consider _Const. (filter_view::_Iterator::operator*): Likewise. (filter_view::_Iterator::operator->): Likewise. (filter_view::_Iterator::operator++): Likewise. (filter_view::_Iterator::operator--): Likewise. (filter_view::_Iterator::iter_move): Likewise. (filter_view::_Iterator::iter_swap): Likewise. (filter_view::_Sentinel): Add _Const template parameter. (filter_view::_Sentinel::_Parent): New. (filter_view::_Sentinel::_Base): New. (filter_view::_Sentinel::_M_end): Adjust to consider _Const. (filter_view::_Sentinel::_Sentinel): Likewise. Add const-converting overload. (filter_view::_Sentinel::base): Adjust to consider _Const. (filter_view::_Sentinel::operator==): Likewise. Inline the helper member function __equal. (filter_view::begin): Adjust return type of non-const overload. New const overload. (filter_view::end): Likewise. * testsuite/std/ranges/adaptors/filter.cc: Verify value of __cpp_lib_ranges_filter. (test08): New test. 2026-04-01 Jonathan Wakely * include/bits/chrono_io.h (__formatter_chrono::_S_empty_fs) (__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_D_x) (__formatter_chrono::_M_F, __formatter_chrono::_M_subsecs) (__formatter_chrono_info::_M_format_to): Use _Dynamic_format_string instead of _Runtime_format_string. * include/bits/version.def (format): Bump value. * include/bits/version.h: Regenerate. * include/std/format (_Runtime_format_string): Rename to _Dynamic_format_string. (runtime_format): Rename to dynamic_format. * include/std/print (println): Adjust comment to refer to dynamic_format instead of runtime_format. * testsuite/std/format/runtime_format.cc: Move to... * testsuite/std/format/dynamic_format.cc: ...here. 2026-04-01 Jonathan Wakely * include/bits/sat_arith.h (add_sat, sub_sat, mul_sat, div_sat) (saturate_cast): Rename to saturating_xxx as per P4052R0. * include/bits/version.def (saturation_arithmetic): Bump value. * include/bits/version.h: Regenerate. * testsuite/26_numerics/saturation/add.cc: Use new name. * testsuite/26_numerics/saturation/cast.cc: Likewise. * testsuite/26_numerics/saturation/div.cc: Likewise. * testsuite/26_numerics/saturation/extended.cc: Likewise. * testsuite/26_numerics/saturation/mul.cc: Likewise. * testsuite/26_numerics/saturation/sub.cc: Likewise. * testsuite/26_numerics/saturation/version.cc: Check for updated value. 2026-03-31 Jakub Jelinek * include/std/meta (std::meta::data_member_options): Add annotations member. 2026-03-31 Jakub Jelinek * include/std/meta (std::meta::current_function, std::meta::current_class, std::meta::current_namespace): New declarations. * src/c++23/std.cc.in: Export those 3. 2026-03-30 Tomasz Kamiński * include/bits/atomic_base.h (__atomic_ref_base::_Address_return_t): Define. (__atomic_ref_base::address): Change return type to _Address_return_t. * include/bits/version.def (atomic_ref): Bump to 202603. * include/bits/version.h: Regenerate. * testsuite/29_atomics/atomic_ref/address.cc: Update check for return type. 2026-03-30 Jakub Jelinek * include/std/meta (has_ellipsis_parameter): Rename to ... (is_vararg_function): ... this. New declaration. * src/c++23/std.cc.in: Remove std::meta::has_ellipsis_parameter export, add std::meta::is_vararg_function export. 2026-03-28 Alexandre Oliva * include/experimental/bits/simd.h (__intrinsic_type): Accept 64-bit long doubles on x86 SSE. 2026-03-27 Nathan Myers * include/bits/stl_tree.h: Delete comment. 2026-03-25 Alexandre Oliva * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc (test_wait_until): Extend the timeout for a stop request. 2026-03-21 Matthias Kretz * include/Makefile.am: Add simd headers. * include/Makefile.in: Regenerate. * include/bits/version.def (simd): New. * include/bits/version.h: Regenerate. * include/bits/simd_alg.h: New file. * include/bits/simd_details.h: New file. * include/bits/simd_flags.h: New file. * include/bits/simd_iterator.h: New file. * include/bits/simd_loadstore.h: New file. * include/bits/simd_mask.h: New file. * include/bits/simd_mask_reductions.h: New file. * include/bits/simd_reductions.h: New file. * include/bits/simd_vec.h: New file. * include/bits/simd_x86.h: New file. * include/bits/vec_ops.h: New file. * include/std/simd: New file. * testsuite/std/simd/arithmetic.cc: New test. * testsuite/std/simd/arithmetic_expensive.cc: New test. * testsuite/std/simd/create_tests.h: New file. * testsuite/std/simd/creation.cc: New test. * testsuite/std/simd/creation_expensive.cc: New test. * testsuite/std/simd/loads.cc: New test. * testsuite/std/simd/loads_expensive.cc: New test. * testsuite/std/simd/mask2.cc: New test. * testsuite/std/simd/mask2_expensive.cc: New test. * testsuite/std/simd/mask.cc: New test. * testsuite/std/simd/mask_expensive.cc: New test. * testsuite/std/simd/reductions.cc: New test. * testsuite/std/simd/reductions_expensive.cc: New test. * testsuite/std/simd/shift_left.cc: New test. * testsuite/std/simd/shift_left_expensive.cc: New test. * testsuite/std/simd/shift_right.cc: New test. * testsuite/std/simd/shift_right_expensive.cc: New test. * testsuite/std/simd/simd_alg.cc: New test. * testsuite/std/simd/simd_alg_expensive.cc: New test. * testsuite/std/simd/sse_intrin.cc: New test. * testsuite/std/simd/stores.cc: New test. * testsuite/std/simd/stores_expensive.cc: New test. * testsuite/std/simd/test_setup.h: New file. * testsuite/std/simd/traits_common.cc: New test. * testsuite/std/simd/traits_impl.cc: New test. * testsuite/std/simd/traits_math.cc: New test. 2026-03-20 Jonathan Wakely PR libstdc++/122567 * src/c++20/tzdb.cc (tzdb::current_zone): Loop over all trailing components of /etc/localtime path. Use readlink instead of std::filesystem::read_symlink. 2026-03-20 Jonathan Wakely * src/c++20/tzdb.cc [_AIX]: Change #ifndef to #ifdef. 2026-03-20 Jonathan Wakely PR libstdc++/124568 * testsuite/24_iterators/istreambuf_iterator/105580.cc: Add no_pch option. 2026-03-20 Jonathan Wakely * src/c++17/fs_path.cc (path::operator+=): Use pointer comparison to detect aliasing instead of a loop. 2026-03-20 Jonathan Wakely * include/std/generator (_Stateless_alloc): Swap order of constraints. 2026-03-19 François Dumont * src/c++11/debug.cc (_Safe_sequence_base::_M_detach_single): Do not check if input iterator is equal to _M_iterators if already equals to _M_const_iterators. (_Safe_unordered_container_base::_M_detach_local_single): Do not check if input local iterator is equal to _M_local_iterators if already equals to _M_const_local_iterators. 2026-03-19 Jakub Jelinek PR libstdc++/121790 * src/c++23/std.cc.in: Add enable_nonlocking_formatter_optimization. 2026-03-19 Jakub Jelinek PR libstdc++/118030 * src/c++23/std.cc.in: Add allocation_result. 2026-03-19 Jakub Jelinek PR c++/120775 * src/c++23/std.cc.in: Add is_reflection{,_v} and is_consteval_only{,_v}. 2026-03-19 Jakub Jelinek PR libstdc++/119794 * src/c++23/std.cc.in: Add philox_engine and philox4x{32,64}. 2026-03-19 Jakub Jelinek * src/c++23/std.cc.in: Export views::indices. 2026-03-19 Jonathan Wakely PR libstdc++/124513 * src/c++20/tzdb.cc (operator>>(istream&, at_time::Indicator&)): Do not peek at the next character if eofbit is already set. (istream& operator>>(istream&, at_time&)): Skip whitespace before the first character. Handle EOF when parsing "-" as time. Do not peek for ":" or "." if eofbit already set. * testsuite/std/time/time_zone/116110.cc (test_apia): Remove offset of 24h now that the UNTIL time is parsed correctly. * testsuite/std/time/time_zone/124513.cc: New test. 2026-03-19 Jonathan Wakely PR libstdc++/116110 * src/c++20/tzdb.cc (operator>>(istream&, ZoneInfo&)): Adjust inf.m_until according to indicator suffix on AT time in UNTIL. * testsuite/std/time/time_zone/116110.cc (test_kiritimati): Remove FIXME now that the UNTIL time is adjusted for STDOFF. (test_apia): Adjust FIXME now that UNTIL time is adusted for STDOFF. * testsuite/std/time/time_zone/get_info_sys.cc: Adjust expected results to account for corrected logic. * testsuite/std/time/zoned_time/1.cc: Likewise. 2026-03-19 Jonathan Wakely PR libstdc++/116110 * src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Update info.offset and info.save to values from the active rule. * testsuite/std/time/time_zone/116110.cc: New test. 2026-03-18 Jonathan Wakely * testsuite/17_intro/names.cc (ext, max_iter, ret, subs, Rg, Rs): Define macros. [__cplusplus < 201103] (mutex): Define macro. 2026-03-18 Jonathan Wakely * include/experimental/bits/fs_path.h (path::stem) (path::extension, path::has_stem, path::has_extension): Uglify ext variable name. 2026-03-18 Jakub Jelinek * include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret variable name. 2026-03-18 Tomasz Kamiński * include/std/mdspan (__mdspan::__index_type_cast): Handle forwarding referene and use forward for class types. * testsuite/23_containers/mdspan/int_like.h (ConstLValueInt) (CustomIndexKind::ConstLValue): Define. (CustomIndexType): Handle CustomIndexKind::ConstLValue. * testsuite/23_containers/mdspan/at.cc: Test with ConstLValueInt. * testsuite/23_containers/mdspan/extents/custom_integer.cc: Likewise. * testsuite/23_containers/mdspan/mdspan.cc: Likewise. 2026-03-17 Jonathan Wakely * include/bits/chrono_io.h (__formatter_duration::_S_subseconds): Uglify subs variable name. * include/bits/fs_path.h (path::stem, path::extension) (path::has_stem, path::has_extension): Uglify ext parameter name. * include/ext/concurrence.h (__cond::wait, __cond::wait_recursive): Uglify mutex parameter names. * include/pstl/glue_algorithm_defs.h (generate_n): Uglify count parameter name. * include/std/ranges (zip_transform_view): Uglify Rs template parameter name. (__cartesian_is_sized_sentinel): Uglify FirstSent template parameter name. * include/tr1/riemann_zeta.tcc: Uglify max_size variable name. 2026-03-17 Jonathan Wakely PR libstdc++/124463 * include/bits/deque.tcc (__uninitialized_copy_a): Define overloads for input and output iterators being std::deque iterators, and for only the output iterator being a std::deque iterator. (__uninitialized_move_a): Overload for input and output iterators being std::deque iterators. * include/bits/stl_uninitialized.h (__uninitialized_copy_a) (__uninitialized_move_a): Declare overloads for std::deque iterators. 2026-03-17 Jonathan Wakely Revert: 2026-03-16 Jonathan Wakely PR libstdc++/124268 * config/abi/pre/gnu.ver: Export symbols. * src/Makefile.am: Add libmodulesconvenience.la to libstdc++ link. * src/Makefile.in: Regenerate. * src/c++23/Makefile.am: Create libmodulesconvenience.la and populate it with std.o and std.compat.o interface units. Add clean-local target. * src/c++23/Makefile.in: Regenerate. 2026-03-17 Tomasz Kamiński * testsuite/23_containers/mdspan/extents/ctor_ints.cc: Updated is_explicit, and added more test cases. 2026-03-16 Jonathan Wakely PR libstdc++/124268 * config/abi/pre/gnu.ver: Export symbols. * src/Makefile.am: Add libmodulesconvenience.la to libstdc++ link. * src/Makefile.in: Regenerate. * src/c++23/Makefile.am: Create libmodulesconvenience.la and populate it with std.o and std.compat.o interface units. Add clean-local target. * src/c++23/Makefile.in: Regenerate. 2026-03-16 Jonathan Wakely * include/bits/ranges_base.h (distance(It&&, Sent)): Only decay arrays to pointers when the type is actually an array, as per LWG 4242. * testsuite/24_iterators/range_operations/distance.cc: Add test for LWG 4242. 2026-03-16 Jonathan Wakely * testsuite/29_atomics/atomic/compare_exchange_padding.cc: Rewrite to be robust against spurious failures of weak compare exchange, and to check padding bits more directly. 2026-03-16 Jonathan Wakely * include/bits/allocator.h (allocator::allocate): Use specific feature test macro for constexpr allocate and deallocate. Make consteval path a discarded statement if sizeof(T) is ill-formed. * include/bits/new_allocator.h (__new_allocator::allocate): Use requires-expression for static_cast. Make function body a discarded stament if sizeof(T) is ill-formed. Use if-constexpr for alignment checks. 2026-03-15 François Dumont PR libstdc++/124444 * include/debug/safe_sequence.h (_Safe_sequence::_M_invalidate_if_impl): New. (_Safe_sequence::_M_invalidate_if): Call later if not __is_constant_evaluated. * include/debug/safe_sequence.tcc: Rename _M_invalidate_if into _M_invalidate_if_impl and remove C++20 constexpr. 2026-03-14 Jonathan Wakely * include/std/text_encoding: Fix @since in Doxygen comment. 2026-03-12 Rainer Orth PR libstdc++/124290 * testsuite/23_containers/mdspan/submdspan/selections/left_padded.cc: Use dg-timeout-factor 4. * testsuite/23_containers/mdspan/submdspan/selections/left.cc: * testsuite/23_containers/mdspan/submdspan/selections/right_padded.cc: * testsuite/23_containers/mdspan/submdspan/selections/right.cc: Likewise. * testsuite/23_containers/mdspan/submdspan/selections/stride.cc: Likewise. 2026-03-12 Jonathan Wakely * include/std/format (__format::_Ptr_sink::_M_finish): Rename __max variable to __m. * testsuite/17_intro/names.cc (__max): Define function-like macro. 2026-03-12 Jakub Jelinek PR libstdc++/124443 * include/std/meta (std::define_static_object): Use CTAD for span. 2026-03-11 Jakub Jelinek * include/std/meta (std::meta::exception::what()): Use __builtin_constexpr_diag instead of __asm__("") if supported. (std::meta::access_context::via(info)): Don't call is_class_type if __cls is not a type. Use __builtin_constexpr_diag instead of __asm__("") if supported for -fno-exceptions. 2026-03-10 Jonathan Wakely * include/std/chrono (hh_mm_ss): Add comment about LWG 4274. 2026-03-10 Jonathan Wakely * include/bits/ranges_algo.h (__replace_fn, __replace_if_fn): Change default template argument for type of new value, as per LWG 4444. * testsuite/25_algorithms/replace/lwg4444.cc: New test. * testsuite/25_algorithms/replace_if/lwg4444.cc: New test. 2026-03-10 Jonathan Wakely * include/std/span (as_bytes, as_writable_bytes): Add constraints to disallow volatile elements, as per LWG 4243. * testsuite/23_containers/span/lwg4243.cc: New test. 2026-03-10 Nathan Myers PR libstdc++/118030 * include/bits/alloc_traits.h (allocate_at_least (2x)): Define. * include/bits/allocator.h (allocate_at_least): Define. * include/std/memory (__glibcxx_want_allocate_at_least): Define. * include/bits/memoryfwd.h (allocation_result): Define, #include first so that will work. * include/bits/version.def (allocate_at_least): Add. * include/bits/version.h: Regenerate. * testsuite/20_util/allocator/allocate_at_least.cc: New test. * testsuite/20_util/allocator/allocate_at_least_neg.cc: New test. 2026-03-10 Jonathan Wakely * include/bits/basic_string.h: Check __glibcxx_to_string instead of __cplusplus. 2026-03-10 Tomasz Kamiński * include/std/format (__format::_Ptr_sink, __format::__format_padded) (std::enable_nonlocking_formatter_optimization>): Replaced 8 spaces with tabs. 2026-03-10 Tomasz Kamiński * include/std/format (__format::_Ptr_sink): Reworked from _Iter_sink specialization below. (__format::_Iter_sink<_CharT, contiguous_iterator _OutIter>): Renamed and reworked to _Ptr_sink. (__format::__contiguous_char_iter, __format::__do_vformat_to_n): Define. (__format::__do_vformat_to): Use _Ptr_sink when appropriate, and delegate to _Sink_iter specialization. (std::format_to_n): Delegate to __do_vformat_to_n. (__format::_Counting_sink): Use _Ptr_sink as base class. 2026-03-10 Tomasz Kamiński * include/std/format (__formatter_int::format): Handle transcoding to _CharT before calling _M_format_int. (__formatter_int::_M_format_int): Accept basic_string_view<_CharT> and remove transcoding. (__formatter_ptr::__formatter_ptr): Configure _M_spec member. (__formatter_ptr::parse): Negate _M_alt for __spec and not _M_spec. (__formatter_ptr::format): Delegate to __formatter_int. 2026-03-10 François Dumont * include/debug/string [__cplusplus >= 201103L](basic_string(_Ite, _Ite, const _Alloc&)): Add std::_RequireInputIter<_Ite> template parameter. 2026-03-09 Jonathan Wakely * include/std/meta (exception::what, access_context::via): Use __asm__ instead of asm keyword. 2026-03-09 Jonathan Wakely PR libstdc++/120527 * include/bits/atomic_wait.h [__FreeBSD__] (__platform_wait_t): Define typedef. [__FreeBSD__] (__platform_wait_uses_type): Define variable template. * src/c++20/atomic.cc (__platform_load): New function. [__FreeBSD__] (_GLIBCXX_HAVE_PLATFORM_WAIT, __platform_wait) (__platform_notify, __platform_wait_until): Define. (__detail::__spin_impl): Use __platform_load. 2026-03-07 François Dumont * include/debug/functions.h [__cplusplus >= 201103L] (__foreign_iterator_aux): Remove. (__foreign_iterator): Adapt to use __foreign_iterator_aux2. * include/debug/helper_functions.h [__cplusplus >= 201103L]: Remove include bits/cpp_type_traits.h. (_Distance_traits<_Integral, std::__true_type>): Remove. (__valid_range_aux(_Integral, _Integral, std::__true_type)): Remove. (__valid_range_aux(_Iterator, _Iterator, std::__false_type)): Remove. (__valid_range_aux(_Integral, _Integral, _Distance_traits<_Integral>::__type&, std::__true_type)): Remove. (__valid_range_aux(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&, std::__false_type)): Remove. (__valid_range(_Iterator, _Iterator)): Adapt. (__valid_range(_Iterator, _Iterator, _Distance_traits<_Iterator>::__type&)): Adapt. 2026-03-06 Nathan Myers * include/std/bitset (operator[]() const): Customize bounds check for C++11 case. * testsuite/20_util/bitset/access/subscript_const_neg.cc: Suppress UNRESOLVED complaint. 2026-03-06 Tomasz Kamiński * include/bits/fs_path.h (std::formatter): Format _Utf_view directly via __formatter_str::_M_format_range. 2026-03-06 Jonathan Wakely PR libstdc++/122300 * src/c++17/fs_path.cc (path::_List::_Impl): Remove static_asserts. (path::_List::_Impl::required_alignment) (path::_List::_Impl::use_aligned_new): New static data members. (path::_List::_Impl::create_unchecked): Check use_aligned_new and use aligned new if needed. (path::_List::_Impl::alloc_size): New static member function. (path::_List::_Impl_deleter::operator): Check use_aligned_new and use aligned delete if needed. 2026-03-05 Nathan Myers PR libstdc++/118341 * include/std/bitset (operator[] (2x)): Add assertion. * testsuite/20_util/bitset/access/118341_neg1.cc: New test. * testsuite/20_util/bitset/access/118341_neg2.cc: Same. * testsuite/20_util/bitset/access/118341_smoke.cc: Same. * testsuite/20_util/bitset/access/subscript.cc: Same. * testsuite/20_util/bitset/access/subscript_const_neg.cc: Same. 2026-03-05 François Dumont * include/debug/safe_unordered_container.h (_Safe_unordered_container::_UContInvalidatePred): Move outside class, at namespace scope. Declare friend. (_Safe_unordered_container::_UMContInvalidatePred): Likewise. (_Safe_unordered_container::_UContMergeGuard): Likewise. (_Safe_unordered_container::_M_invalidate_all): Make protected. (_Safe_unordered_container::_M_invalidate_all_if): Likewise. 2026-03-05 Tomasz Kamiński PR libstdc++/124124 * testsuite/29_atomics/atomic/cons/zero_padding.cc: Limit size of test types to four bytes. 2026-03-05 Tomasz Kamiński Ivan Lazaric * include/std/format (_Arg_value::_M_get): Rename to... (_Arg_value::_M_access): Modified to accept optional second parameter that is assigned to value. (_Arg_value::_M_get): Handle rename. (_Arg_value::_M_set): Use construct_at for basic_string_view, handle, and two-argument _S_access for other types. 2026-03-05 Tomasz Kamiński * include/std/format (__Arg_value::handle): Define, extracted with modification from basic_format_arg::handle. (_Arg_value::_Handle_base): Remove. (_Arg_value::_M_handle): Change type to handle. (_Arg_value::_M_get, _Arg_value::_M_set): Check for handle type directly, and return result unmodified. (basic_format_arg::__formattable): Remove. (basic_format_arg::handle): Replace with alias to _Arg_value::handle. 2026-03-04 Jonathan Wakely PR libstdc++/124363 * include/std/string_view: Adjust comment on #endif to match #if condition. 2026-03-04 Nathan Myers PR libstdc++/117402 * include/debug/map.h (try_emplace (2x), insert_or_assign (2x)): Define heterogeneous overloads, simplify existing overloads. * include/debug/unordered_map: Same. * include/debug/set.h (insert (2x)): Define heterogeneous overloads. * include/debug/unordered_set: Same. 2026-03-04 Nathan Myers PR libstdc++/117402 * include/bits/stl_map.h (operator[], at (2x), try_emplace (2x), insert_or_assign (2x)): Add overloads. * include/bits/unordered_map.h (operator[], at (2x), try_emplace (2x), insert_or_assign (2x), bucket (2x)): Add overloads. * include/bits/stl_set.h (insert (2x)): Add overloads. * include/bits/unordered_set.h (insert (2x), bucket (2x)): Add overloads. * include/bits/hashtable.h (_M_bucket_tr, _M_insert_tr): Define. * include/bits/hashtable_policy.h (_M_at_tr (2x)): Define. * include/bits/stl_tree.h (_M_emplace_here, _M_get_insert_unique_pos_tr, _M_get_insert_hint_unique_pos_tr): Define new heterogeneous insertion code path for set and map. * include/bits/version.def (associative_heterogeneous_insertion): Define. * include/bits/version.h: Regenerate. * include/std/map (__glibcxx_want_associative_heterogeneous_insertion): Define macro. * include/std/set: Same. * include/std/unordered_map: Same. * include/std/unordered_set: Same. * testsuite/23_containers/map/modifiers/hetero/insert.cc: New tests. * testsuite/23_containers/set/modifiers/hetero/insert.cc: Same. * testsuite/23_containers/unordered_map/modifiers/hetero/insert.cc: Same. * testsuite/23_containers/unordered_multimap/modifiers/hetero/insert.cc: Same. * testsuite/23_containers/unordered_multiset/modifiers/hetero/insert.cc: Same. * testsuite/23_containers/unordered_set/modifiers/hetero/insert.cc: Same. 2026-03-03 Adam Wood PR libstdc++/122217 * testsuite/27_io/filesystem/operations/copy_symlink/1.cc: New test. * testsuite/27_io/filesystem/operations/copy_symlink/2.cc: New test. * testsuite/27_io/filesystem/operations/copy_symlink/3.cc: New test. * testsuite/27_io/filesystem/operations/copy_symlink/4.cc: New test. 2026-03-03 Arthur O'Dwyer PR libstdc++/119197 * include/std/expected (expected, expected): Add [[nodiscard]] to class. * testsuite/20_util/expected/119197.cc: New test. 2026-03-03 Jonathan Wakely * include/std/atomic (atomic::wait, atomic::notify_one) (atomic::notify_all): Fix indentation. 2026-03-03 Jonathan Wakely * include/bits/regex_compiler.h: Adjust comments so that standard references are specific to C++11. 2026-03-02 François Dumont * include/debug/safe_unordered_container.h (_Safe_unordered_container::_M_invalidate_locals): Remove. (_Safe_unordered_container::_M_invalidate_all): Lock mutex while calling _M_invalidate_if and _M_invalidate_locals. (_Safe_unordered_container::_M_invalidate_all_if): New. (_Safe_unordered_container::_M_invalidate): New. (_Safe_unordered_container::_M_invalidate_if): Make private, add __scoped_lock argument. (_Safe_unordered_container::_M_invalidate_local_if): Likewise. * include/debug/safe_unordered_container.tcc (_Safe_unordered_container::_M_invalidate_if): Adapt and remove lock. (_Safe_unordered_container::_M_invalidate_local_if): Likewise. * include/debug/unordered_map (unordered_map::erase(const_iterator, const_iterator)): Lock before loop on iterators. Remove _M_check_rehashed call. (unordered_map::_M_self): New. (unordered_map::_M_invalidate): Remove. (unordered_map::_M_erase): Adapt and remove _M_check_rehashed call. (unordered_multimap::_M_erase(_Base_iterator, _Base_iterator)): New. (unordered_multimap::erase(_Kt&&)): Use latter. (unordered_multimap::erase(const key_type&)): Likewise. (unordered_multimap::erase(const_iterator, const_iterator)): Lock before loop on iterators. Remove _M_check_rehashed. (unordered_multimap::_M_self): New. (unordered_multimap::_M_invalidate): Remove. (unordered_multimap::_M_erase): Adapt. Remove _M_check_rehashed call. * include/debug/unordered_set (unordered_set::erase(const_iterator, const_iterator)): Add lock before loop for iterator invalidation. Remove _M_check_rehashed call. (unordered_set::_M_self): New. (unordered_set::_M_invalidate): Remove. (unordered_set::_M_erase): Adapt and remove _M_check_rehashed call. (unordered_multiset::_M_erase(_Base_iterator, _Base_iterator)): New. (unordered_multiset::erase(_Kt&&)): Use latter. (unordered_multiset::erase(const key_type&)): Likewise. (unordered_multiset::erase(const_iterator, const_iterator)): Lock before loop on iterators. Remove _M_check_rehashed. (unordered_multiset::_M_self): New. (unordered_multiset::_M_invalidate): Remove. (unordered_multiset::_M_erase): Adapt. Remove _M_check_rehashed call. 2026-03-02 Tomasz Kamiński PR libstdc++/105580 * testsuite/24_iterators/istreambuf_iterator/105580.cc: Add dg-bogus check for warning. 2026-03-02 Tomasz Kamiński PR libstdc++/105580 * include/std/streambuf (streambuf::gptr, streambuf::egptr) (streambuf::gbump): Surround with pragma disabling -Wnull-dereference. * testsuite/24_iterators/istreambuf_iterator/105580.cc: Remove check for warning being emitted. 2026-02-28 Tomasz Kamiński PR libstdc++/105580 * testsuite/24_iterators/istreambuf_iterator/105580.cc: New test. 2026-02-26 Torbjörn SVENSSON * testsuite/29_atomics/atomic_ref/requirements_neg.cc: Add using std::size_t. 2026-02-26 Yuao Ma * include/bits/atomic_base.h (__atomic_base<_PTp*>::fetch_min, __atomic_base<_PTp*>::fetch_max, __atomic_ref<_Pt, false, false, true>::fetch_min, __atomic_ref<_Pt, false, false, true>::fetch_max): Define new functions. * include/std/atomic (atomic<_Tp*>::fetch_min, atomic<_Tp*>::fetch_max): Likewise. (atomic_fetch_min_explicit, atomic_fetch_max_explicit, atomic_fetch_min, atomic_fetch_max): Change parameter from __atomic_base<_ITp>* to atomic<_Tp>*. * testsuite/29_atomics/atomic/pointer_fetch_minmax.cc: New test. * testsuite/29_atomics/atomic_ref/pointer_fetch_minmax.cc: New test. 2026-02-25 Nathan Myers PR libstdc++/117404 * include/debug/map.h (extract, erase): Define overloads. * include/debug/multimap.h: Same. * include/debug/multiset.h: Same. * include/debug/set.h: Same. * include/debug/unordered_map: Same (2x). * include/debug/unordered_set: Same (2x), rename some locals. 2026-02-24 Tomasz Kamiński * testsuite/23_containers/mdspan/at.cc: Updated guard. 2026-02-24 Tomasz Kamiński * testsuite/23_containers/mdspan/at.cc: Updated test. 2026-02-23 Tomasz Kamiński * include/std/mdspan (__mdspan::__is_multi_index): Removed, replaced with local lambda in mdspan::operator[]. (__mdspan::operator[]): Implement in terms of single overload accepting index_type. Use __mdspan::__index_type_cast for type conversion. 2026-02-23 Tomasz Kamiński * include/std/mdspan (mdspan::at, mdspan::__index_int_t): Define. * testsuite/23_containers/mdspan/at.cc: New test. 2026-02-20 Jonathan Wakely * testsuite/lib/libstdc++.exp (v3-minimum-std): Remove second and third args in favour of using globals. 2026-02-19 Tomasz Kamiński * include/std/type_traits (_CWOperators::operator++) (_CWOperators::operator--, _CWOperators::operator+=) (_CWOperators::operator-=, _CWOperators::operator*=) (_CWOperators::operator/=, _CWOperators::operator%=) (_CWOperators::operator&=, _CWOperators::operator|=) (_CWOperators::operator^=, _CWOperators::operator<<=) (_CWOperators::operator>>=, constant_wrapper::operator=): Adjust definitions to apply operator on value. * testsuite/20_util/constant_wrapper/generic.cc: Remove test_pseudo_mutator. * testsuite/20_util/constant_wrapper/instantiate.cc: Test that operators are not provided if wrapped type do not support them, or provide mutable operators. 2026-02-19 Jonathan Wakely * testsuite/lib/libstdc++.exp (v3_default_std, v3_max_std): New global variables. (v3-minimum-std): Use globals instead of arguments. (v3_modules_std): Define in terms of $v3_max_std. (v3-dg-runtest): Use globals instead of local variables. Adjust call to v3-min-std. 2026-02-19 Jonathan Wakely * testsuite/lib/libstdc++.exp (v3-minimum-std): Remove special case for c++2a and TODO comment. * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc: Replace c++2a effective target with c++20. * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_pod/value.cc: Likewise. * testsuite/20_util/reference_wrapper/result_type.cc: Likewise. * testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise. * testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise. * testsuite/20_util/result_of/sfinae_friendly_1.cc: Likewise. * testsuite/20_util/tuple/78939.cc: Likewise. * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise. * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. * testsuite/20_util/variable_templates_for_traits.cc: Likewise. * testsuite/experimental/type_traits/value.cc: Likewise. * testsuite/ext/malloc_allocator/variadic_construct.cc: Likewise. * testsuite/ext/new_allocator/variadic_construct.cc: Likewise. * testsuite/libstdc++-prettyprinters/chrono.cc: Likewise. * testsuite/libstdc++-prettyprinters/cxx20.cc: Likewise. * testsuite/std/ranges/iota/size.cc: Likewise. * testsuite/tr1/3_function_objects/result_of.cc: Likewise. 2026-02-18 Patrick Palka PR libstdc++/121402 * include/std/ranges (repeat_view::_M_value): Add [[no_unique_address]]. * testsuite/std/ranges/adaptors/sizeof.cc [__cpp_lib_ranges_repeat]: New test. 2026-02-17 Tomasz Kamiński PR libstdc++/124124 * testsuite/29_atomics/atomic/cons/zero_padding.cc: Updated Ctor class and move test_floating to... * testsuite/29_atomics/atomic_float/zero_padding.cc: Extracted test_floating. 2026-02-17 Tomasz Kamiński PR libstdc++/124124 * testsuite/29_atomics/atomic/cons/zero_padding.cc: Adjust dg-require. 2026-02-17 Jakub Jelinek * src/c++23/std.cc.in (std::submdspan_canonicalize_slices, std::submdspan_extents): Remove exports. (std::canonical_slices, std::subextents): New exports. 2026-02-16 Tomasz Kamiński PR libstdc++/119745 * include/bits/basic_string.h (basic_string::_M_construct) [__cplusplus >= 202302L]: Declare. (basic_string::basic_string(basic_string&&, size_type, const _Alloc&)) (basic_string(basic_string&&, size_type, size_type, const _Alloc&)) (basic_string::substr(size_type, size_type) &&) (basic_string::substr(size_type) &&) [__cplusplus >= 202302L]: Define. * include/bits/basic_string.tcc (basic_string::_M_construct) [__cplusplus >= 202302L]: Define. * testsuite/21_strings/basic_string/operations/substr/rvalue.cc: New test. 2026-02-16 Tomasz Kamiński * include/std/mdspan (std::submdspan_extents): Rename to... (std::subextents): Renamed from submdspan_extents. (std::submdspan_canonicalize_slices): Rename to... (std::canonical_slices): Renamed from submdspan_canonicalize_slices. * testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc: Move to... * testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: ...here. Updated calls to submdspan_canonicalize_slices. * testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc: Move to... * testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: ...here. Updated calls to submdspan_canonicalize_slices. * testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc: Move to... * testsuite/23_containers/mdspan/submdspan/subextents.cc: ...here. Qualified and renamed calls to submdspan_extents. * testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc: Move to... * testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: ...here. Qualified and renamed calls to submdspan_extents. 2026-02-16 Ivan Lazaric Jonathan Wakely * include/bits/fs_path.h: Include bits/formatfwd.h. (std::formatter): Define. * include/bits/version.def (format_path): Define. * include/bits/version.h: Regenerate. * include/std/filesystem: Expose __cpp_lib_format_path. * testsuite/std/format/fs_path.cc: New test. 2026-02-13 Tomasz Kamiński * testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc (__gnu_test::uneq_allocator(int)): Declare as explicit. * testsuite/std/memory/indirect/ctor.cc: Construct uneq_allocator from int explicitly. * testsuite/std/memory/polymorphic/ctor.cc: Likewise. * testsuite/std/memory/polymorphic/ctor_poly.cc: Likewise. * testsuite/util/testsuite_allocator.h: Likewise. 2026-02-13 Jonathan Wakely PR libstdc++/121771 * include/std/tuple (tuple::tuple(const Elements&...)): Use type_identity_t to prevent constructor being used for CTAD. (tuple::tuple(allocator_arg_t, const A&, const Elements&...)): Likewise. * testsuite/20_util/tuple/cons/121771.cc: New test. 2026-02-12 Patrick Palka * include/bits/regex_executor.tcc (_Executor::_M_rep_once_more): Make unnused _Match_mode parameter unnamed. (_Executor::_M_handle_repeat): Likewise. (_Executor::_M_handle_subexpr_begin): Likewise. (_Executor::_M_handle_subexpr_end): Likewise. (_Executor::_M_handle_line_begin_assertion): Likewise. (_Executor::_M_handle_line_end_assertion): Likewise. (_Executor::_M_handle_match): Likewise. (_Executor::_M_handle_backref): Likewise. (_Executor::_M_handle_alternative): Likewise. 2026-02-12 Xi Ruoyao Jonathan Wakely * testsuite/17_intro/badnames.cc (__unused): Do not define. * testsuite/17_intro/names.cc [glibc == 2.43] (__unused): Undef. 2026-02-12 Jonathan Wakely * include/std/type_traits (is_function): Declare before first use. 2026-02-12 Patrick Palka PR libstdc++/114865 * include/std/atomic (atomic<_Tp>::atomic(_Tp)) [C++11]: Enable __builtin_clear_padding logic. * testsuite/29_atomics/atomic/compare_exchange_padding.cc: Enable this test in earlier modes, including C++11. * testsuite/29_atomics/atomic/cons/zero_padding.cc [C++11]: Enable tests verifying cleared padding bits for a non-static-init std::atomic object. 2026-02-11 Tomasz Kamiński * include/bits/funcref_impl.h (function_ref::function_ref(_Fn&&)): Use _S_static and _S_nttp invokers. * include/bits/funcwrap.h (_Base_invoker::_S_static): Define. * include/bits/stl_function.h (std::__is_std_op_template) (std::__is_std_op_wrapper) [__cplusplus > 201703L]: Moved from std/ranges. * include/std/ranges (__detail::__is_std_op_template) (__detail::__is_std_op_wrapper): Moved to bits/stl_function.h. * testsuite/20_util/function_ref/dangling.cc: New test. * testsuite/20_util/function_ref/dangling_neg.cc: New test. 2026-02-11 Tomasz Kamiński PR libstdc++/123875 * testsuite/29_atomics/atomic/cons/static_zero_padding.cc: Move to... * testsuite/29_atomics/atomic/cons/zero_padding.cc: ...here and added heap tests. Also fixed trailing whitespaces. 2026-02-11 Jonathan Wakely PR libstdc++/123908 * config/abi/pre/gnu.ver (GLIBCXX_3.4.35): Add exports for std::__get_once_callable and std::__get_once_call. 2026-02-11 Jonathan Wakely * include/bits/regex.tcc (__detail::__lookup_collatename): New function. (regex_traits::lookup_collatename): Use new function. Elide redundant narrowing via ctype facet for regex_traits. (regex_traits::lookup_classname): Replace lookup table with handwritten prefix match. 2026-02-11 Jonathan Wakely PR libstdc++/124015 * include/bits/regex.tcc (regex_traits::lookup_classname): Fix handling of icase parameter. 2026-02-11 Jonathan Wakely PR libstdc++/124015 * testsuite/28_regex/traits/char/lookup_classname.cc: Check for correct result for unrecognized classname. Check that lookup is case insensitive. Check that all required classnames are recognized. Check that icase flag only affects "lower" and "upper". * testsuite/28_regex/traits/wchar_t/lookup_classname.cc: Likewise. 2026-02-10 Tomasz Kamiński PR libstdc++/123875 * include/bits/atomic_base.h (__atomic_impl::__clear_padding): Use if constexpr unconditionally. (__atomic_float<_Fp>::__atomic_float(_Fp)): Skip __clear_padding call for constant evaluation. * include/std/atomic (atomic<_Tp>::atomic(_Tp)): Likewise. * testsuite/29_atomics/atomic/cons/static_zero_padding.cc: New test. 2026-02-10 Jonathan Wakely PR libstdc++/123991 * include/bits/basic_string.h (compare(size_type, size_type, T)): Remove noexcept-specifier. (compare(size_type, size_type, T, size_type, size_type)): Likewise. * include/bits/cow_string.h (compare(size_type, size_type, T)): Remove noexcept-specifier. (compare(size_type, size_type, T, size_type, size_type)): Likewise. * testsuite/21_strings/basic_string/operations/compare/char/123991.cc: New test. * testsuite/21_strings/basic_string/operations/compare/wchar_t/123991.cc: New test. 2026-02-10 Patrick Palka * include/bits/regex.h (_Executor): Remove __dfs_mode template parameter and _V2 inline namespace. * include/bits/regex.tcc (__regex_algo_impl): Adjust after __dfs_mode template parameter removal. * include/bits/regex_executor.h (_Executor): Remove __dfs_mode parameter and _V2 inline namespace. * include/bits/regex_executor.tcc (_Executor): Likewise. 2026-02-10 Patrick Palka * include/bits/regex.tcc (__regex_algo_impl): Pass __use_dfs parameter to _Executor's constructor. * include/bits/regex_executor.h (_Executor::_Search_mode): New. (_Executor::_Executor): Add __use_dfs parameter and initialize _M_search_mode. Adjust after inlining _State_info members into _Executor. (_Executor::~_Executor): Free _M_visted_states. (_Executor::_M_main): Adjust after renaming _M_main_dispatch overloads to _M_main_dfs and _M_main_bfs. (_Executor::_State_info): Remove. (_Executor::_M_visited): Inlined from _State_info. (_Executor::_M_get_sol_pos): Likewise. (_Executor::_M_states): Remove. (_Executor::_M_start): Inlined from _State_info. (_Executor::_M_sol_pos): Likewise. (_Executor::_M_match_queue): Likewise. (_Executor::_M_search_mode): New. * include/bits/regex_executor.tcc (_Executor::_M_main_dispatch): Renamed to... (_Executor::_M_main_dfs, _Executor::_M_main_bfs): ... these. (_Executor::_M_*): Adjust after _M_states removal. (_Executor::_M_lookhead): Also adjust _Executor constructor call. 2026-02-09 Jonathan Wakely PR libstdc++/124024 * include/bits/out_ptr.h (out_ptr): Fix doxygen comment to refer to the right function. (inout_ptr): Improve markup in doxygen comment. 2026-02-06 Tomasz Kamiński * include/bits/hashtable.h (std::__heterogeneous_hash_key) [__glibcxx_associative_heterogeneous_erasure]: Changed guard. * include/bits/stl_tree.h (std::__heterogeneous_tree_key) [__glibcxx_associative_heterogeneous_erasure]: Likewise. * include/bits/stl_function.h: Add comment with C++ version for __glibcxx_associative_heterogeneous_erasure guard. 2026-02-06 Nathan Myers * include/bits/stl_function.h (concept __heterogeneous_key): Guard with __glibcxx_associative_heterogeneous_erasure 2026-02-06 Jonathan Wakely PR libstdc++/120567 * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Include "__sync_" in grep command to check for extern calls to libatomic. * configure: Regenerate. 2026-02-06 Jonathan Wakely * testsuite/Makefile.am (new-abi-baseline): Overwrite existing file instead of creating baseline_symbols.txt.new. * testsuite/Makefile.in: Regenerate. 2026-02-06 Nathan Myers * include/bits/stl_function.h (__heterogeneous_key): Use C++17-defined remove_cvref<>::type instead. 2026-02-05 Caolán McNamara * include/bits/regex.tcc (regex_traits::lookup_collatename): Make __collatenames array const. 2026-02-05 Jonathan Wakely * include/std/contracts (contract_violation::location): Use source_location default constructor and then set _M_impl. * include/std/source_location (source_location(const void*)): Remove constructor. * testsuite/18_support/contracts/includes.cc: Move to... * testsuite/18_support/contracts/srcloc.cc: ...here. Test for ambiguity caused by new constructor. 2026-02-05 Jonathan Wakely * python/libstdcxx/v6/printers.py (SharedPointerPrinter): Only use gdb.Type.is_scalar if supported. * testsuite/libstdc++-prettyprinters/compat.cc: Test printer for old implementation of std::atomic>. 2026-02-05 Jonathan Wakely * testsuite/28_regex/algorithms/regex_match/multiline.cc: Add string to static_assert. * testsuite/28_regex/sub_match/lwg3204.cc: Likewise. 2026-02-04 Nathan Myers PR libstdc++/117404 * include/bits/version.def (associative_heterogeneous_erasure): Define. * include/bits/version.h: Regenerate. * include/std/map: Request new feature from version.h. * include/std/set: Same. * include/std/unordered_map: Same. * include/std/unordered_set: Same. * include/bits/stl_map.h (extract, erase): Define overloads. * include/bits/stl_set.h: Same. * include/bits/stl_multimap.h: Same. * include/bits/stl_multiset.h: Same. * include/bits/unordered_map.h: Same, 2x. * include/bits/unordered_set.h: Same, 2x. * include/bits/stl_function.h (concepts __not_container_iterator, __heterogeneous_key): Define. * include/bits/hashtable.h (_M_find_before_node, _M_locate, extract): Delegate to more-general _tr version. (_M_find_before_node_tr, _M_locate_tr, _M_extract_tr, _M_erase_tr): Add new members to support a heterogeneous key argument. (_M_erase_some): Add new helper function. (concept __heterogeneous_hash_key): Define. * include/bits/stl_tree.h (_M_lower_bound_tr, _M_upper_bound_tr, _M_erase_tr, _M_extract_tr): Add new members to support a heterogeneous key argument. (concept __heterogeneous_tree_key): Define. * testsuite/23_containers/map/modifiers/hetero/erase.cc: New test. * testsuite/23_containers/multimap/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/multiset/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/set/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/unordered_map/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/unordered_multimap/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/unordered_multiset/modifiers/hetero/erase.cc: Same. * testsuite/23_containers/unordered_set/modifiers/hetero/erase.cc: Same. 2026-02-03 Marek Polacek * include/bits/new_allocator.h (__new_allocator::allocate, __new_allocator::deallocate): Add missing constexpr. 2026-02-03 Jakub Jelinek PR libstdc++/123921 * include/bits/version.def (define_static): New with the same values as reflection. * include/bits/version.h: Regenerate. * include/std/meta: Define also __glibcxx_want_define_static before including bits/version.h. 2026-02-02 Patrick Palka * include/bits/regex_executor.tcc (_ExecutorFrameBase): Zero-initialize _M_byte0. (_ExecutorFrameBase::_M_end): Rename to ... (_ExecutorFrameBase::_M_subexpr_end): ... this. (_Executor::_M_handle_subexpr_begin): Remove now redundant clearing of _M_subexpr_end. (_Executor::_M_handle_subexpr_end): Adjust after renaming. (_Executor::_M_dfs) : Likewise. 2026-01-31 Patrick Palka * include/bits/regex_executor.tcc (_ExecutorFrameBase): Add #pragma GCC diagnostic to suppress -Wpedantic warning about anonymous structs. 2026-01-30 Patrick Palka * include/bits/regex_executor.tcc (__detail::_Executor::_M_node) [__OPTIMIZE__]: Add [[gnu::always_inline]] attribute. Declare inline. 2026-01-30 Patrick Palka PR libstdc++/86164 * include/bits/regex_executor.tcc (__detail::_ExecutorFrameOpcode): Remove _S_fopcode_restore_current. (__detail::_Executor::_M_handle_repeat): Pass _M_current when pushing a fallback_next or fallback_rep_once_more frame. (__detail::_Executor::_M_handle_match): Don't push a restore_current frame. (__detail::_Executor::_M_handle_backref): Likewise and simplify accordingly. (__detail::_Executor::_M_handle_alternative): Pass _M_current when pushing a fallback_next or posix_alternative frame. (__detail::_Executor::_M_dfs) : Restore _M_current. : Likewise. : Likewise. : Remove. 2026-01-30 Patrick Palka PR libstdc++/86164 * include/bits/regex.h (__detail::_Executor): Use inline namespace _V2. * include/bits/regex_executor.h (__detail::_ExecutorFrame): Declare. (__detail::_Executor): Use inline namespace _V2. (__detail::_Executor::_M_node): Declare. (__detail::_Executor::_M_frames): New data member. * include/bits/regex_executor.tcc (__detail::_ExecutorFrameOpcode): New. (__detail::_ExecutorFrameBase): New. (__detail::_ExecutorFrame): New. (__detail::_Executor): Use inline namespace _V2. (__detail::_Executor::_M_rep_once_more): Replace recursive _M_dfs calls with an _S_opcode_next frame push, and any work after such calls with an appropriate frame push. (__detail::_M_handle_repeat): Likewise. (__detail::_M_handle_subexpr_begin): Likewise. (__detail::_M_handle_subexpr_end): Likewise. (__detail::_M_handle_line_begin_assertion): Likewise. (__detail::_M_handle_line_end_assertion): Likewise. (__detail::_M_handle_word_boundary): Likewise. (__detail::_M_handle_subexpr_lookahead): Likewise. (__detail::_M_handle_match): Likewise. (__detail::_M_handle_backref): Likewise. (__detail::_M_handle_accept): Likewise. (__detail::_M_handle_alternative): Likewise. (__detail::_M_node): Factored out from _M_dfs. (__detail::_M_dfs): Push an initial frame to _M_frames that visits the starting node and pass this stack each subroutine. Pop the latest _ExecutorFrame from _M_frames and handle appropriately according to its _ExecutorFrameOpcode. Loop until _M_frames is empty. 2026-01-29 Jonathan Wakely * include/std/expected (__expected::__trivially_replaceable) (__expected::__usable_for_assign) (__expected::__usable_for_trivial_assign) (__expected::__can_reassign_type): New concepts. (expected::operator=): Adjust constraints on existing overloads and add defaulted overload. (expected::operator=): Likewise. * testsuite/20_util/expected/requirements.cc: Check for trivial and nothrow properties of assignments. 2026-01-29 Jonathan Wakely * include/std/source_location: Check __glibcxx_contracts instead of __cpp_lib_contracts. * testsuite/18_support/contracts/includes.cc: New test. 2026-01-29 vspefs * src/c++23/std.cc.in (invoke_default_violation_handler): Change to invoke_default_contract_violation_handler. 2026-01-29 Jonathan Wakely * include/std/contracts: Replace non-ASCII characters. 2026-01-28 Jonathan Wakely * src/experimental/Makefile.am: Change AM_CXXFLAGS to use C++20 by default. 2026-01-28 Jonathan Wakely * src/experimental/contract26.cc: Use #error if built without contracts support enabled. * include/std/source_location: Remove stray whitespace. 2026-01-28 Jonathan Wakely PR tree-optimization/122197 * include/bits/shared_ptr_base.h (~_Sp_counted_deleter): Use diagnostic pragam to disable -Wfree-nonheap-object false positive. (~_Sp_counted_ptr_inplace): Likewise for -Warray-bounds false positive. 2026-01-28 Jonathan Wakely * config/locale/gnu/ctype_members.cc (use_table): New function. (ctype::do_narrow): Use use_table. 2026-01-28 Soumya AR * include/bits/atomic_base.h: Add fetch_min and fetch_max memberfunctions. * include/bits/version.def: Add __cpp_lib_atomic_min_max feature test macro. * include/bits/version.h (defined): Regenerate. * include/std/atomic: Extend for fetch_min/max non-member functions. * src/c++23/std.cc.in: Export atomic_fetch_min, atomic_fetch_max, atomic_fetch_min_explicit, atomic_fetch_max_explicit. * testsuite/29_atomics/atomic_integral/nonmembers_fetch_minmax.cc: New test. * testsuite/29_atomics/atomic_ref/integral_fetch_minmax.cc: New test. 2026-01-28 Nina Ranns Iain Sandoe Ville Voutilainen * include/Makefile.am: Add contract include. * include/Makefile.in: Regenerate. * include/bits/version.def: Add ftm for contracts. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Add contracts header. * include/std/source_location: Befriend the contract_violation class so that we can initialise a source_location from an existing __impl *. * src/c++23/std.cc.in: Add contracts support. * src/experimental/Makefile.am: Add new contract violation implementation, remove the old one. * src/experimental/Makefile.in: Regenerate. * include/experimental/contract: Removed. * src/experimental/contract.cc: Removed. * include/std/contracts: New file. * src/experimental/contract26.cc: New file. * testsuite/18_support/contracts/invoke_default_cvh.cc: New test. * testsuite/18_support/contracts/invoke_default_cvh2.cc: New test. 2026-01-23 Tomasz Kamiński PR libstdc++/123758 * include/bits/funcwrap.h (_Cpy_base(_Cpy_base const&)): Explicitly call _Mo_base() in initializer list. 2026-01-22 Frank Scheiner * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Regenerate. 2026-01-20 Jakub Jelinek * include/bits/version.def (reflection): Add cxx11abi = yes;. * include/bits/version.h: Regenerate. 2026-01-19 Tomasz Kamiński PR libstdc++/114153 * include/bits/ranges_cmp.h (__detail::__less_builtin_ptr_cmp): Add __not_overloaded_spaceship spaceship check. * include/bits/stl_function.h (greater::operator()) (less::operator(), greater_equal::operator()) (less_equal::operator()): Implement using if constexpr. (greater::__S_cmp, less::__S_cmp) (greater_equal::__ptr_comp, less_equal::S_cmp): Remove. (greater::__ptr_cmp, less::__ptr_cmp) (greater_equal::__ptr_comp, less_equal::ptr_cmp): Change tostatic constexpr variable. Define in terms of requires expressions and __not_overloaded_spaceship check. * include/std/concepts: (__detail::__not_overloaded_spaceship): Define. * libsupc++/compare: (__detail::__3way_builtin_ptr_cmp): Use __not_overloaded_spaceship concept. * testsuite/20_util/function_objects/comparisons_pointer_spaceship.cc: New test. 2026-01-19 Tomasz Kamiński * include/bits/erase_if.h (__detail::__erase_if): Pass mutable iterators to __cont.erase. 2026-01-19 François Dumont * include/bits/erase_if.h (__detail::__erase_if): New. * include/debug/deque (std::erase_if<>(__debug::deque<>&, _Pred)): Use latter. * include/debug/inplace_vector (std::erase_if<>(__debug::inplace_vector<>&, _Pred)): Likewise. * include/debug/vector (std::erase_if<>(__debug::vector<>&, _Pred)): Likewise. * include/std/deque: Include erase_if.h. (std::erase_if<>(std::vector<>&, _Pred)): Adapt to use __detail::__erase_if. * include/std/inplace_vector (std::erase_if<>(std::inplace_vector<>&, _Pred)): Likewise. * include/std/string (std::erase_if<>(std::basic_string<>&, _Pred)): Likewise. * include/std/vector (std::erase_if<>(std::vector<>&, _Pred)): Likewise. * include/debug/forward_list (std::erase_if<>(__debug::forward_list<>&, _Pred)): New. (std::erase<>(__debug::forward_list<>&, const _Up&)): New. * include/debug/list (std::erase_if<>(__debug::list<>&, _Pred)): New. (std::erase<>(__debug::list<>&, const _Up&)): New. * include/debug/map (std::erase_if<>(__debug::map<>&, _Pred)): New. (std::erase_if<>(__debug::multimap<>&, _Pred)): New. * include/debug/set (std::erase_if<>(__debug::set<>&, _Pred)): New. (std::erase_if<>(__debug::multiset<>&, _Pred)): New. * include/debug/string (std::erase_if<>(__gnu_debug::basic_string<>&, _Pred)): New. (std::erase<>(__gnu_debug::basic_string<>&, const _Up&)): New. * include/debug/unordered_map (std::erase_if<>(__debug::unordered_map<>&, _Pred)): New. (std::erase_if<>(__debug::unordered_multimap<>&, _Pred)): New. * include/debug/unordered_set (std::erase_if<>(__debug::unordered_set<>&, _Pred)): New. (std::erase_if<>(__debug::unordered_multiset<>&, _Pred)): New. * include/std/forward_list (std::erase_if<>(std::forward_list<>&, _Pred)): Adapt to work exclusively for normal implementation. (std::erase<>(std::forward_list<>&, const _Up&)): Likewise. * include/std/list (std::erase_if<>(std::list<>&, _Pred)): Likewise. (std::erase<>(std::list<>&, const _Up&)): Likewise. * include/std/map (std::erase_if<>(std::map<>&, _Pred)): Likewise. (std::erase_if<>(std::multimap<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/set (std::erase_if<>(std::set<>&, _Pred)): Likewise. (std::erase_if<>(std::multiset<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/unordered_map (std::erase_if<>(std::unordered_map<>&, _Pred)): Likewise. (std::erase_if<>(std::unordered_multimap<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * include/std/unordered_set (std::erase_if<>(std::unordered_set<>&, _Pred)): Likewise. (std::erase_if<>(std::unordered_multiset<>&, _Pred)): Likewise. Guard functions using __cpp_lib_erase_if. * testsuite/21_strings/basic_string/debug/erase.cc: New test case. * testsuite/23_containers/forward_list/debug/erase.cc: New test case. * testsuite/23_containers/forward_list/debug/invalidation/erase.cc: New test case. * testsuite/23_containers/list/debug/erase.cc: New test case. * testsuite/23_containers/list/debug/invalidation/erase.cc: New test case. * testsuite/23_containers/map/debug/erase_if.cc: New test case. * testsuite/23_containers/map/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/multimap/debug/erase_if.cc: New test case. * testsuite/23_containers/multimap/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/multiset/debug/erase_if.cc: New test case. * testsuite/23_containers/multiset/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/set/debug/erase_if.cc: New test case. * testsuite/23_containers/set/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_map/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_map/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_multimap/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_multiset/debug/invalidation/erase_if.cc: New test case. * testsuite/23_containers/unordered_set/debug/erase_if.cc: New test case. * testsuite/23_containers/unordered_set/debug/invalidation/erase_if.cc: New test case. 2026-01-15 Jakub Jelinek * include/std/type_traits (std::is_reflection, std::is_fundamental, std::is_reflection_v, std::is_consteval_only): Compare __cpp_impl_reflection >= 202506L instead of 202500L. * testsuite/20_util/variable_templates_for_traits.cc: Likewise. 2026-01-15 Marek Polacek Jakub Jelinek PR c++/120775 PR c++/123081 PR c++/122634 * include/Makefile.am (std_headers): Add ${std_srcdir}/meta. * include/Makefile.in: Regenerate. * include/bits/iterator_concepts.h (std::ranges::__access::__begin): Add constexpr. * include/bits/version.def (reflection): New. * include/bits/version.h: Regenerate. * include/precompiled/stdc++.h: Include for C++26. * include/std/meta: New file. * include/std/type_traits (std::is_reflection): New trait. (std::is_fundamental): Include is_reflection for C++26 -freflection. (std::is_reflection_v): New variable template. (std::is_consteval_only): New trait. (std::is_consteval_only_v): New variable template. * src/c++23/std.cc.in: Add exports. * testsuite/20_util/variable_templates_for_traits.cc: Add -freflection as dg-additional-options for C++26. Add std::is_reflection_v test in that case. * testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc: New test. * testsuite/20_util/is_consteval_only/requirements/typedefs.cc: New test. * testsuite/20_util/is_consteval_only/value.cc: New test. * testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc: New test. * testsuite/20_util/is_reflection/requirements/typedefs.cc: New test. * testsuite/20_util/is_reflection/value.cc: New test. 2026-01-14 Tomasz Kamiński * testsuite/util/testsuite_iterators.h: Modify comment. 2026-01-13 Tomasz Kamiński * include/bits/stl_heap.h (std::__is_heap_until, std::__push_heap) (std::__adjust_heap): Replace subscript with dereference of advanced iterator. * testsuite/util/testsuite_iterators.h (__gnu_test::subscript_proxy) (__gnu_test::proxy_random_access_iterator_wrapper): Define. * testsuite/25_algorithms/sort_heap/check_proxy_brackets.cc: New test. 2026-01-12 Jakub Jelinek * config/abi/pre/gnu.ver (CXXABI_1.3.14): Don't export _ZTI*DF16_ on s390x. (CXXABI_1.3.17): Export _ZTI*DF16_ on s390x. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Remove _ZTI{,P,K}DF16_. 2026-01-12 Jonathan Wakely * src/c++20/atomic.cc (__detail::__spin_impl): Do not use reserved names for variables. 2026-01-12 Jonathan Wakely * include/bits/atomic_wait.h (__wait_args): Improve comments. * src/c++20/atomic.cc (__wait_args::_M_setup_proxy_wait): Improve comment. 2026-01-12 Tomasz Kamiński * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc: Updated test. 2026-01-10 Stefan Schulze Frielinghaus * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Add names {,P,K}DF16. 2026-01-10 Wang Jinghao * src/c++11/system_error.cc (system_error_category) [_WIN32]: Use FormatMessageA function instead of FormatMessage macro. * testsuite/19_diagnostics/error_category/system_category.cc: Fix typo in __MINGW32__ macro name. Adjust behavior on the mingw32 target. 2026-01-10 Yuao Ma * include/bits/version.def: Add FTM. * include/bits/version.h: Regenerate. * include/std/flat_map: Add constexpr. * testsuite/23_containers/flat_map/1.cc: Add constexpr test. * testsuite/23_containers/flat_multimap/1.cc: Add constexpr test. 2026-01-09 Jonathan Wakely * src/c++20/atomic.cc (use_proxy_wait): Remove unused second parameter. (__wait_args::_M_setup_proxy_wait): Remove second argument. (__notify_impl): Likewise. 2026-01-09 Jonathan Wakely * include/bits/atomic_timed_wait.h (__atomic_wait_address_until): Use _M_on_wake instead of _M_setup_wait after waking. (__atomic_wait_address_for): Likewise. * include/bits/atomic_wait.h (__atomic_wait_address): Likewise. (__wait_args::_M_setup_wait): Remove third parameter and move code to update _M_old to ... (__wait_args::_M_on_wake): New member function to update _M_old after waking, only calling _M_setup_proxy_wait if needed. (__wait_args::_M_store): New member function to update _M_old from a value, for non-proxy waits. * src/c++20/atomic.cc (__wait_args::_M_setup_proxy_wait): If _M_obj is not addr, only load a new value and return true. 2026-01-09 Jonathan Wakely Tomasz Kamiński PR libstdc++/122878 * include/bits/semaphore_base.h (_M_try_acquire): Replace _M_try_acquire_for call with explicit loop and call to __atomic_wait_address_for. (_M_try_acquire_for): Replace loop with call to _M_try_acquire_until. 2026-01-09 Keith Packard * acinclude.m4 (GLIBCXX_CONFIGURE): Add --with-picolibc. * configure: Regenerate. * configure.ac: Add handling for with_picolibc=yes. * config/os/picolibc/ctype_base.h: New file. * config/os/picolibc/ctype_configure_char.cc: New file. * config/os/picolibc/ctype_inline.h: New file. * config/os/picolibc/os_defines.h: New file. 2026-01-08 Tomasz Kamiński * testsuite/20_util/variant/constinit.cc: Use scan-tree-dump for matching of constructor. * testsuite/20_util/variant/constinit_compat.cc: Likewise. * testsuite/lib/libstdc++.exp: Load scantree.exp and scandump.exp. 2026-01-07 Jonathan Wakely PR libstdc++/123100 * include/std/sstream (basic_stringbuf::str()&&): Handle the case where _M_string is not being used for the buffer. * testsuite/27_io/basic_stringbuf/str/char/123100.cc: New test. 2026-01-07 Jonathan Wakely * include/bits/atomic_wait.h (__wait_args::_M_setup_wait): Remove unreachable return statement. 2026-01-07 Jonathan Wakely PR libstdc++/123406 * acinclude.m4 (GLIBCXX_CHECK_STDIO_LOCKING): Override detection of flockfile for non-cygwin newlib targets. * configure: Regenerate. 2026-01-07 Jonathan Wakely PR libstdc++/123378 * include/std/barrier (~__tree_barrier_base): Define. 2026-01-07 Jakub Jelinek PR libstdc++/123183 PR libstdc++/123326 * libsupc++/exception (std::bad_exception::~bad_exception(), std::bad_exception::what()): Add inline keyword and [[__gnu__::__gnu_inline__]] attribute to the C++26 constexpr exceptions definitions. * libsupc++/exception.h (std::exception::~exception(), std::exception::what()): Likewise. * libsupc++/exception_ptr.h (std::exception_ptr::exception_ptr(void*)): Likewise. * libsupc++/nested_exception.h (std::nested_exception::~nested_exception()): Likewise. * libsupc++/typeinfo (std::bad_cast::~bad_cast(), std::bad_cast::what(), std::bad_typeid::~bad_typeid(), std::bad_typeid::what()): Likewise. * include/bits/new_except.h (std::bad_alloc::~bad_alloc(), std::bad_alloc::what(), std::bad_array_new_length::~bad_array_new_length(), std::bad_array_new_length::what()): Likewise. * include/bits/stdexcept_except.h (std::logic_error::logic_error(const string&), std::logic_error::logic_error(const char*), std::logic_error::~logic_error(), std::logic_error::what(), std::domain_error::domain_error(const string&), std::domain_error::domain_error(const char*), std::invalid_argument::invalid_argument(const string&), std::invalid_argument::invalid_argument(const char*), std::length_error::length_error(const string&), std::length_error::length_error(const char*), std::out_of_range::out_of_range(const string&), std::out_of_range::out_of_range(const char*), std::runtime_error::runtime_error(const string&), std::runtime_error::runtime_error(const char*), std::runtime_error::~runtime_error(), std::runtime_error::what(), std::overflow_error::overflow_error(const string&), std::overflow_error::overflow_error(const char*), std::overflow_error::~overflow_error(), std::underflow_error::underflow_error(const string&), std::underflow_error::underflow_error(const char*), std::underflow_error::~underflow_error()): Likewise. (std::domain_error::~domain_error(), std::invalid_argument::~invalid_argument(), std::length_error::~length_error(), std::out_of_range::~out_of_range()): Likewise. Also change _GLIBCXX_NOTHROW to noexcept on those definitions. Copyright (C) 2026 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.