| 2025-06-09 Nathan Myers <ncm@cantrip.org> |
| |
| PR libstdc++/119741 |
| * include/std/sstream: full implementation, really just |
| decls, requires clause and plumbing. |
| * include/bits/version.def, include/bits/version.h: |
| new preprocessor symbol |
| __cpp_lib_sstream_from_string_view. |
| * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| |
| 2025-06-08 John David Anglin <danglin@gcc.gnu.org> |
| |
| * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. |
| |
| 2025-06-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/30_threads/semaphore/1.cc: Check type properties and |
| max() values. |
| * testsuite/30_threads/semaphore/3.cc: New test. |
| * testsuite/30_threads/semaphore/cons_neg.cc: New test. |
| |
| 2025-06-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/semaphore_base.h (_Select_semaphore_impl): Rename |
| to _Semaphore_impl and use std::conditional_t instead of an |
| immediately invoked lambda expression. |
| * include/std/semaphore (counting_semaphore): Adjust to use new |
| name. |
| |
| 2025-06-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/30_threads/barrier/1.cc: Require hosted. Only |
| require gthreads for non-linux targets. |
| * testsuite/30_threads/barrier/2.cc: Likewise. |
| * testsuite/30_threads/semaphore/1.cc: Likewise. |
| * testsuite/30_threads/semaphore/2.cc: Likewise. |
| * testsuite/30_threads/semaphore/cons.cc: Likewise. |
| * testsuite/30_threads/semaphore/least_max_value_neg.cc: |
| Likewise. |
| * testsuite/30_threads/semaphore/try_acquire.cc: Likewise. |
| |
| 2025-06-06 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/120432 |
| * include/std/flat_map (flat_map::operator[]): Make the |
| non-template overloads call try_emplace directly. Remove |
| non-standard same_as constraint on the template overload. |
| * testsuite/23_containers/flat_map/1.cc (test08): New test. |
| |
| 2025-06-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__atomic_wait_address_until_v): |
| Add assertion to prevent use with proxy waits. |
| (__atomic_wait_address_for_v): Likewise. |
| * include/bits/atomic_wait.h (__atomic_wait_address_v): |
| Likewise. |
| |
| 2025-06-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_wait.h (__atomic_wait_address_v): Add bare |
| wait flag. |
| * include/bits/semaphore_base.h (__semaphore_base): Rename to |
| __semaphore_impl. Replace local variable and predicate lambdas |
| with _Available struct. |
| (__platform_semaphore_impl): New class template. |
| (__semaphore_impl): Remove alias template. |
| (_Select_semaphore_impl): New alias template. |
| * include/std/semaphore (counting_semaphore): Use |
| _Select_semaphore_impl. |
| |
| 2025-06-06 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/120565 |
| * include/bits/chrono_io.h |
| (operator<<(basic_ostream<_CharT, _Traits>&, const sys_info&)) |
| (operator<<(basic_ostream<_CharT, _Traits>&, const local_info&)): |
| Support wchar_t as _CharT. |
| * testsuite/std/time/format/empty_spec.cc: Instantiated test_infos for |
| wchar_t and increase timeout. |
| |
| 2025-06-06 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/std/time/format/empty_spec.cc: New tests and increased |
| timeout. |
| |
| 2025-06-05 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120548 |
| * include/std/format (__formatter_fp::_M_localize): Do not |
| include a leading sign character in the string to be grouped. |
| * testsuite/std/format/functions/format.cc: Check grouping when |
| sign is present in the output. |
| |
| 2025-06-05 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119152 |
| * src/c++23/std.cc.in (std::indirect, pmr::indirect) |
| [__cpp_lib_indirect] |
| (std::polymorphic, pmr::polymorphic) [__cpp_lib_polymorphic]: Export. |
| |
| 2025-06-05 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/120481 |
| * include/bits/chrono_io.h (__format::_S_chars): Reorder so it |
| contains "-{}". |
| (__format::_S_colon, __format::_S_slash, __format::_S_space) |
| (__format::_S_plus_minus): Updated starting indicies. |
| (__format::_S_minus_empty_spec): Define. |
| (__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_R_T): |
| Rework implementation. |
| (__formatter_chrono::_M_d_e, __formatter_chrono::_M_F) |
| (__formatter_chrono::_M_m, __formatter_chrono::_M_u_w) |
| (__formatter_chrono::_M_H_I, __formatter_chrono::_M_p): |
| Handle multi digits values. |
| (__formatter_chrono::_S_digit): Return string view. |
| (__formatter_chrono::_S_str_d1, __formatter_chrono::_S_str_d2) |
| (__formatter_chrono::_S_fill_two_digits): Define. |
| * testsuite/std/time/format/empty_spec.cc: Update test for |
| year_month_day, that uses '%F'. |
| * testsuite/std/time/format/pr120481.cc: New test. |
| |
| 2025-06-05 Nathan Myers <ncm@cantrip.org> |
| |
| Revert: |
| 2025-06-04 Nathan Myers <ncm@cantrip.org> |
| |
| PR libstdc++/119741 |
| * include/std/sstream: full implementation, really just |
| decls, requires clause and plumbing. |
| * include/bits/version.def, include/bits/version.h: |
| new preprocessor symbol |
| __cpp_lib_sstream_from_string_view. |
| * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| |
| 2025-06-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/std/time/format/empty_spec.cc: Only test time zones |
| for cxx11 string ABI. |
| |
| 2025-06-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/99832 |
| * include/bits/chrono.h (system_clock::to_time_t): Add |
| always_inline attribute to be agnostic to the underlying type of |
| time_t. |
| (system_clock::from_time_t): Add always_inline for consistency |
| with to_time_t. |
| * testsuite/20_util/system_clock/99832.cc: New test. |
| |
| 2025-06-04 Nathan Myers <ncm@cantrip.org> |
| |
| PR libstdc++/119741 |
| * include/std/sstream: full implementation, really just |
| decls, requires clause and plumbing. |
| * include/bits/version.def, include/bits/version.h: |
| new preprocessor symbol |
| __cpp_lib_sstream_from_string_view. |
| * testsuite/27_io/basic_stringbuf/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/char/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| * testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc: |
| New tests. |
| |
| 2025-06-04 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/c++config (_GLIBCXX_AUTO_CAST): Define. |
| * include/bits/iterator_concepts.h (_Decay_copy, __decay_copy): |
| Remove. |
| (__member_begin, __adl_begin): Use _GLIBCXX_AUTO_CAST instead of |
| __decay_copy as per P0849R8. |
| * include/bits/ranges_base.h (_Begin): Likewise. |
| (__member_end, __adl_end, _End): Likewise. |
| (__member_rbegin, __adl_rbegin, _RBegin): Likewise. |
| (__member_rend, __adl_rend, _Rend): Likewise. |
| (__member_size, __adl_size, _Size): Likewise. |
| (_Data): Likewise. |
| |
| 2025-06-04 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/std/time/format/empty_spec.cc: New tests. |
| |
| 2025-06-04 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/ranges_algo.h (__starts_with_fn, starts_with): |
| Define. |
| (__ends_with_fn, ends_with): Define. |
| * include/bits/version.def (ranges_starts_ends_with): Define. |
| * include/bits/version.h: Regenerate. |
| * include/std/algorithm: Provide __cpp_lib_ranges_starts_ends_with. |
| * src/c++23/std.cc.in (ranges::starts_with): Export. |
| (ranges::ends_with): Export. |
| * testsuite/25_algorithms/ends_with/1.cc: New test. |
| * testsuite/25_algorithms/starts_with/1.cc: New test. |
| |
| 2025-06-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/semaphore_base.h (_S_get_current): Replace with |
| non-static _M_get_current. |
| (_S_do_try_acquire): Replace with non-static _M_do_try_acquire. |
| |
| 2025-06-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/104928 |
| * include/bits/semaphore_base.h (_S_do_try_acquire): Take old |
| value by reference. |
| (_M_acquire): Move _S_do_try_acquire call out of the predicate |
| and loop on its result. Make the predicate capture and update |
| the local copy of the value. |
| (_M_try_acquire_until, _M_try_acquire_for): Likewise. |
| (_M_try_acquire): Just call _M_try_acquire_for. |
| * testsuite/30_threads/semaphore/104928-2.cc: New test. |
| * testsuite/30_threads/semaphore/104928.cc: New test. |
| |
| 2025-06-04 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/chrono_io.h (__formatter_chrono:_M_s): Add missing |
| __out argument to format_to call. |
| * testsuite/std/time/format/empty_spec.cc: New test. |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/stop_token: Check __glibcxx_jthread instead of |
| __cplusplus. |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/type_traits (is_destructible, is_destructible_v): |
| Define using new built-in. |
| (is_nothrow_destructible, is_nothrow_destructible_v): Likewise. |
| (is_trivially_destructible, is_trivially_destructible_v): |
| Likewise. |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__detail::__wait_until): |
| Remove incorrect comment. |
| (__atomic_wait_address_until_v): Do not take address of __args in |
| call to __detail::__wait_until. Fix return statement to refer to |
| member of __wait_result_type. |
| (__atomic_wait_address_for_v): Change parameter type from |
| time_point to duration. |
| * src/c++20/atomic.cc (__spin_until_impl): Fix incorrect |
| return value. Reuse result of first call to clock. |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_vector.h (~_Vector_base): Add unreachable |
| hint for negative capacity and cast to size_t explicitly. |
| * include/bits/vector.tcc (vector::_M_realloc_append): Use |
| size() instead of end() - begin(). |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/bit (__rotl, __rotr): Use static_cast for |
| conversion from int to unsigned. |
| |
| 2025-06-03 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++23/std.cc.in: Remove redundant checks for feature test |
| macros that are always true. |
| |
| 2025-06-02 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/basic_string.h (basic_string::size): Remove space |
| before parameter list. |
| (basic_string::capacity): Likewise. |
| * include/bits/stl_deque.h (deque::size): Likewise. |
| * include/bits/stl_vector.h (vector::size, vector::capacity): |
| Likewise. |
| * include/bits/vector.tcc (vector::_M_realloc_insert): Likewise. |
| (vector::_M_realloc_append): Likewise. |
| |
| 2025-06-02 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120386 |
| * include/bits/ranges_algo.h (__unique_copy_fn): Reorder |
| arguments for third case to match the first two cases. |
| * include/bits/stl_algo.h (__unique_copy): Replace three |
| overloads with two, depending only on the iterator category of |
| the input range. Dispatch to __unique_copy_1 for the |
| non-forward case. |
| (__unique_copy_1): New overloads for the case where the input |
| range uses non-forward iterators. |
| (unique_copy): Only pass the input range category to |
| __unique_copy. |
| * testsuite/25_algorithms/unique_copy/lwg2439.cc: New test. |
| |
| 2025-06-02 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/funcwrap.h (__polyfunc::__pass_by_rref): Define. |
| (__polyfunc::__param_t): Update to use __pass_by_rref. |
| * include/bits/cpyfunc_impl.h:: Assert that are parameters type |
| are complete. |
| * include/bits/funcref_impl.h: Likewise. |
| * include/bits/mofunc_impl.h: Likewise. |
| * testsuite/20_util/copyable_function/call.cc: New test. |
| * testsuite/20_util/function_ref/call.cc: New test. |
| * testsuite/20_util/move_only_function/call.cc: New test. |
| * testsuite/20_util/copyable_function/conv.cc: New test. |
| * testsuite/20_util/function_ref/conv.cc: New test. |
| * testsuite/20_util/move_only_function/conv.cc: New test. |
| * testsuite/20_util/copyable_function/incomplete_neg.cc: New test. |
| * testsuite/20_util/function_ref/incomplete_neg.cc: New test. |
| * testsuite/20_util/move_only_function/incomplete_neg.cc: New test. |
| |
| 2025-06-02 Jonathan Wakely <jwakely@redhat.com> |
| Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119152 |
| * include/bits/indirect.h (std::polymorphic, pmr::polymorphic) |
| [__glibcxx_polymorphic]: Define. |
| * include/bits/version.def (polymorphic): Define. |
| * include/bits/version.h: Regenerate. |
| * include/std/memory: Define __cpp_lib_polymorphic. |
| * testsuite/std/memory/polymorphic/copy.cc: New test. |
| * testsuite/std/memory/polymorphic/copy_alloc.cc: New test. |
| * testsuite/std/memory/polymorphic/ctor.cc: New test. |
| * testsuite/std/memory/polymorphic/ctor_poly.cc: New test. |
| * testsuite/std/memory/polymorphic/incomplete.cc: New test. |
| * testsuite/std/memory/polymorphic/invalid_neg.cc: New test. |
| * testsuite/std/memory/polymorphic/move.cc: New test. |
| * testsuite/std/memory/polymorphic/move_alloc.cc: New test. |
| |
| 2025-05-30 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/std/time/format/empty_spec.cc: New test. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h: Use __wait_result_type. |
| * include/bits/atomic_wait.h (__wait_result_type): New struct. |
| (__wait_args::_M_prep_for_wait_on): Rename to _M_setup_wait, use |
| __wait_result_type. |
| (__atomic_wait_address): Adjust to call _M_setup_wait. |
| * src/c++20/atomic.cc (__spin_impl): Use __wait_result_type. |
| (__wait_impl): Likewise. |
| (__spin_until_impl): Likewise. |
| (__wait_until_impl): Likewise. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118494 |
| PR libstdc++/110854 |
| PR libstdc++/98749 |
| * acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Remove checks for |
| sem_timedwait. Do not define _GLIBCXX_HAVE_POSIX_SEMAPHORE. |
| * config.h.in: Regenerate. |
| * configure: Regenerate. |
| * include/bits/semaphore_base.h (__platform_semaphore): Remove. |
| (__atomic_semaphore): Replace with __semaphore_base<bool> and |
| make type of _M_count depend on template parameter. Fix _S_max |
| constant to use correct type. |
| (__semaphore_base::_M_try_acquire): Qualify to avoid ADL. |
| (__semaphore_base::_M_release): Return old value. Remove FIXME |
| comment. |
| (__semaphore_impl): Replace typedef with alias template. |
| * include/bits/version.def (semaphore): Do not depend on |
| _GLIBCXX_HAVE_POSIX_SEMAPHORE. |
| * include/bits/version.h: Regenerate. |
| * include/std/semaphore (semaphore): Adjust type of _M_sem |
| member. Add constexpr to constructor. Add assertions to |
| (semaphore::semaphore(ptrdiff_t)): Add constexpr. Add assertion |
| for precondition. |
| (semaphore::release): Add assertion using value returned from |
| _M_release. |
| * testsuite/30_threads/semaphore/100806.cc: Increase template |
| argument for std::counting_semaphore, so constructor |
| precondition is met. |
| * testsuite/30_threads/semaphore/cons.cc: New test. |
| * testsuite/30_threads/semaphore/try_acquire_posix.cc: Remove. |
| * testsuite/30_threads/semaphore/platform_try_acquire_for.cc: |
| Removed. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/barrier (__tree_barrier_base): New class. |
| (__tree_barrier): Move non-dependent code into |
| __tree_barrier_base and derive from it. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118395 |
| PR libstdc++/108974 |
| PR libstdc++/98749 |
| * include/std/barrier (__tree_barrier): Use default |
| member-initializers. Change _M_state member from |
| unique_ptr<__state_t[]> to atomic<__state_t*>. Add |
| no_unique_address attribute to _M_completion. |
| (__tree_barrier::_M_arrive): Load value from _M_state. |
| (__tree_barrier::_M_invoke_completion): New member function to |
| ensure a throwing completion function will terminate, as |
| proposed in LWG 3898. |
| (__tree_barrier::max): Reduce by one to avoid overflow. |
| (__tree_barrier::__tree_barrier): Add constexpr. Qualify call to |
| std::move. Remove mem-initializers made unnecessary by default |
| member-initializers. Add precondition check. Only allocate state |
| array if not constant evaluated. |
| (__tree_barrier::arrive): Add precondition check. Do deferred |
| initialization of _M_state if needed. |
| (barrier): Add static_assert, as proposed in LWG 3898. |
| (barrier::barrier): Add constexpr. |
| * testsuite/30_threads/barrier/cons.cc: New test. |
| * testsuite/30_threads/barrier/lwg3898.cc: New test. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/latch (latch::arrive_and_wait): Optimise. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * config/abi/pre/gnu.ver: Add new symbol version and exports. |
| * include/bits/atomic_timed_wait.h (__platform_wait_until): Move |
| to atomic.cc. |
| (__cond_wait_until, __spin_until_impl): Likewise. |
| (__wait_until_impl): Likewise. Change __wait_args_base parameter |
| to non-const reference and change third parameter to |
| __wait_clock_t::duration. |
| (__wait_until): Change __wait_args_base parameter to non-const |
| reference. Change Call time_since_epoch() to get duration from |
| time_point. |
| (__wait_for): Change __wait_args_base parameter to non-const |
| reference. |
| (__atomic_wait_address_until): Call _M_prep_for_wait_on on args. |
| (__atomic_wait_address_for): Likewise. |
| (__atomic_wait_address_until_v): Qualify call to avoid ADL. Do |
| not forward __vfn. |
| * include/bits/atomic_wait.h (__platform_wait_uses_type): Use |
| alignof(T) not alignof(T*). |
| (__futex_wait_flags, __platform_wait, __platform_notify) |
| (__waitable_state, __spin_impl, __notify_impl): Move to |
| atomic.cc. |
| (__wait_impl): Likewise. Change __wait_args_base parameter to |
| non-const reference. |
| (__wait_args_base::_M_wait_state): New data member. |
| (__wait_args_base::_M_prep_for_wait_on): New member function. |
| (__wait_args_base::_M_load_proxy_wait_val): New member |
| function. |
| (__wait_args_base::_S_memory_order_for): Remove member function. |
| (__atomic_wait_address): Call _M_prep_for_wait_on on args. |
| (__atomic_wait_address_v): Qualify call to avoid ADL. |
| * src/c++20/Makefile.am: Add new file. |
| * src/c++20/Makefile.in: Regenerate. |
| * src/c++20/atomic.cc: New file. |
| * testsuite/17_intro/headers/c++1998/49745.cc: Remove XFAIL for |
| C++20 and later. |
| * testsuite/29_atomics/atomic/wait_notify/100334.cc: Remove use |
| of internal implementation details. |
| * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.35 version. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__wait_until_impl): Adjust |
| to use new naming. |
| * include/bits/atomic_wait.h (__waiter_pool_impl): Rename to |
| __waitable_state. |
| (__waiter_pool_impl::_S_wait): Rename to _M_waiters. |
| (__waiter_pool_impl::_S_impl_for): Rename to _S_state_for. |
| (__waiter_pool_impl::_S_track): Adjust to use new naming. |
| (__wait_impl, __notify_impl): Likewise. |
| * testsuite/29_atomics/atomic/wait_notify/100334.cc: Adjust to |
| use new naming. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h |
| (__atomic_wait_address_until_v): Replace __atomic_compare with |
| __atomic_eq. |
| (__atomic_wait_address_for_v): Likewise. |
| * include/bits/atomic_wait.h (__atomic_compare): Rename to |
| __atomic_eq. |
| (__atomic_wait_address_v): Replace __atomic_compare with |
| __atomic_eq. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__wait_until_impl): Change |
| first parameter to const void* and then static_cast to const |
| __platform_wait_t* when not using proxied wait. |
| (__wait_until): Change first parameter to const void*. |
| (__wait_for): Likewise. |
| (__atomic_wait_address_until): Remove reinterpret_cast and allow |
| address to implicitly convert to const void* instead. |
| (__atomic_wait_address_for): Likewise. |
| * include/bits/atomic_wait.h: (__wait_impl, __notify_impl): |
| Change first parameter to const void* and then static_cast to |
| const __platform_wait_t* when not using proxied wait. |
| (__atomic_wait_address, __atomic_notify_address) Remove |
| reinterpret_cast and allow address to implicitly convert to |
| const void* instead. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_wait.h (__platform_wait): Change function |
| template to a normal function. The parameter is always |
| __platform_wait_t* which is just int* for this implementation of |
| the function. |
| (__platform_notify): Likewise. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__to_wait_clock): Do not use |
| chrono::ceil if clock and duration are already correct type. |
| (__wait_until): Always call __to_wait_clock. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_wait.h (__notify_impl): Increment the |
| proxy value before returning early for the uncontended case. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__cond_wait_impl): Add |
| missing inline keyword. |
| (__spin_until_impl): Change parameter from pointer to reference. |
| Replace make_pair with list-initialization. Initialize variable |
| for return value. |
| (__wait_until_impl): Likewise. Remove some preprocessor |
| conditional logic. Use _S_track for contention tracking. |
| Avoid unnecessary const_cast. |
| (__wait_until): Change parameter from pointer to reference. |
| Replace make_pair with list-initialization. |
| (__wait_for): Change parameter from pointer to reference. Add |
| __do_spin flag to args. |
| * include/bits/atomic_wait.h (__waiter_pool_impl::_S_track): New |
| function returning an RAII object for contention tracking. |
| (__wait_flags): Do not set the __do_spin flag in the __spin_only |
| enumerator. Comment out the unused __abi_version_mask |
| enumerator. Define operator| and operator|= overloads. |
| (__wait_args_base::operator&): Define. |
| (__wait_args::operator&, __wait_args::_S_default_flags): Remove. |
| (__wait_args::operator|, __wait_args::operator|=): Remove. |
| (__spin_impl): Change parameter from pointer to reference. |
| Replace make_pair call with list-initialization. |
| (__wait_impl): Likewise. Remove some preprocessor conditional |
| logic. Always store old value in __args._M_old. Avoid |
| unnecessary const_cast. Use _S_track. |
| (__notify_impl): Change parameter to reference. Remove some |
| preprocessor conditional logic. |
| (__atomic_wait_address): Add comment. Update __args._M_old on |
| each iteration. |
| (__atomic_wait_address_v): Add comment. |
| * include/std/latch (latch::wait): Adjust predicates for new |
| logic. |
| * testsuite/29_atomics/atomic_integral/wait_notify.cc: Improve |
| test. |
| |
| 2025-05-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h: Whitespace fixes. |
| * include/bits/atomic_wait.h: Likewise. |
| |
| 2025-05-30 Thomas Rodgers <trodgers@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h (__spin_until_impl): Accept |
| __wait_args as const __wait_args_base*. |
| (__wait_until_impl): Likewise. |
| (__wait_until): Likewise. |
| (__wait_for): Likewise. |
| (__atomic_wait_address_until): Pass __wait_args by address. |
| (__atomic_wait_address_for): Likewise. |
| * include/bits/atomic_wait.h (__wait_args_base): New struct. |
| (__wait_args): Derive from __wait_args_base. |
| (__wait_args::__wait_args()): Adjust ctors to call call base ctor. |
| (__wait_args::__wait_args(const __wait_args_base&)): New ctor. |
| (__wait_args::operator|=): New method. |
| (__wait_args::_S_flags_for): Change return type to |
| __wait_flags. |
| (__spin_impl): Accept __wait_args as const __wait_args_base*. |
| (__wait_impl): Likewise. |
| (__notify_impl): Likewise. |
| (__atomic_wait_address): Pass __wait_args by address. |
| (__atomic_wait_address_v): Likewise. |
| (__atomic_notify_address): Likewise. |
| |
| 2025-05-30 Thomas Rodgers <trodgers@redhat.com> |
| |
| * include/bits/atomic_timed_wait.h: |
| (__detail::__platform_wait_until_impl): Rename to |
| __platform_wait_until. |
| (__detail::__platform_wait_until): Remove previous |
| definition. |
| (__detail::__cond_wait_until_impl): Rename to |
| __cond_wait_until. |
| (__detail::__cond_wait_until): Remove previous |
| definition. |
| (__detail::__spin_until_impl): New function. |
| (__detail::__wait_until_impl): New function. |
| (__detail::__wait_until): New function. |
| (__detail::__wait_for): New function. |
| (__detail::__timed_waiter_pool): Remove type. |
| (__detail::__timed_backoff_spin_policy): Remove type. |
| (__detail::__timed_waiter): Remove type. |
| (__detail::__enters_timed_wait): Remove type alias. |
| (__detail::__bare_timed_wait): Remove type alias. |
| (__atomic_wait_address_until): Adjust to new implementation |
| detail. |
| (__atomic_wait_address_until_v): Likewise. |
| (__atomic_wait_address_bare): Remove. |
| (__atomic_wait_address_for): Adjust to new implementation |
| detail. |
| (__atomic_wait_address_for_v): Likewise. |
| (__atomic_wait_address_for_bare): Remove. |
| * include/bits/atomic_wait.h: Include bits/stl_pair.h. |
| (__detail::__default_spin_policy): Remove type. |
| (__detail::__atomic_spin): Remove function. |
| (__detail::__waiter_pool_base): Rename to __waiter_pool_impl. |
| Remove _M_notify. Rename _S_for to _S_impl_for. |
| (__detail::__waiter_base): Remove type. |
| (__detail::__waiter_pool): Remove type. |
| (__detail::__waiter): Remove type. |
| (__detail::__enters_wait): Remove type alias. |
| (__detail::__bare_wait): Remove type alias. |
| (__detail::__wait_flags): New enum. |
| (__detail::__wait_args): New struct. |
| (__detail::__wait_result_type): New type alias. |
| (__detail::__spin_impl): New function. |
| (__detail::__wait_impl): New function. |
| (__atomic_wait_address): Adjust to new implementation detail. |
| (__atomic_wait_address_v): Likewise. |
| (__atomic_notify_address): Likewise. |
| (__atomic_wait_address_bare): Delete. |
| (__atomic_notify_address_bare): Likewise. |
| * include/bits/semaphore_base.h: Adjust implementation to |
| use new __atomic_wait_address_v contract. |
| * include/std/barrier: Adjust implementation to use new |
| __atomic_wait contract. |
| * include/std/latch: Adjust implementation to use new |
| __atomic_wait contract. |
| * testsuite/29_atomics/atomic/wait_notify/100334.cc (main): |
| Adjust to for __detail::__waiter_pool_base renaming. |
| |
| 2025-05-29 Patrick Palka <ppalka@redhat.com> |
| |
| * include/std/flat_map (_Flat_map_impl::operator==): Compare |
| keys and values separately. |
| |
| 2025-05-29 Patrick Palka <ppalka@redhat.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120465 |
| * include/std/flat_map (_Flat_map_impl::_M_erase_if): Use a |
| projection with ranges::remove_if to pass a pair instead of |
| a tuple to the predicate. |
| * testsuite/23_containers/flat_map/1.cc (test07): Strengthen |
| to expect the argument passed to the predicate is a pair. |
| * testsuite/23_containers/flat_multimap/1.cc (test07): Likewise. |
| |
| 2025-05-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/17_intro/names.cc [_AIX] (a): Undefine. |
| * testsuite/experimental/names.cc [_AIX] (ptr): Undefine. |
| |
| 2025-05-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/22_locale/num_put/put/char/lwg4084.cc [_AIX]: Adjust |
| expected output for NaN and infinity. |
| |
| 2025-05-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/23_containers/deque/capacity/shrink_to_fit.cc: |
| Remove dg-xfail-run-if for AIX. |
| * testsuite/23_containers/unordered_map/96088.cc: Replace |
| dg-xfail-run-if with dg-require-effective-target c++20. |
| * testsuite/23_containers/unordered_multimap/96088.cc: Likewise. |
| * testsuite/23_containers/unordered_multiset/96088.cc: Likewise. |
| * testsuite/23_containers/unordered_set/96088.cc: Likewise. |
| |
| 2025-05-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/boost_concept_check.h: Disable -Wlong-long |
| warnings. |
| * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error |
| line number. |
| |
| 2025-05-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/test.xml: Remove outdated documentation on |
| testing with -std options in --target_board. |
| * doc/html/manual/test.html: Regenerate. |
| |
| 2025-05-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/17_intro/names.cc [_AIX] (n): Undefine. |
| * testsuite/experimental/names.cc [_AIX] (ptr): Undefine. |
| |
| 2025-05-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/std/format/debug.cc: Disable for targets with 16-bit |
| wchar_t. |
| * testsuite/std/format/functions/format.cc: Use -DUNICODE for |
| targets with 32-bit wchar_t. |
| (test_unicode) [UNICODE]: Only run checks when UNICODE is |
| defined. |
| |
| 2025-05-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/Makefile.in: Regenerate. |
| |
| 2025-05-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/96710 |
| * include/bits/std_abs.h [__SIZEOF_INT128__] (abs(__int128)): |
| Define. |
| [_GLIBCXX_USE_FLOAT128] (abs(__float128)): Enable definition for |
| strict modes. |
| * testsuite/26_numerics/headers/cmath/82644.cc: Use strict_std |
| instead of defining __STRICT_ANSI__. |
| * testsuite/26_numerics/headers/cstdlib/abs128.cc: New test. |
| |
| 2025-05-27 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| * include/std/mdspan: Value initialize the array storing the |
| dynamic extents. |
| * testsuite/23_containers/mdspan/extents/ctor_default.cc: New |
| test. |
| |
| 2025-05-26 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119152 |
| * testsuite/std/memory/indirect/ctor.cc: Run test_inplace_ctor. |
| |
| 2025-05-26 Jonathan Wakely <jwakely@redhat.com> |
| Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119152 |
| * doc/doxygen/stdheader.cc: Added indirect.h file. |
| * include/Makefile.am: Add new header. |
| * include/Makefile.in: Regenerate. |
| * include/bits/indirect.h: New file. |
| * include/bits/version.def (indirect): Define. |
| * include/bits/version.h: Regenerate. |
| * include/std/memory: Include new header. |
| * testsuite/std/memory/indirect/copy.cc |
| * testsuite/std/memory/indirect/copy_alloc.cc |
| * testsuite/std/memory/indirect/ctor.cc |
| * testsuite/std/memory/indirect/incomplete.cc |
| * testsuite/std/memory/indirect/invalid_neg.cc |
| * testsuite/std/memory/indirect/move.cc |
| * testsuite/std/memory/indirect/move_alloc.cc |
| * testsuite/std/memory/indirect/relops.cc |
| |
| 2025-05-26 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119126 |
| * doc/doxygen/stdheader.cc: Added funcref_impl.h file. |
| * include/Makefile.am: Added funcref_impl.h file. |
| * include/Makefile.in: Added funcref_impl.h file. |
| * include/bits/funcref_impl.h: New file. |
| * include/bits/funcwrap.h: (_Ptrs::_M_obj): Const-qualify. |
| (_Storage::_M_ptr, _Storage::_M_ref): Remove. |
| (__polyfunc::__cast_to) Define. |
| (_Base_invoker::_S_ptrs, _Base_invoker::_S_nttp) |
| (_Base_invoker::_S_bind_ptrs, _Base_invoker::_S_bind_ref) |
| (_Base_invoker::_S_call_ptrs): Define. |
| (_Base_invoker::_S_call_storage): Foward to _S_call_ptrs. |
| (_Manager::_S_local, _Manager::_S_ptr): Adjust for _M_obj being |
| const qualified. |
| (__polyfunc::_Manager, __polyfunc::_Mo_base): Guard with |
| __glibcxx_move_only_function || __glibcxx_copyable_function. |
| (__polyfunc::__skip_first_arg, __polyfunc::__deduce_funcref) |
| (std::function_ref) [__glibcxx_function_ref]: Define. |
| * include/bits/utility.h (std::nontype_t, std::nontype) |
| (__is_nontype_v) [__glibcxx_function_ref]: Define. |
| * include/bits/version.def: Define function_ref. |
| * include/bits/version.h: Regenerate. |
| * include/std/functional: Define __cpp_lib_function_ref. |
| * src/c++23/std.cc.in (std::nontype_t, std::nontype) |
| (std::function_ref) [__cpp_lib_function_ref]: Export. |
| * testsuite/20_util/function_ref/assign.cc: New test. |
| * testsuite/20_util/function_ref/call.cc: New test. |
| * testsuite/20_util/function_ref/cons.cc: New test. |
| * testsuite/20_util/function_ref/cons_neg.cc: New test. |
| * testsuite/20_util/function_ref/conv.cc: New test. |
| * testsuite/20_util/function_ref/deduction.cc: New test. |
| * testsuite/20_util/function_ref/mutation.cc: New test. |
| |
| 2025-05-23 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120384 |
| * include/bits/stl_algo.h (__unique_copy): Remove all |
| _BinaryPredicateConcept concept checks. |
| (unique_copy): Check _BinaryPredicateConcept in overload that |
| takes a predicate. |
| * testsuite/25_algorithms/unique_copy/120384.cc: New test. |
| |
| 2025-05-23 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/type_traits (is_constant_evaluated): Add |
| always_inline attribute. |
| |
| 2025-05-23 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/17_intro/names.cc [__sun__] (a, i, n): Undefine. |
| |
| 2025-05-23 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org> |
| |
| * testsuite/std/format/parse_ctx.cc: Fix typo for bfloat16 guard. |
| |
| 2025-05-22 Jonathan Wakely <jwakely@redhat.com> |
| Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/allocated_ptr.h (_Scoped_allocation): New class |
| template. |
| |
| 2025-05-22 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/util/pstl/test_utils.h (ForwardIterator::operator++): |
| Fix return type. |
| (BidirectionalIterator::operator++): Likewise. |
| (BidirectionalIterator::operator--): Likewise. |
| |
| 2025-05-22 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120367 |
| * include/bits/stl_vector.h (_M_range_initialize): Initialize |
| _M_impl._M_finish. |
| * testsuite/23_containers/vector/cons/from_range.cc: Check with |
| a type that throws on construction. |
| exceptions during construction. |
| |
| 2025-05-21 Alexandre Oliva <oliva@adacore.com> |
| |
| * testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc: |
| Guard non-wide stold calls with conditions for it to be |
| defined. |
| * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc: |
| Likewise. |
| |
| 2025-05-21 Xℹ Ruoyao <xry111@mengyan1223.wang> |
| |
| PR libstdc++/81806 |
| * include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp |
| (split_finish): Use maintained size, instead of calling |
| std::distance. |
| |
| 2025-05-21 Xℹ Ruoyao <xry111@mengyan1223.wang> |
| |
| * include/ext/pb_ds/detail/rb_tree_map_/node.hpp |
| (rb_tree_node_::size_type): New typedef. |
| (rb_tree_node_::m_subtree_size): New field. |
| * include/ext/pb_ds/detail/splay_tree_/node.hpp |
| (splay_tree_node_::size_type): New typedef. |
| (splay_tree_node_::m_subtree_size): New field. |
| * include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp |
| (PB_DS_BIN_TREE_NAME::update_subtree_size): Declare new member |
| function. |
| * include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp |
| (update_subtree_size): Define. |
| (apply_update, update_to_top): Call update_subtree_size. |
| |
| 2025-05-21 Xℹ Ruoyao <xry111@mengyan1223.wang> |
| |
| * include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp |
| (insert_leaf_new, insert_imp_empty): remove redundant statements. |
| |
| 2025-05-20 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/chrono_io.h (_ChronoSpec::_M_locale_specific): |
| Declare as bit fiekd in tail-padding.. |
| * include/bits/formatfwd.h (__format::_Align): Defined as enum |
| class and add using enum. |
| * include/std/format (__format::_Pres_type, __format::_Sign) |
| (__format::_WidthPrec, __format::_Arg_t): Defined as enum class |
| and add using enum. |
| (_Pres_type::_Pres_esc): Replace with _Pres_max. |
| (_Pres_type::_Pres_seq, _Pres_type::_Pres_str): Remove. |
| (__format::_Pres_type): Updated values of enumerators as described |
| above. |
| (__format::_Spec): Rearranged members to have 8 bits of tail-padding. |
| (_Spec::_M_debug): Defined. |
| (_Spec::_M_reserved): Extended to 8 bits and moved at the end. |
| (_Spec::_M_reserved2): Removed. |
| (_Spec::_M_parse_fill_and_align, _Spec::_M_parse_sign) |
| (__format::__write_padded_as_spec): Adjusted default value checks. |
| (__format::_Term_char): Add using enum and adjust enumertors. |
| (__Escapes::_S_term): Adjusted for _Term_char values. |
| (__format::__should_escape_ascii): Adjusted _Term_char uses. |
| (__format::__write_escaped): Adjusted for _Term_char. |
| (__formatter_str::parse): Set _Pres_s if specifed and _M_debug |
| instead of _Pres_esc. |
| (__formatter_str::set_debug_format): Set _M_debug instead of |
| _Pres_esc. |
| (__formatter_str::format, __formatter_str::_M_format_range): |
| Check _M_debug instead of _Prec_esc. |
| (__formatter_str::_M_format_escaped): Adjusted _Term_char uses. |
| (__formatter_int::__formatter_int(_Spec<_CharT>)): Set _Pres_d if |
| default presentation type is not set. |
| (__formatter_int::_M_parse): Adjusted default value checks. |
| (__formatter_int::_M_do_parse): Set _M_debug instead of _Pres_esc. |
| (__formatter_int::_M_format_character): Handle escaped presentation. |
| (__formatter_int::_M_format_character_escaped) |
| (__formatter_int::_S_character_width): Merged into |
| _M_format_character. |
| (__formatter_ptr::__formatter_ptr(_Spec<_CharT>)): Set _Pres_p if |
| default presentation type is not set. |
| (__formatter_ptr::parse): Add default __type parameter, store _Pres_p, |
| and handle _M_alt to be consistent with meaning for integers. |
| (__foramtter_ptr<_CharT>::_M_set_default): Define. |
| (__format::__pack_arg_types, std::basic_format_args): Add necessary |
| casts. |
| (formatter<_CharT, _CharT>::set_debug_format) |
| (formatter<char, wchar_t>::set_debug_format): Set _M_debug instead of |
| _Pres_esc. |
| (formatter<_CharT, _CharT>::format, formatter<char, wchar_t>::format): |
| Simplify calls to _M_format_character. |
| (range_formatter<_Rg, _CharT>::parse): Replace _Pres_str with |
| _Pres_s and set _M_debug instead of _Pres_esc. |
| (range_formatter<_Rg, _CharT>::format): Replace _Pres_str with |
| _Pres_s. |
| |
| 2025-05-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/faq.xml: Update URL for archived SGI STL docs. |
| * doc/xml/manual/containers.xml: Likewise. |
| * doc/xml/manual/extensions.xml: Likewise. |
| * doc/xml/manual/using.xml: Likewise. |
| * doc/xml/manual/utilities.xml: Likewise. |
| * doc/html/*: Regenerate. |
| |
| 2025-05-19 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/ranges (_ZipTransform::operator()): Remove name of |
| unused parameter. |
| (chunk_view::_Iterator, stride_view::_Iterator): Likewise. |
| (join_with_view): Declare _Iterator and _Sentinel as class |
| instead of struct. |
| (repeat_view): Declare _Iterator as class instead of struct. |
| |
| 2025-05-19 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120293 |
| * include/bits/chrono_io.h (_M_format_to_ostream): Add special |
| case for local_time convertible to local_days. |
| * testsuite/std/time/clock/local/io.cc: Check formatting of |
| chrono::local_days. |
| |
| 2025-05-16 Patrick Palka <ppalka@redhat.com> |
| |
| * include/std/type_traits (__is_invocable): Define in terms of |
| corresponding builtin if available. |
| (__is_nothrow_invocable): Likewise. |
| (is_invocable_v): Likewise. |
| (is_nothrow_invocable_v): Likewise. |
| |
| 2025-05-16 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/65909 |
| * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): |
| Change name of formal argument to locale. |
| |
| 2025-05-15 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| * include/std/mdspan: Implement the mandate for extents as |
| signed or unsigned integer and not any interal type. Remove |
| leading underscores from names in static_assert message. |
| * testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: |
| Check that extents<char,...> and extents<bool,...> are invalid. |
| Adjust dg-prune-output pattern. |
| * testsuite/23_containers/mdspan/extents/misc.cc: Update |
| tests to avoid `char` and `bool` as IndexType. |
| |
| 2025-05-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120190 |
| * include/std/format (format_kind): Adjust primary template to |
| not depend on itself. |
| * testsuite/std/format/ranges/format_kind_neg.cc: Adjust |
| expected errors. Check more invalid specializations. |
| |
| 2025-05-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/complex (arg(T)): Use __builtin_signbit instead of |
| std::signbit. |
| |
| 2025-05-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120235 |
| * doc/html/*: Regenerate. |
| * doc/xml/manual/evolution.xml: Document deprecation. |
| * include/std/complex: Replace references to TR1 subclauses with |
| corresponding C++11 subclauses. |
| (fabs): Add deprecated attribute. |
| * testsuite/26_numerics/complex/fabs_neg.cc: New test. |
| |
| 2025-05-15 Jason Merrill <jason@redhat.com> |
| |
| * testsuite/lib/libstdc++.exp: Add -Wabi. |
| |
| 2025-05-15 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119246 |
| * include/std/format: Updated check for _GLIBCXX_FORMAT_F128. |
| |
| 2025-05-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119125 |
| * include/bits/move_only_function.h: Move to... |
| * include/bits/funcwrap.h: ...here. |
| * doc/doxygen/stdheader.cc (init_map): Replaced move_only_function.h |
| with funcwrap.h, and changed include guard to use feature test macro. |
| Move bits/version.h include before others. |
| * include/Makefile.am: Likewise. |
| * include/Makefile.in: Likewise. |
| * include/std/functional: Likewise. |
| |
| 2025-05-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119125 |
| * doc/doxygen/stdheader.cc: Addded cpyfunc_impl.h header. |
| * include/Makefile.am: Add bits cpyfunc_impl.h. |
| * include/Makefile.in: Add bits cpyfunc_impl.h. |
| * include/bits/cpyfunc_impl.h: New file. |
| * include/bits/mofunc_impl.h: Mention LWG 4255. |
| * include/bits/move_only_function.h: Update header description |
| and change guard to also check __glibcxx_copyable_function. |
| (_Manager::_Func): Remove noexcept. |
| (std::__is_polymorphic_function_v<move_only_function<_Tp>>) |
| (__variant::_Never_valueless_alt<std::move_only_function<_Signature...>>) |
| (move_only_function) [__glibcxx_move_only_function]: Adjust guard. |
| (std::__is_polymorphic_function_v<copyable_function<_Tp>>) |
| (__variant::_Never_valueless_alt<std::copyable_function<_Signature...>>) |
| (__polyfunc::_Cpy_base, std::copyable_function) |
| [__glibcxx_copyable_function]: Define. |
| * include/bits/version.def: Define copyable_function. |
| * include/bits/version.h: Regenerate. |
| * include/std/functional: Define __cpp_lib_copyable_function. |
| * src/c++23/std.cc.in (copyable_function) |
| [__cpp_lib_copyable_function]: Export. |
| * testsuite/20_util/copyable_function/call.cc: New test based on |
| move_only_function tests. |
| * testsuite/20_util/copyable_function/cons.cc: New test based on |
| move_only_function tests. |
| * testsuite/20_util/copyable_function/conv.cc: New test based on |
| move_only_function tests. |
| * testsuite/20_util/copyable_function/copy.cc: New test. |
| * testsuite/20_util/copyable_function/move.cc: New test based on |
| move_only_function tests. |
| |
| 2025-05-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119125 |
| * include/bits/mofunc_impl.h: (std::move_only_function): Adjusted for |
| changes in bits/move_only_function.h |
| (move_only_function::move_only_function(_Fn&&)): Special case |
| move_only_functions with same invoker. |
| (move_only_function::operator=(move_only_function&&)): Handle self |
| assigment. |
| * include/bits/move_only_function.h (__polyfunc::_Ptrs) |
| (__polyfunc::_Storage): Refactored from _Mo_func::_Storage. |
| (__polyfunc::__param_t): Moved from move_only_function::__param_t. |
| (__polyfunc::_Base_invoker, __polyfunc::_Invoke): Refactored from |
| move_only_function::_S_invoke. |
| (__polyfunc::_Manager): Refactored from _Mo_func::_S_manager. |
| (std::_Mofunc_base): Moved into __polyfunc::_Mo_base with parts |
| extracted to __polyfunc::_Storage and __polyfunc::_Manager. |
| (__polyfunc::__deref_as, __polyfunc::__invoker_of) |
| (__polyfunc::__base_of, __polyfunc::__is_invoker_convertible): Define. |
| (std::__is_move_only_function_v): Renamed to |
| __is_polymorphic_function_v. |
| (std::__is_polymorphic_function_v): Renamed from |
| __is_move_only_function_v. |
| * testsuite/20_util/move_only_function/call.cc: Test for |
| functions pointers. |
| * testsuite/20_util/move_only_function/conv.cc: New test. |
| * testsuite/20_util/move_only_function/move.cc: Tests for |
| self assigment. |
| |
| 2025-05-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119246 |
| * include/std/format (__format::__bflt16_t): Define. |
| (_GLIBCXX_FORMAT_F128): Separate value for cases where _Float128 |
| is used. |
| (__format::__float128_t): Renamed to __format::__flt128_t. |
| (std::formatter<_Float128, _CharT>): Define always if there is |
| formattable 128bit float. |
| (std::formatter<__float128, _CharT>): Define. |
| (_Arg_type::_Arg_f128): Rename to _Arg_float128 and adjust value. |
| (_Arg_type::_Arg_ibm128): Change value to _Arg_ldbl. |
| (_Arg_type::_Arg_ieee128): Define as alias to _Arg_float128. |
| (_Arg_value::_M_f128): Replaced with _M_ieee128 and _M_float128. |
| (_Arg_value::_M_ieee128, _Arg_value::_M_float128) |
| (_Arg_value::_M_bf16, _Arg_value::_M_f16, _Arg_value::_M_f32) |
| (_Arg_value::_M_f64): Define. |
| (_Arg_value::_S_get, basic_format_arg::_S_to_enum): Handle __bflt16, |
| _Float16, _Float32, _Float64, and __float128 types. |
| (basic_format_arg::_S_to_arg_type): Preserve _bflt16, _Float16, |
| _Float32, _Float64 and __float128 types. |
| (basic_format_arg::_M_visit): Handle _Arg_float128, _Arg_ieee128, |
| _Arg_b16, _Arg_f16, _Arg_f32, _Arg_f64. |
| * testsuite/std/format/arguments/args.cc: Updated to illustrate |
| that extended floating point types use handles now. Added test |
| for __float128. |
| * testsuite/std/format/parse_ctx.cc: Extended test to cover class |
| to check_dynamic_spec with floating point types and handles. |
| |
| 2025-05-14 Ville Voutilainen <ville.voutilainen@gmail.com> |
| |
| * include/std/utility (to_underlying): Add the __always_inline__ attribute. |
| |
| 2025-05-12 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR target/119645 |
| * configure.host [GCN, nvptx] (atomicity_dir): Don't set. |
| |
| 2025-05-12 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/119714 |
| PR libstdc++/112490 |
| * include/std/expected (expected::operator==): Replace |
| non-dependent std::expected function parameter with a dependent |
| one of type expected<_Vp, _Er> where _Vp matches _Tp. |
| * testsuite/20_util/expected/119714.cc: New test. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120187 |
| * include/c_global/ciso646: Only give deprecated warning for |
| C++20 and later. |
| * include/c_global/ccomplex: Add @since to Doxygen comment. |
| * include/c_global/cstdalign: Likewise. |
| * include/c_global/cstdbool: Likewise. |
| * include/c_global/ctgmath: Likewise. |
| * testsuite/18_support/headers/ciso646/macros.cc: Remove |
| dg-warning for c++17_only effective target. |
| * testsuite/18_support/headers/ciso646/macros-2.cc: New test. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/status_cxx2023.xml: Update status of proposals |
| implemented after GCC 14.2 release. |
| * doc/html/manual/status.html: Regenerate. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120198 |
| * include/bits/version.def (scoped_lock): Do not depend on |
| gthreads or hosted. |
| * include/bits/version.h: Regenerate. |
| * include/std/mutex (scoped_lock): Update comment. |
| * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: |
| Remove dg-require-gthreads and use custom lockable type instead |
| of std::mutex. Check that typedef is only present for a single |
| template argument. |
| |
| 2025-05-12 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR libstdc++/70560 |
| PR libstdc++/119667 |
| * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Use '__SIZE_TYPE__' |
| instead of 'size_t'. |
| * configure: Regenerate. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118260 |
| * python/hook.in: Suppress output from gdb.execute calls to |
| register skips. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/status_cxx2017.xml: Update status for |
| std::to_chars and std::from_chars. |
| * doc/html/manual/*: Regenerate. |
| |
| 2025-05-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/65909 |
| * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale): |
| Hardcode the locale name instead of passing it to the |
| executable. Do not hardcode buffer size for string. |
| |
| 2025-05-10 Alexandre Oliva <oliva@adacore.com> |
| |
| * src/c++23/print.cc [__VXWORKS__]: Include ioLib.h. |
| |
| 2025-05-09 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/chrono_io.h (__formatter_chrono::_M_format_to): |
| Extracted from _M_format. |
| (__formatter_chrono::_M_format): Use _Padding_sink and delegate |
| to _M_format_to. |
| |
| 2025-05-09 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/std/format (__Sink_iter<_CharT>::_M_discarding) |
| (__Sink<_CharT>::_M_discarding, _Iter_sink<_CharT, _OutIter>::_M_discarding) |
| (_Padding_sinl<_CharT, _Out>::_M_padwidth) |
| (_Padding_sink<_CharT, _Out>::_M_maxwidth): Remove const. |
| (_Padding_sink<_CharT, _Out>::_M_sync_discarding) |
| (_Padding_sink<_CharT, _Out>::_M_discarding): Define. |
| (_Padding_sink<_CharT, _Out>::_Padding_sink(_Out, size_t, size_t)) |
| (_Padding_sink<_CharT, _Out>::_M_force_update): |
| (_Padding_sink<_CharT, _Out>::_M_flush): Call _M_sync_discarding. |
| (_Padding_sink<_CharT, _Out>::_Padding_sink(_Out, size_t)): Delegate. |
| |
| 2025-05-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120159 |
| * src/c++23/std.cc.in (is_layout_compatible_v): Export. |
| |
| 2025-05-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++23/std.cc.in: Fix export for std::extents. |
| |
| 2025-05-07 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| * testsuite/23_containers/mdspan/extents/class_mandates_neg.cc: New test. |
| * testsuite/23_containers/mdspan/extents/ctor_copy.cc: New test. |
| * testsuite/23_containers/mdspan/extents/ctor_ints.cc: New test. |
| * testsuite/23_containers/mdspan/extents/ctor_shape.cc: New test. |
| * testsuite/23_containers/mdspan/extents/custom_integer.cc: New test. |
| * testsuite/23_containers/mdspan/extents/misc.cc: New test. |
| |
| 2025-05-07 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| PR libstdc++/107761 |
| * include/std/mdspan (extents): New class. |
| * src/c++23/std.cc.in: Add 'using std::extents'. |
| |
| 2025-05-07 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| * doc/doxygen/user.cfg.in: Add <mdspan>. |
| * include/Makefile.am: Ditto. |
| * include/Makefile.in: Ditto. |
| * include/precompiled/stdc++.h: Ditto. |
| * include/std/mdspan: New file. |
| |
| 2025-05-07 Luc Grosheintz <luc.grosheintz@gmail.com> |
| |
| * include/bits/version.def: Add internal feature testing macro |
| __glibcxx_mdspan. |
| * include/bits/version.h: Regenerate. |
| |
| 2025-05-07 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/120114 |
| * include/bits/chrono_io.h (__formatter_chrono::_M_format): Use __field_width. |
| * testsuite/std/time/format/pr120114.cc: New test. |
| |
| 2025-05-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120147 |
| * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Restore use of |
| AC_LANG_CPLUSPLUS. |
| * configure: Regenerate. |
| |
| 2025-05-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/70560 |
| PR libstdc++/119667 |
| * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Only check for |
| __atomic_fetch_add on _Atomic_word. Define new macro |
| _GLIBCXX_ATOMIC_WORD_BUILTINS and stop defining macro |
| _GLIBCXX_ATOMIC_BUILTINS. |
| (GLIBCXX_ENABLE_BACKTRACE): Check for __atomic_load_n and |
| __atomic_store_n on int, void* and size_t. |
| * config.h.in: Regenerate. |
| * configure: Regenerate. |
| * configure.host: Fix typo in comment. |
| * include/ext/atomicity.h (__exchange_and_add, __atomic_add): |
| Depend on _GLIBCXX_ATOMIC_WORD_BUILTINS macro instead of old |
| _GLIBCXX_ATOMIC_BUILTINS macro. |
| |
| 2025-05-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/117905 |
| * include/pstl/glue_numeric_impl.h (reduce, transform_reduce) |
| (transform_reduce, inclusive_scan, transform_exclusive_scan) |
| (transform_inclusive_scan): Use std::move for __init parameter. |
| * include/pstl/numeric_impl.h (__brick_transform_reduce) |
| (__pattern_transform_reduce, __brick_transform_scan) |
| (__pattern_transform_scan): Likewise. |
| * include/std/numeric (inclusive_scan, transform_exclusive_scan): |
| Use std::move to create local copy of the first element. |
| * testsuite/26_numerics/pstl/numeric_ops/108236.cc: Move test |
| using move-only type to ... |
| * testsuite/26_numerics/pstl/numeric_ops/move_only.cc: New test. |
| |
| 2025-05-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/120029 |
| * src/c++17/fs_path.cc (path::operator+=(const path&)): Handle |
| parameters that alias the path or one of its components. |
| * testsuite/27_io/filesystem/path/concat/120029.cc: New test. |
| * testsuite/experimental/filesystem/path/concat/120029.cc: New |
| test. |
| |
| 2025-05-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/120112 |
| * include/bits/ptr_traits.h (_Safe_iterator_base): Use class |
| keyword in class-head of declaration. |
| * include/debug/debug.h (_Safe_iterator): Likewise. |
| |
| 2025-05-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_iterator.h (counted_iterator): Add noexcept |
| to friend operators which only access the _M_length member. |
| |
| 2025-05-02 Dhruv Chawla <dhruvc@nvidia.com> |
| |
| * include/std/memory: Define __glibcxx_want_addressof_constexpr. |
| * testsuite/20_util/headers/memory/version.cc: Test for macro |
| value. |
| |
| 2025-05-02 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/23_containers/vector/allocator/default_init.cc: |
| Add a check using constant evaluation. |
| * testsuite/23_containers/vector/bool/allocator/default_init.cc: |
| Likewise. |
| * testsuite/util/testsuite_allocator.h (default_init_allocator): |
| Make all member functions and equality ops constexpr. |
| |
| 2025-05-02 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++11/Makefile.am: Simplify existing prerequisites for wchar and |
| dual-abi targets that are built from other sources. Add similar |
| prerequisites for more wchar and dual-abi files. |
| * src/c++11/Makefile.in: Regenerate. |
| * src/c++17/Makefile.am [ENABLE_DUAL_ABI]: Add prerequisites for |
| dual-abi targets that are built from other sources. |
| * src/c++17/Makefile.in: Regenerate. |
| |
| 2025-04-30 François Dumont <frs.dumont@gmail.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/lib/libstdc++.exp (v3_target_compile): Strip version namespace |
| from compiler output. |
| * testsuite/20_util/aligned_storage/value.cc [_GLIBCXX_INLINE_VERSION]: |
| Avoid align_msa check. |
| * testsuite/20_util/function/cons/70692.cc: Remove now useless __8 namespace |
| pattern. |
| * testsuite/23_containers/map/48101_neg.cc: Likewise. |
| * testsuite/23_containers/multimap/48101_neg.cc: Likewise. |
| |
| 2025-04-30 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/std/format (_Padding_sink::_M_update): Fixed condition for |
| calling _M_force_update. |
| * testsuite/std/format/debug.cc: Add test that reproduces this issue |
| on 64bit architecture. |
| * testsuite/std/format/ranges/sequence.cc: Another edge value test. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/version.def (make_obj_using_allocator): Use |
| no_stdname. |
| * include/bits/version.h: Regenerate. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/regex_compiler.h: Replace _GLIBCXX17_CONSTEXPR |
| with constexpr and disable diagnostics with pragmas. |
| (_AnyMatcher::operator()): Use constexpr-if instead of tag |
| dispatching. Postpone calls to _M_translate until after checking |
| result of earlier calls. |
| (_AnyMatcher::_M_apply): Remove both overloads. |
| (_BracketMatcher::operator(), _BracketMatcher::_M_ready): |
| Replace tag dispatching with 'if constexpr'. |
| (_BracketMatcher::_M_apply(_CharT, true_type)): Remove. |
| (_BracketMatcher::_M_apply(_CharT, false_type)): Remove second |
| parameter. |
| (_BracketMatcher::_M_make_cache): Remove both overloads. |
| * include/bits/regex_compiler.tcc (_BracketMatcher::_M_apply): |
| Remove second parameter. |
| * include/bits/regex_executor.tcc: Replace _GLIBCXX17_CONSTEXPR |
| with constexpr and disable diagnostics with pragmas. |
| (_Executor::_M_handle_backref): Replace __glibcxx_assert with |
| static_assert. |
| (_Executor::_M_handle_accept): Mark _S_opcode_backref case as |
| unreachable for non-DFS mode and do not instantiate |
| _M_handle_backref for that case. |
| |
| 2025-04-29 Barnabás Pőcze <pobrn@protonmail.com> |
| |
| PR libstdc++/112934 |
| * include/bits/stl_map.h (map::erase): Use _M_erase_unique. |
| * include/bits/stl_set.h (set::erase): Likewise. |
| * include/bits/stl_tree.h (_Rb_tree::_M_erase_unique): Add. |
| |
| 2025-04-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/119427 |
| * include/std/flat_map (_Flat_map_impl::erase_if): Replace |
| this hidden friend with ... |
| (_Flat_map_impl::_M_erase_if): ... this member function. |
| (flat_map): Export _Flat_map_impl::_M_erase_if. |
| (erase_if(flat_map)): Define. |
| (flat_multimap): Export _Flat_map_impl::_M_erase_if. |
| (erase_if(flat_multimap)): Define. |
| * include/std/flat_set (_Flat_set_impl::erase_if): Replace |
| with ... |
| (_Flat_set_impl::_M_erase_if): ... this member function. |
| (flat_set): Export _Flat_set_impl::_M_erase_if. |
| (erase_if(flat_set)): Define. |
| (flat_multiset): Export _Flat_set_impl::_M_erase_if. |
| (erase_if(flat_multiset)): Define. |
| * testsuite/23_containers/flat_map/1.cc (test07): New test. |
| * testsuite/23_containers/flat_multimap/1.cc (test07): New test. |
| * testsuite/23_containers/flat_multiset/1.cc (test09): New test. |
| * testsuite/23_containers/flat_set/1.cc (test09): New test. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/char_traits.h (char_traits::assign): Use |
| constexpr-if unconditionally for C++11 and C++14. |
| * include/bits/locale_conv.h (__do_str_codecvt): Likewise. |
| * include/bits/ostream.h (basic_ostream::_S_cast_flt): Likewise. |
| * include/bits/random.tcc (shuffle_order_engine::operator()) |
| (seed_seq::seed_seq(Iter, Iter)): Likewise. |
| * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_release): |
| Likewise. |
| * include/bits/stl_tree.h (_Rb_tree::_M_move_data): Likewise. |
| * include/bits/uniform_int_dist.h |
| (uniform_int_distribution::operator()): Likewise. |
| * include/bits/valarray_array.h (__valarray_default_construct) |
| (__valarray_fill_construct, __valarray_copy_construct) |
| (__valarray_copy_construct, __valarray_destroy_elements): |
| Likewise. |
| * include/experimental/numeric (lcm): Likewise. |
| * include/std/bit (__rotl, __rotr, __countl_zero, __countr_zero) |
| (__popcount, __bit_ceil) Likewise.: |
| * include/std/bitset (operator>>): Likewise. |
| * include/std/charconv (__to_chars_8, __to_chars_i) |
| (__from_chars_alnum_to_val, from_chars): Likewise. |
| * include/tr2/dynamic_bitset (__dynamic_bitset_base): Likewise. |
| * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error |
| line number. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/std_function.h (_Target_handler): Remove. |
| (function::target): Use constexpr-if for C++11 and |
| C++14, with diagnostic pragmas to suppress warnings. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_vector.h (_S_do_relocate): Remove. |
| (_S_relocate): Remove tag dispatching path. |
| * include/bits/vector.tcc (reserve, _M_realloc_insert) |
| (_M_realloc_append, _M_default_append): Add diagnostic pragmas |
| and use 'if constexpr' in C++11 and C++14. Call |
| std::__relocate_a directly instead of _S_relocate. |
| |
| 2025-04-29 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/basic_string.h (operator+(string&&, string&&)): |
| Do not assume that COW strings have equal allocators. Use |
| constexpr-if unconditionally. |
| * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc: |
| Remove cxx11_abi effective-target check. |
| * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc: |
| Likewise. |
| |
| 2025-04-28 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * testsuite/20_util/shared_ptr/requirements/1.cc: Test both |
| shared_ptr and weak_ptr. |
| Add more tests. |
| * testsuite/20_util/weak_ptr/requirements/1.cc: Removed as |
| superseded by the other test. |
| |
| 2025-04-28 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119970 |
| * include/std/ostream (vprint_unicode) [_WIN32 && !__CYGWIN__]: Call |
| _Str_sink::_M_span instead of view. |
| * include/std/print (vprint_unicode) [_WIN32 && !__CYGWIN__]: Call |
| _Str_sink::_M_span instead of view. |
| |
| 2025-04-28 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/ranges_base.h (__detail::__range_key_type): |
| Replace remove_const_t with remove_cvref_t. |
| (__detail::__range_mapped_type): Apply remove_cvref_t. |
| * include/bits/stl_iterator.h: (__detail::__iter_key_t): |
| Replace remove_const_t with __remove_cvref_t. |
| (__detail::__iter_val_t): Apply __remove_cvref_t. |
| * testsuite/23_containers/flat_map/1.cc: New tests. |
| * testsuite/23_containers/flat_multimap/1.cc: New tests. |
| * testsuite/23_containers/map/cons/deduction.cc: New tests. |
| * testsuite/23_containers/map/cons/from_range.cc: New tests. |
| * testsuite/23_containers/multimap/cons/deduction.cc: New tests. |
| * testsuite/23_containers/multimap/cons/from_range.cc: New tests. |
| * testsuite/23_containers/unordered_map/cons/deduction.cc: New tests. |
| * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. |
| * testsuite/23_containers/unordered_multimap/cons/deduction.cc: |
| New tests. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: |
| New tests. |
| |
| 2025-04-28 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/unordered_map.h (unordered_map): |
| Define constructors accepting: |
| (_InputIterator, _InputIterator, const allocator_type&), |
| (initializer_list<value_type>, const allocator_type&), |
| (unordered_multimap): Likewise. |
| * include/debug/unordered_map (unordered_map): Likewise. |
| (unordered_multimap): Likewise. |
| * include/bits/unordered_set.h (unordered_set): |
| Define constructors and deduction guide accepting: |
| (_InputIterator, _InputIterator, const allocator_type&), |
| (initializer_list<value_type>, const allocator_type&), |
| (unordered_multiset): Likewise. |
| * include/debug/unordered_set (unordered_set): Likewise. |
| (unordered_multiset): Likewise. |
| * testsuite/23_containers/unordered_map/cons/66055.cc: New tests. |
| * testsuite/23_containers/unordered_map/cons/deduction.cc: New tests. |
| * testsuite/23_containers/unordered_multimap/cons/66055.cc: New tests. |
| * testsuite/23_containers/unordered_multimap/cons/deduction.cc: New |
| tests. |
| * testsuite/23_containers/unordered_multiset/cons/66055.cc: New tests. |
| * testsuite/23_containers/unordered_multiset/cons/deduction.cc: New |
| tests. |
| * testsuite/23_containers/unordered_set/cons/66055.cc: New tests. |
| * testsuite/23_containers/unordered_set/cons/deduction.cc: New tests. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/ptr_traits.h (to_address): Use markdown for |
| formatting in Doxygen comments. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++11/Makefile.am: Add prerequisites for targets that |
| depend on string-inst.cc. |
| * src/c++11/Makefile.in: Regenerate. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/move.h (addressof): Use __builtin_addressof |
| directly. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: |
| Remove dg-error directives for additional c++26 errors. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/latch (latch::_M_a): Rename to _M_counter. |
| |
| 2025-04-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/bits/formatfwd.h (__simply_formattable_range): Moved from |
| std/format. |
| * include/std/format (__formatter_str::_format): Extracted escaped |
| string handling to separate method... |
| (__formatter_str::_M_format_escaped): Use __Padding_sink. |
| (__formatter_str::_M_format): Adjusted implementation. |
| (__formatter_str::_S_trunc): Extracted as namespace function... |
| (__format::_truncate): Extracted from __formatter_str::_S_trunc. |
| (__format::_Seq_sink): Removed forward declarations, made members |
| protected and non-final. |
| (_Seq_sink::_M_trim): Define. |
| (_Seq_sink::_M_span): Renamed from view. |
| (_Seq_sink::view): Returns string_view instead of span. |
| (__format::_Str_sink): Moved after _Seq_sink. |
| (__format::__format_padded): Use _Padding_sink. |
| * testsuite/std/format/debug.cc: Add timeout and new tests. |
| * testsuite/std/format/ranges/sequence.cc: Specify unicode as |
| encoding and new tests. |
| * testsuite/std/format/ranges/string.cc: Likewise. |
| * testsuite/std/format/tuple.cc: Likewise. |
| |
| 2025-04-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/std/format/ranges/adaptors.cc: Updated test. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/22_locale/ctype/is/string/89728_neg.cc: Remove |
| dg-error for c++98_only effective target. |
| |
| 2025-04-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119918 |
| * include/bits/formatfwd.h (__format::_Align): Moved from std/format. |
| (std::__throw_format_error, __format::__formatter_str) |
| (__format::__formatter_ptr): Declare. |
| * include/std/format (__format::_Align): Moved to bits/formatfwd.h. |
| (__formatter_int::__formatter_int): Define. |
| (__format::__formatter_ptr): Extracted from formatter for const void*. |
| (std::formatter<const void*, _CharT>, formatter<void*, _CharT>) |
| (std::formatter<nullptr_t, _CharT>): Delegate to __formatter_ptr<_CharT>. |
| * include/std/thread (std::formatter<thread::id, _CharT>): Constrain |
| _CharT template parameter. |
| (formatter<thread::id, _CharT>::parse): Specify default aligment, and |
| qualify __throw_format_error to disable ADL. |
| (formatter<thread::id, _CharT>::format): Use formatters to write directly |
| to output. |
| * testsuite/30_threads/thread/id/output.cc: Tests for formatting thread::id |
| representing not-a-thread with padding and formattable concept. |
| |
| 2025-04-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/bits/version.def (format_ranges): Remove no_stdname and |
| update value. |
| * include/bits/version.h: Regenerate. |
| * src/c++23/std.cc.in: Replace __glibcxx_format_ranges with |
| __cpp_lib_format_ranges. |
| * testsuite/std/format/formatter/lwg3944.cc: Likewise. |
| * testsuite/std/format/parse_ctx.cc: Likewise. |
| * testsuite/std/format/string.cc: Likewise. |
| * testsuite/std/format/ranges/feature_test.cc: New test. |
| |
| 2025-04-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/bits/formatfwd.h (__format::__parsable_with) |
| (__format::__formattable_with, __format::__formattable_impl) |
| (__format::__has_debug_format, __format::__const_formattable_range) |
| (__format::__maybe_const_range, __format::__maybe_const) |
| (std::formattable): Moved from std/format. |
| (__format::Iter_for, std::range_formatter): Forward declare. |
| * include/bits/stl_queue.h (std::formatter): Forward declare. |
| (std::queue, std::priority_queue): Befriend formatter specializations. |
| * include/bits/stl_stack.h (std::formatter): Forward declare. |
| (std::stack): Befriend formatter specializations. |
| * include/std/format (__format::_Iter_for): Define as struct with |
| (__format::__parsable_with, __format::__formattable_with) |
| (__format::__formattable_impl, __format::__has_debug_format) |
| (_format::__const_formattable_range, __format::__maybe_const_range) |
| (__format::__maybe_const, std::formattable): Moved to bits/formatfwd.h. |
| (std::range_formatter): Remove default argument specified in declaration |
| in bits/formatfwd.h. |
| * include/std/queue: Include bits/version.h before bits/stl_queue.h. |
| (formatter<queue<_Tp, _Container, _Compare>, _CharT>) |
| (formatter<priority_queue<_Tp, _Container, _Compare>, _CharT>): Define. |
| * include/std/stack: Include bits/version.h before bits/stl_stack.h |
| (formatter<stack<_Tp, _Container, _Compare>, _CharT>): Define. |
| * testsuite/std/format/ranges/adaptors.cc: New test. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/future (__future_base::_Task_state): Check |
| invocable requirement here. |
| (__future_base::_Task_state::_S_create): New static member |
| function. |
| (__future_base::_Task_state::_M_reset): Use _S_create. |
| (__create_task_state): Remove. |
| (packaged_task): Use _Task_state::_S_create instead of |
| __create_task_state. |
| * testsuite/30_threads/packaged_task/cons/dangling_ref.cc: |
| Adjust dg-error patterns. |
| * testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc: |
| Likewise. |
| |
| 2025-04-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_tree.h (_Rb_tree::_M_key_compare): New member |
| function to invoke comparison function. |
| (_Rb_tree): Use new member function instead of accessing the |
| comparison function directly. |
| |
| 2025-04-24 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/23_containers/forward_list/48101_neg.cc: Remove |
| dg-prune-output that doesn't match anything. |
| * testsuite/23_containers/list/48101_neg.cc: Likewise. |
| * testsuite/23_containers/multiset/48101_neg.cc: Likewise. |
| * testsuite/23_containers/set/48101_neg.cc: Likewise. |
| |
| 2025-04-24 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/generator (generator::yield_value): Add overload |
| taking lvalue element_of view, as per LWG 3899. |
| * testsuite/24_iterators/range_generators/lwg3899.cc: New test. |
| |
| 2025-04-24 François Dumont <frs.dumont@gmail.com> |
| |
| * testsuite/util/replacement_memory_operators.h: Adapt for -fno-exceptions |
| context. |
| * testsuite/23_containers/deque/capacity/shrink_to_fit.cc: Adapt test |
| to check std::deque shrink_to_fit method. |
| |
| 2025-04-23 Andreas Schwab <schwab@linux-m68k.org> |
| |
| * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. |
| * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. |
| * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. |
| |
| 2025-04-23 ZENG Hao <c@cyano.cn> |
| |
| * src/c++23/std.cc.in (atomic_signed_lock_free): Guard with |
| preprocessor check for __cpp_lib_atomic_lock_free_type_aliases. |
| (atomic_unsigned_lock_free): Likewise. |
| |
| 2025-04-22 Patrick Palka <ppalka@redhat.com> |
| |
| Revert: |
| 2024-08-22 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/iterator_concepts.h (__detail::__projected): Define |
| an optimized partial specialization for when the projection is |
| std::identity. |
| * testsuite/24_iterators/indirect_callable/projected.cc: Verify the |
| optimization. |
| |
| 2025-04-22 Andreas Schwab <schwab@linux-m68k.org> |
| |
| * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update. |
| |
| 2025-04-22 Andreas Schwab <schwab@linux-m68k.org> |
| |
| * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update. |
| |
| 2025-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Regenerate. |
| * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. |
| |
| 2025-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| |
| * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. |
| * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: |
| Likewise. |
| * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. |
| * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: |
| Likewise. |
| |
| 2025-04-22 Jakub Jelinek <jakub@redhat.com> |
| |
| * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. |
| * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. |
| * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. |
| * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. |
| * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. |
| * config/abi/post/powerpc64le-linux-gnu/baseline_symbols.txt: Update. |
| |
| 2025-04-22 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/23_containers/flat_map/1.cc: Add dg-timeout-factor 2. |
| * testsuite/23_containers/flat_multimap/1.cc: Likewise. |
| * testsuite/std/format/ranges/map.cc: Likewise. |
| * testsuite/std/format/ranges/sequence.cc: Likewise. |
| * testsuite/std/format/ranges/string.cc: Likewise. |
| |
| 2025-04-22 Andreas Schwab <schwab@linux-m68k.org> |
| |
| * testsuite/util/testsuite_abi.cc (check_version): Update latestp |
| to use GLIBCXX_3.4.35 and CXXABI_1.3.17. |
| |
| 2025-04-18 François Dumont <frs.dumont@gmail.com> |
| |
| * testsuite/util/debug/unordered_checks.h (fill_container): New helper method. |
| (use_erased_local_iterator, invalid_local_iterator_pre_increment) |
| (invalid_local_iterator_post_increment, invalid_local_iterator_compare) |
| (invalid_local_iterator_range): Use latter. |
| (fill_and_get_local_iterator): New, use fill_container. |
| (use_invalid_local_iterator): Use latter. |
| (invalid_local_iterator_arrow_operator): New test function. |
| (invalid_local_iterator_copy_instantiation): New test function. |
| (invalid_local_iterator_move_instantiation): New test function. |
| (invalid_local_iterator_copy_assignment): New test function. |
| (invalid_local_iterator_move_assignment): New test function. |
| (invalid_local_iterator_const_conversion): New test function. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_arrow_operator_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_const_conversion_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_copy_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_copy_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_move_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/invalid_local_iterator_move_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc: Test unordered_map. |
| * testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc: Test unordered_multimap. |
| * testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/debug/cend_neg.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/debug/end1_neg.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/debug/end2_neg.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_arrow_operator_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_const_conversion_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_copy_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_copy_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_move_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_move_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc: |
| Test unordered_multimap. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_arrow_operator_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_const_conversion_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_copy_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_copy_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_move_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_move_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_arrow_operator_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_const_conversion_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_copy_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_copy_construction_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_move_assignment_neg.cc: |
| New test case. |
| * testsuite/23_containers/unordered_set/debug/invalid_local_iterator_move_construction_neg.cc: |
| New test case. |
| |
| 2025-04-18 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * doc/xml/manual/appendix_contributing.xml: Add 'and functions'. |
| |
| 2025-04-17 Jason Merrill <jason@redhat.com> |
| |
| * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust |
| diagnostic. |
| |
| 2025-04-17 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119840 |
| * include/std/format (_M_parse_fill_and_align): Cast elements of |
| __not_fill to _CharT. |
| |
| 2025-04-17 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/format (format_kind): Do not use 'not' |
| alternative token to make the primary template ill-formed. Use |
| the undeclared identifier __primary_template_not_defined and a |
| comment that will appear in diagnostics. |
| * testsuite/std/format/ranges/format_kind_neg.cc: New test. |
| |
| 2025-04-17 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/std/format (__format::__simply_formattable_range): Define. |
| (range_formatter::format): Do not instantiate _M_format for mutable |
| _Rg if const _Rg can be used. |
| |
| 2025-04-16 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/std/format (range_formatter::format): Format const range, |
| only if reference type is not changed. |
| * testsuite/std/format/ranges/formatter.cc: New tests. |
| |
| 2025-04-16 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/std/format (__formatter_int::_M_format_character_escaped) |
| (__formatter_str::format): Use __sink.out() to produce _Sink_iter. |
| (__format::__const_formattable_range): Moved closer to range_formatter. |
| (__format::__maybe_const_range): Use `__conditional_t` and moved closer |
| to range_formatter. |
| (__format::__format_padded, __format::maybe_const) |
| (__format::__indexed_formatter_storage, __format::__tuple_formatter) |
| (std::formatter<pair<_Fp, _Sp>, _CharT>>) |
| (std::formatter<tuple<_Tps...>, _CharT): Define. |
| (std::formatter<_Rg, _CharT>::format): Cast incoming range to |
| __format::__maybe_const_range<_Rg, _CharT>&. |
| (std::formatter<_Rg, _CharT>::_M_format): Extracted from format, |
| and use __format_padded. |
| (std::formatter<_Rg, _CharT>::_M_format_no_padding): Rename... |
| (std::formatter<_Rg, _CharT>::_M_format_elems): ...to this. |
| (std::formatter<_Rg, _CharT>::_M_format_with_padding): Extracted as |
| __format_padded. |
| * testsuite/util/testsuite_iterators.h (test_input_range_nocopy): |
| Define. |
| * testsuite/std/format/ranges/formatter.cc: Tests for `m` specifier. |
| * testsuite/std/format/ranges/sequence.cc: Tests for array and subrange. |
| * testsuite/std/format/ranges/map.cc: New test. |
| * testsuite/std/format/tuple.cc: New test. |
| |
| 2025-04-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/ranges (__glibcxx_want_ranges_iota): Do not |
| define. |
| |
| 2025-04-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/numeric (ranges): Only declare namespace for C++23 |
| and later. |
| (ranges::iota_result): Fix indentation. |
| * testsuite/17_intro/names.cc: Check ranges is not used as an |
| identifier before C++20. |
| |
| 2025-04-15 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/std/format (__format::__has_debug_format, _Pres_type::_Pres_seq) |
| (_Pres_type::_Pres_str, __format::__Stackbuf_size): Define. |
| (_Separators::_S_squares, _Separators::_S_parens, _Separators::_S_comma) |
| (_Separators::_S_colon): Define additional constants. |
| (_Spec::_M_parse_fill_and_align): Define overload accepting |
| list of excluded characters for fill, and forward existing overload. |
| (__formatter_str::_M_format_range): Define. |
| (__format::_Buf_sink) Use __Stackbuf_size for size of array. |
| (__format::__is_map_formattable, std::range_formatter) |
| (std::formatter<_Rg, _CharT>): Define. |
| * src/c++23/std.cc.in (std::format_kind, std::range_format) |
| (std::range_formatter): Export. |
| * testsuite/std/format/formatter/lwg3944.cc: Guarded tests with |
| __glibcxx_format_ranges. |
| * testsuite/std/format/formatter/requirements.cc: Adjusted for standard |
| behavior. |
| * testsuite/23_containers/vector/bool/format.cc: Test vector<bool> formatting. |
| * testsuite/std/format/ranges/format_kind.cc: New test. |
| * testsuite/std/format/ranges/formatter.cc: New test. |
| * testsuite/std/format/ranges/sequence.cc: New test. |
| * testsuite/std/format/ranges/string.cc: New test. |
| |
| 2025-04-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119748 |
| * include/bits/basic_string.h (_S_copy_chars): Only optimize for |
| contiguous iterators that are convertible to const charT*. Use |
| explicit conversion to charT after dereferencing iterator. |
| (_S_copy_range): Likewise for contiguous ranges. |
| * include/bits/basic_string.tcc (_M_construct): Use explicit |
| conversion to charT after dereferencing iterator. |
| * include/bits/cow_string.h (_S_copy_chars): Likewise. |
| (basic_string(from_range_t, R&&, const Allocator&)): Likewise. |
| Only optimize for contiguous iterators that are convertible to |
| const charT*. |
| * testsuite/21_strings/basic_string/cons/char/119748.cc: New |
| test. |
| * testsuite/21_strings/basic_string/cons/wchar_t/119748.cc: |
| New test. |
| |
| 2025-04-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/util/testsuite_iterators.h (test_container): Define |
| array constructor for C++98 as well. |
| |
| 2025-04-14 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/21334 |
| * doc/xml/manual/using.xml: Document that container data race |
| avoidance rules do not apply to COW std::string. |
| * doc/html/*: Regenerate. |
| |
| 2025-04-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119725 |
| * testsuite/std/format/debug.cc: Updated dg-options. |
| * testsuite/std/format/debug_nonunicode.cc: Updated dg-options. |
| |
| 2025-04-11 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++17/fast_float/LOCAL_PATCHES: Update. |
| |
| 2025-04-11 Evgeny Karpov <Evgeny.Karpov@microsoft.com> |
| |
| * src/c++17/fast_float/fast_float.h (full_multiplication): |
| Support aarch64-w64-mingw32 target. |
| |
| 2025-04-11 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/basic_string.h (_S_copy_chars): Replace overloads |
| with constexpr-if and extend optimization to all contiguous |
| iterators. |
| * src/c++11/string-inst.cc: Extend comment. |
| |
| 2025-04-11 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/version.def (containers_ranges): Define. |
| * include/bits/version.h: Regenerate. |
| * include/bits/ranges_base.h (__detail::__container_compatible_range) |
| (__detail::__range_to_alloc_type, __detail::__range_mapped_type) |
| (__detail::__range_key_type): Depend on __glibcxx_containers_ranges |
| instead of __glibcxx_ranges_to_container. |
| * include/bits/basic_string.h: Replace __glibcxx_ranges_to_container with |
| __glibcxx_containers_ranges. |
| * include/bits/cow_string.h: Likewise. |
| * include/bits/deque.tcc: Likewise. |
| * include/bits/forward_list.h: Likewise. |
| * include/bits/stl_bvector.h: Likewise. |
| * include/bits/stl_deque.h: Likewise. |
| * include/bits/stl_list.h: Likewise. |
| * include/bits/stl_map.h: Likewise. |
| * include/bits/stl_multimap.h: Likewise. |
| * include/bits/stl_multiset.h: Likewise. |
| * include/bits/stl_queue.h: Likewise. |
| * include/bits/stl_set.h: Likewise. |
| * include/bits/stl_stack.h: Likewise. |
| * include/bits/stl_vector.h: Likewise. |
| * include/bits/unordered_map.h: Likewise. |
| * include/bits/unordered_set.h: Likewise. |
| * include/bits/vector.tcc: Likewise. |
| * include/debug/deque: Likewise. |
| * include/debug/forward_list: Likewise. |
| * include/debug/list: Likewise. |
| * include/debug/map.h: Likewise. |
| * include/debug/multimap.h: Likewise. |
| * include/debug/multiset.h: Likewise. |
| * include/debug/set.h: Likewise. |
| * include/debug/unordered_map: Likewise. |
| * include/debug/unordered_set: Likewise. |
| * include/debug/vector: Likewise. |
| * include/std/deque: Provide __cpp_lib_containers_ranges. |
| * include/std/forward_list: Likewise. |
| * include/std/list: Likewise. |
| * include/std/map: Likewise. |
| * include/std/queue: Likewise. |
| * include/std/set: Likewise. |
| * include/std/stack: Likewise. |
| * include/std/string: Likewise. |
| * include/std/unordered_map: Likewise. |
| * include/std/unordered_set: Likewise. |
| * include/std/vector: Likewise. |
| * testsuite/21_strings/basic_string/cons/from_range.cc: Test for value |
| __cpp_lib_containers_ranges. |
| * testsuite/23_containers/deque/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/forward_list/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/list/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/map/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/multimap/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/multiset/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/priority_queue/cons_from_range.cc: Likewise. |
| * testsuite/23_containers/queue/cons_from_range.cc: Likewise. |
| * testsuite/23_containers/set/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/stack/cons_from_range.cc: Likewise. |
| * testsuite/23_containers/unordered_map/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/unordered_multiset/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/unordered_set/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/vector/bool/cons/from_range.cc: Likewise. |
| * testsuite/23_containers/vector/cons/from_range.cc: Likewise. |
| |
| 2025-04-11 Jonathan Wakely <jwakely@redhat.com> |
| Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/basic_string.h (_S_copy_range): New function. |
| (basic_string(from_range_t, R%%, const Alloc&)): New |
| constructor. |
| (append_range, assign_range, insert_range, replace_with_range): |
| New functions. |
| * include/bits/cow_string.h: Likewise. |
| * testsuite/21_strings/basic_string/cons/from_range.cc: New |
| test. |
| * testsuite/21_strings/basic_string/modifiers/append/append_range.cc: |
| New test. |
| * testsuite/21_strings/basic_string/modifiers/assign/assign_range.cc: |
| New test. |
| * testsuite/21_strings/basic_string/modifiers/insert/insert_range.cc: |
| New test. |
| * testsuite/21_strings/basic_string/modifiers/replace/replace_with_range.cc: |
| New test. |
| |
| 2025-04-11 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/bits/chrono_io.h (__detail::_Widen): Moved to std/format file. |
| * include/bits/unicode-data.h: Regnerate. |
| * include/bits/unicode.h (__unicode::_Utf_iterator::_M_units) |
| (__unicode::__should_escape_category): Define. |
| * include/std/format (_GLIBCXX_WIDEN_, _GLIBCXX_WIDEN): Copied from |
| include/bits/chrono_io.h. |
| (__format::_Widen): Moved from include/bits/chrono_io.h. |
| (__format::_Term_char, __format::_Escapes, __format::_Separators) |
| (__format::__should_escape_ascii, __format::__should_escape_unicode) |
| (__format::__write_escape_seq, __format::__write_escaped_char) |
| (__format::__write_escaped_acii, __format::__write_escaped_unicode) |
| (__format::__write_escaped): Define. |
| (__formatter_str::_S_trunc): Extracted truncation of character |
| sequences. |
| (__formatter_str::format): Handle _Pres_esc. |
| (__formatter_int::_M_do_parse) [__glibcxx_format_ranges]: Parse '?'. |
| (__formatter_int::_M_format_character_escaped): Define. |
| (formatter<_CharT, _CharT>::format, formatter<char, wchar_t>::format): |
| Handle _Pres_esc. |
| (__formatter_str::set_debug_format, formatter<...>::set_debug_format) |
| Guard with __glibcxx_format_ranges. |
| (__format::_Fixedbuf_sink): Define. |
| * testsuite/23_containers/vector/bool/format.cc: Use __format::_Widen |
| and remove unnecessary <chrono> include. |
| * testsuite/std/format/debug.cc: New test. |
| * testsuite/std/format/debug_nonunicode.cc: New test. |
| * testsuite/std/format/parse_ctx.cc (escaped_strings_supported): Define |
| to true if __glibcxx_format_ranges is defined. |
| * testsuite/std/format/string.cc (escaped_strings_supported): Define to |
| true if __glibcxx_format_ranges is defined. |
| |
| 2025-04-10 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/version.def (constrained_equality): Only define |
| as 202411 for C++23 and later, use 202403 for C++20. |
| * include/bits/version.h: Regenerate. |
| * testsuite/20_util/expected/equality_constrained.cc: Remove |
| TODO comment. |
| |
| 2025-04-10 John David Anglin <danglin@gcc.gnu.org> |
| |
| * config/os/hpux/os_defines.h: Remove _GLIBCXX_USE_LONG_LONG |
| define. |
| |
| 2025-04-09 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/115046 |
| PR libstdc++/112490 |
| * include/bits/stl_iterator.h (basic_const_iterator::operator-): |
| Replace non-dependent basic_const_iterator function parameter with |
| a dependent one of type basic_const_iterator<_It2> where _It2 |
| matches _It. |
| * testsuite/std/ranges/adaptors/as_const/1.cc (test04): New test. |
| |
| 2025-04-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119671 |
| * include/std/format (__formatter_fp::format): Do not invalidate |
| __wstr unless _M_localized returns a valid string. |
| * testsuite/std/format/functions/format.cc: Check wide string |
| formatting of floating-point types with classic locale. |
| |
| 2025-04-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119642 |
| * include/bits/formatfwd.h: Remove stray pragma. |
| |
| 2025-04-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/precompiled/stdc++.h: Include <stdbit.h> and |
| <stdckdint.h>. Include <stacktrace> unconditionally. |
| |
| 2025-04-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/doxygen/user.cfg.in (INPUT): Add flat_map, flat_set, |
| text_encoding, stdbit.h and stdckdint.h. |
| |
| 2025-04-07 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR target/119645 |
| * acinclude.m4 (GLIBCXX_ENABLE_LOCK_POLICY) [GCN, nvptx]: |
| Hard-code results. |
| * configure: Regenerate. |
| * configure.host [GCN, nvptx] (atomicity_dir): Set to |
| 'cpu/generic/atomicity_builtins'. |
| |
| 2025-04-04 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/119620 |
| * include/std/flat_set (_Flat_set_impl::_M_try_emplace): Split |
| out into two overloads, one taking at least one argument and one |
| taking zero arguments. Turn __k into an auto&& reference bound |
| to __arg if it's already a value_type and otherwise bound to a |
| lifetime-extended value_type temporary. |
| * testsuite/23_containers/flat_multiset/1.cc (test08): New test. |
| * testsuite/23_containers/flat_set/1.cc (test08): New test. |
| |
| 2025-04-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/101587 |
| * include/bits/ranges_uninitialized.h (__detail::__mindist): |
| Remove. |
| (ranges::uninitialized_copy, ranges::uninitialized_copy_n) |
| (ranges::uninitialized_move, ranges::uninitialized_move_n): Use |
| comparison and assignment instead of __mindist. |
| * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc: |
| Check with ranges that use integer-like class type for |
| difference type. |
| * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc: |
| Likewise. |
| |
| 2025-04-04 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/109162 |
| * include/Makefile.am: Add bits/formatfwd.h. |
| * include/Makefile.in: Add bits/formatfwd.h. |
| * include/bits/version.def: Define __glibcxx_format_ranges without |
| corresponding std name. |
| * include/bits/version.h: Regenerate. |
| * include/std/format (basic_format_context, __format::__char): |
| Move declartions to bits/formatfwd.h. |
| (formatter<_Tp, _CharT>): Remove default argument for _CharT |
| parameter, now specified in forward declaration in bits/formatfwd.h. |
| * include/std/vector (formatter<_Bit_reference, _CharT>): Define. |
| * include/bits/formatfwd.h: New file with forward declarations |
| for bits of std/format. |
| * testsuite/23_containers/vector/bool/format.cc: New test. |
| |
| 2025-04-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/basic_string.h: Check __glibcxx_string_view and |
| __glibcxx_variant instead of __cplusplus >= 2017L. |
| * include/bits/cow_string.h: Likewise. |
| |
| 2025-04-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/basic_string.tcc: Fix whitespace. |
| |
| 2025-04-04 Arsen Arsenović <arsen@aarsen.me> |
| |
| * include/bits/version.tpl: Implement no_stdname. |
| * include/bits/version.def: Document no_stdname. |
| |
| 2025-04-03 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * config/cpu/nvptx/t-nvptx: Remove. |
| * configure.host [nvptx]: Adjust. |
| |
| 2025-04-03 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR target/119573 |
| * config/cpu/nvptx/t-nvptx (AM_MAKEFLAGS): Don't amend. |
| |
| 2025-04-03 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/std/format/functions/format.cc: Restored line. |
| |
| 2025-04-03 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119593 |
| * include/bits/unicode.h |
| (__unicode::__literal_encoding_is_unicode<_CharT>): |
| Corrected handing for UTF-16 and UTF-32 with "LE" or "BE" suffix. |
| * include/std/format (__formatter_str::_S_character_width): |
| Define. |
| (__formatter_str::_S_character_width): Updated passed char |
| length. |
| * testsuite/std/format/functions/format.cc: Test for wchar_t. |
| |
| 2025-04-02 John David Anglin <danglin@gcc.gnu.org> |
| |
| * config/os/hpux/os_defines.h: Only use long long when |
| __cplusplus >= 201103L. |
| |
| 2025-04-02 Iain Sandoe <iain@sandoe.co.uk> |
| |
| * testsuite/lib/prune.exp: Prune ld warning about duplicatei |
| rpaths. |
| |
| 2025-04-01 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/114945 |
| * include/bits/vector.tcc (vector::_M_default_append): Add |
| unreachable condition so the compiler knows that _M_finish is |
| not null. |
| * testsuite/23_containers/vector/capacity/114945.cc: New test. |
| |
| 2025-04-01 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR target/119369 |
| * config/cpu/gcn/cpu_defines.h: New. |
| * configure.host [GCN] (cpu_defines_dir): Point to it. |
| |
| 2025-03-31 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/110498 |
| * include/bits/vector.tcc (vector<bool, A>::_M_reallocate): |
| Hoist loads of begin() and end() before allocation and use them |
| to state an unreachable condition. |
| * testsuite/23_containers/vector/bool/capacity/110498.cc: New |
| test. |
| |
| 2025-03-31 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/114758 |
| * include/bits/vector.tcc (vector<bool, A>::_M_fill_insert): |
| Hoist loads of begin() and end() before allocation. |
| * testsuite/23_containers/vector/bool/capacity/114758.cc: New |
| test. |
| |
| 2025-03-31 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119550 |
| * acinclude.m4 (GLIBCXX_STRUCT_TM_TM_ZONE): New macro. |
| * config.h.in: Regenerate. |
| * configure: Regenerate. |
| * configure.ac: Use GLIBCXX_STRUCT_TM_TM_ZONE. |
| * include/bits/chrono_io.h (__formatter_chrono::_M_c): Check |
| _GLIBCXX_USE_STRUCT_TM_TM_ZONE instead of |
| _GLIBCXX_HAVE_STRUCT_TM_TM_ZONE. |
| |
| 2025-03-31 Jonathan Wakely <jwakely@redhat.com> |
| |
| * config/abi/pre/gnu.ver (GLIBCXX_3.4.21): Make |
| std::basic_string::_M_construct patterns more precise. |
| |
| 2025-03-31 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119545 |
| * include/std/tuple (operator==): Convert comparison results to |
| bool. |
| * testsuite/20_util/tuple/comparison_operators/119545.cc: New |
| test. |
| |
| 2025-03-31 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119517 |
| * include/bits/chrono_io.h (formatter): |
| Add __format::__char for _CharT and adjust parse and format |
| method signatures. |
| * testsuite/std/time/format/pr119517.cc: New test. |
| |
| 2025-03-31 Jakub Jelinek <jakub@redhat.com> |
| |
| PR tree-optimization/103827 |
| PR tree-optimization/80331 |
| PR tree-optimization/87502 |
| * config/abi/pre/gnu.ver (GLIBCXX_3.4.34): Use [jmy] rather than m |
| in pattern for _M_construct<bool>(char const*, size_t). |
| |
| 2025-03-30 Jan Hubicka <hubicka@ucw.cz> |
| |
| PR tree-optimization/103827 |
| PR tree-optimization/80331 |
| PR tree-optimization/87502 |
| * config/abi/pre/gnu.ver: Add version for _M_construct<bool> |
| * include/bits/basic_string.h: (basic_string::_M_construct<bool>): Declare. |
| (basic_string constructors): Use it. |
| * include/bits/basic_string.tcc: (basic_string::_M_construct<bool>): New template. |
| * src/c++11/string-inst.cc: Instantated S::_M_construct<bool>. |
| |
| 2025-03-28 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/117983 |
| * testsuite/23_containers/vector/modifiers/insert/117983.cc: New |
| test. |
| |
| 2025-03-28 David Malcolm <dmalcolm@redhat.com> |
| |
| * testsuite/17_intro/shared_with_static_deps.cc: Fix malformed |
| dg-require-static-libstdcxx directive. |
| * testsuite/17_intro/static.cc: Likewise. |
| * testsuite/18_support/type_info/110572.cc: Likewise. |
| * testsuite/20_util/to_chars/4.cc: Likewise. |
| * testsuite/std/time/tzdb_list/pr118811.cc: Likewise. |
| |
| 2025-03-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/101587 |
| * include/bits/ranges_uninitialized.h (__detail::__mindist): |
| New function object. |
| (ranges::uninitialized_copy, ranges::uninitialized_copy_n) |
| (ranges::uninitialized_move, ranges::uninitialized_move_n): Use |
| __mindist instead of std::min. |
| * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc: |
| Check ranges with difference difference types. |
| * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc: |
| Likewise. |
| |
| 2025-03-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/chrono_io.h (__formatter_chrono::_M_c): Use |
| const_cast when setting tm.tm_zone. |
| |
| 2025-03-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++20/tzdata.zi: Import new file from 2025b release. |
| |
| 2025-03-27 Sam James <sam@gentoo.org> |
| |
| * testsuite/std/format/string_neg.cc: Add missing brace for dg-error. |
| |
| 2025-03-27 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| PR libstdc++/119488 |
| * include/bits/version.def (constexpr_algorithms): Bump |
| the feature-testing macro. |
| * include/bits/version.h: Regenerate. |
| * testsuite/25_algorithms/cpp_lib_constexpr.cc: Test the |
| bumped value for the feature-testing macro. |
| |
| 2025-03-27 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/algorithmfwd.h (stable_partition): Mark it |
| as constexpr for C++26. |
| * include/bits/ranges_algo.h (__stable_partition_fn): Likewise. |
| * include/bits/stl_algo.h (stable_partition): Mark it as |
| constexpr for C++26; during constant evaluation use a new |
| codepath where a temporary buffer of 1 element is used. |
| * testsuite/25_algorithms/headers/algorithm/synopsis.cc |
| (stable_partition): Add constexpr. |
| * testsuite/25_algorithms/stable_partition/constexpr.cc: New test. |
| |
| 2025-03-27 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/algorithmfwd.h (inplace_merge): Mark it as |
| constexpr for C++26. |
| * include/bits/ranges_algo.h (__inplace_merge_fn): Likewise. |
| * include/bits/stl_algo.h (inplace_merge): Mark it as constexpr; |
| during constant evaluation, dispatch to the non-allocating |
| codepath. |
| * testsuite/25_algorithms/headers/algorithm/synopsis.cc |
| (inplace_merge): Add constexpr. |
| * testsuite/25_algorithms/inplace_merge/constexpr.cc: New test. |
| |
| 2025-03-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119469 |
| * include/bits/iterator_concepts.h (_IterMove::__result): Use |
| decltype-specifier instead of an explicit type. |
| * testsuite/24_iterators/customization_points/iter_move.cc: |
| Check results for function references. |
| |
| 2025-03-26 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/version.def (constexpr_algorithms): Change |
| the value of the feature-testing macro. |
| * include/bits/version.h: Regenerate. |
| * testsuite/25_algorithms/cpp_lib_constexpr.cc: Amend the |
| check of the feature-testing macro. |
| |
| 2025-03-26 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119415 |
| * include/std/flat_set (_Flat_set_impl:insert_range): |
| Replace __detail::__cpp17_input_iterator with __has_input_iter_cat. |
| * testsuite/23_containers/flat_multiset/1.cc: New tests |
| * testsuite/23_containers/flat_set/1.cc: New tests |
| |
| 2025-03-26 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/deque.tcc (deque::prepend_range, deque::append_range) |
| (deque::insert_range, __advance_dist): Define. |
| (deque::_M_range_prepend, deque::_M_range_append): |
| Extract from _M_range_insert_aux for _ForwardIterator(s). |
| * include/bits/stl_deque.h (deque::assign_range): Define. |
| (deque::prepend_range, deque::append_range, deque::insert_range): |
| Declare. |
| (deque(from_range_t, _Rg&&, const allocator_type&)): Define constructor |
| and deduction guide. |
| * include/debug/deque (deque::prepend_range, deque::append_range) |
| (deque::assign_range): Define. |
| (deque(from_range_t, _Rg&&, const allocator_type&)): Define constructor |
| and deduction guide. |
| * testsuite/23_containers/deque/cons/from_range.cc: New test. |
| * testsuite/23_containers/deque/modifiers/append_range.cc: New test. |
| * testsuite/23_containers/deque/modifiers/assign/assign_range.cc: |
| New test. |
| * testsuite/23_containers/deque/modifiers/prepend_range.cc: New test. |
| * testsuite/23_containers/deque/modifiers/insert/insert_range.cc: New file. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/ranges (ranges::to): Allow unions as well as |
| non-union class types. |
| * testsuite/std/ranges/conv/lwg4229.cc: New test. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/108487 |
| * include/bits/stl_vector.h (vector(initializer_list)): Call |
| _M_range_initialize_n instead of _M_range_initialize. |
| (vector(InputIterator, InputIterator)): Use _M_range_initialize_n |
| for C++20 sized sentinels and forward iterators. |
| (vector(from_range_t, R&&)): Use _M_range_initialize_n for sized |
| ranges and forward ranges. |
| (vector::_M_range_initialize(FwIt, FwIt, forward_iterator_tag)): |
| Likewise. |
| (vector::_M_range_initialize_n): New function. |
| * testsuite/23_containers/vector/cons/108487.cc: New test. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/debug/vector (vector::assign_range): Use change in |
| capacity to detect reallocation. |
| (vector::insert_range, vector::append_range): Likewise. Remove |
| unused variables. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_bvector.h (vector::assign_range): More |
| efficient implementation for forward/sized ranges. |
| (vector::append_range): Handle potentially overlapping range. |
| * include/bits/stl_vector.h (vector(from_range_t, R&&, Alloc)): |
| Do not use append_range for non-sized input range case. |
| (vector::append_range): Handle potentially overlapping range. |
| * include/bits/vector.tcc (vector::insert_range): Forward range |
| instead of moving it. |
| * testsuite/23_containers/vector/bool/modifiers/insert/append_range.cc: |
| Test overlapping ranges. |
| * testsuite/23_containers/vector/modifiers/append_range.cc: |
| Likewise. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118699 |
| * testsuite/27_io/filesystem/operations/copy.cc: Check copying a |
| file to a directory. |
| |
| 2025-03-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119429 |
| * include/std/format (__format::_Scanner::_Scanner): Cast |
| default argument to size_t. |
| |
| 2025-03-25 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119415 |
| * include/std/flat_set (_Flat_set_impl:insert_range): |
| Add __detail::__cpp17_input_iterator check. |
| * testsuite/23_containers/flat_multiset/1.cc: New tests |
| * testsuite/23_containers/flat_set/1.cc: New tests |
| |
| 2025-03-24 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/policy_data_structures_biblio.xml: Fix two |
| broken links. |
| * doc/html/manual/policy_data_structures.html: Regenerate. |
| |
| 2025-03-24 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/101527 |
| * testsuite/24_iterators/common_iterator/101527.cc: New test. |
| * testsuite/24_iterators/counted_iterator/101527.cc: New test. |
| |
| 2025-03-24 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_bvector.h (vector<bool, A>): Enforce the |
| C++20 requirement that the allocator's value_type matches the |
| container. |
| * testsuite/23_containers/vector/bool/cons/from_range.cc: Fix |
| incorrect allocator type. |
| |
| 2025-03-21 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/117214 |
| * configure.ac: Use AC_STRUCT_TIMEZONE. |
| * config.h.in: Regenerate. |
| * configure: Regenerate. |
| * include/bits/chrono_io.h (__formatter_chrono::_M_c): Set |
| tm_isdst and tm_zone. |
| * testsuite/std/time/format/pr117214.cc: Check %c formatting of |
| zoned_time and local time. |
| |
| 2025-03-21 XU Kailiang <xu2k3l4@outlook.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/117214 |
| * include/bits/chrono_io.h (__formatter_chrono::_M_c): Use |
| _M_locale_fmt to format %c time point. |
| * testsuite/std/time/format/pr117214.cc: New test. |
| |
| 2025-03-21 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/chrono_io.h (__formatter_chrono::_M_locale_fmt): |
| Imbue locale into ostringstream. |
| * testsuite/std/time/format/localized.cc: Check that correct |
| locale is used for call to time_put::put. |
| |
| 2025-03-21 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_vector.h (vector(from_range_t, Alloc)): Use |
| delegating constructor instead of RAII guards. Use append_range |
| for unsized input range case. |
| |
| 2025-03-21 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++23/std.compat.cc.in: Only export <stdbit.h> and |
| <stdckdint.h> contents for C++26 and later. |
| |
| 2025-03-21 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++23/std.cc.in (tuple_element, tuple_element_t) |
| (tuple_size, tuple_size_v, get): Export. |
| (ranges::cache_latest_view, views::cache_latest): Export. |
| (ranges::to_input_view, views::to_input): Export. |
| (from_range_t, from_range): Export. |
| |
| 2025-03-20 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/debug/unordered_map (unordered_map): Add from_range |
| constructors and deduction guides. |
| (unordered_multimap): Likewise. |
| * include/debug/unordered_set (unordered_set): Add from_range |
| constructors and deduction guides. |
| (unordered_multiset): Likewise. |
| |
| 2025-03-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/debug/map.h (map): Add from_range constructors and |
| deduction guides. |
| * include/debug/multimap.h (multimap): Likewise. |
| * include/debug/multiset.h (multiset): Likewise. |
| * include/debug/set.h (set): Likewise. |
| |
| 2025-03-20 Jakub Jelinek <jakub@redhat.com> |
| |
| * testsuite/18_support/numeric_limits/traps.cc (main): Fix comment |
| typo. |
| |
| 2025-03-19 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/test.xml: Fix default for -std option. |
| * doc/html/manual/test.html: Regenerate. |
| |
| 2025-03-19 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/locale_facets_nonio.tcc (time_put::do_put): Fix |
| typo in comment. |
| |
| 2025-03-19 François Dumont <frs.dumont@gmail.com> |
| |
| * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr.cc: |
| Activate the template member tests involving __cpp_lib_ranges_to_container |
| support. |
| |
| 2025-03-19 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/20_util/stdbit/1.cc: Include <climits> instead of |
| <limits.h>. |
| |
| 2025-03-19 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/ranges_base.h (__detail::__range_key_type): |
| Replace RV::first_type with tuple_element_t<0, RV>. |
| (__detail::__range_mapped_type) Replace RV::second_type |
| with tuple_element_t<1, RV>. |
| * testsuite/23_containers/flat_map/1.cc: New tests. |
| * testsuite/23_containers/flat_multimap/1.cc: New tests. |
| * testsuite/23_containers/map/cons/from_range.cc: New tests. |
| * testsuite/23_containers/multimap/cons/from_range.cc: New tests. |
| * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: |
| New tests. |
| |
| 2025-03-19 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/bits/unordered_map.h |
| (unordered_map(from_range_t, _Rg&&, const allocator_type&)) |
| (unordered_multimap(from_range_t, _Rg&&, const allocator_type&)): |
| Define. |
| * include/bits/unordered_set.h |
| (unordered_set(from_range_t, _Rg&&, const allocator_type&)) |
| (unordered_multiset(from_range_t, _Rg&&, const allocator_type&)): |
| Define. |
| * testsuite/23_containers/unordered_map/cons/from_range.cc: New tests. |
| New tests. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: |
| New tests. |
| * testsuite/23_containers/unordered_multiset/cons/from_range.cc: |
| New tests. |
| * testsuite/23_containers/unordered_set/cons/from_range.cc: New tests. |
| * testsuite/std/ranges/conv/1.cc: New tests. |
| |
| 2025-03-19 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119358 |
| * include/bits/unordered_map.h (unordered_multimap::insert_range): |
| Cast ranges::distance to size_type before passing to _M_rehash_insert. |
| * include/bits/unordered_set.h (unordered_multiset::insert_range): |
| Same as unordered_multimap::insert_range. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: |
| New tests. |
| * testsuite/23_containers/unordered_multiset/cons/from_range.cc: |
| New tests. |
| |
| 2025-03-18 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/unordered_map.h (unordered_map): Define from_range |
| constructors and insert_range member. |
| (unordered_multimap): Likewise. |
| * testsuite/23_containers/unordered_multimap/cons/from_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_multimap/modifiers/insert_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_map/cons/from_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_map/modifiers/insert_range.cc: |
| New test. |
| |
| 2025-03-18 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/hashtable.h (_M_rehash_insert) |
| (_M_insert_range_multi): Extracted rehashing for range insertion |
| to separate function. |
| * include/bits/unordered_set.h (unordered_set): Define from_range |
| constructors and insert_range member. |
| (unordered_multiset) Likewise. |
| * testsuite/23_containers/unordered_multiset/cons/from_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_multiset/modifiers/insert_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_set/cons/from_range.cc: |
| New test. |
| * testsuite/23_containers/unordered_set/modifiers/insert_range.cc: |
| New test. |
| |
| 2025-03-18 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/stl_multiset.h: (inser_range) |
| (multiset(from_range_t, _Rg&&, const _Compare&, const _Alloc&)) |
| (multiset(from_range_t, _Rg&&, const _Alloc&)): Define. |
| * include/bits/stl_set.h: (set(from_range_t, _Rg&&, const _Alloc&)) |
| (set(from_range_t, _Rg&&, const _Compare&, const _Alloc&), insert_range): |
| Define. |
| * testsuite/23_containers/multiset/cons/from_range.cc: New test. |
| * testsuite/23_containers/multiset/modifiers/insert/insert_range.cc: |
| New test. |
| * testsuite/23_containers/set/cons/from_range.cc: New test. |
| * testsuite/23_containers/set/modifiers/insert/insert_range.cc: |
| New test. |
| |
| 2025-03-18 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/ranges_base.h (__detail::__range_to_alloc_type): |
| Define. |
| * include/bits/stl_multimap.h: (inser_range) |
| (multimap(from_range_t, _Rg&&, const _Compare&, const _Alloc&)) |
| (multimap(from_range_t, _Rg&&, const _Alloc&)): Define. |
| * include/bits/stl_map.h: (map(from_range_t, _Rg&&, const _Alloc&)) i |
| (map(from_range_t, _Rg&&, const _Compare&, const _Alloc&), insert_range): |
| Define. |
| * testsuite/23_containers/multimap/cons/from_range.cc: New test. |
| * testsuite/23_containers/multimap/modifiers/insert/insert_range.cc: New test. |
| * testsuite/23_containers/map/cons/from_range.cc: New test. |
| * testsuite/23_containers/map/modifiers/insert/insert_range.cc: New test. |
| |
| 2025-03-14 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/119282 |
| * include/bits/stl_vector.h (vector::vector(from_range_t)): Add |
| missing 'constexpr' to local class _Clear. |
| * testsuite/std/ranges/conv/1.cc (test_pr119282): New test. |
| |
| 2025-03-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111138 |
| * include/std/ranges (_ZipTransform::operator()): |
| Create separate overload for calls with empty range pack, |
| and add move_constructible, regular_invocable and |
| is_object_v<invoke_result_t<...>>> constraints. |
| * testsuite/std/ranges/zip_transform/1.cc: New tests |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| 2025-03-14 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| PR target/92713 |
| PR target/101544 |
| * config/cpu/nvptx/cpu_defines.h: New. |
| * config/cpu/nvptx/t-nvptx: Likewise. |
| * configure.host: Handle GCN, nvptx. |
| |
| 2025-03-14 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * testsuite/23_containers/priority_queue/cons_from_range.cc: |
| Add `#include <algorithm>. |
| * testsuite/23_containers/priority_queue/members/push_range.cc: |
| Add `#include <algorithm>. |
| |
| 2025-03-14 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/shared_ptr_base.h (lock): Fixed a compile error |
| when calling lock() on a weak_ptr<T[]>, by removing an |
| erroneous usage of element_type from within lock(). |
| * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc: |
| Add more tests for array types. |
| * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc: |
| Likewise. |
| * testsuite/20_util/shared_ptr/requirements/1.cc: New test. |
| * testsuite/20_util/weak_ptr/requirements/1.cc: New test. |
| |
| 2025-03-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/116440 |
| * include/std/tuple (tuple::tuple(const _Elements&...)) |
| [C++20]: Turn into a template. |
| * testsuite/20_util/tuple/116440.C: New test. |
| |
| 2025-03-13 Jonathan Wakely <jwakely@redhat.com> |
| Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/111055 |
| * include/bits/stl_queue.h (queue(from_range_t, _Rg&&)) |
| (queue(from_range_t, _Rg&&, const _Alloc&), push_range): |
| Define. |
| (priority_queue(from_range_t, R&&, const Compare&)) |
| (push_range): Define. |
| * include/bits/stl_stack.h (stack(from_range_t, R&&)) |
| (stack(from_range_t, R&&, const Alloc&), push_range): Define. |
| * testsuite/util/testsuite_iterators.h (test_range_nocopy): Define. |
| * testsuite/23_containers/priority_queue/cons_from_range.cc: New test. |
| * testsuite/23_containers/priority_queue/members/push_range.cc: New test. |
| * testsuite/23_containers/queue/cons_from_range.cc: New test. |
| * testsuite/23_containers/queue/members/push_range.cc: New test. |
| * testsuite/23_containers/stack/cons_from_range.cc: New test. |
| * testsuite/23_containers/stack/members/push_range.cc: New test. |
| |
| 2025-03-13 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/Makefile.am: Add stdckdint.h. |
| * include/Makefile.in: Regenerate. |
| * src/c++23/std.compat.cc.in: Export <stdckdint.h> functions. |
| * include/c_compatibility/stdckdint.h: New file. |
| * testsuite/26_numerics/stdckdint/1.cc: New test. |
| * testsuite/26_numerics/stdckdint/2_neg.cc: New test. |
| |
| 2025-03-13 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/Makefile.am: Add stdbit.h. |
| * include/Makefile.in: Regenerate. |
| * src/c++23/std.compat.cc.in: Export <stdbit.h> functions. |
| * include/c_compatibility/stdbit.h: New file. |
| * testsuite/20_util/stdbit/1.cc: New test. |
| * testsuite/20_util/stdbit/2_neg.cc: New test. |
| |
| 2025-03-13 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/119135 |
| * include/std/ranges: Include <utility>. |
| (views::__detail::__is_ref_view): Replace with ... |
| (views::__detail::__is_constable_ref_view): ... this. |
| (views::_AsConst::operator()): Replace bogus use of element_type |
| in the ref_view branch. |
| * testsuite/std/ranges/adaptors/as_const/1.cc (test03): Extend |
| test. |
| |
| 2025-03-13 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * acinclude.m4 (GLIBCXX_ENABLE_CXX_FLAGS): Append to |
| 'EXTRA_CXX_FLAGS' any additional flags. |
| * configure: Regenerate. |
| * configure.host: Document 'EXTRA_CFLAGS', 'EXTRA_CXX_FLAGS'. |
| |
| 2025-03-13 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/108053 |
| * include/std/format (basic_format_arg::_M_visit_user): |
| Helper function for wrapping extension types into handle. |
| (visit_format_arg): Call `_M_visit_user` instead of `_M_visit`. |
| (basic_format_arg::visit): As above. |
| (__format::__visit_format_arg): Provides direct access to |
| values stored in basic_format_arg. |
| (__format::__int_from_arg): Use __format::__visit_format_arg |
| instead of std::visit_format_arg. |
| (_Formatting_scanner::_M_format_arg): As above. |
| (_Checking_scanner::__do_vformat_to): As above. |
| * testsuite/std/format/arguments/args.cc: New tests. |
| * testsuite/std/format/string.cc: Test for using __int128 |
| as width/precision. |
| |
| 2025-03-12 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/version.def (ranges_to_input): Define. |
| * include/bits/version.h: Regenerate. |
| * include/std/ranges (ranges::to_input_view): Define for C++26. |
| (views::__detail::__can_to_input): Likewise. |
| (views::_ToInput, views::to_input): Likewise. |
| * testsuite/std/ranges/adaptors/to_input/1.cc: New test. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/format: Include <bits/monostate.h> instead of |
| <variant>. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/format (basic_format_parse_context::__once): New |
| variable template. |
| (basic_format_parse_context::__valid_types_for_check_dynamic_spec): |
| New function template for checking argument types. |
| (basic_format_parse_context::__check_dynamic_spec): New function |
| template to implement the common check_dynamic_spec logic. |
| (basic_format_parse_context::check_dynamic_spec_integral): Call |
| __check_dynamic_spec instead of check_dynamic_spec. |
| (basic_format_parse_context::check_dynamic_spec_string): |
| Likewise. Use _CharT instead of char_type consistently. |
| (basic_format_parse_context::check_dynamic_spec): Use |
| __valid_types_for_check_dynamic_spec for precondition checks and |
| call __check_dynamic_spec for checking the arg id. |
| * testsuite/std/format/parse_ctx_neg.cc: Adjust expected errors. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/future (packaged_task::packaged_task(F&&)): Add |
| static_assert. |
| * testsuite/30_threads/packaged_task/cons/dangling_ref.cc: Add |
| dg-error for new static assertion. |
| * testsuite/30_threads/packaged_task/cons/lwg4154_neg.cc: New |
| test. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/chrono (__detail::__get_leap_second_info): Update |
| expiry date for leap seconds list. |
| * src/c++20/tzdata.zi: Import new file from 2025a release. |
| * src/c++20/tzdb.cc (tzdb_list::_Node::_S_read_leap_seconds) |
| Update expiry date for leap seconds list. |
| |
| 2025-03-12 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| * include/std/format (formatter<_Float16, _CharT>): Define only if |
| _GLIBCXX_FLOAT_IS_IEEE_BINARY32 macro is defined. |
| (formatter<_Float16, _CharT>): As above. |
| (formatter<__gnu_cxx::__bfloat16_t, _CharT>): As above. |
| (formatter<_Float64, _CharT>): Define only if |
| _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 is defined. |
| (basic_format_arg::_S_to_arg_type): Normalize _Float32 and _Float64 |
| only to float and double respectivelly. |
| (basic_format_arg::_S_to_enum): Remove handling of _Float32 and _Float64. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/strings.xml: Tweak formatting. Add example |
| using lambda. |
| * doc/html/manual/strings.html: Regenerate. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/unique_ptr.h (unique_ptr::operator*): Add |
| static_assert to check for dangling reference, as per LWG 4148. |
| * testsuite/20_util/unique_ptr/lwg4148.cc: New test. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/ranges_util.h (ranges::_detail::__has_arrow): |
| Require operator->() to be valid on const-qualified type, as per |
| LWG 4112. |
| * testsuite/std/ranges/adaptors/lwg4112.cc: New test. |
| |
| 2025-03-12 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/format |
| (basic_format_parse_context::check_dynamic_spec): Require a |
| non-empty parameter pack, as per LWG 4142. |
| * testsuite/std/format/parse_ctx.cc: Remove call of |
| check_dynamic_spec with empty template argument list. |
| * testsuite/std/format/parse_ctx_neg.cc: Add dg-error to call of |
| check_dynamic_spec with empty template argument list. |
| |
| 2025-03-08 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/version.def (atomic_value_initialization): |
| Guard the FTM with the language concepts FTM. |
| * include/bits/version.h: Regenerate. |
| * include/std/atomic (atomic): When atomic value init is |
| defined, change the defaulted default constructor to |
| a non-defaulted one, constraining it as per LWG4169. |
| Otherwise, keep the existing constructor. |
| Remove the NSDMI for the _M_i member. |
| (_GLIBCXX20_INIT): Drop the macro, as it is not needed any more. |
| * testsuite/29_atomics/atomic/69301.cc: Test that |
| an atomic wrapping a non-default-constructible type is |
| always itself non-default-constructible (in all language |
| modes). |
| * testsuite/29_atomics/atomic/cons/trivial.cc: New test. |
| |
| 2025-03-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_algobase.h (__nothrow_contiguous_iterator): |
| Remove. |
| (__memcpyable_iterators): Simplify. |
| (__copy_move_a2, __copy_n_a, __copy_move_backward_a2): Call |
| std::to_address on the iterators after advancing them. |
| * testsuite/25_algorithms/copy/contiguous.cc: New test. |
| * testsuite/25_algorithms/copy_backward/contiguous.cc: New test. |
| * testsuite/25_algorithms/copy_n/contiguous.cc: New test. |
| |
| 2025-03-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/forward_list (erase): Change lambda to have |
| explicit return type and const parameter type. |
| * include/std/list (erase): Likewise. |
| * testsuite/23_containers/forward_list/erasure.cc: Check lambda |
| is correct. |
| * testsuite/23_containers/list/erasure.cc: Likewise. |
| |
| 2025-03-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/chrono_io.h (chrono::__detail::from_stream): Add |
| deleted function as poison pill for unqualified lookup. |
| |
| 2025-03-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/expected (expected<cv void,E>::value()&&): |
| Add missing static_assert for LWG 3940. |
| * testsuite/20_util/expected/lwg3843.cc: New test. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/unique_lock.h (unique_lock::operator=): Fix for |
| self-move-assignment. |
| * include/std/shared_mutex (shared_lock::operator=): Add |
| comment. |
| * testsuite/30_threads/shared_lock/cons/lwg4172.cc: New test. |
| * testsuite/30_threads/unique_lock/cons/lwg4172.cc: New test. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_list.h (list::pop_front, list::pop_back): |
| Add non-empty assertions. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/ranges_util.h: Include <bits/stl_pair.h>. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/span (span::~span): Remove, as per LWG 3903. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119144 |
| * testsuite/26_numerics/complex/tuple_like.cc: Include |
| <algorithm>, replace std::string with std::string_view, |
| instantiate tests for long instead of size_t. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * src/c++20/tzdb.cc [__GTHREADS && !__GTHREADS_CXX0X]: Use |
| '__gnu_cxx::__mutex'. |
| |
| 2025-03-06 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * src/c++20/format.cc (conv): Tag 'out' as '[[maybe_unused]]'. |
| |
| 2025-03-06 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * src/c++17/fs_dir.cc (do_unlink): Tag 'is_directory' as |
| '[[maybe_unused]]'. |
| |
| 2025-03-06 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * src/filesystem/dir-common.h (openat): Tag 'nofollow' as |
| '[[maybe_unused]]'. |
| |
| 2025-03-06 Thomas Schwinge <tschwinge@baylibre.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/c++config [!__cpp_exceptions] |
| (_GLIBCXX_THROW_OR_ABORT): Reference '_EXC'. |
| |
| 2025-03-06 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/20_util/specialized_algorithms/uninitialized_copy/constexpr.cc: |
| Do not test COW std::string in constexpr contexts. |
| * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc: |
| Likewise. |
| * testsuite/20_util/specialized_algorithms/uninitialized_fill/constexpr.cc: |
| Likewise. |
| * testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc: |
| Likewise. |
| * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc: |
| Likewise. |
| |
| 2025-03-06 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| PR libstdc++/113310 |
| * include/bits/stl_pair.h (get): Forward-declare std::get for |
| std::complex. |
| * include/bits/version.def (tuple_like): Bump the value of |
| the feature-testing macro in C++26. |
| * include/bits/version.h: Regenerate. |
| * include/std/complex: Implement the tuple protocol for |
| std::complex. |
| (tuple_size): Specialize for std::complex. |
| (tuple_element): Ditto. |
| (__is_tuple_like_v): Ditto. |
| (complex): Add a private getter to obtain references to the real |
| and the imaginary part, on the primary class template and on its |
| specializations. |
| (get): Add overloads of std::get for std::complex. |
| * testsuite/20_util/tuple/tuple_like_ftm.cc: New test. |
| * testsuite/26_numerics/complex/tuple_like.cc: New test. |
| |
| 2025-03-05 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/ranges (enumerate_view::_Iterator::operator-): |
| Add noexcept, as per LWG 3912. |
| * testsuite/std/ranges/adaptors/enumerate/1.cc: Check iterator |
| difference is noexcept. |
| |
| 2025-03-05 yxj-github-437 <2457369732@qq.com> |
| |
| * src/c++23/std-clib.cc.in (timespec): Move within preprocessor |
| group guarded by _GLIBCXX_HAVE_TIMESPEC_GET. |
| |
| 2025-03-05 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/119110 |
| * testsuite/25_algorithms/move/constrained.cc: Move test06 |
| function to ... |
| * testsuite/25_algorithms/move/105609.cc: New test. |
| * testsuite/25_algorithms/move_backward/constrained.cc: Move |
| test04 function to ... |
| * testsuite/25_algorithms/move_backward/105609.cc: New test. |
| |
| 2025-03-05 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/version.def (ranges_cache_latest): Define. |
| * include/bits/version.h: Regenerate. |
| * include/std/ranges (__detail::__non_propagating_cache::_M_reset): |
| Export from base class _Optional_base. |
| (cache_latest_view): Define for C++26. |
| (cache_latest_view::_Iterator): Likewise. |
| (cache_latest_view::_Sentinel): Likewise. |
| (views::__detail::__can_cache_latest): Likewise. |
| (views::_CacheLatest, views::cache_latest): Likewise. |
| * testsuite/std/ranges/adaptors/cache_latest/1.cc: New test. |
| |
| 2025-03-05 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/stl_algo.h (__stable_sort): Use if consteval |
| instead of is_constant_evaluated. |
| |
| 2025-03-05 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/115215 |
| PR libstdc++/115218 |
| * include/std/ranges |
| (concat_view::iterator::_S_invoke_with_runtime_index): Use |
| __builtin_unreachable in recursive lambda to certify it always |
| exits via 'return'. |
| (concat_view::iterator::iterator): In the const-converting |
| constructor, direct initialize _M_it. |
| (views::_Concat::operator()): Adjust constraints in the |
| single-argument case as per LWG 4082. |
| * testsuite/std/ranges/concat/1.cc (test01): Call it at runtime |
| too. |
| (test04): New test. |
| |
| 2025-03-05 Tomasz Kamiński <tkaminsk@redhat.com> |
| |
| PR libstdc++/119121 |
| * include/bits/ranges_util.h (__detail::__pair_like_convertible_from): |
| Use `_Tp` in `is_reference_v` check |
| * testsuite/std/ranges/subrange/tuple_like.cc: New tests for |
| pair-like conversion |
| |
| 2025-03-05 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/ranges_uninitialized.h: Mark the specialized |
| memory algorithms as constexpr in C++26. Also mark the members |
| of the _DestroyGuard helper class. |
| * include/bits/stl_uninitialized.h: Ditto. |
| * include/bits/stl_construct.h: (_Construct_novalue) Mark it |
| as constexpr in C++26. |
| * include/bits/version.def (raw_memory_algorithms): Bump the |
| feature-testing macro for C++26. |
| * include/bits/version.h: Regenerate. |
| * testsuite/20_util/headers/memory/synopsis.cc: Add constexpr to |
| the uninitialized_* algorithms (when in C++26) in the test. |
| * testsuite/20_util/specialized_algorithms/feature_test_macro.cc: |
| New test. |
| * testsuite/20_util/specialized_algorithms/uninitialized_copy/constexpr.cc: |
| New test. |
| * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc: |
| New test. |
| * testsuite/20_util/specialized_algorithms/uninitialized_fill/constexpr.cc: |
| New test. |
| * testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc: |
| New test. |
| * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc: |
| New test. |
| |
| 2025-03-04 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/test.xml: Remove stray comma. |
| * doc/html/manual/test.html: Regenerate. |
| |
| 2025-02-28 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/106612 |
| * include/bits/iterator_concepts.h (_IterMove::__iter_ref_t): |
| New alias template. |
| (_IterMove::__result): Use __iter_ref_t instead of |
| std::iter_reference_t. |
| (_IterMove::__type): Remove incorrect __dereferenceable |
| constraint. |
| (_IterMove::operator()): Likewise. Add correct constraints. Use |
| __iter_ref_t instead of std::iter_reference_t. Forward parameter |
| as correct value category. |
| (iter_swap): Add comments. |
| * testsuite/24_iterators/customization_points/iter_move.cc: Test |
| that iter_move is found by ADL and that rvalue arguments are |
| handled correctly. |
| |
| 2025-02-28 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/105609 |
| * include/bits/ranges_algobase.h (__detail::__assign_one): New |
| helper function. |
| (__copy_or_move, __copy_or_move_backward): Use new function |
| instead of std::__assign_one. |
| * testsuite/25_algorithms/move/constrained.cc: Check that |
| ADL iter_move is used in preference to std::move. |
| * testsuite/25_algorithms/move_backward/constrained.cc: |
| Likewise. |
| |
| 2025-02-28 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/112803 |
| * include/std/ranges (ranges::to): Add static assertions to |
| enforce Mandates conditions. |
| * testsuite/std/ranges/conv/112803.cc: New test. |
| |
| 2025-02-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/104606 |
| * include/std/optional (operator<=>): Revert r14-9771 change. |
| Add constraint checking the validity of the return type |
| compare_three_way_result_t before the three_way_comparable_with |
| constraint. |
| |
| 2025-02-28 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/112490 |
| * include/bits/stl_iterator.h (basic_const_iterator::operator<): |
| Replace non-dependent basic_const_iterator function parameter with |
| a dependent one of type basic_const_iterator<_It3> where _It3 |
| matches _It. |
| (basic_const_iterator::operator>): Likewise. |
| (basic_const_iterator::operator<=): Likewise. |
| (basic_const_iterator::operator>=): Likewise. |
| * testsuite/24_iterators/const_iterator/112490.cc: New test. |
| |
| 2025-02-27 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/stacktrace (_Impl::_M_allocate): Fix outdated |
| comment. |
| |
| 2025-02-26 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/118083 |
| * include/bits/ranges_base.h |
| (ranges::__access::__possibly_const_range): Mention LWG 4027. |
| |
| 2025-02-25 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/algorithmfwd.h (stable_sort): Add constexpr. |
| * include/bits/ranges_algo.h (__stable_sort_fn): Add constexpr |
| to the function call operators. |
| * include/bits/stl_algo.h (__stable_sort): Add constexpr. |
| During constant evaluation, always use the non-allocating path. |
| (stable_sort): Add constexpr. |
| (__inplace_stable_sort): Likewise. |
| (__merge_without_buffer): Likewise. |
| * include/bits/version.def (constexpr_algorithms): Bump value |
| for C++26. |
| * include/bits/version.h: Regnerate. |
| * testsuite/25_algorithms/cpp_lib_constexpr.cc: Test the bumped |
| feature-testing macro. |
| * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adapt |
| the test to constexpr stable_sort. |
| * testsuite/25_algorithms/stable_sort/constexpr.cc: New test. |
| |
| 2025-02-25 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/c++config (_GLIBCXX26_CONSTEXPR): New macro. |
| |
| 2025-02-25 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/93059 |
| * include/bits/stl_algobase.h (__fill_a1): Fix typo in SFINAE |
| constraint. |
| |
| 2025-02-25 François Dumont <frs.dumont@gmail.com> |
| |
| * include/bits/hashtable_policy.h |
| (_Hash_code_base::_M_copy_code, _Hash_code_base::_M_store_code): Remove. |
| * include/bits/hashtable.h (_M_hash_code_ext): New. |
| (_M_merge_multi(_Hashtable&)): Use latter. |
| (_M_copy_code): New. |
| (_M_assign): Use latter. |
| (_M_bucket_index_ex): New. |
| (_M_equals): Use latter. |
| (_M_store_code): New. |
| (_M_src_hash_code): Remove key_type parameter. |
| * testsuite/23_containers/unordered_map/modifiers/merge.cc (test10): New |
| test case. |
| |
| 2025-02-25 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/118083 |
| * include/bits/ranges_base.h |
| (ranges::__access::__possibly_const_range): Adjust logic as per |
| LWG 4027. Add missing input_range constraint. |
| * testsuite/std/ranges/access/cbegin.cc (test05): Verify LWG |
| 4027 testcases. |
| * testsuite/std/ranges/access/cdata.cc: Adjust, simplify and |
| consolidate some tests after the above. |
| * testsuite/std/ranges/access/cend.cc: Likewise. |
| * testsuite/std/ranges/access/crbegin.cc: Likewise. |
| * testsuite/std/ranges/access/crend.cc: Likewise. |
| * testsuite/std/ranges/adaptors/join.cc: Likewise. |
| * testsuite/std/ranges/adaptors/take_while.cc: Likewise. |
| * testsuite/std/ranges/adaptors/transform.cc: Likewise. |
| |
| 2025-02-22 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR c++/118981 |
| * src/c++20/tzdb.cc: Use init_priority(98) instead of |
| init_priority(99). |
| |
| 2025-02-22 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * testsuite/lib/prune.exp (proc libstdc++-dg-prune): Turn |
| 'sorry, unimplemented: dynamic stack allocation not supported' into |
| UNSUPPORTED. |
| |
| 2025-02-22 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_base.h (__atomic_base<_ITp>): Remove |
| misleading comment. |
| |
| 2025-02-22 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): |
| Remove redundant cast. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118559 |
| * include/std/type_traits (rank, rank_v): Do not use |
| __array_rank for Clang 19 and older. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Add parentheses. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118855 |
| * include/std/bit (__count_lzero, __count_rzero, __popcount): |
| Use type-generic built-ins when available. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/experimental/bits/simd.h (__find_next_valid_abi): Cast |
| __bit_ceil argument to unsigned. |
| * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): |
| Cast __bit_ceil argument to unsigned. |
| * src/c++17/memory_resource.cc (big_block): Cast __bit_width |
| argument to unsigned. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| * src/c++17/memory_resource.cc (default_res): Define here |
| instead of including default_resource.h. |
| * src/c++98/globals_io.cc (__ioinit): Define here instead of |
| including ios_base_init.h. |
| * src/c++17/default_resource.h: Removed. |
| * src/c++98/ios_base_init.h: Removed. |
| |
| 2025-02-20 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118811 |
| * src/c++20/tzdb.cc (tzdb_list::_Node): Use init_priority |
| attribute on static data members. |
| * testsuite/std/time/tzdb_list/pr118811.cc: New test. |
| |
| 2025-02-20 Patrick Palka <ppalka@redhat.com> |
| |
| * include/std/ranges (concat_view::iterator): Rename to ... |
| (concat_view::_Iterator): ... this throughout. |
| |
| 2025-02-20 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/115209 |
| * include/bits/version.def (ranges_concat): Depend on |
| __cpp_pack_indexing. |
| * include/bits/version.h: Regenerate. |
| * include/std/ranges (__detail::__last_is_common): Remove. |
| (__detail::__all_but_first_sized): New. |
| (concat_view::end): Use C++26 pack indexing instead of |
| __last_is_common as per R8 of P2542. |
| (concat_view::iterator::operator-): Update constraints on |
| iter/sent overloads as per R8 of P2542. |
| |
| 2025-02-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/shared_ptr_base.h: Do not include <bit>. |
| |
| 2025-02-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/100612 |
| * include/std/thread (__pmf_expects_stop_token): Constrain |
| variable template specialization with concept. Add comment. |
| |
| 2025-02-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/range_access.h (rbegin, rend, crbegin, crend): |
| Add conditional noexcept, as per P3623R0. |
| * testsuite/24_iterators/headers/iterator/range_access.cc: Add |
| noexcept-specifier to rbegin, rend, crbegin and crend |
| declarations. |
| |
| 2025-02-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/24_iterators/headers/iterator/range_access_c++11.cc: |
| Removed. |
| * testsuite/24_iterators/headers/iterator/range_access_c++14.cc: |
| Removed. |
| * testsuite/24_iterators/headers/iterator/range_access_c++17.cc: |
| Removed. |
| * testsuite/24_iterators/headers/iterator/range_access.cc: |
| New test. |
| |
| 2025-02-14 Andrew Pinski <quic_apinski@quicinc.com> |
| |
| PR libstdc++/118865 |
| * include/bits/stl_list.h (_M_initialize_dispatch): Add an |
| unreachable if the iterator was not empty that the list will |
| now be not empty. |
| |
| 2025-02-14 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/parallel/algobase.h (__mismatch_switch): Qualify calls |
| to make_pair to avoid ADL. |
| |
| 2025-02-14 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_tree.h (_Rb_tree::_M_equal_range): Replace |
| unqualified call to make_pair with explicit construction of |
| std::pair. |
| * testsuite/23_containers/set/operations/equal_range_adl.cc: |
| New test. |
| |
| 2025-02-14 Matthew Malcomson <mmalcomson@nvidia.com> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_base.h (__atomic_fetch_addable): Define |
| new concept. |
| (__atomic_impl::__fetch_add_flt): Use new concept to make use of |
| __atomic_fetch_add when available. |
| (__atomic_fetch_subtractable, __fetch_sub_flt): Likewise. |
| (__atomic_add_fetchable, __add_fetch_flt): Likewise. |
| (__atomic_sub_fetchable, __sub_fetch_flt): Likewise. |
| |
| 2025-02-08 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * testsuite/lib/prune.exp (libstdc++-dg-prune): Turn |
| 'sorry, unimplemented: exception handling not supported' into |
| UNSUPPORTED. |
| |
| 2025-02-08 Thomas Schwinge <tschwinge@baylibre.com> |
| |
| * testsuite/lib/prune.exp (libstdc++-dg-prune): Clarify |
| effective-target 'exceptions_enabled'. |
| |
| 2025-02-07 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| PR libstdc++/118160 |
| PR libstdc++/100249 |
| * include/bits/ranges_algo.h (__is_permutation_fn): Avoid a |
| dangling reference by storing the result of the iterator |
| dereference and the result of the projection in two distinct |
| variables, in order to lifetime-extend each one. |
| Forward the projected value to the predicate. |
| * testsuite/25_algorithms/is_permutation/constrained.cc: Add a |
| test with a range returning prvalues. Test it in a constexpr |
| context, in order to rely on the compiler to catch UB. |
| |
| 2025-02-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/ostream.h (basic_ostream::_Disable_exceptions): |
| RAII helper type. |
| (basic_ostream::sentry::~sentry): Use _Disable_exceptions. Add |
| try-catch block around call to pubsync. |
| * testsuite/27_io/basic_ostream/exceptions/char/lwg4188.cc: New |
| test. |
| * testsuite/27_io/basic_ostream/exceptions/wchar_t/lwg4188.cc: |
| New test. |
| |
| 2025-02-07 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/111050 |
| * include/bits/hashtable_policy.h (_Hash_node_value_base): Add |
| comment about always_inline attributes. |
| |
| 2025-02-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> |
| Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118701 |
| * config/abi/pre/gnu.ver (CXXABI_1.3.16): Move __riscv guard |
| around version. |
| * scripts/extract_symvers.pl: Allow for weak versions. |
| * testsuite/util/testsuite_abi.cc (check_version): Wrap |
| CXXABI_1.3.16 in __riscv. |
| |
| 2025-01-31 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/118156 |
| * include/std/flat_map (_Flat_map_impl::_M_insert): Generalized |
| version of insert taking heterogenous iterator/sentinel pair. |
| (_Flat_map_impl::insert): Dispatch to _M_insert. |
| (_Flat_map_impl::insert_range): Likewise. |
| (flat_map): Export _Flat_map_impl::insert_range. |
| (flat_multimap): Likewise. |
| * include/std/flat_set (_Flat_set_impl::insert_range): |
| Reimplement directly, not in terms of insert. |
| (flat_set): Export _Flat_set_impl::insert_range. |
| (flat_multiset): Likewise. |
| * testsuite/23_containers/flat_map/1.cc (test06): New test. |
| * testsuite/23_containers/flat_multimap/1.cc (test06): New test. |
| * testsuite/23_containers/flat_multiset/1.cc (test06): New test. |
| * testsuite/23_containers/flat_set/1.cc (test06): New test. |
| |
| 2025-01-31 Patrick Palka <ppalka@redhat.com> |
| |
| * include/bits/stl_bvector.h (vector<bool>::insert_range): |
| Consistently return an iterator pointing to the first element |
| inserted. |
| * include/bits/vector.tcc (vector::insert_range): Likewise. |
| * testsuite/23_containers/vector/bool/modifiers/insert/insert_range.cc: |
| Verify insert_range return values. |
| * testsuite/23_containers/vector/modifiers/insert/insert_range.cc: |
| Likewise. |
| |
| 2025-01-30 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/98749 |
| * include/std/latch (latch::max()): Ensure the return value is |
| representable as the return type. |
| (latch::latch(ptrdiff_t)): Add assertion. |
| (latch::count_down): Fix copy & pasted duplicate assertion. Use |
| std::cmp_equal to compare __platform_wait_t and ptrdiff_t |
| values. |
| (latch::_M_a): Use defined constant for alignment. |
| * testsuite/30_threads/latch/1.cc: Check max(). Check constant |
| initialization works for values in the valid range. Check |
| alignment. |
| |
| 2025-01-29 Patrick Palka <ppalka@redhat.com> |
| |
| PR libstdc++/118413 |
| * include/std/ranges (views::__adaptor::_Partial): Adjust |
| constraints on the "simple" partial specializations to require |
| is_trivially_copy_constructible_v instead of |
| is_trivially_copyable_v. |
| * testsuite/std/ranges/adaptors/adjacent_transform/1.cc (test04): |
| Extend P2494R2 test. |
| * testsuite/std/ranges/adaptors/transform.cc (test09): Likewise. |
| |
| 2025-01-27 Andreas Schwab <schwab@suse.de> |
| |
| PR libstdc++/118563 |
| * testsuite/util/testsuite_abi.cc (check_version): Add |
| CXXABI_1.3.16. |
| * config/abi/pre/gnu.ver (CXXABI_1.3.14) [__riscv]: Exclude |
| typeinfo for bfloat16_t. |
| (CXXABI_1.3.16) [__riscv]: Add it here. |
| |
| 2025-01-23 Jan Hubicka <jh@suse.cz> |
| |
| PR target/80813 |
| * include/bits/stl_bvector.h (vector<bool, _Alloc>::operator []): Do |
| not use iterators. |
| |
| 2025-01-20 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| PR libstdc++/118185 |
| PR libstdc++/100249 |
| * include/bits/ranges_algo.h (__clamp_fn): Correctly forward the |
| projected value to the comparator. |
| * testsuite/25_algorithms/clamp/118185.cc: New test. |
| |
| 2025-01-16 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/99995 |
| * include/Makefile.am: Add new header. |
| * include/Makefile.in: Regenerate. |
| * include/bits/unique_ptr.h: Include bits/ostream.h instead of |
| ostream. |
| * include/std/ostream: Include new header. |
| * include/bits/ostream.h: New file. |
| |
| 2025-01-16 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118158 |
| * src/c++17/fs_ops.cc (fs::equivalent): Remove error reporting |
| for is_other(s1) && is_other(s2) case, as per LWG 2937. |
| * testsuite/27_io/filesystem/operations/pr118158.cc: New test. |
| |
| 2025-01-16 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/stl_map.h: Check __glibcxx_node_extract instead |
| of __cplusplus. |
| * include/bits/stl_multimap.h: Likewise. |
| * include/bits/stl_multiset.h: Likewise. |
| * include/bits/stl_set.h: Likewise. |
| * include/bits/stl_tree.h: Likewise. |
| |
| 2025-01-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/27_io/ios_base/types/openmode/case_label.cc: Use |
| standard feature test macro not internal one. |
| |
| 2025-01-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/23_containers/set/requirements/explicit_instantiation/alloc_ptr.cc: |
| Guard node extraction checks with feature test macro. Remove |
| calls to non-existent range members. |
| * testsuite/23_containers/forward_list/requirements/explicit_instantiation/alloc_ptr.cc: |
| Use standard macro not internal one. |
| * testsuite/23_containers/list/requirements/explicit_instantiation/alloc_ptr.cc: |
| Likewise. |
| |
| 2025-01-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/109849 |
| * include/bits/vector.tcc (vector::_M_range_insert): Fix |
| reversed args in length calculation. |
| |
| 2025-01-15 Jonathan Wakely <jwakely@redhat.com> |
| |
| * testsuite/28_regex/traits/char/transform_primary.cc: Fix |
| subclause numbering in references to the standard. |
| |
| 2025-01-15 Jakub Jelinek <jakub@redhat.com> |
| |
| PR c++/118387 |
| * testsuite/25_algorithms/default_template_value.cc |
| (Input::operator<=>): Use auto as return type rather than bool. |
| |
| 2025-01-12 Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> |
| |
| * testsuite/27_io/print/1.cc: Allow both LF and CRLF in test. |
| * testsuite/27_io/print/3.cc: Likewise. |
| |
| 2025-01-12 Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> |
| |
| * testsuite/29_atomics/atomic_float/compare_exchange_padding.cc: |
| Use effective-target libatomic_available. |
| |
| 2025-01-10 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/atomic_futex.h (__atomic_futex_unsigned): Remove |
| names of unused parameters in non-futex implementation. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/move.h (__addressof, forward, forward_like, move) |
| (move_if_noexcept, addressof): Add always_inline attribute. |
| Replace _GLIBCXX_NODISCARD with [[__nodiscard__]]. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118260 |
| * python/hook.in: Run 'skip' commands for some simple accessor |
| functions. |
| |
| 2025-01-08 Nicolas Werner <nicolas.werner@hotmail.de> |
| |
| PR libstdc++/106852 |
| * src/c++23/std.cc.in (to_underlying): Add. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118177 |
| * src/c++23/std-clib.cc.in: Use preprocessor conditions for |
| names which are not always defined. |
| * src/c++23/std.cc.in: Likewise. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/span: Fix indentation. |
| |
| 2025-01-08 Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> |
| |
| * include/bits/version.def: Add the new feature-testing macro. |
| * include/bits/version.h: Regenerate. |
| * include/std/span: Add constructor from initializer_list. |
| * testsuite/23_containers/span/init_list_cons.cc: New test. |
| * testsuite/23_containers/span/init_list_cons_neg.cc: New test. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/std/span (__detail::__extent_storage): Check |
| precondition in constructor. Add consteval constructor for valid |
| lengths and deleted constructor for invalid constant lengths. |
| Make member functions always_inline. |
| (__detail::__span_ptr): New class template. |
| (span): Adjust constructors to use a std::integral_constant |
| value for constant lengths. Declare all specializations of |
| std::span as friends. |
| (span::first<C>, span::last<C>, span::subspan<O,C>): Use new |
| private constructor. |
| (span(__span_ptr<T>)): New private constructor for constant |
| lengths. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/85824 |
| PR libstdc++/94409 |
| PR libstdc++/98723 |
| PR libstdc++/118105 |
| * include/bits/locale_classes.tcc (collate::do_transform): Check |
| errno after calling _M_transform. Use RAII type to manage the |
| buffer and to restore errno. |
| * include/bits/regex.h (regex_traits::transform_primary): Handle |
| exceptions from std::collate::transform and do not try to use |
| std::collate for user-defined facets. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/118093 |
| * include/bits/atomic_futex.h (_M_load_and_test_until_impl): |
| Return false for times before the epoch. |
| * src/c++11/futex.cc (_M_futex_wait_until): Extend check for |
| negative times to check for subsecond times. Add unlikely |
| attribute. |
| (_M_futex_wait_until_steady): Likewise. |
| * testsuite/30_threads/future/members/118093.cc: New test. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| PR libstdc++/90389 |
| * include/bits/deque.tcc (_M_insert_aux): Rename variadic |
| overload to _M_emplace_aux. |
| * include/bits/stl_deque.h (_M_insert_aux): Define inline. |
| (_M_emplace_aux): Declare. |
| * testsuite/23_containers/deque/modifiers/emplace/90389.cc: New |
| test. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * include/bits/move.h (forward, move, move_if_noexcept, addressof): |
| Add @since to Doxygen comments. |
| (forward_like): Add Doxygen comment. |
| |
| 2025-01-08 Jonathan Wakely <jwakely@redhat.com> |
| |
| * doc/xml/manual/evolution.xml: Replace invalid <variable> |
| elements with <varname>. |
| * doc/html/*: Regenerate. |
| |
| 2025-01-01 Gerald Pfeifer <gerald@pfeifer.com> |
| |
| * doc/html/manual/profile_mode.html: Delete. |
| * doc/html/manual/profile_mode_api.html: Ditto. |
| * doc/html/manual/profile_mode_cost_model.html: Ditto. |
| * doc/html/manual/profile_mode_design.html: Ditto. |
| * doc/html/manual/profile_mode_devel.html: Ditto. |
| * doc/html/manual/profile_mode_impl.html: Ditto. |
| |
| Copyright (C) 2025 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. |