mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 06:49:09 +02:00
1589 lines
62 KiB
Plaintext
1589 lines
62 KiB
Plaintext
2026-03-21 Matthias Kretz <m.kretz@gsi.de>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* src/c++20/tzdb.cc [_AIX]: Change #ifndef to #ifdef.
|
||
|
||
2026-03-20 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/124568
|
||
* testsuite/24_iterators/istreambuf_iterator/105580.cc: Add
|
||
no_pch option.
|
||
|
||
2026-03-20 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* src/c++17/fs_path.cc (path::operator+=): Use pointer
|
||
comparison to detect aliasing instead of a loop.
|
||
|
||
2026-03-20 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/generator (_Stateless_alloc): Swap order of
|
||
constraints.
|
||
|
||
2026-03-19 François Dumont <frs.dumont@gmail.com>
|
||
|
||
* 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 <jakub@redhat.com>
|
||
|
||
PR libstdc++/121790
|
||
* src/c++23/std.cc.in: Add enable_nonlocking_formatter_optimization.
|
||
|
||
2026-03-19 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR libstdc++/118030
|
||
* src/c++23/std.cc.in: Add allocation_result.
|
||
|
||
2026-03-19 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR c++/120775
|
||
* src/c++23/std.cc.in: Add is_reflection{,_v} and
|
||
is_consteval_only{,_v}.
|
||
|
||
2026-03-19 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
PR libstdc++/119794
|
||
* src/c++23/std.cc.in: Add philox_engine and philox4x{32,64}.
|
||
|
||
2026-03-19 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* src/c++23/std.cc.in: Export views::indices.
|
||
|
||
2026-03-19 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* testsuite/17_intro/names.cc (ext, max_iter, ret, subs, Rg, Rs):
|
||
Define macros.
|
||
[__cplusplus < 201103] (mutex): Define macro.
|
||
|
||
2026-03-18 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* 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 <jakub@redhat.com>
|
||
|
||
* include/bits/regex_compiler.h (_Compiler::_M_pop): Uglify ret
|
||
variable name.
|
||
|
||
2026-03-18 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
Revert:
|
||
2026-03-16 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
* testsuite/23_containers/mdspan/extents/ctor_ints.cc: Updated
|
||
is_explicit, and added more test cases.
|
||
|
||
2026-03-16 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <frs.dumont@gmail.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* include/std/text_encoding: Fix @since in Doxygen comment.
|
||
|
||
2026-03-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* 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 <jakub@redhat.com>
|
||
|
||
PR libstdc++/124443
|
||
* include/std/meta (std::define_static_object): Use CTAD for span.
|
||
|
||
2026-03-11 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* include/std/chrono (hh_mm_ss): Add comment about LWG 4274.
|
||
|
||
2026-03-10 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
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
|
||
<bits/version.h> 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 <jwakely@redhat.com>
|
||
|
||
* include/bits/basic_string.h: Check __glibcxx_to_string instead
|
||
of __cplusplus.
|
||
|
||
2026-03-10 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* include/std/format (__format::_Ptr_sink, __format::__format_padded)
|
||
(std::enable_nonlocking_formatter_optimization<pair<_Fp, _Sp>>):
|
||
Replaced 8 spaces with tabs.
|
||
|
||
2026-03-10 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <frs.dumont@gmail.com>
|
||
|
||
* include/debug/string
|
||
[__cplusplus >= 201103L](basic_string(_Ite, _Ite, const _Alloc&)): Add
|
||
std::_RequireInputIter<_Ite> template parameter.
|
||
|
||
2026-03-09 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/meta (exception::what, access_context::via): Use
|
||
__asm__ instead of asm keyword.
|
||
|
||
2026-03-09 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <frs.dumont@gmail.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* include/bits/fs_path.h (std::formatter<filesystem::path, _CharT>):
|
||
Format _Utf_view directly via __formatter_str::_M_format_range.
|
||
|
||
2026-03-06 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <ncm@cantrip.org>
|
||
|
||
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 <frs.dumont@gmail.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
Ivan Lazaric <ivan.lazaric1@gmail.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
PR libstdc++/124363
|
||
* include/std/string_view: Adjust comment on #endif to match #if
|
||
condition.
|
||
|
||
2026-03-04 Nathan Myers <ncm@cantrip.org>
|
||
|
||
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 <ncm@cantrip.org>
|
||
|
||
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 <adam.wood@mines.sdsmt.edu>
|
||
|
||
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 <arthur.j.odwyer@gmail.com>
|
||
|
||
PR libstdc++/119197
|
||
* include/std/expected (expected, expected<void, E>): Add
|
||
[[nodiscard]] to class.
|
||
* testsuite/20_util/expected/119197.cc: New test.
|
||
|
||
2026-03-03 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/atomic (atomic<T*>::wait, atomic<T*>::notify_one)
|
||
(atomic<T*>::notify_all): Fix indentation.
|
||
|
||
2026-03-03 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/bits/regex_compiler.h: Adjust comments so that
|
||
standard references are specific to C++11.
|
||
|
||
2026-03-02 François Dumont <frs.dumont@gmail.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
PR libstdc++/105580
|
||
* testsuite/24_iterators/istreambuf_iterator/105580.cc:
|
||
Add dg-bogus check for warning.
|
||
|
||
2026-03-02 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
PR libstdc++/105580
|
||
* testsuite/24_iterators/istreambuf_iterator/105580.cc: New test.
|
||
|
||
2026-02-26 Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
|
||
|
||
* testsuite/29_atomics/atomic_ref/requirements_neg.cc: Add
|
||
using std::size_t.
|
||
|
||
2026-02-26 Yuao Ma <c8ef@outlook.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
* testsuite/23_containers/mdspan/at.cc: Updated guard.
|
||
|
||
2026-02-24 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* testsuite/23_containers/mdspan/at.cc: Updated test.
|
||
|
||
2026-02-23 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* include/std/mdspan (mdspan::at, mdspan::__index_int_t):
|
||
Define.
|
||
* testsuite/23_containers/mdspan/at.cc: New test.
|
||
|
||
2026-02-20 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* testsuite/lib/libstdc++.exp (v3-minimum-std): Remove second
|
||
and third args in favour of using globals.
|
||
|
||
2026-02-19 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <ppalka@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
PR libstdc++/124124
|
||
* testsuite/29_atomics/atomic/cons/zero_padding.cc: Adjust
|
||
dg-require.
|
||
|
||
2026-02-17 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <ivan.lazaric1@gmail.com>
|
||
Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/bits/fs_path.h: Include bits/formatfwd.h.
|
||
(std::formatter<filesystem::path, _CharT>): 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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
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 <ppalka@redhat.com>
|
||
|
||
* 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 <xry111@xry111.site>
|
||
Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* testsuite/17_intro/badnames.cc (__unused): Do not define.
|
||
* testsuite/17_intro/names.cc [glibc == 2.43] (__unused): Undef.
|
||
|
||
2026-02-12 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/type_traits (is_function): Declare before first
|
||
use.
|
||
|
||
2026-02-12 Patrick Palka <ppalka@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* 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<char>.
|
||
(regex_traits::lookup_classname): Replace lookup table with
|
||
handwritten prefix match.
|
||
|
||
2026-02-11 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/124015
|
||
* include/bits/regex.tcc (regex_traits::lookup_classname): Fix
|
||
handling of icase parameter.
|
||
|
||
2026-02-11 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
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 <ppalka@redhat.com>
|
||
|
||
* 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 <ppalka@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
* include/bits/stl_function.h (concept __heterogeneous_key):
|
||
Guard with __glibcxx_associative_heterogeneous_erasure
|
||
|
||
2026-02-06 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
* include/bits/stl_function.h (__heterogeneous_key): Use
|
||
C++17-defined remove_cvref<>::type instead.
|
||
|
||
2026-02-05 Caolán McNamara <caolanm@gmail.com>
|
||
|
||
* include/bits/regex.tcc (regex_traits::lookup_collatename):
|
||
Make __collatenames array const.
|
||
|
||
2026-02-05 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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<std::shared_ptr<T>>.
|
||
|
||
2026-02-05 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* 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 <ncm@cantrip.org>
|
||
|
||
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 <polacek@redhat.com>
|
||
|
||
* include/bits/new_allocator.h (__new_allocator::allocate,
|
||
__new_allocator::deallocate): Add missing constexpr.
|
||
|
||
2026-02-03 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
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 <ppalka@redhat.com>
|
||
|
||
* 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) <case _S_fopcode_restore_cur_results>:
|
||
Likewise.
|
||
|
||
2026-01-31 Patrick Palka <ppalka@redhat.com>
|
||
|
||
* include/bits/regex_executor.tcc (_ExecutorFrameBase): Add
|
||
#pragma GCC diagnostic to suppress -Wpedantic warning about
|
||
anonymous structs.
|
||
|
||
2026-01-30 Patrick Palka <ppalka@redhat.com>
|
||
|
||
* include/bits/regex_executor.tcc (__detail::_Executor::_M_node)
|
||
[__OPTIMIZE__]: Add [[gnu::always_inline]] attribute. Declare
|
||
inline.
|
||
|
||
2026-01-30 Patrick Palka <ppalka@redhat.com>
|
||
|
||
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) <case _S_fopcode_fallback_next>:
|
||
Restore _M_current.
|
||
<case _S_fopcode_fallback_rep_once_more>: Likewise.
|
||
<case _S_fopcode_posix_alternative>: Likewise.
|
||
<case _S_fopcode_restore_current>: Remove.
|
||
|
||
2026-01-30 Patrick Palka <ppalka@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* 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<cv void, E>::operator=): Likewise.
|
||
* testsuite/20_util/expected/requirements.cc: Check for trivial
|
||
and nothrow properties of assignments.
|
||
|
||
2026-01-29 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/source_location: Check __glibcxx_contracts instead
|
||
of __cpp_lib_contracts.
|
||
* testsuite/18_support/contracts/includes.cc: New test.
|
||
|
||
2026-01-29 vspefs <vspefs@protonmail.com>
|
||
|
||
* src/c++23/std.cc.in (invoke_default_violation_handler): Change
|
||
to invoke_default_contract_violation_handler.
|
||
|
||
2026-01-29 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* include/std/contracts: Replace non-ASCII characters.
|
||
|
||
2026-01-28 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* src/experimental/Makefile.am: Change AM_CXXFLAGS to use C++20
|
||
by default.
|
||
|
||
2026-01-28 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* src/experimental/contract26.cc: Use #error if built without
|
||
contracts support enabled.
|
||
* include/std/source_location: Remove stray whitespace.
|
||
|
||
2026-01-28 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* config/locale/gnu/ctype_members.cc (use_table): New function.
|
||
(ctype<wchar_t>::do_narrow): Use use_table.
|
||
|
||
2026-01-28 Soumya AR <soumyaa@nvidia.com>
|
||
|
||
* 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 <dinka.ranns@gmail.com>
|
||
Iain Sandoe <iain@sandoe.co.uk>
|
||
Ville Voutilainen <ville.voutilainen@gmail.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
PR libstdc++/123758
|
||
* include/bits/funcwrap.h (_Cpy_base(_Cpy_base const&)):
|
||
Explicitly call _Mo_base() in initializer list.
|
||
|
||
2026-01-22 Frank Scheiner <frank.scheiner@web.de>
|
||
|
||
* config/abi/post/ia64-linux-gnu/baseline_symbols.txt:
|
||
Regenerate.
|
||
|
||
2026-01-20 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
* include/bits/version.def (reflection): Add cxx11abi = yes;.
|
||
* include/bits/version.h: Regenerate.
|
||
|
||
2026-01-19 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
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<void>::operator())
|
||
(less<void>::operator(), greater_equal<void>::operator())
|
||
(less_equal<void>::operator()): Implement using if constexpr.
|
||
(greater<void>::__S_cmp, less<void>::__S_cmp)
|
||
(greater_equal<void>::__ptr_comp, less_equal<void>::S_cmp):
|
||
Remove.
|
||
(greater<void>::__ptr_cmp, less<void>::__ptr_cmp)
|
||
(greater_equal<void>::__ptr_comp, less_equal<void>::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 <tkaminsk@redhat.com>
|
||
|
||
* include/bits/erase_if.h (__detail::__erase_if): Pass mutable
|
||
iterators to __cont.erase.
|
||
|
||
2026-01-19 François Dumont <frs.dumont@gmail.com>
|
||
|
||
* 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 <jakub@redhat.com>
|
||
|
||
* 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 <polacek@redhat.com>
|
||
Jakub Jelinek <jakub@redhat.com>
|
||
|
||
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 <meta> 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 <meta> 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 <tkaminsk@redhat.com>
|
||
|
||
* testsuite/util/testsuite_iterators.h: Modify comment.
|
||
|
||
2026-01-13 Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
* 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 <jakub@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* src/c++20/atomic.cc (__detail::__spin_impl): Do not use
|
||
reserved names for variables.
|
||
|
||
2026-01-12 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc:
|
||
Updated test.
|
||
|
||
2026-01-10 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
|
||
|
||
* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Add
|
||
names {,P,K}DF16.
|
||
|
||
2026-01-10 Wang Jinghao <zheng.xianyuwang@gmail.com>
|
||
|
||
* 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 <c8ef@outlook.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
Tomasz Kamiński <tkaminsk@redhat.com>
|
||
|
||
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 <keithp@keithp.com>
|
||
|
||
* 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 <tkaminsk@redhat.com>
|
||
|
||
* 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 <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
* include/bits/atomic_wait.h (__wait_args::_M_setup_wait):
|
||
Remove unreachable return statement.
|
||
|
||
2026-01-07 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
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 <jwakely@redhat.com>
|
||
|
||
PR libstdc++/123378
|
||
* include/std/barrier (~__tree_barrier_base): Define.
|
||
|
||
2026-01-07 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
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.
|