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.