2023-05-25 Matthias Kretz Backported from master: 2023-05-23 Matthias Kretz PR libstdc++/109261 * include/experimental/bits/simd.h (_SimdWrapper::_M_set): Avoid vector builtin subscripting in constant expressions. (resizing_simd_cast): Avoid memcpy if constant_evaluated. (const_where_expression, where_expression, where) (__extract_part, simd_mask, _SimdIntOperators, simd): Add either _GLIBCXX_SIMD_CONSTEXPR (on public APIs), or constexpr (on internal APIs). * include/experimental/bits/simd_builtin.h (__vector_permute) (__vector_shuffle, __extract_part, _GnuTraits::_SimdCastType1) (_GnuTraits::_SimdCastType2, _SimdImplBuiltin) (_MaskImplBuiltin::_S_store): Add constexpr. (_CommonImplBuiltin::_S_store_bool_array) (_SimdImplBuiltin::_S_load, _SimdImplBuiltin::_S_store) (_SimdImplBuiltin::_S_reduce, _MaskImplBuiltin::_S_load): Add constant_evaluated case. * include/experimental/bits/simd_fixed_size.h (_S_masked_load): Reword comment. (__tuple_element_meta, __make_meta, _SimdTuple::_M_apply_r) (_SimdTuple::_M_subscript_read, _SimdTuple::_M_subscript_write) (__make_simd_tuple, __optimize_simd_tuple, __extract_part) (__autocvt_to_simd, _Fixed::__traits::_SimdBase) (_Fixed::__traits::_SimdCastType, _SimdImplFixedSize): Add constexpr. (_SimdTuple::operator[], _M_set): Add constexpr and add constant_evaluated case. (_MaskImplFixedSize::_S_load): Add constant_evaluated case. * include/experimental/bits/simd_scalar.h: Add constexpr. * include/experimental/bits/simd_x86.h (_CommonImplX86): Add constexpr and add constant_evaluated case. (_SimdImplX86::_S_equal_to, _S_not_equal_to, _S_less) (_S_less_equal): Value-initialize to satisfy constexpr evaluation. (_MaskImplX86::_S_load): Add constant_evaluated case. (_MaskImplX86::_S_store): Add constexpr and constant_evaluated case. Value-initialize local variables. (_MaskImplX86::_S_logical_and, _S_logical_or, _S_bit_not) (_S_bit_and, _S_bit_or, _S_bit_xor): Add constant_evaluated case. * testsuite/experimental/simd/pr109261_constexpr_simd.cc: New test. 2023-05-25 Matthias Kretz Backported from master: 2023-05-24 Matthias Kretz PR libstdc++/109949 * include/experimental/bits/simd.h (__intrinsic_type): If __ALTIVEC__ is defined, map gnu::vector_size types to their corresponding __vector T types without losing unsignedness of integer types. Also prefer long long over long. * include/experimental/bits/simd_ppc.h (_S_popcount): Cast mask object to the expected unsigned vector type. 2023-05-25 Matthias Kretz Backported from master: 2023-05-24 Matthias Kretz PR libstdc++/109261 * include/experimental/bits/simd.h (__intrinsic_type): Specialize __intrinsic_type and __intrinsic_type in any case, but provide the member type only with __aarch64__. 2023-05-25 Matthias Kretz Backported from master: 2023-05-24 Matthias Kretz PR libstdc++/109261 * include/experimental/bits/simd_neon.h (_S_reduce): Add constexpr and make NEON implementation conditional on not __builtin_is_constant_evaluated. 2023-05-25 Matthias Kretz Backported from master: 2023-05-22 Matthias Kretz * include/experimental/bits/simd_builtin.h (_S_fpclassify): Move __infn into #ifdef'ed block. * testsuite/experimental/simd/tests/fpclassify.cc: Declare constants only when used. * testsuite/experimental/simd/tests/frexp.cc: Likewise. * testsuite/experimental/simd/tests/logarithm.cc: Likewise. * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Likewise. * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc: Move totest and expect1 into #ifdef'ed block. 2023-05-25 Matthias Kretz Backported from master: 2023-03-28 Matthias Kretz * include/experimental/bits/simd.h (is_simd_flag_type): New. (_IsSimdFlagType): New. (copy_from, copy_to, load ctors): Constrain _Flags using _IsSimdFlagType. 2023-05-25 Matthias Kretz Backported from master: 2023-03-28 Matthias Kretz * include/experimental/bits/simd_x86.h (_SimdImplX86): Use _Base::_S_divides if the optimized _S_divides function is hidden via the preprocessor. 2023-05-25 Matthias Kretz Backported from master: 2023-03-21 Matthias Kretz * include/experimental/bits/simd_detail.h: Don't declare the simd API as constexpr with Clang. * include/experimental/bits/simd_x86.h (__movm): New. (_S_blend_avx512): Resolve FIXME. Implement blend using __movm and ?:. (_SimdImplX86::_S_masked_unary): Clang does not implement the same builtins. Implement the function using __movm, ?:, and - operators on vector_size types instead. 2023-05-25 Matthias Kretz Backported from master: 2023-02-24 Matthias Kretz * include/experimental/bits/simd.h: Line breaks and indenting fixed to follow the libstdc++ standard. * include/experimental/bits/simd_builtin.h: Likewise. * include/experimental/bits/simd_fixed_size.h: Likewise. * include/experimental/bits/simd_neon.h: Likewise. * include/experimental/bits/simd_ppc.h: Likewise. * include/experimental/bits/simd_scalar.h: Likewise. * include/experimental/bits/simd_x86.h: Likewise. 2023-05-25 Matthias Kretz Backported from master: 2023-02-24 Matthias Kretz PR libstdc++/108030 * include/experimental/bits/simd_fixed_size.h (_SimdImplFixedSize::_S_broadcast): Replace inline with _GLIBCXX_SIMD_INTRINSIC. (_SimdImplFixedSize::_S_generate): Likewise. (_SimdImplFixedSize::_S_load): Likewise. (_SimdImplFixedSize::_S_masked_load): Likewise. (_SimdImplFixedSize::_S_store): Likewise. (_SimdImplFixedSize::_S_masked_store): Likewise. (_SimdImplFixedSize::_S_min): Likewise. (_SimdImplFixedSize::_S_max): Likewise. (_SimdImplFixedSize::_S_complement): Likewise. (_SimdImplFixedSize::_S_unary_minus): Likewise. (_SimdImplFixedSize::_S_plus): Likewise. (_SimdImplFixedSize::_S_minus): Likewise. (_SimdImplFixedSize::_S_multiplies): Likewise. (_SimdImplFixedSize::_S_divides): Likewise. (_SimdImplFixedSize::_S_modulus): Likewise. (_SimdImplFixedSize::_S_bit_and): Likewise. (_SimdImplFixedSize::_S_bit_or): Likewise. (_SimdImplFixedSize::_S_bit_xor): Likewise. (_SimdImplFixedSize::_S_bit_shift_left): Likewise. (_SimdImplFixedSize::_S_bit_shift_right): Likewise. (_SimdImplFixedSize::_S_remquo): Add inline keyword (to be explicit about not always-inline, yet). (_SimdImplFixedSize::_S_isinf): Likewise. (_SimdImplFixedSize::_S_isfinite): Likewise. (_SimdImplFixedSize::_S_isnan): Likewise. (_SimdImplFixedSize::_S_isnormal): Likewise. (_SimdImplFixedSize::_S_signbit): Likewise. 2023-05-25 Matthias Kretz Backported from master: 2023-02-24 Matthias Kretz PR libstdc++/108856 * include/experimental/bits/simd_builtin.h (_SimdImplBuiltin::_S_masked_unary): More efficient implementation of masked inc-/decrement for integers and floats without AVX2. * include/experimental/bits/simd_x86.h (_SimdImplX86::_S_masked_unary): New. Use AVX512 masked subtract builtins for masked inc-/decrement. 2023-05-25 Matthias Kretz Backported from master: 2023-02-23 Matthias Kretz * testsuite/experimental/simd/tests/reductions.cc: Introduce max_distance as the type-dependent max error. 2023-05-25 Matthias Kretz Backported from master: 2023-02-23 Matthias Kretz PR libstdc++/108030 * include/experimental/bits/simd_detail.h (_GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA): Define as empty for __clang__. 2023-05-25 Matthias Kretz Backported from master: 2023-02-16 Matthias Kretz PR libstdc++/108030 * include/experimental/bits/simd_detail.h: Define _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA. * include/experimental/bits/simd.h: Annotate lambdas with _GLIBCXX_SIMD_ALWAYS_INLINE_LAMBDA. * include/experimental/bits/simd_builtin.h: Ditto. * include/experimental/bits/simd_converter.h: Ditto. * include/experimental/bits/simd_fixed_size.h: Ditto. * include/experimental/bits/simd_math.h: Ditto. * include/experimental/bits/simd_neon.h: Ditto. * include/experimental/bits/simd_x86.h: Ditto. 2023-05-22 Patrick Palka Backported from master: 2023-03-14 Patrick Palka * include/bits/stl_iterator.h (move_iterator::_S_iter_concept): Define. (__cpp_lib_move_iterator_concept): Define for C++20. (move_iterator::iterator_concept): Strengthen as per P2520R0. * include/std/version (__cpp_lib_move_iterator_concept): Define for C++20. * testsuite/24_iterators/move_iterator/p2520r0.cc: New test. 2023-05-16 Jonathan Wakely Backported from master: 2022-11-28 Jonathan Wakely PR libstdc++/107801 * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from uint32_t to bitset::size_type. Adjust static assertion. (__pool_resource::_Pool::replenish): Cast to size_t after multiplication instead of before. (__pool_resource::_M_alloc_pools): Ensure both arguments to std::max have type size_t. 2023-05-16 Jonathan Wakely Backported from master: 2022-11-22 Jonathan Wakely PR libstdc++/107801 * src/c++17/memory_resource.cc (pool_sizes): Disable large pools for targets with 16-bit int. 2023-05-16 Jonathan Wakely Backported from master: 2022-09-23 Jonathan Wakely PR libstdc++/91456 * include/std/type_traits (__is_nothrow_invocable): Remove. (__is_invocable_impl::__nothrow_type): New member type which checks if the conversion can throw. (__is_nt_invocable_impl): Replace class template with alias template to __is_nt_invocable_impl::__nothrow_type. * testsuite/20_util/is_nothrow_invocable/91456.cc: New test. * testsuite/20_util/is_nothrow_convertible/value.cc: Remove macro used by value_ext.cc test. * testsuite/20_util/is_nothrow_convertible/value_ext.cc: Remove test for non-standard __is_nothrow_invocable trait. 2023-05-16 Jonathan Wakely Backported from master: 2022-09-08 Jonathan Wakely * include/c_global/cstddef (byte): Add always_inline attribute to all operator overloads. (to_integer): Add always_inline attribute. 2023-05-16 Jonathan Wakely Backported from master: 2022-07-01 Jonathan Wakely * include/bits/fs_ops.h: Add nodiscard to all pure functions. * include/experimental/bits/fs_ops.h: Likewise. * testsuite/27_io/filesystem/operations/all.cc: Do not discard results of absolute and canonical. * testsuite/27_io/filesystem/operations/absolute.cc: Cast discarded result to void. * testsuite/27_io/filesystem/operations/canonical.cc: Likewise. * testsuite/27_io/filesystem/operations/exists.cc: Likewise. * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise. * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise. * testsuite/27_io/filesystem/operations/status.cc: Likewise. * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise. * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Likewise. * testsuite/experimental/filesystem/operations/canonical.cc: Likewise. * testsuite/experimental/filesystem/operations/exists.cc: Likewise. * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise. * testsuite/experimental/filesystem/operations/read_symlink.cc: Likewise. * testsuite/experimental/filesystem/operations/temp_directory_path.cc: Likewise. 2023-05-16 Jonathan Wakely Backported from master: 2023-02-02 Jonathan Wakely * include/std/variant (variant::operator=): Implement resolution of LWG 3585. * testsuite/20_util/variant/lwg3585.cc: New test. 2023-05-16 Jonathan Wakely Backported from master: 2022-11-11 Jonathan Wakely * testsuite/20_util/tuple/swap.cc (MoveOnly::operator==): Add const qualifier. * testsuite/26_numerics/valarray/87641.cc (X::operator==): Likewise. 2023-05-16 Jonathan Wakely Backported from master: 2022-03-14 Jonathan Wakely PR libstdc++/104875 * src/c++11/codecvt.cc (read_utf8_code_point): Use char32_t to hold octets that will be left-shifted. 2023-05-16 Jonathan Wakely Backported from master: 2022-11-03 Jonathan Wakely * include/bits/ranges_algobase.h (__detail::__copy_or_move): Move output iterator. * testsuite/25_algorithms/copy/constrained.cc: Check copying to move-only output iterator. 2023-05-16 Jonathan Wakely Backported from master: 2022-12-16 Jonathan Wakely PR libstdc++/108118 * include/bits/shared_ptr_base.h (weak_ptr::operator=): Implement as move-and-swap exactly as specified in the standard. * testsuite/20_util/weak_ptr/cons/self_move.cc: New test. 2023-05-16 Jonathan Wakely Backported from master: 2023-01-05 Jonathan Wakely PR libstdc++/108265 * include/std/chrono (hh_mm_ss): Do not use chrono::abs if duration rep is unsigned. Remove incorrect noexcept-specifier. * testsuite/std/time/hh_mm_ss/1.cc: Check unsigned rep. Check floating-point representations. Check default construction. 2023-05-12 Patrick Palka Backported from master: 2023-04-24 Patrick Palka * include/bits/max_size_type.h (__max_diff_type::operator>>=): Fix propagation of sign bit. * testsuite/std/ranges/iota/max_size_type.cc: Avoid using the non-standard 'signed typedef-name'. Add some compile-time tests for right-shifting a negative __max_diff_type value by more than one. 2023-05-03 Jonathan Wakely PR libstdc++/105844 * include/experimental/numeric (lcm): Use built-in instead of __is_constant_evaluated. * include/std/numeric (__abs_r, lcm): Likewise. * testsuite/26_numerics/gcd/105844.cc: Add dg-prune-output. * testsuite/26_numerics/lcm/105844.cc: Likewise. 2023-05-03 Jonathan Wakely Backported from master: 2022-06-10 Jonathan Wakely PR libstdc++/105844 * include/experimental/numeric (experimental::gcd): Simplify assertions. Use __abs_r instead of __absu. (experimental::lcm): Likewise. Remove use of __detail::__lcm so overflow can be detected. * include/std/numeric (__detail::__absu): Rename to __abs_r and change to allow signed result type, so overflow can be detected. (__detail::__lcm): Remove. (gcd): Simplify assertions. Use __abs_r instead of __absu. (lcm): Likewise. Remove use of __detail::__lcm so overflow can be detected. * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines. * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. * testsuite/26_numerics/gcd/105844.cc: New test. * testsuite/26_numerics/lcm/105844.cc: New test. 2023-05-03 Jonathan Wakely Backported from master: 2023-04-28 Jonathan Wakely * doc/doxygen/user.cfg.in (STRIP_FROM_PATH): Remove prefixes from header paths. 2023-04-27 Jonathan Wakely Backported from master: 2022-09-14 Jonathan Wakely * doc/xml/manual/intro.xml: Document LWG 1203. * doc/html/*: Regenerate. 2023-04-27 Jonathan Wakely Backported from master: 2022-09-07 Jonathan Wakely * include/std/barrier: Add missing runtime exception. 2023-04-27 François Dumont Backported from master: 2022-05-26 François Dumont * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__): Strip typename from version namespace. 2023-04-27 Philipp Fent Backported from master: 2022-04-25 Philipp Fent * python/libstdcxx/v6/printers.py (StdSpanPrinter._iterator): Rename as iterator. (StdInitializerListPrinter): Define new printer. (build_libstdcxx_dictionary): Register new printer. * testsuite/libstdc++-prettyprinters/cxx11.cc: Check printer for initializer_list. 2023-04-27 Philipp Fent Backported from master: 2022-04-19 Philipp Fent * python/libstdcxx/v6/printers.py (StdSpanPrinter): Define. * testsuite/libstdc++-prettyprinters/cxx20.cc: Test it. 2023-04-27 Jonathan Wakely * include/std/atomic: Add missing @endcond doxygen comment. 2023-04-27 Jonathan Wakely Backported from master: 2023-04-04 Jonathan Wakely * doc/xml/manual/extensions.xml: Remove std::bad_exception from example program. * doc/html/manual/ext_demangling.html: Regenerate. 2023-04-27 Jonathan Wakely Backported from master: 2023-04-27 Jonathan Wakely * doc/doxygen/user.cfg.in (SOURCE_BROWSER): Only set to YES for HTML docs. * include/bits/gslice_array.h (_DEFINE_VALARRAY_OPERATOR): Omit from doxygen docs. * include/bits/indirect_array.h (_DEFINE_VALARRAY_OPERATOR): Likewise. * include/bits/mask_array.h (_DEFINE_VALARRAY_OPERATOR): Likewise. * include/bits/slice_array.h (_DEFINE_VALARRAY_OPERATOR): Likewise. * include/std/valarray (_DEFINE_VALARRAY_UNARY_OPERATOR) (_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT) (_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT) (_DEFINE_BINARY_OPERATOR): Likewise. 2023-04-27 Jonathan Wakely Backported from master: 2022-10-28 Jonathan Wakely * include/bits/fs_path.h (path::filename()): Fix dangling reference. 2023-04-27 Jonathan Wakely PR libstdc++/109064 * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker): Remove self-recursion in __init__. Add missing _supports. * testsuite/libstdc++-xmethods/shared_ptr.cc: Check use_count() and unique(). 2023-04-27 Jonathan Wakely Backported from master: 2023-02-28 Jonathan Wakely PR libstdc++/108952 * include/bits/uses_allocator_args.h (uses_allocator_construction_args): Implement LWG 3527. * testsuite/20_util/pair/astuple/get-2.cc: New test. * testsuite/20_util/scoped_allocator/108952.cc: New test. * testsuite/20_util/uses_allocator/lwg3527.cc: New test. 2023-04-27 Jonathan Wakely Backported from master: 2023-02-16 Jonathan Wakely * include/experimental/optional: Fix header name in comment. 2023-03-21 Matthias Kretz Backported from master: 2023-03-21 Matthias Kretz * include/experimental/bits/simd_detail.h: Don't define _GLIBCXX_SIMD_WORKAROUND_PR90993 for Clang. * include/experimental/bits/simd_x86.h (_S_divides): Remove check for __clang__. 2023-03-21 Matthias Kretz Backported from master: 2023-03-21 Matthias Kretz * testsuite/experimental/simd/tests/operators.cc: Clang doesn't define __GCC_IEC_559. Use __STDC_IEC_559__ instead. 2023-03-16 Jonathan Wakely Backported from master: 2023-02-02 Jonathan Wakely PR libstdc++/108636 * include/bits/fs_path.h (path::path(string_view, _Type)) (path::_Cmpt::_Cmpt(string_view, _Type, size_t)): Move inline definitions to ... * src/c++17/fs_path.cc: ... here. * testsuite/27_io/filesystem/path/108636.cc: New test. 2023-03-16 Jonathan Wakely * src/c++17/fs_ops.cc [AVR] (not_supported): Define as a macro for function_not_supported. * src/filesystem/ops-common.h [AVR] (ENOTSUP): Define as a macro for ENOSYS. 2023-03-16 Jonathan Wakely Backported from master: 2023-02-01 Jonathan Wakely * src/c++11/random.cc (random_device::_M_fini): Do not try to close the file handle if the target doesn't support the /dev/random and /dev/urandom files. 2023-03-16 Jonathan Wakely Backported from master: 2023-02-01 Jonathan Wakely * config/os/generic/error_constants.h (errc::value_too_large) [__AVR__]: Define. * src/c++11/system_error.cc (system_category::default_error_condition) [__AVR__]: Only match recognize values equal to EDOM, ERANGE, ENOSYS and EINTR. * src/c++17/fs_ops.cc (fs::current_path) [__AVR__]: Do not use getcwd. * src/filesystem/ops-common.h [__AVR__]: Do not use POSIX open, close etc. 2023-03-10 Thomas W Rodgers Backported from master: 2023-02-14 Thomas W Rodgers PR libstdc++/103934 * include/std/atomic (atomic_flag_wait): Add. (atomic_flag_wait_explicit): Add. (atomic_flag_notify): Add. (atomic_flag_notify_explicit): Add. * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Add test case to cover missing atomic_flag free functions. 2023-02-23 Matthias Kretz Backported from master: 2023-02-23 Matthias Kretz PR libstdc++/108030 * include/experimental/bits/simd.h (__vector_broadcast): Implement via __vector_broadcast_impl instead of __call_with_n_evaluations + 2 lambdas. (__vector_broadcast_impl): New. 2023-02-23 Matthias Kretz Backported from master: 2023-02-23 Matthias Kretz * include/experimental/bits/simd_builtin.h (_S_set): Compare as int. The actual range of these indexes is very small. 2023-02-23 Matthias Kretz Backported from master: 2023-02-23 Matthias Kretz * include/experimental/bits/simd_x86.h (_S_bit_shift_left) (_S_bit_shift_right): Declare constexpr. The implementation was already expecting constexpr evaluation. 2023-02-23 Matthias Kretz Backported from master: 2023-02-20 Matthias Kretz * include/experimental/bits/simd.h (__extract_part, split): Use reserved name for template parameter. 2023-02-16 Matthias Kretz Backported from master: 2023-02-16 Matthias Kretz * include/experimental/bits/simd_x86.h (_SimdImplX86::_S_not_equal_to, _SimdImplX86::_S_less) (_SimdImplX86::_S_less_equal): Do not call __builtin_is_constant_evaluated in constexpr-if. 2023-02-16 Matthias Kretz Backported from master: 2023-02-16 Matthias Kretz * testsuite/experimental/simd/tests/bits/verify.h (verify::verify): Use %zx for size_t in format string. 2023-02-16 Matthias Kretz Backported from master: 2023-02-16 Matthias Kretz * include/experimental/bits/simd.h (_SimdWrapper::_M_is_constprop_none_of) (_SimdWrapper::_M_is_constprop_all_of): Return false unless the computed result still satisfies __builtin_constant_p. 2023-02-14 Thomas W Rodgers Backported from master: 2023-02-14 Thomas W Rodgers PR libstdc++/103934 * include/std/atomic (atomic_flag_test): Add. (atomic_flag_test_explicit): Add. * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add test case to cover missing atomic_flag free functions. * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise. 2023-02-02 Detlef Vollmann Backported from master: 2022-03-10 Detlef Vollmann PR libstdc++/104866 * include/bits/this_thread_sleep.h: Fix order of #endif and closing brace of namespace. 2023-01-18 Jonathan Wakely Backported from master: 2022-08-04 Jonathan Wakely PR libstdc++/106183 * include/bits/atomic_wait.h (__waiter_pool_base::_M_notify): Move increment of _M_ver here. [!_GLIBCXX_HAVE_PLATFORM_WAIT]: Lock mutex around increment. Use relaxed memory order and always notify all waiters. (__waiter_base::_M_do_wait) [!_GLIBCXX_HAVE_PLATFORM_WAIT]: Check value again after locking mutex. (__waiter_base::_M_notify): Remove increment of _M_ver. 2022-12-22 Jonathan Wakely Backported from master: 2022-11-23 Jonathan Wakely PR libstdc++/107814 * testsuite/experimental/filesystem/iterators/error_reporting.cc: Use a static buffer with space after it. 2022-11-08 Jonathan Wakely Backported from master: 2022-11-08 Jonathan Wakely * doc/xml/authors.xml: Remove empty author element. * doc/xml/manual/spine.xml: Likewise. * doc/html/*: Regenerate. 2022-09-07 Jonathan Wakely * include/std/version [!_GLIBCXX_HOSTED] (__cpp_lib_bit_cast): Define for freestanding. (__cpp_lib_string_contains): Do not define for freestanding. (__cpp_lib_to_underlying): Likewise. 2022-09-07 Jonathan Wakely Backported from master: 2022-08-22 Jonathan Wakely PR libstdc++/106607 * include/bits/regex_compiler.tcc (_Compiler::_M_cur_int_value): Use built-ins to check for integer overflow in back-reference number. * testsuite/28_regex/basic_regex/106607.cc: New test. 2022-09-07 Jonathan Wakely Backported from master: 2022-08-22 Jonathan Wakely PR libstdc++/106695 * include/bits/std_thread.h (thread::_State_impl): Forward individual arguments to _Invoker constructor. (thread::_Invoker): Add constructor. Delete copies. * include/std/future (__future_base::_Deferred_state): Forward individual arguments to _Invoker constructor. (__future_base::_Async_state_impl): Likewise. * testsuite/30_threads/async/106695.cc: New test. * testsuite/30_threads/thread/106695.cc: New test. 2022-09-07 Jonathan Wakely Backported from master: 2022-07-12 Jonathan Wakely PR libstdc++/106248 * include/std/istream [C++17] (operator>>(istream&, char*)): Set eofbit if we stopped extracting at EOF. * testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc: New test. * testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc: New test. 2022-09-07 Jonathan Wakely Backported from master: 2022-07-29 Jonathan Wakely PR libstdc++/104443 * include/bits/stl_iterator.h (common_iterator::operator->): Change return type to just auto. 2022-09-05 Jonathan Wakely Backported from master: 2022-08-04 Jonathan Wakely * include/std/string_view (basic_string_view(Range&&)): Add explicit as per P2499R0. * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc: Adjust implicit conversions. Check implicit conversions fail. * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc: Likewise. 2022-07-26 Thomas Rodgers Backported from master: 2022-07-26 Thomas Rodgers * include/bits/atomic_wait.h (__atomic_spin): Merge spin loops. 2022-07-22 Patrick Palka PR libstdc++/106320 * include/std/ranges (single_view): Relax constraints on default constructor so as to preserve pre-P2325R3 behavior. (filter_view): Likewise. (transform_view): Likewise. (take_while_view): Likewise. (drop_while_view): Likewise. * testsuite/std/ranges/adaptors/join.cc (test13): New test. * testsuite/std/ranges/p2325.cc: Fix S to be only non default constructible and not also non copy constructible. XFAIL the tests that verify a non default constructible functor makes a view non default constructible (lines 94, 97 and 98). XFAIL the test that effectively verifies a non default constructible element type makes single_view non default constructible (line 114). 2022-07-22 Jonathan Wakely Backported from master: 2022-07-20 Jonathan Wakely PR libstdc++/100823 * include/bits/stl_iterator.h (common_iterator): Define move constructor and move assignment operator. (common_iterator::_M_assign): New function implementing assignment. (common_iterator::operator=): Use _M_assign. (common_iterator::_S_valueless): New constant. * testsuite/24_iterators/common_iterator/100823.cc: New test. 2022-07-22 Jonathan Wakely Backported from master: 2022-07-20 Jonathan Wakely * include/bits/stl_iterator.h (common_iterator): Fix incorrect uses of is_nothrow_assignable_v. Fix inconsistent constraints on friend declaration. Do not move argument in copy constructor. * testsuite/24_iterators/common_iterator/1.cc: Check for noexcept constructibnle/assignable. 2022-07-22 Jonathan Wakely Backported from master: 2022-01-14 Jonathan Wakely PR libstdc++/103992 * include/bits/stl_iterator.h (common_iterator): Use std::construct_at instead of placement new. * testsuite/24_iterators/common_iterator/1.cc: Check copy construction is usable in constant expressions. 2022-07-22 Jonathan Wakely Backported from master: 2022-01-11 Jonathan Wakely * include/bits/stl_iterator.h (common_iterator): Add constexpr to all member functions (LWG 3574). * testsuite/24_iterators/common_iterator/1.cc: Evaluate some tests as constant expressions. * testsuite/24_iterators/common_iterator/2.cc: Likewise. 2022-07-22 Jonathan Wakely Backported from master: 2022-06-28 Jonathan Wakely * testsuite/20_util/from_chars/4.cc: Only use log2 if C99 math functions are available. 2022-07-22 Jonathan Wakely Backported from master: 2022-06-30 Jonathan Wakely PR libstdc++/88881 * src/filesystem/ops.cc (has_trailing_slash): New helper function. (fs::status): Strip trailing slashes. (fs::symlink_status): Likewise. * testsuite/experimental/filesystem/operations/temp_directory_path.cc: Clean the environment before each test and use TMP instead of TMPDIR so the test passes on Windows. 2022-07-07 Jonathan Wakely Backported from master: 2022-07-01 Jonathan Wakely PR libstdc++/106162 * include/Makefile.am (largefile-config.h): Add stamp-${host_alias} prerequisite. * include/Makefile.in: Regenerate. 2022-07-07 Jonathan Wakely Backported from master: 2022-06-23 Jonathan Wakely * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use rmdir to remove directories. * testsuite/experimental/filesystem/iterators/error_reporting.cc: Likewise. 2022-07-07 Jonathan Wakely Backported from master: 2022-05-26 Jonathan Wakely * include/bits/stl_iterator.h (counted_iterator::operator++(int)): Add 'constexpr' as per LWG 3643. * testsuite/24_iterators/counted_iterator/lwg3643.cc: New test. 2022-07-07 Jonathan Wakely Backported from master: 2022-05-27 Jonathan Wakely PR libstdc++/105671 * include/std/sstream (basic_stringbuf::_M_high_mark): Add always_inline attribute. 2022-07-07 Jonathan Wakely Backported from master: 2022-05-13 Jonathan Wakely * include/std/future (launch): Make operators noexcept. 2022-07-07 Jonathan Wakely Backported from master: 2021-12-13 Jonathan Wakely * include/bits/ranges_base.h (ranges::size, ranges::empty): Add explicit check for unbounded arrays before using ranges::begin. * testsuite/std/ranges/access/empty.cc: Check handling of unbounded arrays. * testsuite/std/ranges/access/size.cc: Likewise. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/regex_automaton.h (_NFA_base::_SizeT): Remove. * include/bits/regex_compiler.h (_Compiler::_IterT): Remove. * include/bits/regex_compiler.tcc: Likewise. * include/bits/regex_scanner.h (_Scanner::_IterT): Remove. * include/bits/regex_scanner.tcc: Likewise. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/regex.h (basic_regex, swap): Add noexcept to non-throwing functions. * include/bits/regex_automaton.h (_State_base, _State) (_NFA_base): Likewise. * include/bits/regex_compiler.h (_Compiler): Likewise. * include/bits/regex_error.h (regex_error::code()): Likewise. * include/bits/regex_scanner.h (_Scanner): Likewise. 2022-07-07 Jonathan Wakely Backported from master: 2021-12-14 Jonathan Wakely PR libstdc++/102447 * include/bits/regex_compiler.h (_Compiler::_BracketState): New class. (_Compiler::_BrackeyMatcher): New alias template. (_Compiler::_M_expression_term): Change pair parameter to _BracketState. Process first character for ECMAScript syntax as well as POSIX. * include/bits/regex_compiler.tcc (_Compiler::_M_insert_bracket_matcher): Pass _BracketState. (_Compiler::_M_expression_term): Use _BracketState to store state between calls. Improve handling of dashes in ranges. * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: Add more tests for ranges containing dashes. Check invalid ranges with character class at the beginning. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-29 Jonathan Wakely * include/bits/regex_compiler.h (_Compiler::_S_validate): New function. * include/bits/regex_compiler.tcc (_Compiler::_Compiler): Use _S_validate to check flags. * include/bits/regex_error.h (_S_grammar): New error code for internal use. * testsuite/28_regex/basic_regex/ctors/grammar.cc: New test. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/regex_compiler.tcc: Add line break in empty while statement. * include/bits/regex_executor.tcc: Avoid unused parameter warning. 2022-07-07 Jonathan Wakely Backported from master: 2022-01-10 Jonathan Wakely * testsuite/28_regex/algorithms/regex_replace/char/103664.cc: Add dg-timeout-factor directive. * testsuite/28_regex/basic_regex/84110.cc: Likewise. * testsuite/28_regex/basic_regex/ctors/char/other.cc: Likewise. * testsuite/28_regex/match_results/102667.cc: Likewise. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-29 Jonathan Wakely * include/bits/regex.h (__detail::__is_contiguous_iter): Move here from . (basic_regex::_M_compile): New function to compile an NFA from a regular expression string. (basic_regex::basic_regex): Use _M_compile instead of delegating to other constructors. (basic_regex::operator=(const basic_regex&)): Define as defaulted. (basic_regex::operator=(initializer_list)): Use _M_compile. (basic_regex::assign(const basic_regex&)): Use copy assignment. (basic_regex::assign(basic_regex&&)): Use move assignment. (basic_regex::assign(const C*, flag_type)): Use _M_compile instead of constructing a temporary string. (basic_regex::assign(const C*, size_t, flag_type)): Likewise. (basic_regex::assign(const basic_string&, flag_type)): Use _M_compile instead of constructing a temporary basic_regex. (basic_regex::assign(InputIter, InputIter, flag_type)): Avoid constructing a temporary string for contiguous iterators of the right value type. * include/bits/regex_compiler.h (__is_contiguous_iter): Move to . (__enable_if_contiguous_iter, __disable_if_contiguous_iter) (__compile_nfa): Remove. * testsuite/28_regex/basic_regex/assign/exception_safety.cc: New test. * testsuite/28_regex/basic_regex/ctors/char/other.cc: New test. 2022-07-07 Jonathan Wakely Backported from master: 2021-12-13 Jonathan Wakely PR libstdc++/103664 * include/bits/regex.h (__regex_replace): Declare. (regex_replace): Use it. * include/bits/regex.tcc (__regex_replace): Replace regex_replace definition with __regex_replace. * testsuite/28_regex/algorithms/regex_replace/char/103664.cc: New test. 2022-07-07 Jonathan Wakely Backported from master: 2021-10-15 Jonathan Wakely * include/std/variant (__detail::__variant::__get_storage): Remove unused function. (__variant_construct_by_index): Set index after construction is complete. Rename to ... (__detail::__variant::__construct_by_index): ... this. (variant): Use new name for __variant_construct_by_index friend declaration. Remove __get_storage friend declaration. (variant::emplace): Use new name and remove try-blocks. 2022-07-07 Jonathan Wakely Backported from master: 2021-10-01 Jonathan Wakely * include/bits/list.tcc (list::merge): Remove call to size() and try-catch block. Use _Finalize_merge instead. * include/bits/stl_list.h (list::_Finalize_merge): New scope guard type to update _M_size members after a merge. 2022-07-07 Jonathan Wakely Backported from master: 2021-10-01 Jonathan Wakely * include/bits/regex.h (basic_regex::multiline): Define for non-strict C++11 and C++14 modes. * include/bits/regex_constants.h (regex_constants::multiline): Add _GLIBCXX_RESOLVE_LIB_DEFECTS comment. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-30 Jonathan Wakely * include/bits/regex.h (basic_regex::multiline): Fix #if condition. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-29 Jonathan Wakely * include/bits/regex.h (basic_regex::multiline): Define constant for C++17. * include/bits/regex_constants.h (regex_constants::multiline): Define constant for C++17. (regex_constants::__multiline): Define duplicate constant for internal use in C++11 and C++14. * include/bits/regex_executor.h (_Executor::_M_match_multiline()): New member function. (_Executor::_M_is_line_terminator(_CharT)): New member function. (_Executor::_M_at_begin(), _Executor::_M_at_end()): Use new member functions to support multiline matches. * testsuite/28_regex/algorithms/regex_match/multiline.cc: New test. 2022-07-07 Rainer Orth Backported from master: 2021-10-26 Rainer Orth * testsuite/28_regex/basic_regex/84110.cc (test01) [__cpp_exceptions]: Disambiguate extended. 2022-07-07 Jonathan Wakely Backported from master: 2021-09-29 Jonathan Wakely PR libstdc++/84110 * include/bits/regex_error.h (regex_constants::_S_null): New error code for internal use. * include/bits/regex_scanner.tcc (_Scanner::_M_scan_normal()): Check for null character. * testsuite/28_regex/basic_regex/84110.cc: New test. 2022-07-07 Jonathan Wakely Backported from master: 2021-10-15 Jonathan Wakely * include/std/variant (_Variant_storage::_M_storage()): Remove. (__detail::__variant::__get_storage): Remove. (variant): Remove friend declaration of __get_storage. 2022-07-07 Jakub Jelinek Backported from master: 2022-04-02 Jakub Jelinek PR libstdc++/105128 * include/std/source_location (std::source_location::__impl): Move definition before using __builtin_ret_type. 2022-07-07 Jonathan Wakely Backported from master: 2022-02-24 Jonathan Wakely PR libstdc++/104602 * include/std/source_location (source_location::current): Use deduced type of __builtin_source_location(). 2022-07-07 Jonathan Wakely Backported from master: 2022-04-26 Jonathan Wakely * include/bits/fs_path.h (hash): Define. * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Check std::hash specialization. 2022-06-15 Jonathan Wakely Backported from master: 2022-06-13 Jonathan Wakely * include/std/atomic (__atomic_val_t): Use __type_identity_t instead of atomic::value_type, as per LWG 3220. * testsuite/29_atomics/atomic/lwg3220.cc: New test. 2022-06-15 Mark Mentovai Backported from master: 2022-06-13 Mark Mentovai * include/experimental/bits/fs_path.h (__detail::__null_terminated): Rename to __nul_terminated to avoid colliding with a macro in Apple's SDK. 2022-06-10 Jonathan Wakely PR libstdc++/105915 * include/experimental/bits/fs_path.h (path::begin, path::end): Remove noexcept from declarations. 2022-05-16 Jonathan Wakely * doc/xml/manual/status_cxx2023.xml: Update status. * doc/html/manual/status.html: Regenerate. 2022-05-16 Jonathan Wakely Backported from master: 2022-05-16 Jonathan Wakely * doc/xml/manual/prerequisites.xml: Fix attributes for external hyperlink. * doc/html/manual/setup.html: Regenerate. 2022-05-16 Jonathan Wakely Backported from master: 2022-05-16 Jonathan Wakely * doc/xml/manual/intro.xml: Include new chapter. * doc/xml/manual/status_cxx2020.xml: Tweak release numbers. * doc/xml/manual/status_cxx2023.xml: New file. * doc/html/*: Regenerate. 2022-05-16 Jonathan Wakely Backported from master: 2022-05-16 Jonathan Wakely * doc/html/manual/status.html: Regenerate. * doc/xml/manual/status_cxx2020.xml: Fix supported version for C++20 bit operations. 2022-05-13 Alexandre Oliva Backported from master: 2022-05-06 Alexandre Oliva * include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX for double, long long, and 64-bit long intrinsic types. [__ALTIVEC__] (__intrinsic_type): Mention 128-bit in preexisting long double diagnostic, adjust no-VSX double diagnostic to cover 64-bit long double as well. 2022-05-11 Patrick Palka Backported from master: 2022-05-02 Patrick Palka PR libstdc++/103911 * src/c++17/floating_from_chars.cc (find_end_of_float): Accept two delimeters for the exponent part in the form of a possibly NULL string of length two. Don't use std::tolower. (pattern): Adjust calls to find_end_of_float accordingly. 2022-05-10 Jonathan Wakely Backported from master: 2022-05-10 Jonathan Wakely PR libstdc++/105284 * include/std/iosfwd: Add declarations for class templates and typedefs. * include/std/syncstream (basic_syncbuf, basic_osyncstream): Remove default template arguments. * testsuite/27_io/headers/iosfwd/synopsis.cc: New test. * testsuite/27_io/headers/iosfwd/types.cc: New test. 2022-05-09 Jonathan Wakely Backported from master: 2022-01-25 Jonathan Wakely PR libstdc++/104217 * src/c++17/fs_ops.cc (_GNU_SOURCE): Define. * src/filesystem/dir.cc (_GNU_SOURCE): Define. * src/filesystem/ops.cc (_GNU_SOURCE): Define. 2022-05-09 Jonathan Wakely Backported from master: 2022-05-06 Jonathan Wakely PR libstdc++/105502 * include/bits/random.tcc (operator>>(basic_istream&, normal_distribution&)): Update state when __state_avail is false. * testsuite/26_numerics/random/normal_distribution/operators/serialize.cc: Check that deserialized object equals serialized one. 2022-05-09 Jonathan Wakely Backported from master: 2022-05-06 Jonathan Wakely PR libstdc++/104731 * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use a trailing char array as storage for dirent::d_name. 2022-05-06 Alexandre Oliva Backported from master: 2022-05-03 Alexandre Oliva PR c++/105324 * testsuite/20_util/from_chars/pr105324.cc: Guard test body with conditional for floating-point overloads of from_char. 2022-04-28 Jonathan Wakely Backported from master: 2022-04-28 Jonathan Wakely PR libstdc++/99290 * src/c++17/fs_ops.cc (fs::copy): Pass error_code to directory_iterator constructor, and check on each iteration. * src/filesystem/ops.cc (fs::copy): Likewise. * testsuite/27_io/filesystem/operations/copy.cc: Check for errors during recursion. * testsuite/experimental/filesystem/operations/copy.cc: Likewise. 2022-04-26 Jonathan Wakely Backported from master: 2022-04-25 Jonathan Wakely PR libstdc++/105375 * include/std/future (packaged_task): Add deduction guides. * testsuite/30_threads/packaged_task/cons/deduction.cc: New test. 2022-04-22 Thomas W Rodgers Backported from master: 2022-04-22 Thomas W Rodgers PR libstdc++/102994 * include/bits/atomic_base.h (atomic_flag::notify_one, notify_all): Remove const qualification. (__atomic_base::notify_one, notify_all): Likewise. * include/std/atomic (atomic::notify_one, notify_all): Likewise. (atomic::notify_one, notify_all): Likewise. (atomic::notify_one, notify_all): Likewise. (atomic_notify_one, atomic_notify_all): Likewise. * testsuite/29_atomics/atomic/wait_notify/102994.cc: Adjust test to account for change in notify_one/notify_all signature. 2022-04-21 Jonathan Wakely Backported from master: 2021-11-26 Jonathan Wakely PR libstdc++/96592 * include/std/tuple (tuple::is_constructible): Remove. 2022-04-21 Jonathan Wakely Backported from master: 2021-09-02 Jonathan Wakely PR c++/102177 * include/bits/atomic_base.h (__is_valid_cmpexch_failure_order): New function to check if a memory order is valid for the failure case of compare exchange operations. (__atomic_base::compare_exchange_weak): Simplify assertions by using __is_valid_cmpexch_failure_order. (__atomic_base::compare_exchange_strong): Likewise. (__atomic_base::compare_exchange_weak): Likewise. (__atomic_base::compare_exchange_strong): Likewise. (__atomic_impl::compare_exchange_weak): Add assertion. (__atomic_impl::compare_exchange_strong): Likewise. * include/std/atomic (atomic::compare_exchange_weak): Likewise. (atomic::compare_exchange_strong): Likewise. 2022-04-21 Jonathan Wakely Backported from master: 2022-02-11 Jonathan Wakely * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Ignore -Walloc-larger-than warning. * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Likewise. * testsuite/29_atomics/atomic/cons/user_pod.cc: Compile with -O1 to avoid linker error for __atomic_is_lock_free. 2022-04-21 Jonathan Wakely Backported from master: 2021-12-09 Jonathan Wakely * include/bits/stl_iterator.h (operator==, operator<=>): Define overloads for homogeneous specializations of reverse_iterator, __normal_iterator and move_iterator. 2022-04-21 Jonathan Wakely Backported from master: 2021-11-26 Jonathan Wakely * testsuite/24_iterators/move_iterator/dr3265.cc: Fix test to account for LWG 3435 resolution. 2022-04-21 Jonathan Wakely Backported from master: 2021-08-02 Jonathan Wakely PR libstdc++/101709 * src/filesystem/ops-common.h (get_temp_directory_from_env): Add error_code parameter. * src/c++17/fs_ops.cc (fs::temp_directory_path): Pass error_code argument to get_temp_directory_from_env and check it. * src/filesystem/ops.cc (fs::temp_directory_path): Likewise. 2022-04-21 Jonathan Wakely Backported from master: 2022-04-21 Jonathan Wakely PR libstdc++/105324 * src/c++17/floating_from_chars.cc (buffer_resource::do_allocate): Remove assertion. * testsuite/20_util/from_chars/pr105324.cc: New test. 2022-04-21 Jonathan Wakely Backported from master: 2021-07-30 Jonathan Wakely PR libstdc++/65018 * configure.ac: Check for secure_getenv. * config.h.in: Regenerate. * configure: Regenerate. * src/filesystem/ops-common.h (get_temp_directory_from_env): New helper function to obtain path from the environment. * src/c++17/fs_ops.cc (fs::temp_directory_path): Use new helper. * src/filesystem/ops.cc (fs::temp_directory_path): Likewise. * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Print messages if test cannot be run. * testsuite/experimental/filesystem/operations/temp_directory_path.cc: Likewise. Fix incorrect condition. Use "TMP" to work with Windows as well as POSIX. 2022-04-21 Jonathan Wakely Backported from master: 2021-11-30 Jonathan Wakely * src/c++20/sstream-inst.cc (_GLIBCXX_USE_CXX11_ABI): Define to select new ABI. 2022-04-21 Jonathan Wakely Backported from master: 2021-11-30 Jonathan Wakely * testsuite/21_strings/basic_string/cons/char/moveable.cc: Allow moved-from string to be non-empty. * testsuite/21_strings/basic_string/cons/char/moveable2.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc: Construct empty string before setting oom flag. * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc: Likewise. 2022-04-21 Jonathan Wakely Backported from master: 2021-12-14 Jonathan Wakely * include/bits/regex_compiler.tcc (_Compiler::_M_match_token): Use reserved name for parameter. * testsuite/17_intro/names.cc: Check "token". 2022-04-21 Jonathan Wakely Backported from master: 2021-08-25 Jonathan Wakely * testsuite/17_intro/names.cc: Check 'sz'. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-11 Jonathan Wakely * include/std/ranges (ranges::lazy_split_view::_InnerIter::end()): Add neoxcept (LWG 3593). 2022-04-21 Jonathan Wakely Backported from master: 2021-11-17 Jonathan Wakely * include/experimental/internet (address): Use std::_Construct to initialize union members. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely * src/c++11/cxx11-ios_failure.cc (io_error_category): Define class and virtual functions as 'final'. (io_category_instance): Use constinit union to make the object immortal. * src/c++11/future.cc (future_error_category): Define class and virtual functions as 'final'. (future_category_instance): Use constinit union. 2022-04-21 Jonathan Wakely Backported from master: 2021-11-01 Jonathan Wakely * include/std/span (span(Range&&)): Reorder constraints. 2022-04-21 Jonathan Wakely Backported from master: 2021-12-01 Jonathan Wakely * src/c++17/fs_path.cc (path::_M_split_cmpts()): Remove micro-optimization for "/" path. * src/filesystem/path.cc (path::_M_split_cmpts()): Only access the contents of _M_pathname using const member functions. 2022-04-21 Pavel I. Kryukov Backported from master: 2022-01-06 Pavel I. Kryukov Jonathan Wakely PR libstdc++/103853 * include/bits/forward_list.tcc (forward_list::merge): Check for self-merge. * testsuite/23_containers/forward_list/operations/merge.cc: New test. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-14 Jonathan Wakely * include/bits/stl_construct.h (_Construct, _Construct_novalue): Also cast away cv-qualifiers when converting pointer to void. * testsuite/20_util/allocator/void.cc: Test construct function with cv-qualified types. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-06 Jonathan Wakely PR libstdc++/103911 * include/std/charconv (__from_chars_alpha_to_num): Return char instead of unsigned char. Change invalid return value to 127 instead of using numeric trait. (__from_chars_alnum): Fix comment. Do not use std::isdigit. Change type of variable to char. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-27 Jonathan Wakely * include/bits/ranges_base.h (ranges::advance): Avoid signed overflow. Do nothing if already equal to desired result. * testsuite/24_iterators/range_operations/advance_overflow.cc: New test. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-06 Jonathan Wakely * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor. 2022-04-21 Jonathan Wakely Backported from master: 2022-03-03 Jonathan Wakely * testsuite/17_intro/names.cc (func): Undef on AIX. 2022-04-21 Jonathan Wakely Backported from master: 2022-04-20 Jonathan Wakely PR libstdc++/93602 * doc/xml/manual/prerequisites.xml: Document libiconv workarounds. * doc/html/manual/setup.html: Regenerate. * src/Makefile.am (CXXLINK): Add $(LTLIBICONV). * src/Makefile.in: Regenerate. 2022-04-21 Jonathan Wakely Backported from master: 2022-04-14 Jonathan Wakely * doc/xml/manual/intro.xml: Fix comment. 2022-04-21 Jonathan Wakely Backported from master: 2022-04-20 Jonathan Wakely * testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc: Check correct feature test macro. 2022-04-21 Jonathan Wakely PR middle-end/104966 * include/bits/locale_facets_nonio.tcc (__moneypunct_cache::_M_cache): Store string sizes in local variable that doesn't escape. 2022-04-21 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely PR libstdc++/103848 * include/bits/stl_deque.h (operator-): Do not use 0 as null pointer constant. 2022-04-21 Release Manager * GCC 11.3.0 released. 2022-04-14 Jonathan Wakely * doc/xml/manual/status_cxx1998.xml: Refer to GCC 11 not mainline. * doc/xml/manual/status_cxx2011.xml: Likewise. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Likewise. * doc/xml/manual/status_cxx2020.xml: Likewise. * doc/xml/manual/status_cxxtr1.xml: Likewise. * doc/xml/manual/status_cxxtr24733.xml: Likewise. * doc/html/manual/status.html: Regenerate. 2022-04-14 Iain Sandoe Backported from master: 2021-11-19 Iain Sandoe * testsuite/lib/prune.exp: Prune dsymutil (ld64) warning. 2022-04-12 Jonathan Wakely Backported from master: 2022-01-27 Jonathan Wakely PR libstdc++/100516 * include/bits/deque.tcc (_M_range_initialize): Add __builtin_unreachable to loop. * testsuite/23_containers/deque/100516.cc: New test. 2022-04-12 Jonathan Wakely Backported from master: 2021-12-09 Jonathan Wakely PR libstdc++/103630 * libsupc++/exception_ptr.h (exception_ptr): Fix exception specifications on inline definitions. (make_exception_ptr): Decay the template parameter. Use typeid of the static type. * testsuite/18_support/exception_ptr/103630.cc: New test. 2022-04-12 Jonathan Wakely Backported from master: 2022-03-23 Jonathan Wakely PR libstdc++/105021 * include/bits/atomic_base.h [!_GLIBCXX_HOSTED]: Do not include for freestanding. 2022-04-12 Jonathan Wakely Backported from master: 2021-12-10 Jonathan Wakely PR libstdc++/103638 * include/bits/atomic_timed_wait.h: Check _GLIBCXX_HAS_GTHREADS before using std::mutex and std::__condvar. 2022-04-12 Jonathan Wakely Backported from master: 2021-10-04 Jonathan Wakely * include/std/variant (__detail::__variant::__as): Add missing noexcept to first overload. 2022-04-12 Jonathan Wakely Backported from master: 2021-10-01 Jonathan Wakely PR libstdc++/90943 * include/std/variant (__cpp_lib_variant): Update value. (__detail::__variant::__as): New helpers implementing the as-variant exposition-only function templates. (visit, visit): Use __as to upcast the variant parameters. * include/std/version (__cpp_lib_variant): Update value. * testsuite/20_util/variant/visit_inherited.cc: New test. 2022-04-12 Patrick Palka Backported from master: 2022-01-12 Patrick Palka PR libstdc++/103955 * src/c++17/floating_to_chars.cc (__floating_to_chars_hex): Track the excess precision separately from the effective precision. Avoid overflow in bounds check by splitting it into two checks. (__floating_to_chars_precision): Avoid overflow in bounds checks similarly. * testsuite/20_util/to_chars/103955.cc: New test. 2022-04-12 Patrick Palka Backported from master: 2021-10-21 Patrick Palka * include/bits/stl_iterator.h (common_iterator::__arrow_proxy): Make fully constexpr as per LWG 3595. (common_iterator::__postfix_proxy): Likewise. 2022-04-12 Patrick Palka Backported from master: 2021-10-21 Patrick Palka * include/std/ranges (split_view::base): Add forward_range constraint as per LWG 3591. (split_view::begin, lazy_split_view::end): Also check simpleness of _Pattern as per LWG 3592. 2022-04-12 Patrick Palka Backported from master: 2021-10-21 Patrick Palka * include/std/ranges (join_view::__iter_cat::_S_iter_cat): Adjust criteria for returning bidirectional_iterator_tag as per LWG 3535. (join_view::_Iterator::_S_iter_concept): Likewise. 2022-04-12 Patrick Palka Backported from master: 2021-10-21 Patrick Palka * include/bits/ranges_base.h (viewable_range): Adjust as per LWG 3481. * testsuite/std/ranges/adaptors/all.cc (test07): New test. 2022-04-12 Patrick Palka Backported from master: 2021-10-19 Patrick Palka * include/std/ranges (iota_view::_Iterator::operator+): Adjust definition as per LWG 3580. (iota_view::_Iterator::operator-): Likewise. 2022-04-12 Patrick Palka Backported from master: 2021-10-19 Patrick Palka * include/bits/ranges_util.h (__detail::__uses_nonqualification_pointer_conversion): Define and use it ... (__detail::__convertible_to_nonslicing): ... here, as per LWG 3470. * testsuite/std/ranges/subrange/1.cc: New test. 2022-04-12 Patrick Palka Backported from master: 2021-10-19 Patrick Palka * include/std/ranges (iota_view::_Iterator): Befriend iota_view. (iota_view::_Sentinel): Likewise. (iota_view::iota_view): Add three overloads, each taking an iterator/sentinel pair as per LWG 3523. * testsuite/std/ranges/iota/iota_view.cc (test06): New test. 2022-04-07 Patrick Palka Backported from master: 2022-03-09 Patrick Palka PR libstdc++/104859 * src/c++17/floating_to_chars.cc (__floating_to_chars_hex): Be explicit when narrowing the shifted effective_mantissa, since it may have an integer-class type. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-17 Jonathan Wakely * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Replace code that call cat->name() on std::error_category objects. Identify known categories by symbol name and use a hardcoded name. Print error code values as enumerators where appopriate. * testsuite/libstdc++-prettyprinters/cxx11.cc: Adjust expected name of custom category. Check io_errc and future_errc errors. 2022-04-04 Jonathan Wakely Backported from master: 2022-03-23 Jonathan Wakely PR libstdc++/105027 * include/std/bit (bit_cast): Add constraints. * testsuite/26_numerics/bit/bit.cast/105027.cc: New test. 2022-04-04 Jonathan Wakely Backported from master: 2022-04-01 Jonathan Wakely * include/experimental/bits/fs_fwd.h (copy_file): Remove incorrect noexcept from declaration. * include/experimental/bits/fs_path.h (path::begin, path::end): Add noexcept to declarations, to match definitions. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-08 Jonathan Wakely * testsuite/experimental/filesystem/operations/create_directories.cc: Adjust expected results for Windows. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-02 Jonathan Wakely * testsuite/27_io/filesystem/iterators/error_reporting.cc: Use autoconf macro to check whether d_type is present. * testsuite/experimental/filesystem/iterators/error_reporting.cc: Likewise. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-01 Jonathan Wakely * src/c++17/fs_dir.cc (recursive_directory_iterator::increment): Reset state to past-the-end iterator on error. (fs::recursive_directory_iterator::pop(error_code&)): Likewise. (fs::recursive_directory_iterator::pop()): Check _M_dirs before it might get reset. * src/filesystem/dir.cc (recursive_directory_iterator): Likewise, for the TS implementation. * testsuite/27_io/filesystem/iterators/error_reporting.cc: New test. * testsuite/experimental/filesystem/iterators/error_reporting.cc: New test. 2022-04-04 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely * include/bits/alloc_traits.h (allocator_traits>): Use std::_Construct for construct. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-04 Jonathan Wakely * include/experimental/bits/fs_ops.h (fs::copy_file): Remove noexcept. (fs::create_directories): Likewise. (fs::remove_all): Likewise. * src/filesystem/ops.cc (fs::copy_file): Remove noexcept. (fs::create_directories): Likewise. (fs::remove_all): Likewise. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-01 Jonathan Wakely * include/bits/fs_fwd.h (filesystem::perms): Fix comment. 2022-04-04 Jonathan Wakely Backported from master: 2022-01-17 Jonathan Wakely PR libstdc++/103650 * include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS. * include/Makefile.in: Regenerate. * testsuite/17_intro/headers/c++1998/103650.cc: New test. 2022-04-04 Jonathan Wakely Backported from master: 2022-01-18 Jonathan Wakely PR libstdc++/104098 * include/bits/stl_iterator.h (reverse_iterator): Check __cpp_lib_concepts instead of __cplusplus. 2022-04-04 Jonathan Wakely Backported from master: 2022-01-19 Jonathan Wakely * configure.ac (GLIBCXX_ENABLE_DEBUG_FLAGS): Remove -gdwarf-4 from default flags. * configure: Regenerate. 2022-04-04 Jonathan Wakely Backported from master: 2022-01-17 Jonathan Wakely * doc/xml/manual/status_cxx2020.xml: Use final C++20 option names. * doc/html/manual/status.html: Regenerate. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-04 Jonathan Wakely * include/bits/allocator.h: Qualify std::allocator_traits in deprecated warnings. * libsupc++/exception (uncaught_exception): Add suggestion to deprecated warning. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-15 Jonathan Wakely PR libstdc++/104542 * include/bits/uses_allocator_args.h (make_obj_using_allocator) (uninitialized_construct_using_allocator): Add constexpr. * testsuite/20_util/uses_allocator/make_obj.cc: Check constexpr. * testsuite/20_util/uses_allocator/uninitialized_construct.cc: New test. 2022-04-04 Timm Bäder Backported from master: 2022-04-01 Timm Bäder * include/bits/fs_ops.h: Fix filename in Doxygen comment. * include/experimental/bits/fs_ops.h: Likewise. 2022-04-04 Jonathan Wakely Backported from master: 2022-03-08 Jonathan Wakely * include/bits/uses_allocator_args.h: Remove incorrect copyright notice. 2022-04-04 Jonathan Wakely Backported from master: 2022-02-01 Jonathan Wakely PR libstdc++/104301 * acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Print different messages for stdio_pure and stdio_posix options. * configure: Regenerate. 2022-02-17 Patrick Palka Backported from master: 2021-10-21 Patrick Palka PR libstdc++/102358 * include/bits/stl_iterator.h (__niter_base): Make constexpr for C++20. (__miter_base): Likewise. * testsuite/25_algorithms/move/constexpr.cc: New test. 2022-02-11 Patrick Palka PR libstdc++/103904 * include/std/ranges (__detail::__box): Revert r11-9555 changes to the constraints on the partial specialization and the now-unnecessary special member functions. (__detail::__non_propagating_cache::operator=): Remove now-unused overload added by r11-9555. (split_view::_OuterIter::__current): Adjust after reverting the r11-9555 change to the type of _M_current. (split_view::_M_current): Revert r11-9555 change to its type. (split_view::split_view): Constrain the default constructor further. * testsuite/std/ranges/adaptors/detail/copyable_box.cc: Disable now-irrelevant test for the r11-9555 changes to the partial specialization of __box. 2022-02-11 Patrick Palka Backported from master: 2021-07-16 Patrick Palka PR libstdc++/103904 PR libstdc++/101231 * include/std/ranges (_CachedPosition::_M_get): For non-forward ranges, just call __builtin_unreachable. * testsuite/std/ranges/istream_view.cc (test05): New test. 2022-02-11 Patrick Palka Backported from master: 2021-06-21 Patrick Palka PR libstdc++/103904 * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value. 2022-02-11 Patrick Palka Backported from master: 2021-06-18 Patrick Palka PR libstdc++/103904 * include/bits/iterator_concepts.h (weakly_incrementable): Remove default_initializable requirement. * include/bits/ranges_base.h (ranges::view): Likewise. * include/bits/ranges_util.h (subrange): Constrain the default ctor. * include/bits/stl_iterator.h (common_iterator): Constrain the default ctor. (counted_iterator): Likewise. * include/std/ranges (__detail::__box::operator=): Handle self-assignment in the primary template. (__detail::__box): In the partial specialization: adjust constraints as per P2325. Add specialized operator= for the case when the wrapped type is not copyable. Constrain the default ctor. Avoid list-initialization. (single_view): Constraint the default ctor. (iota_view): Relax semiregular constraint to copyable. Constrain the default ctor. (iota_view::_Iterator): Constraint the default ctor. (ref_view): Remove the default ctor. Remove NSDMIs. (ref_view::_Iterator): Constrain the default ctor. (__detail::__non_propagating_cache::operator=): Define overload for assigning from a value of the underlying type. (filter_view): Likewise. (filter_view::_Iterator): Likewise. (transform_view): Likewise. (transform_view::_Iterator): Likewise. (take_view): Likewise. (take_view::_Iterator): Likewise. (take_while_view): Likewise. (take_while_view::_Iterator): Likewise. (drop_while_view): Likewise. (drop_while_view::_Iterator): Likewise. (join_view): Likewise. (split_view::_OuterIter::__current): Adjust after changing the type of _M_current. (split_view::_M_current): Wrap it in a __non_propagating_cache. (split_view::split_view): Constrain the default ctor. (common_view): Constrain the default ctor. (reverse_view): Likewise. (elements_view): Likewise. * include/std/span (enable_view>): Define this partial specialization to true unconditionally. * include/std/version (__cpp_lib_ranges): Adjust value. * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: Rename to ... * testsuite/std/ranges/adaptors/detail/copyable_box.cc: ... this. (test02): Adjust now that __box is copyable-box not semiregular-box. (test03): New test. * testsuite/std/ranges/p2325.cc: New test. * testsuite/std/ranges/single_view.cc (test06): New test. * testsuite/std/ranges/view.cc: Adjust now that view doesn't require default_initializable. 2022-02-10 Thomas Rodgers Backported from master: 2022-02-10 Thomas Rodgers * include/bits/atomic_wait.h (__waiter_base::_S_do_spin, __waiter_base::_S_do_spin_v): Change memory order from relaxed to acquire. 2022-02-09 Thomas Rodgers Backported from master: 2022-02-09 Thomas Rodgers PR libstdc++/104442 * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): Move spin loop inside do loop so that threads failing the wait, reload _M_ver. 2022-02-01 Thomas Rodgers Backported from master: 2022-02-01 Thomas Rodgers * include/bits/atomic_wait.h: Change memory order from Acquire/Release with relaxed loads to SeqCst+Release for accesses to the waiter's count. 2022-01-10 Jonathan Wakely Backported from master: 2022-01-10 Jonathan Wakely * doc/xml/manual/using.xml: Update documentation around default -std option. * doc/html/*: Regenerate. 2022-01-10 Jonathan Wakely Backported from master: 2022-01-10 Jonathan Wakely PR libstdc++/100017 * src/c++17/Makefile.am (AM_CXXFLAGS): Add -nostdinc++. * src/c++17/Makefile.in: Regenerate. 2022-01-05 Jonathan Wakely Backported from master: 2021-11-18 Jonathan Wakely * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Do not compare unrelated pointers during constant evaluation. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: Improve tests for char_traits::move. 2022-01-05 Jonathan Wakely Backported from master: 2021-12-10 Jonathan Wakely * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add _GLIBCXX_ prefix to NO_SLEEP macro. * config.h.in: Regenerate. * configure: Regenerate. 2022-01-05 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely PR libstdc++/103877 * doc/xml/faq.xml: Add '-x c++' to preprocessor command. * doc/html/faq.html: Regenerate. 2022-01-05 Jonathan Wakely Backported from master: 2021-12-01 Jonathan Wakely PR libstdc++/103501 * include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&, false_type)): Clear container if elements have been moved-from. * testsuite/23_containers/map/allocator/move_cons.cc: Expect moved-from container to be empty. * testsuite/23_containers/multimap/allocator/move_cons.cc: Likewise. * testsuite/23_containers/multiset/allocator/103501.cc: New test. * testsuite/23_containers/set/allocator/103501.cc: New test. 2022-01-05 Jonathan Wakely Backported from master: 2021-12-04 Jonathan Wakely PR libstdc++/103549 * include/bits/regex.h (match_results): Give names to template parameters in first declaration. (match_results::_M_begin): Add default member-initializer. 2022-01-05 Jonathan Wakely Backported from master: 2021-11-30 Jonathan Wakely PR libstdc++/103453 * config/allocator/malloc_allocator_base.h (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define for Clang. * config/allocator/new_allocator_base.h (_GLIBCXX_SANITIZE_STD_ALLOCATOR): Likewise. 2022-01-05 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely PR libstdc++/103919 * include/bits/basic_string.h (basic_string(const T&, size_t, size_t)): Relax constraints on string_view parameter. [!_GLIBCXX_USE_CXX11_ABI] (basic_string(const T&, size_t, size_t)): Likewise. * testsuite/21_strings/basic_string/cons/char/103919.cc: New test. 2022-01-05 Jonathan Wakely Backported from master: 2022-01-05 Jonathan Wakely * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip versioned namespace from the type name that is printed. 2022-01-04 Jonathan Wakely Backported from master: 2021-08-28 Jonathan Wakely * include/bits/alloc_traits.h (allocator_traits): Add explicit specialization for allocator. Improve doxygen comments. * include/bits/allocator.h (allocator): Restore for the versioned namespace. (allocator::construct, allocator::destroy): Remove. * include/ext/extptr_allocator.h (_Extptr_allocator): Add default constructor and converting constructor. 2021-12-10 Thomas Rodgers Backported from master: 2021-12-10 Thomas Rodgers PR libstdc++/102994 * include/bits/atomic_base.h (__atomic_base<_PTp*>::wait()): Add const qualifier. * include/std/atomic (atomic<_Tp*>::wait(), atomic_wait()): Likewise. * testsuite/29_atomics/atomic/wait_notify/102994.cc: New test. 2021-11-26 Jonathan Wakely Backported from master: 2021-11-26 Jonathan Wakely * testsuite/29_atomics/atomic_float/1.cc: Reorder directives. 2021-11-26 Jonathan Wakely Backported from master: 2021-11-26 Jonathan Wakely * testsuite/23_containers/unordered_map/modifiers/move_assign.cc: Change dg-do compile to run. * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc: Likewise. 2021-11-26 Jonathan Wakely Backported from master: 2021-11-25 Jonathan Wakely PR libstdc++/96416 * include/bits/ptr_traits.h (pointer_traits): Remove static_assert checking for valid element_type. (pointer_traits::element_type, pointer_traits::pointer_to): Do not define when element type cannot be deduced. * testsuite/20_util/pointer_traits/lwg3545.cc: New test. * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line. * testsuite/20_util/to_address/lwg3545.cc: New test. 2021-11-25 Jonathan Wakely Backported from master: 2021-11-25 Jonathan Wakely PR libstdc++/101608 * include/bits/ranges_algobase.h (__fill_n_fn): Check for constant evaluation before using memset. * testsuite/25_algorithms/fill_n/constrained.cc: Check byte-sized values as well. 2021-11-25 Jonathan Wakely Backported from master: 2021-08-18 Jonathan Wakely * python/libstdcxx/v6/printers.py (StdBitReferencePrinter): Use 'std::vector::reference' as type name, not _Bit_reference. (build_libstdcxx_dictionary): Register printers for vector types in debug mode too. * testsuite/libstdc++-prettyprinters/simple.cc: Adjust expected output for invalid _Bit_reference. Use vector::reference instead of _Bit_reference. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise. 2021-11-25 Jonathan Wakely * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for debug mode. * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise. 2021-11-25 Jonathan Wakely * testsuite/lib/libstdc++.exp: Rename effective target keywords to avoid dashes in the name. * testsuite/*: Update effective targe keywords. 2021-11-24 François Dumont Backported from master: 2021-08-08 François Dumont * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Replace 'failed_assertion' dg-prune-output reason with 'builtin_unreachable'. * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: Likewise. * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: Likewise. * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: Likewise. * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise. * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: Likewise. * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: Likewise. * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise. * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-09 Jonathan Wakely * testsuite/23_containers/unordered_map/cons/default.cc: Add equality comparison operators to allocator. * testsuite/23_containers/unordered_set/cons/default.cc: Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-05 Jonathan Wakely * include/std/utility (__is_in_place_type_v): Define variable template to detect in_place_type_t specializations. (__is_in_place_type): Replace class template with alias template using __is_in_place_type_v. * include/std/any (any(T&&)): Check __is_in_place_type first and avoid instantiating is_copy_constructible unnecessarily. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-21 Jonathan Wakely * include/bits/alloc_traits.h: Suppress doxygen documentation. * include/bits/allocated_ptr.h: Likewise. * include/bits/enable_special_members.h: Likewise. * include/bits/hashtable.h: Likewise. * include/bits/hashtable_policy.h: Likewise. * include/bits/uses_allocator.h: Likewise. * include/bits/node_handle.h: Document node handles and suppress documentation for protected members. * include/std/any: Suppress documentation for implementation details. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-10 Jonathan Wakely PR libstdc++/100748 PR libstdc++/103133 * config/os/gnu-linux/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK): Define for glibc 2.34 and later. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-09 Jonathan Wakely * testsuite/26_numerics/random/random_device/cons/token.cc: Print results of random_device_available checks. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-09 Jonathan Wakely * testsuite/26_numerics/random/random_device/cons/token.cc: Retry if random devices produce the same value. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-14 Jonathan Wakely * include/bits/stl_construct.h (_Construct): Use std::construct_at when constant evaluated. * include/std/optional (_Storage, _Optional_payload, optional): Add constexpr as specified by P2231R1. * include/std/version (__cpp_lib_optional): Update value for C++20. * testsuite/20_util/optional/requirements.cc: Check feature test macro. * testsuite/20_util/optional/constexpr/assign.cc: New test. * testsuite/20_util/optional/constexpr/cons/conv.cc: New test. * testsuite/20_util/optional/constexpr/modifiers.cc: New test. * testsuite/20_util/optional/constexpr/swap.cc: New test. * testsuite/20_util/optional/version.cc: New test. 2021-11-24 Jonathan Wakely Backported from master: 2021-07-27 Jonathan Wakely * include/experimental/optional (__throw_bad_optional_access): Replace GNU attribute with C++11 attribute. (optional::value, optional::value_or): Use if statements instead of conditional expressions. * include/std/optional (__throw_bad_optional_access) (optional::value, optional::value_or): Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-09-16 Jonathan Wakely * include/std/optional (nullptr_t): Make constructor noexcept. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-08 Jonathan Wakely PR libstdc++/98725 * include/std/ostream (operator<<(basic_ostream&, wchar_t)) (operator<<(basic_ostream&, const wchar_t*)): Always define as deleted. Do not check _GLIBCXX_USE_WCHAR_T. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-05 Jonathan Wakely * include/std/ostream (operator<<(const volatile void*)): Add new overload, as per P1147R1. * testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc: New test. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-22 Jonathan Wakely PR libstdc++/102894 * include/std/any (make_any): Add SFINAE constraint. * testsuite/20_util/any/102894.cc: New test. 2021-11-24 Jonathan Wakely Backported from master: 2021-09-23 Jonathan Wakely * src/c++11/system_error.cc (generic_error_category): Define class and virtual functions as 'final'. (generic_error_category::equivalent(int, const error_condition&)): Override. (system_error_category): Define class and virtual functions as 'final'. (system_error_category::equivalent(int, const error_condition&)): Override. (generic_category_instance, system_category_instance): Use constinit union to make the objects immortal. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-31 Jonathan Wakely PR libstdc++/98421 * include/std/span (span(Iter, size_type), span(Iter, Iter)): Add valid range checks. * testsuite/23_containers/span/cons_1_assert_neg.cc: New test. * testsuite/23_containers/span/cons_2_assert_neg.cc: New test. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-28 Jonathan Wakely * include/bits/std_function.h (function::function(F&&)): Give name to defaulted template parameter, to improve diagnostics. Use markdown for more doxygen comments. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-26 Jonathan Wakely * include/bits/std_function.h (_function_base::_Base_manager): Replace _M_init_functor with a function template using a forwarding reference, and a pair of _M_create function templates. Reuse _M_create for the clone operation. (function::_Decay_t): New alias template. (function::_Callable): Simplify by using _Decay. (function::function(F)): Change parameter to forwarding reference, as per LWG 2447. Add noexcept-specifier. Simplify constraints. (function::operator=(F&&)): Add noexcept-specifier. * testsuite/20_util/function/cons/lwg2774.cc: New test. * testsuite/20_util/function/cons/noexcept.cc: New test. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely * doc/doxygen/user.cfg.in: Update to Doxygen 1.9.2 2021-11-24 Antony Polukhin Backported from master: 2021-08-17 Antony Polukhin Jonathan Wakely * include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity if distance is O(1). * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line number. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-26 Jonathan Wakely * include/bits/std_function.h (function::function(F)): Add static assertions to check constructibility requirements. 2021-11-24 Jonathan Wakely Backported from master: 2021-07-22 Jonathan Wakely * include/bits/std_function.h (_Function_base): Add default member initializers and define constructor as defaulted. (function::_M_invoker): Add default member initializer. 2021-11-24 Jonathan Wakely Backported from master: 2021-08-18 Jonathan Wakely * include/bits/stl_function.h: Improve doxygen comments. 2021-11-24 Tim Adye Backported from master: 2021-06-04 Tim Adye * include/std/any (any::_Manager::_S_access): New static function to access the contained value. (any::emplace, __any_caster): Use _S_access member of the manager type. 2021-11-24 Jonathan Wakely Backported from master: 2021-06-25 Jonathan Wakely * include/std/syncstream (basic_syncbuf::swap()): Remove noexcept, as per LWG 3498. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-01 Jonathan Wakely PR libstdc++/100153 * include/bits/vector.tcc (vector::_M_shrink_to_fit()): When size() is zero just deallocate and reset. 2021-11-24 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/move.h (forward(remove_reference_t&&)): Improve text of static_assert. * testsuite/20_util/forward/c_neg.cc: Adjust dg-error. * testsuite/20_util/forward/f_neg.cc: Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-10-08 Jonathan Wakely * testsuite/22_locale/conversions/buffer/1.cc: Check _GLIBCXX_USE_WCHAR_T. * testsuite/22_locale/conversions/buffer/3.cc: Likewise. Add test using char16_t. * testsuite/22_locale/conversions/string/1.cc: Check _GLIBCXX_USE_WCHAR_T. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Likewise. * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise. * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Likewise. * testsuite/27_io/filesystem/path/native/string.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc: Likewise. * testsuite/experimental/filesystem/path/generic/generic_string.cc: Likewise. * testsuite/experimental/filesystem/path/native/alloc.cc: Likewise. * testsuite/experimental/filesystem/path/native/string-char8_t.cc: Likewise. * testsuite/experimental/filesystem/path/native/string.cc: Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-05 Jonathan Wakely * testsuite/lib/gdb-test.exp: Add target selector support to the dg-final directives. * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for C++20. * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise. * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak comment. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-10 Jonathan Wakely PR libstdc++/100117 * testsuite/17_intro/headers/c++1998/49745.cc: Explicitly list all C++ headers instead of including 2021-11-24 Jonathan Wakely Backported from master: 2021-11-16 Jonathan Wakely * testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc: Fix reads past the end of strings. * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc: Likewise. * testsuite/experimental/string_view/operations/compare/wchar_t/1.cc: Likewise. 2021-11-24 Jonathan Wakely Backported from master: 2021-11-23 Jonathan Wakely PR libstdc++/103086 * testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with non-empty pointer and non-empty deleter. 2021-11-23 Jonathan Wakely Backported from master: 2021-11-04 Jonathan Wakely PR libstdc++/103086 * python/libstdcxx/v6/printers.py (_tuple_impl_get): New helper for accessing the tuple element stored in a _Tuple_impl node. (tuple_get): New function for accessing a tuple element. (unique_ptr_get): New function for accessing a unique_ptr. (UniquePointerPrinter, StdPathPrinter): Use unique_ptr_get. * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Cast tuple to its base class before accessing _M_head_impl. 2021-11-23 Jonathan Wakely Backported from master: 2021-11-17 Jonathan Wakely PR libstdc++/103240 * libsupc++/tinfo2.cc (type_info::before): Use unadjusted name to check for the '*' prefix. * testsuite/util/testsuite_shared.cc: Add type_info object for use in new test. * testsuite/18_support/type_info/103240.cc: New test. 2021-11-23 Jonathan Wakely Backported from master: 2021-11-23 Jonathan Wakely PR libstdc++/103381 * include/ext/bitmap_allocator.h: Include instead of . 2021-11-23 Jonathan Wakely Backported from master: 2021-07-22 Jonathan Wakely PR libstdc++/101571 * include/bits/ranges_uninitialized.h (_DestroyGuard): Change constructor parameter to reference and use addressof. * testsuite/util/testsuite_iterators.h: Define deleted operator& overloads for test iterators. 2021-11-23 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/atomic_wait.h (_GLIBCXX_HAVE_PLATFORM_WAIT): Define before first attempt to check it. 2021-11-23 Jonathan Wakely Backported from master: 2021-09-28 Jonathan Wakely * include/bits/atomic_timed_wait.h (__platform_wait_until_impl): Return false for ETIMEDOUT and true otherwise. 2021-11-22 Jonathan Wakely Backported from master: 2021-11-05 Jonathan Wakely * include/bits/range_access.h (begin(valarray), end(valarray)): Add noexcept. 2021-11-01 Jonathan Wakely Backported from master: 2021-11-01 Jonathan Wakely PR libstdc++/103022 * include/std/valarray (begin, end): Do not dereference an empty valarray. Add noexcept and [[nodiscard]]. * testsuite/26_numerics/valarray/range_access.cc: Check empty valarray. Check iterator properties. Run as well as compiling. * testsuite/26_numerics/valarray/range_access2.cc: Likewise. * testsuite/26_numerics/valarray/103022.cc: New test. 2021-10-19 Jonathan Wakely Backported from master: 2021-10-19 Jonathan Wakely * doc/Makefile.am (stamp-html-doxygen, stamp-html-doxygen) (stamp-latex-doxygen, stamp-man-doxygen): Fix recipes for relative ${top_srcdir}. * doc/Makefile.in: Regenerate. 2021-10-14 Jonathan Wakely Backported from master: 2021-07-22 Jonathan Wakely PR libstdc++/101583 * include/bits/hashtable.h (_Hashtable): Replace mixin with _Enable_default_ctor. Construct it explicitly in all non-forwarding, non-defaulted constructors. * testsuite/23_containers/unordered_map/cons/default.cc: Check non-default constructors can be used. * testsuite/23_containers/unordered_set/cons/default.cc: Likewise. 2021-10-13 Jonathan Wakely Backported from master: 2021-10-13 Jonathan Wakely * testsuite/27_io/filesystem/path/construct/102592.C: Moved to... * testsuite/27_io/filesystem/path/construct/102592.cc: ...here. * testsuite/28_regex/match_results/102667.C: Moved to... * testsuite/28_regex/match_results/102667.cc: ...here. 2021-10-13 Jonathan Wakely Backported from master: 2021-10-13 Jonathan Wakely PR libstdc++/102592 * include/bits/fs_path.h (path::path(Iter, Iter, format)) (path::append(Iter, Iter), path::concat(Iter, Iter)): Call __string_from_range directly, instead of two-argument overload of _S_convert. (path::_S_convert(Iter, Iter)): Remove. * testsuite/27_io/filesystem/path/construct/102592.C: New test. 2021-10-13 Jonathan Wakely Backported from master: 2021-07-14 Jonathan Wakely * include/std/string_view (basic_string_view(It, End)): Add noexcept-specifier. * testsuite/21_strings/basic_string_view/cons/char/range.cc: Check noexcept-specifier. Also check construction without CTAD. 2021-10-13 Patrick Palka Backported from master: 2021-04-28 Patrick Palka PR libstdc++/100187 PR libstdc++/100237 PR libstdc++/100249 PR libstdc++/100287 * include/bits/ranges_algo.h (__search_n_fn::operator()): Give the __value_comp lambda an explicit bool return type. (__is_permutation_fn::operator()): Give the __proj_scan local variable auto&& return type. Give the __comp_scan lambda an explicit bool return type. (__remove_fn::operator()): Give the __pred lambda an explicit bool return type. (__partition_fn::operator()): Don't std::move __first twice when returning an empty subrange. (__min_fn::operator()): Don't std::move __comp. (__max_fn::operator()): Likewise. (__minmax_fn::operator()): Likewise. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-31 Jonathan Wakely * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Try other service if "http" fails. 2021-10-12 Jonathan Wakely PR libstdc++/100285 * configure.ac: Check for O_NONBLOCK. * configure: Regenerate. * include/experimental/internet: Include for Windows. Use preprocessor conditions around more constants. * include/experimental/socket: Use preprocessor conditions around more constants. * testsuite/experimental/net/internet/resolver/base.cc: Only use constants when the corresponding C macro is defined. * testsuite/experimental/net/socket/basic_socket.cc: Likewise. * testsuite/experimental/net/socket/socket_base.cc: Likewise. Make preprocessor checks more fine-grained. 2021-10-12 Jonathan Wakely Backported from master: 2021-07-20 Jonathan Wakely PR libstdc++/100863 * include/bits/hashtable.h (_Hashtable): Conditionally delete default constructor by deriving from _Enable_special_members. * testsuite/23_containers/unordered_map/cons/default.cc: New test. * testsuite/23_containers/unordered_set/cons/default.cc: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-06-02 Jonathan Wakely PR libstdc++/100863 PR libstdc++/65816 * include/bits/hashtable_policy.h (_Hashtable_ebo_helper): Value-initialize subobject. * testsuite/23_containers/unordered_map/allocator/default_init.cc: Remove XFAIL. * testsuite/23_containers/unordered_set/allocator/default_init.cc: Remove XFAIL. 2021-10-12 Jonathan Wakely Backported from master: 2021-05-17 Jonathan Wakely * doc/Makefile.am: Simplify doxygen recipes and use --latex_cmd. * doc/Makefile.in: Regenerate. * doc/doxygen/user.cfg.in (LATEX_CMD_NAME): Add placeholder value. * scripts/run_doxygen (print_usage): Always print to stdout and do not exit. (fail): New function for exiting on error. (parse_options): Handle --latex_cmd. Do not treat --help the same as errors. Simplify handling of required arguments. 2021-10-12 Jonathan Wakely Backported from master: 2021-04-28 Jonathan Wakely * doc/Makefile.am (stamp-pdf-doxygen): Improve comment about dealing with errors. Use '@' to prevent shell command being echoed. * doc/Makefile.in: Regenerate. 2021-10-12 Jonathan Wakely Backported from master: 2021-06-09 Jonathan Wakely * include/bits/allocator.h (allocator::is_always_equal): Deprecate. * include/bits/iterator_concepts.h (indirectly_readable_traits): Add LWG issue number to comment. * include/std/memory_resource (polymorphic_allocator::release): Deprecate. * testsuite/20_util/allocator/requirements/typedefs.cc: Add dg-warning for deprecation. Also check std::allocator. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-31 Jonathan Wakely * testsuite/17_intro/names.cc: Undefine some more names used by Solaris system headers. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-25 Jonathan Wakely PR libstdc++/102048 * include/ext/rope (rope::erase(size_type)): Remove broken function. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-20 Jonathan Wakely PR libstdc++/90787 * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Use new __gnu_test::permissions_are_testable() function. * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc: Likewise. * testsuite/27_io/filesystem/operations/exists.cc: Likewise. * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise. * testsuite/27_io/filesystem/operations/remove.cc: Likewise. * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise. * testsuite/27_io/filesystem/operations/status.cc: Likewise. * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise. * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Likewise. * testsuite/experimental/filesystem/iterators/directory_iterator.cc: Likewise. * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc: Likewise. * testsuite/experimental/filesystem/operations/exists.cc: Likewise. * testsuite/experimental/filesystem/operations/is_empty.cc: Likewise. * testsuite/experimental/filesystem/operations/remove.cc: Likewise. * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. * testsuite/experimental/filesystem/operations/temp_directory_path.cc: Likewise. * testsuite/util/testsuite_fs.h (__gnu_test::permissions_are_testable): New function to guess whether testing permissions will work. 2021-10-12 Patrick Palka Backported from master: 2021-08-02 Patrick Palka PR libstdc++/101599 * include/bits/ranges_algo.h (__reverse_copy_fn::operator()): Add missing std::move in return statement. (__partition_copy_fn::operator()): Rename templtae parameter _O2 to _Out2. Uglify function parameters out_true and out_false. * include/bits/ranges_algobase.h (__copy_or_move): Add missing std::move to recursive call that unwraps a __normal_iterator output iterator. * testsuite/25_algorithms/copy/constrained.cc (test06): New test. * testsuite/25_algorithms/move/constrained.cc (test05): New test. 2021-10-12 Patrick Palka Backported from master: 2021-08-02 Patrick Palka PR libstdc++/101589 * include/std/ranges (lazy_split_view::_InnerIter::base): Make the const& overload unconstrained and return a const reference as per LWG 3533. Make unconditionally noexcept. (elements_view::base): Revert accidental r12-569 change. (elements_view::_Iterator::base): Make the const& overload unconstrained and return a const reference as per LWG 3533. Make unconditionally noexcept. 2021-10-12 Patrick Palka Backported from master: 2021-08-02 Patrick Palka PR libstdc++/101483 * include/std/ranges (join_view::_Iterator::_Iterator): Add missing std::move. 2021-10-12 Patrick Palka Backported from master: 2021-06-20 Patrick Palka * include/std/ranges (split_view::_InnerIter::base): Define as per P2210. 2021-10-12 Patrick Palka Backported from master: 2021-06-19 Patrick Palka * include/std/ranges (transform_view::_Iterator::_S_iter_concept): Consider _Base instead of _Vp as per LWG 3555. (elements_view::_Iterator::_S_iter_concept): Likewise. 2021-10-12 Patrick Palka Backported from master: 2021-06-19 Patrick Palka * include/std/ranges (split_view::_OuterIter::value_type::begin): Remove the non-const overload, and remove the copyable constraint on the const overload as per LWG 3553. 2021-10-12 Patrick Palka Backported from master: 2021-06-19 Patrick Palka * include/bits/stl_iterator.h (__detail::__common_iter_use_postfix_proxy): Add move_constructible constraint as per LWG 3546. (common_iterator::__postfix_proxy): Adjust initializer of _M_keep as per LWG 3546. 2021-10-12 Patrick Palka Backported from master: 2021-06-18 Patrick Palka * include/std/concepts (convertible_to): Just use declval as per LWG 3557. 2021-10-12 Patrick Palka Backported from master: 2021-06-18 Patrick Palka * include/bits/ranges_algo.h (__find_fn, find, __find_if_fn) (find_if, __find_if_not_fn, find_if_not, _in_in_result) (__mismatch_fn, mismatch, __search_fn, search): Move to ... * include/bits/ranges_util.h: ... here. * include/std/ranges (__detail::find, __detail::find_if) (__detail::find_if_not, __detail::mismatch): Remove. (filter_view): Use ranges::find_if instead. (drop_while_view): Use ranges::find_if_not instead. (split_view): Use ranges::find and ranges::mismatch instead. 2021-10-12 Patrick Palka Backported from master: 2021-05-21 Patrick Palka PR libstdc++/100606 * include/std/ranges (drop_while_view::begin): Assert the precondition added by LWG 3490. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-12 Jonathan Wakely * testsuite/20_util/tuple/comparison_operators/overloaded.cc: Restore test for operator<. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-12 Jonathan Wakely PR libstdc++/101960 * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Define as defauled. * testsuite/20_util/tuple/cons/101960.cc: Check tuples with array elements before the last element. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-05 Jonathan Wakely PR c++/102535 * testsuite/20_util/is_trivially_constructible/value.cc: Adjust expected value for C++20. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-08 Jonathan Wakely * testsuite/27_io/basic_filebuf/close/81256.cc: Moved to... * testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc: ...here. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-05 Jonathan Wakely * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc: New test. * testsuite/23_containers/span/trivially_copyable.cc: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-11 Jonathan Wakely * testsuite/18_support/numeric_limits/lowest.cc: Use numeric_limits::is_integer instead of is_integral::value. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely PR libstdc++/101960 * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Use base class' move constructor. Define as defaulted for versioned namespace. * testsuite/20_util/tuple/cons/101960.cc: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-18 Jonathan Wakely * include/debug/deque (deque(size_type, const T&, const A&)): Prevent class template argument deduction and replace with a deduction guide. * include/debug/forward_list (forward_list(size_type, const T&, const A&)): Likewise. * include/debug/list (list(size_type, const T&, const A&)): Likewise. * include/debug/vector (vector(size_type, const T&, const A&)): Likewise. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-16 Jonathan Wakely * python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local): Install another copy of the GDB hook. * python/Makefile.in: Regenerate. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-12 Jonathan Wakely PR libstdc++/101870 * include/c_global/cmath (hypot): Use __promoted_t. (lerp): Add new overload accepting any arithmetic types. * include/ext/type_traits.h (__promoted_t): New alias template. * testsuite/26_numerics/lerp.cc: Moved to... * testsuite/26_numerics/lerp/1.cc: ...here. * testsuite/26_numerics/lerp/constexpr.cc: New test. * testsuite/26_numerics/lerp/version.cc: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-17 Jonathan Wakely * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Define. (build_libstdcxx_dictionary): Register printer for std::error_code and std::error_condition. * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-17 Jonathan Wakely PR libstdc++/101923 * include/bits/std_function.h (function(function&&)): Check for non-empty parameter before doing any work. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-23 Jonathan Wakely PR libstdc++/102425 * src/c++11/system_error.cc (system_error_category::default_error_condition): Add 0 to switch. * testsuite/19_diagnostics/error_category/102425.cc: New test. 2021-10-12 Thomas Rodgers Backported from master: 2021-09-16 Thomas Rodgers PR libstdc++/101761 * testsuite/29_atomics/atomic_ref/wait_notify.cc (test): Use va and vb as arguments to wait/notify, remove unused bb local. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-16 Jonathan Wakely * include/bits/fs_path.h (advance): Remove non-deducible template parameter. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-28 Jonathan Wakely PR libstdc++/99876 * src/c++17/fs_ops.cc (fs::absolute): Call non-throwing form, to avoid unnecessary current_path() call. 2021-10-12 Jonathan Wakely Backported from master: 2021-08-31 Jonathan Wakely PR libstdc++/102074 * include/bits/atomic_timed_wait.h (__timed_waiter_pool) [!_GLIBCXX_HAVE_PLATFORM_TIMED_WAIT]: Add missing return. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-17 Jonathan Wakely PR libstdc++/102270 * include/std/tuple (_Tuple_impl): Add constexpr to constructor missed in previous patch. * testsuite/20_util/tuple/cons/102270.C: Moved to... * testsuite/20_util/tuple/cons/102270.cc: ...here. * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add constexpr to constructor so it can be used for C++20 tests. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-16 Jonathan Wakely PR libstdc++/102270 * include/std/tuple (_Head_base, _Tuple_impl): Add _GLIBCXX20_CONSTEXPR to allocator-extended constructors. (tuple<>::swap(tuple&)): Add _GLIBCXX20_CONSTEXPR. * testsuite/20_util/tuple/cons/102270.C: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-17 Jonathan Wakely * testsuite/26_numerics/valarray/dr630-3.C: Moved to... * testsuite/26_numerics/valarray/dr630-3.cc: ...here. * testsuite/27_io/basic_iostream/cons/16251.C: Moved to... * testsuite/27_io/basic_iostream/cons/16251.cc: ...here. 2021-10-12 Jonathan Wakely Backported from master: 2021-09-16 Jonathan Wakely PR libstdc++/102280 * include/std/span (span(Range&&)): Add constraint to deduction guide. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-01 Jonathan Wakely * testsuite/25_algorithms/is_permutation/2.cc: Include . 2021-10-12 Jonathan Wakely Backported from master: 2021-10-05 Jonathan Wakely * testsuite/20_util/integer_comparisons/greater.cc: New test. 2021-10-12 Jonathan Wakely Backported from master: 2021-10-11 Jonathan Wakely PR libstdc++/102667 * include/bits/regex.h (match_result::empty()): Optimize by calling the base function directly. (match_results::end()): Check _Base_type::empty() not empty(). * testsuite/28_regex/match_results/102667.C: New test. 2021-08-24 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely PR libstdc++/101965 * include/std/charconv (__to_chars_i): Remove redundant check. 2021-08-24 Jonathan Wakely Backported from master: 2021-08-17 Jonathan Wakely * testsuite/26_numerics/random/seed_seq/cons/range.cc: Check construction from input iterators. 2021-08-24 Jonathan Wakely Backported from master: 2021-07-22 Jonathan Wakely PR libstdc++/100682 * doc/xml/manual/debug_mode.xml: Update documentation about debug capability of std::array. * doc/html/*: Regenerate. * include/debug/array: New file. 2021-08-24 Jonathan Wakely Backported from master: 2021-08-17 Jonathan Wakely * include/bits/basic_string.h (basic_string::contains): Do not define for -std=gnu++20. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-26 Jonathan Wakely * include/bits/semaphore_base.h: Include and . 2021-08-24 Jonathan Wakely Backported from master: 2021-06-22 Jonathan Wakely * include/bits/random.h (seed_seq): Constrain initializer-list constructor. * include/bits/random.tcc (seed_seq): Add template parameter. * testsuite/26_numerics/random/seed_seq/cons/default.cc: Check for noexcept. * testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check constraints. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-30 Jonathan Wakely PR libstdc++/100285 * include/experimental/socket (__basic_socket_impl::set_option) (__basic_socket_impl::get_option) [!_GLIBCXX_HAVE_SYS_SOCKET_H]: Just set error code. * testsuite/experimental/net/socket/socket_base.cc: CHeck for not . 2021-08-24 Jonathan Wakely Backported from master: 2021-04-30 Jonathan Wakely PR libstdc++/100180 PR libstdc++/100286 PR libstdc++/100351 * testsuite/experimental/net/internet/address/v4/comparisons.cc: Use new effective-target keyword. * testsuite/experimental/net/internet/address/v4/cons.cc: Likewise. * testsuite/experimental/net/internet/address/v4/creation.cc: Likewise. * testsuite/experimental/net/internet/address/v4/members.cc: Likewise. * testsuite/experimental/net/internet/address/v6/members.cc: Likewise. * testsuite/experimental/net/internet/resolver/base.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/lookup.cc: Likewise. * testsuite/experimental/net/internet/resolver/ops/reverse.cc: Likewise. * testsuite/experimental/net/internet/socket/opt.cc: Likewise. * testsuite/experimental/net/internet/tcp.cc: Likewise. * testsuite/experimental/net/internet/udp.cc: Likewise. * testsuite/lib/libstdc++.exp (check_effective_target_net_ts_ip): New proc to check net_ts_ip et. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-27 Jonathan Wakely * include/experimental/internet (address_v6::bytes_type): Adjust formatting. (basic_endpoint): Define _M_is_v6() to put all checks for AF_INET6 in one place. (basic_endpoint::resize): Simplify. (operator==(const tcp&, const tcp&)): Add constexpr and noexcept. (operator!=(const tcp&, const tcp&)): Likewise. (operator==(const udp&, const udp&)): Likewise. (operator!=(const udp&, const udp&)): Likewise. * testsuite/experimental/net/internet/tcp.cc: New test. * testsuite/experimental/net/internet/udp.cc: New test. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-27 Jonathan Wakely PR libstdc++/100286 * include/experimental/internet (resolver_errc, resolver_category()) (make_error_code, make_error_condition): Define unconditionally, only make enumerators and use of gai_strerror depend on the availability of . (address_v4::to_string): Use correct constant for string length. (address_v4::to_string, address_v6::to_string): Define unconditionally, throw if unsupported. (make_address_v4, make_address_v6): Define unconditionally. Return an error if unsupported. (tcp, udp, v6_only, unicast::hops, multicast::*): Define conditionally, * testsuite/experimental/net/internet/socket/opt.cc: Check for and before using types from namespace net::ip. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-27 Jonathan Wakely PR libstdc++/100285 * include/experimental/internet (resolver_base::flags): Define overloaded operators as hidden friends. * include/experimental/socket (socket_base::message_flags): Likewise. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-26 Jonathan Wakely * include/experimental/internet (tcp::no_delay, v6_only) (unicast::hops, multicast::hops, multicast::enable_loopback): Change access of base class and static data members. Add using-declaration for __socket_crtp::operator=(_Tp). (multicast::__mcastopt): New type. (multicast::join_group, multicast::leave_group): Derive from __mcastopt for common implementation. * include/experimental/socket: Add comment. * testsuite/experimental/net/internet/socket/opt.cc: New test. * testsuite/experimental/net/socket/socket_base.cc: Check for protected constructor/destructor of socket_base. Check for explicit constructors of socket option classes. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-26 Jonathan Wakely * include/experimental/bits/net.h (__socket_base): Add bool template parameter to allow BooleanSocketOption and IntegerSocketOption to have different __socket_base base classes. (__socket_base): Adjust base class. (__socket_base): Add partial specialization. (__socket_crtp::operator=(_Tp)): Add noexcept-specifier. * include/experimental/socket (socket_base::broadcast) (socket_base::debug, socket_base::do_not_route) (socket_base::keep_alive, socket_base::linger) (socket_base::out_of_band_inline) (socket_base::receive_buffer_size) (socket_base::receive_low_watermark) (socket_base::reuse_address, socket_base::send_buffer_size) (socket_base::send_low_watermark): Add using-declaration for __socket_crtp::operator=(_Tp). * testsuite/experimental/net/socket/socket_base.cc: Check properties of socket option types. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-26 Jonathan Wakely * include/experimental/internet (resolver_base::flags): Remove enumerators. Initialize constants directly with desired values. Make all operators constexpr and noexcept. * testsuite/experimental/net/internet/resolver/base.cc: Use __gnu_test::test_bitmask_values for bitmask type. Check construction and destruction is protected. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-23 Jonathan Wakely PR libstdc++/100180 * include/experimental/io_context (io_context): Define dummy_pollfd type so that most member functions still compile without and struct pollfd. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-23 Jonathan Wakely * include/experimental/io_context (io_context::async_wait): Add comment. * include/experimental/socket (basic_socket::async_connect): Cast wait_type constant to int. (basic_datagram_socket::async_receive): Likewise. (basic_datagram_socket::async_receive_from): Likewise. (basic_datagram_socket::async_send): Likewise. (basic_datagram_socket::async_send_to): Likewise. (basic_stream_socket::async_receive): Likewise. (basic_stream_socket::async_send): Likewise. Use io_context parameter directly, instead of via an executor. (basic_socket_acceptor::async_accept): Likewise. 2021-08-24 Jonathan Wakely Backported from master: 2021-04-23 Jonathan Wakely * include/experimental/socket (socket_base::shutdown_type): (socket_base::wait_type, socket_base::message_flags): Remove enumerators. Initialize constants directly with desired values. (socket_base::message_flags): Make all operators constexpr and noexcept. * testsuite/util/testsuite_common_types.h (test_bitmask_values): New test utility. * testsuite/experimental/net/socket/socket_base.cc: New test. 2021-08-23 Jonathan Wakely Backported from master: 2021-08-23 Jonathan Wakely * include/std/ranges (basic_istream_view): Add default template argument. * testsuite/std/ranges/istream_view.cc: Check it. 2021-08-19 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely * doc/xml/manual/status_cxx2020.xml: Move row earlier in table. * doc/html/manual/status.html: Regenerate. 2021-08-19 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely PR libstdc++/100139 * doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table. * doc/html/manual/status.html: Regenerate. 2021-08-17 Thomas Schwinge Backported from master: 2021-08-17 Thomas Schwinge * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose, continued. 2021-08-11 Jonathan Wakely Backported from master: 2021-08-11 Jonathan Wakely PR libstdc++/101866 * testsuite/experimental/random/randint.cc: Loop and retry if reseed() produces the same sequence. 2021-08-11 Jonathan Wakely Backported from master: 2021-07-20 Jonathan Wakely PR libstdc++/101510 * src/c++17/fs_ops.cc (fs::create_directories): Use status instead of symlink_status. * src/filesystem/ops.cc (fs::create_directories): Likewise. * testsuite/27_io/filesystem/operations/create_directories.cc: Check symlink to existing directory. * testsuite/27_io/filesystem/operations/create_directory.cc: Do not test with symlinks on Windows. * testsuite/experimental/filesystem/operations/create_directories.cc: Check symlink to existing directory. * testsuite/experimental/filesystem/operations/create_directory.cc: Do not test with symlinks on Windows. 2021-08-11 Jonathan Wakely Backported from master: 2021-07-20 Jonathan Wakely PR libstdc++/101510 * src/c++17/fs_ops.cc (create_dir): Adjust whitespace. * testsuite/27_io/filesystem/operations/create_directory.cc: Test creating directory with name of existing symlink to directory. * testsuite/experimental/filesystem/operations/create_directory.cc: Likewise. 2021-08-11 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely PR libstdc++/101056 * libsupc++/compare (compare_partial_order_fallback): Add constraint using reversed parameter order, as per LWG 3465. * testsuite/18_support/comparisons/algorithms/fallback.cc: Adjust expected result. 2021-08-11 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely * libsupc++/compare (__decayed_same_as): New helper concept. (strong_order, weak_order, partial_order): Constrain with new concept instead of using static_assert. (compare_strong_order_fallback, compare_weak_order_fallback) (compare_partial_order_fallback): Likewise. Do not deduce return types. Remove redundant if-constexpr checks. * testsuite/18_support/comparisons/algorithms/fallback.cc: New test. 2021-08-11 Jonathan Wakely Backported from master: 2021-07-01 Jonathan Wakely * doc/doxygen/doxygroups.cc: Fix docs for std::literals. * doc/doxygen/user.cfg.in: Exclude the Networking TS header. Add some more predefined macros. * include/bits/fs_fwd.h: Move @addtogroup commands inside namespaces. Add better documentation. * include/bits/fs_path.h: Likewise. * include/experimental/bits/fs_fwd.h: Likewise. * include/experimental/bits/fs_path.h: Likewise. * include/ext/throw_allocator.h: Fix typo and improve docs. * include/std/chrono: Move @addtogroup commands. * include/std/system_error: Move @addtogroup commands. * libsupc++/exception: Improve documentation. * libsupc++/exception.h: Add @since documentation. 2021-08-11 Jonathan Wakely Backported from master: 2021-06-30 Jonathan Wakely PR libstdc++/101258 * doc/doxygen/user.cfg.in (INPUT): Add . (COLS_IN_ALPHA_INDEX): Remove obsolete tag. (PREDEFINED): Add/fix some more macros that need to be expanded. * include/bits/random.h: Stop Doxygen from documenting internal implementation details. * include/bits/random.tcc: Likewise. * include/bits/this_thread_sleep.h: Fix @file name. * include/experimental/bits/simd.h: Add to Doxygen group. Do not document internal implementation details. * include/experimental/bits/simd_detail.h: Do not document internal implementation details. * include/experimental/simd: Define Doxygen groups. * include/experimental/type_traits: Improve documentation for the header file. Define groups. Use @since commands. * include/std/scoped_allocator (scoped_allocator_adaptor): Move declaration before undocumented region. * include/std/type_traits (true_type, false_type): Use using declaration instead of typedef. (is_invocable_v, is_nothrow_invocable_v, is_invocable_r_v) (is_nothrow_invocable_r_v): Move definitions next to other C++17 variable templates. Do not document internal implementation details. Move misplaced group-end command. Define group for variable templates. * include/std/variant: Do not document internal implementation details. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line number. 2021-07-28 Release Manager * GCC 11.2.0 released. 2021-07-19 Jonathan Wakely Backported from master: 2021-05-12 Jonathan Wakely * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Increase dg-timeout-factor to 4. Fix -Wunused-parameter warnings. Replace bitwise AND with logical AND in loop condition. * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Replace bitwise AND with logical AND in loop condition. * testsuite/util/pstl/test_utils.h: Remove unused parameter names. 2021-07-19 Jonathan Wakely Backported from master: 2021-06-15 Jonathan Wakely * include/bits/ranges_util.h (subrange): Add __size_type typedef and use it to simplify declarations. (subrange(i, s, n)): Remove assertion. * testsuite/std/ranges/subrange/constexpr.cc: New test. 2021-07-19 Jonathan Wakely Backported from master: 2021-07-15 Jonathan Wakely PR libstdc++/101427 * include/std/tuple (tuple_element): Improve static_assert text. (__get_helper): Add deleted overload. (get(tuple&&), get(const tuple&&)): Use __get_helper directly. (__get_helper2): Remove. (__find_uniq_type_in_pack): New constexpr helper function. (get): Use __find_uniq_type_in_pack and __get_helper instead of __get_helper2. * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust expected errors. * testsuite/20_util/tuple/element_access/101427.cc: New test. 2021-07-16 Jonathan Wakely Backported from master: 2021-06-15 Jonathan Wakely * include/bits/iterator_concepts.h (__cust_access::__decay_copy): Replace with function object. (__cust_access::__member_begin, ___cust_access::_adl_begin): Use __decay_copy unqualified. * include/bits/ranges_base.h (__member_end, __adl_end): Likewise. Use __range_iter_t for type of ranges::begin. (__member_rend): Use correct value category for rbegin argument. (__member_data): Use __decay_copy unqualified. (__begin_data): Use __range_iter_t for type of ranges::begin. 2021-07-15 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely * include/bits/ranges_base.h (ranges::empty): Check whether conversion to bool can throw. * testsuite/std/ranges/access/empty.cc: Check for correct noexcept-specifier. 2021-07-15 Jonathan Wakely Backported from master: 2021-06-30 Jonathan Wakely * include/experimental/simd: Do not define anything pre-C++17. 2021-07-14 Jonathan Wakely Backported from master: 2021-07-13 Jonathan Wakely PR c++/101361 * include/std/string_view (ends_with): Use traits_type::compare directly. 2021-07-14 Jonathan Wakely Backported from master: 2021-07-13 Jonathan Wakely * include/std/string_view: Only include once, and only for C++20 and later. 2021-07-14 Jonathan Wakely Backported from master: 2021-07-12 Jonathan Wakely PR libstdc++/101411 * include/std/span (as_writable_bytes): Add requires-clause. * testsuite/23_containers/span/101411.cc: New test. 2021-07-13 Patrick Palka Backported from master: 2021-06-18 Patrick Palka PR libstdc++/100387 * include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite to limit comparison complexity to 3*N/2. (__minmax_element_fn::operator()): Likewise. (shift_right): Avoid premature std::move of __result. * testsuite/25_algorithms/minmax/constrained.cc (test04, test05): New tests. * testsuite/25_algorithms/minmax_element/constrained.cc (test02): Likewise. 2021-06-22 Thomas Rodgers Backported from master: 2021-06-22 Thomas Rodgers PR libstdc++/100806 * include/bits/semaphore_base.h (__atomic_semaphore::_M_release): Force _M_release() to wake all waiting threads. * testsuite/30_threads/semaphore/100806.cc: New test. 2021-06-18 Jonathan Wakely Backported from master: 2021-06-18 Jonathan Wakely PR libstdc++/95833 * include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace incorrect static_assert with ones matching the 'Mandates' conditions in the standard. * testsuite/26_numerics/reduce/95833.cc: New test. 2021-06-18 Jonathan Wakely Backported from master: 2021-06-18 Jonathan Wakely * testsuite/21_strings/basic_string/cons/char/1.cc: Use diagnostic pragma to suppress -Wstringop-overread error. 2021-06-18 Jonathan Wakely Backported from master: 2021-06-17 Jonathan Wakely PR libstdc++/91488 * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only define C++20 value when std::is_constant_evaluated is available. * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Likewise. (__constant_string_p, __constant_array_p): Give external linkage. * include/std/version (__cpp_lib_constexpr_char_traits) (__cpp_lib_constexpr_string): Only define C++20 values when is_constant_evaluated is available. 2021-06-18 Patrick Palka Backported from master: 2021-06-17 Patrick Palka PR libstdc++/100940 * include/std/ranges (__adaptor::_Partial): For the "simple" forwarding partial specializations, also require that the extra arguments are trivially copyable. * testsuite/std/ranges/adaptors/100577.cc (test04): New test. 2021-06-18 Patrick Palka Backported from master: 2021-06-17 Patrick Palka PR libstdc++/100940 * include/std/ranges (__adaptor::_RangeAdaptor): Document the template form of _S_has_simple_extra_args. (__adaptor::__adaptor_has_simple_extra_args): Add _Args template parameter pack. Try to treat _S_has_simple_extra_args as a variable template parameterized by _Args. (__adaptor::_Partial): Pass _Arg/_Args to the constraint __adaptor_has_simple_extra_args. (views::_Take::_S_has_simple_extra_args): Templatize according to the type of the extra argument. (views::_Drop::_S_has_simple_extra_args): Likewise. (views::_Split::_S_has_simple_extra_args): Define. * testsuite/std/ranges/adaptors/100577.cc (test01, test02): Adjust after changes to _S_has_simple_extra_args mechanism. (test03): Define. 2021-06-14 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely PR libstdc++/100894 * include/std/type_traits (__common_ref_impl): Only use the type if it's a reference. * testsuite/20_util/common_reference/100894.cc: New test. 2021-06-14 Jonathan Wakely Backported from master: 2021-05-20 Jonathan Wakely * include/bits/random.tcc (__representable_as_double) (__p1_representable_as_double): Add "" to static asserts. 2021-06-14 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely * testsuite/experimental/filesystem/path/native/conv_c++23.cc: Add dg-require-filesystem-ts directive. 2021-06-14 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely PR libstdc++/101034 * include/std/any (any(in_place_t, initializer_list, A&&...)) (any::emplace(initializer_list, A&&...)): Fix constraint to use lvalue. * testsuite/20_util/any/cons/101034.cc: New test. 2021-06-14 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add -std=gnu++17 option. 2021-06-14 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely PR libstdc++/101055 * include/std/tuple: Use reserved form of attribute name. * testsuite/17_intro/headers/c++2011/all_attributes.cc: Add check for no_unique_address. * testsuite/17_intro/headers/c++2014/all_attributes.cc: Likewise. * testsuite/17_intro/headers/c++2017/all_attributes.cc: Likewise. 2021-06-14 Patrick Palka Backported from master: 2021-05-18 Patrick Palka PR libstdc++/100475 * include/std/ranges (__box::__box): Use non-list-initialization in member initializer list of in-place constructor of the partial specialization for semiregular types. (__box::operator->): Use std::__addressof. * testsuite/std/ranges/adaptors/detail/semiregular_box.cc (test02): New test. * testsuite/std/ranges/single_view.cc (test04): New test. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-11 Jonathan Wakely * include/bits/fs_path.h (operator==, operator<=>): Use new _S_compare function. (path::_S_compare): New function to call path::compare in a context where path::iterator is complete. * include/experimental/bits/fs_path.h (operator<, operator==): Define after path::iterator is complete. * testsuite/27_io/filesystem/path/native/conv_c++23.cc: New test. * testsuite/experimental/filesystem/path/native/conv_c++23.cc: New test. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-08 Jonathan Wakely * include/experimental/propagate_const (swap): Constrain. * testsuite/experimental/propagate_const/swap/lwg3413.cc: New test. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-09 Jonathan Wakely PR libstdc++/100982 * include/std/optional (optional::operator=(const optional&)): Fix value category used in is_assignable check. * testsuite/20_util/optional/assignment/100982.cc: New test. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-07 Jonathan Wakely PR libstdc++/98842 * include/std/optional (operator<=>(const optional& const U&)): Add missing constraint and add workaround for template recursion. * testsuite/20_util/optional/relops/three_way.cc: Check that type without equality comparison cannot be compared when wrapped in std::optional. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-05 Jonathan Wakely PR libstdc++/100824 * include/bits/ranges_base.h (_SSize): Return signed type. * testsuite/std/ranges/access/ssize.cc: Check with __int128. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-04 Jonathan Wakely * include/bits/ranges_base.h (_SSize): Return the result of ranges::size converted to the wider of make-signed-like-t and ptrdiff_t, rather than the ranges different type. * testsuite/std/ranges/access/ssize.cc: Adjust expected result for an iota_view that uses an integer class type for its difference_type. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-04 Jonathan Wakely PR libstdc++/100824 * include/bits/ranges_base.h (__member_data): Use __decay_copy. * testsuite/std/ranges/access/data.cc: Add testcase from PR. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-04 Jonathan Wakely PR libstdc++/100824 * include/bits/iterator_concepts.h (__detail::__decay_copy) (__detail::__member_begin, __detail::__adl_begin): Move to namespace ranges::__cust_access. (__detail::__ranges_begin): Likewise, and rename to __begin. Remove redundant static assertion. * include/bits/ranges_base.h (_Begin, _End, _RBegin, _REnd): Use lvalue in noexcept specifier. (__as_const): Add non-deduced parameter for value category. (_CBegin, _CEnd, _CRBegin, _CREnd, _CData): Adjust uses of __as_const. (__member_size, __adl_size, __member_empty, __size0_empty): (__eq_iter_empty, __adl_data): Use lvalue objects in requirements. (__sentinel_size): Likewise. Add check for conversion to unsigned-like. (__member_data): Allow non-lvalue types to satisfy the concept, but use lvalue object in requirements. (_Size, _SSize): Remove forwarding to always use an lvalue. (_Data): Likewise. Add static assertion for arrays. * testsuite/std/ranges/access/cdata.cc: Adjust expected behaviour for rvalues. Add negative tests for ill-formed expressions. * testsuite/std/ranges/access/data.cc: Likewise. * testsuite/std/ranges/access/empty.cc: Adjust expected behaviour for rvalues. * testsuite/std/ranges/access/size.cc: Likewise. 2021-06-11 Jonathan Wakely Backported from master: 2021-06-04 Jonathan Wakely * doc/xml/manual/status_cxx2020.xml: * doc/html/*: Regenerate. * include/bits/hashtable.h (__cpp_lib_generic_unordered_lookup): Define. * include/std/version (__cpp_lib_generic_unordered_lookup): Define. * testsuite/23_containers/unordered_map/operations/1.cc: Check feature test macro. * testsuite/23_containers/unordered_set/operations/1.cc: Likewise. 2021-06-10 Patrick Palka Backported from master: 2021-06-03 Patrick Palka PR libstdc++/100577 * include/std/ranges (_RangeAdaptorClosure): Document _S_has_simple_call_op mechanism. (_RangeAdaptor): Document _S_has_simple_extra_args mechanism. (__closure_has_simple_call_op): New concept. (__adaptor_has_simple_extra_args): Likewise. (_Partial<_Adaptor, _Args...>): New partial specialization. (_Partial<_Adaptor, _Arg>): Likewise. (_Pipe<_Lhs, _Rhs>): Likewise. (views::_All::_S_has_simple_call_op): Define to true. (views::_Filter::_S_has_simple_extra_args): Likewise. (views::_Transform::_S_has_simple_extra_args): Likewise. (views::_Take::_S_has_simple_extra_args): Likewise. (views::_TakeWhile::_S_has_simple_extra_args): Likewise. (views::_Drop::_S_has_simple_extra_args): Likewise. (views::_DropWhile::_S_has_simple_extra_args): Likewise. (views::_Join::_S_has_simple_call_op): Likewise. (views::_Split): Document why we don't define _S_has_simple_extra_args to true for this adaptor. (views::_Common::_S_has_simple_call_op): Define to true. (views::_Reverse::_S_has_simple_call_op): Likewise. (views::_Elements::_S_has_simple_call_op): Likewise. * testsuite/std/ranges/adaptors/100577.cc: New test. 2021-06-10 Patrick Palka Backported from master: 2021-06-03 Patrick Palka PR libstdc++/100770 * include/bits/ranges_algo.h (__detail::__can_reread_output): Factor out this concept from ... (__unique_copy_fn::operator()): ... here. Use the concept throughout. * testsuite/std/ranges/range.cc: Remove now ill-formed use of range_value_t on an output_range. * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Define value_type, pointer and reference member types to void. 2021-06-10 Patrick Palka Backported from master: 2021-05-21 Patrick Palka PR libstdc++/100690 * include/std/ranges (iota_view::_Sentinel::_M_distance_from): Split out this member function from ... (iota_view::_Sentinel::operator-): ... here, for sake of access control. * testsuite/std/ranges/iota/iota_view.cc (test05): New test. 2021-06-10 Patrick Palka Backported from master: 2021-05-06 Patrick Palka * include/std/ranges (filter_view::_Iterator::base): Make the const& overload unconstrained and return a const reference as per LWG 3533. Make unconditionally noexcept. (transform_view::_Iterator::base): Likewise. (elements_view::_Iterator::base): Likewise. 2021-06-10 Patrick Palka Backported from master: 2021-05-06 Patrick Palka * include/bits/stl_iterator.h (move_iterator::base): Make the const& overload unconstrained and return a const reference as per LWG 3391. Make unconditionally noexcept. (counted_iterator::base): Likewise. * testsuite/24_iterators/move_iterator/lwg3391.cc: New test. * testsuite/24_iterators/move_iterator/move_only.cc: Adjust has_member_base concept to decay-copy the result of base(). 2021-06-10 Patrick Palka Backported from master: 2021-05-18 Patrick Palka PR libstdc++/100631 * include/std/ranges (elements_view::_Sentinel::operator-): Use _M_distance_from in the other operator- overload too. * testsuite/std/ranges/adaptors/elements.cc (test06): Augment test. 2021-06-10 Patrick Palka Backported from master: 2021-05-18 Patrick Palka PR libstdc++/100631 * include/std/ranges (elements_view::_Iterator): Also befriend _Sentinel. (elements_view::_Sentinel::_M_equal): Templatize. (elements_view::_Sentinel::_M_distance_from): Split out from ... (elements_view::_Sentinel::operator-): ... here. Depend on _Base2 instead of _Base in the return type. * testsuite/std/ranges/adaptors/elements.cc (test06, test07): New tests. 2021-06-10 Patrick Palka Backported from master: 2021-05-20 Patrick Palka PR libstdc++/100639 * include/bits/stl_iterator.h (reverse_iterator::difference_type): In C++20 mode, define in terms of iter_difference_t as per P0896R4. (reverse_iterator::reference): Likewise, but with iter_reference_t. (reverse_iterator::value_type): Likewise, but with iter_value_t. * testsuite/std/ranges/adaptors/reverse.cc (test08): New test. * testsuite/24_iterators/reverse_iterator/100639.cc: New test. 2021-06-09 Thomas Rodgers Backported from master: 2021-06-09 Thomas Rodgers * testsuite/29_atomics/atomic_ref/wait_notify.cc: Guard test logic with constexpr check for is_always_lock_free. 2021-06-08 Thomas Rodgers Backported from master: 2021-06-08 Thomas Rodgers PR libstdc++/100889 * include/bits/atomic_base.h (atomic_ref<_Tp*>::wait): Change parameter type from _Tp to _Tp*. * testsuite/29_atomics/atomic_ref/wait_notify.cc: Extend coverage of types tested. 2021-06-08 Thomas Rodgers Backported from master: 2021-06-08 Thomas Rodgers * include/std/barrier (__tree_barrier::_M_arrive): Remove unnecessary hasher instantiation. 2021-06-07 Avi Kivity Backported from master: 2021-06-07 Avi Kivity PR libstdc++/100900 * include/std/ranges (elements_view::__iter_cat::_S_iter_cat): Add missing typename. 2021-06-02 Jonathan Wakely Backported from master: 2021-05-20 Jonathan Wakely PR libstdc++/100676 * include/bits/c++config (__glibcxx_assert_1): Rename to ... (__glibcxx_constexpr_assert): ... this. (__glibcxx_assert_impl): Use __glibcxx_constexpr_assert. (__glibcxx_assert): Define as either __glibcxx_constexpr_assert or __glibcxx_assert_impl. (__glibcxx_assert_2): Remove * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): Use __glibcxx_constexpr_assert instead of __glibcxx_assert_1. * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc: Adjust expected error. * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc: Likewise. Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc: Likewise. * testsuite/23_containers/span/back_neg.cc: Likewise. * testsuite/23_containers/span/front_neg.cc: Likewise. * testsuite/23_containers/span/index_op_neg.cc: Likewise. 2021-06-02 Jonathan Wakely Backported from master: 2021-06-01 Jonathan Wakely PR libstdc++/100833 * include/bits/ranges_base.h (ranges::advance(iter, n, sentinel)): Fix return value for no-op case. * testsuite/24_iterators/range_operations/advance.cc: Test return values of three-argument overload. 2021-06-02 Jonathan Wakely Backported from master: 2021-05-26 Jonathan Wakely PR libstdc++/100768 * include/bits/ranges_base.h (advance, distance, next, prev): Replace function templates with function objects. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust for changes to function objects. * testsuite/std/ranges/adaptors/elements.cc: Add using declarations for names from namespace ranges. * testsuite/std/ranges/adaptors/transform.cc: Likewise. * testsuite/24_iterators/range_operations/100768.cc: New test. 2021-06-02 Jonathan Wakely Backported from master: 2021-06-01 Jonathan Wakely PR libstdc++/99453 * python/Makefile.am: Use archive name for printer hook if no dynamic library name is available. * python/Makefile.in: Regenerate. 2021-05-28 David Edelsohn Backported from master: 2021-04-24 David Edelsohn * testsuite/lib/dg-options.exp (atomic_link_flags): New. (add_options_for_libatomic): Use atomic_link_flags. 2021-05-28 Patrick Palka Backported from master: 2021-04-30 Patrick Palka * include/std/ranges (__detail::__non_propating_cache): Define as per P2328. (join_view): Remove constraints on the value and reference types of the wrapped iterator type as per P2328. (join_view::_Iterator::_M_satisfy): Adjust as per P2328. (join_view::_Iterator::operator++): Likewise. (join_view::_M_inner): Use __non_propating_cache as per P2328. Remove now-redundant use of __maybe_present_t. * testsuite/std/ranges/adaptors/join.cc: Include . (test10): New test. 2021-05-28 Patrick Palka Backported from master: 2021-05-24 Patrick Palka PR libstdc++/100479 * include/std/ranges (__detail::__non_propagating_cache): Move definition up to before that of _CachedPosition. Make base class _Optional_base protected instead of private. Add const overload for operator*. (__detail::_CachedPosition): Rewrite the partial specialization for forward ranges as a derived class of __non_propagating_cache. Remove the size constraint on the partial specialization for random access ranges. Add copy/move/copy-assignment/move-assignment members to the offset partial specialization for random access ranges that propagate the cached value but additionally invalidate it in the source object on move. * testsuite/std/ranges/adaptors/100479.cc: New test. 2021-05-20 Joern Rennecke PR libstdc++/100361 * include/std/charconv (to_chars): Hide the overloads for floating-point types for 16 bit targets. * src/c++17/floating_to_chars.cc: Don't compile for 16 bit targets. * testsuite/20_util/to_chars/double.cc: Run this test only on size32plus targets. * testsuite/20_util/to_chars/float.cc: Likewise. * testsuite/20_util/to_chars/long_double.cc: Likewise. 2021-05-17 Jonathan Wakely Backported from master: 2021-05-17 Jonathan Wakely PR libstdc++/100630 * include/experimental/bits/fs_path.h (__is_constructible_from): Test construction from a const lvalue, not an rvalue. * testsuite/27_io/filesystem/path/construct/100630.cc: New test. * testsuite/experimental/filesystem/path/construct/100630.cc: New test. 2021-05-17 Thomas Rodgers Backported from master: 2021-05-17 Thomas Rodgers * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): loop until value change observed. (__waiter_base::_M_laundered): New member. (__waiter_base::_M_notify): Check _M_laundered to determine whether to wake one or all. (__detail::__atomic_compare): Return true if call to __builtin_memcmp() == 0. (__waiter_base::_S_do_spin_v): Adjust predicate. * testsuite/29_atomics/atomic/wait_notify/100334.cc: New test. 2021-05-12 Patrick Palka Backported from master: 2021-04-30 Patrick Palka * include/bits/ranges_util.h (subrange::subrange): Avoid list-initialization in delegating constructor. * include/std/ranges (single_view): Replace implicit guide with explicit deduction guide that decays its argument. (_Single::operator()): Avoid CTAD when constructing the single_view object. (_Iota::operator()): Avoid list-initialization. (__detail::__can_filter_view, _Filter::operator()): Likewise. (__detail::__can_transform_view, _Transform::operator()): Likewise. (take_view::begin): Likewise. (__detail::__can_take_view, _Take::operator()): Likewise. (__detail::__can_take_while_view, _TakeWhile::operator()): Likewise. (__detail::__can_drop_view, _Drop::operator()): Likewise. (__detail::__can_drop_while_view, _DropWhile::operator()): Likewise. (split_view::split_view): Use views::single when initializing _M_pattern. (__detail::__can_split_view, _Split::operator()): Avoid list-initialization. (_Counted::operator()): Likewise. * testsuite/std/ranges/p2367.cc: New test. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-11 Jonathan Wakely * testsuite/20_util/headers/memory/synopsis.cc: Define C++98 alternative for macro. * testsuite/20_util/shared_ptr/creation/99006.cc: Add effective target keyword. * testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11 syntax. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-11 Jonathan Wakely * include/bits/allocator.h (allocator) [C++20]: Add missing noexcept to constructor. Restore missing POCMA and is_always_equal_traits. [C++17]: Make construct and destroy members private and declare allocator_traits as a friend. * include/bits/memoryfwd.h (allocator_traits): Declare. * include/ext/malloc_allocator.h (malloc_allocator::allocate): Add nodiscard attribute. Add static assertion for LWG 3307. * include/ext/new_allocator.h (new_allocator::allocate): Add static assertion for LWG 3307. * testsuite/20_util/allocator/void.cc: Check that converting constructor is noexcept. Check for propagation traits and size_type and difference_type. Check that pointer and const_pointer are gone in C++20. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * include/std/stop_token: Remove TODO comment. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)): Initialize a non-reference deleter from an rvalue, as per LWG 3548. (__shared_ptr::_UniqCompatible): Add missing constraint. * testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test. * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check constraints. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/17_intro/headers/c++2017/all_attributes.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc: Likewise. * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc: Likewise. * testsuite/17_intro/headers/c++2017/operator_names.cc: Likewise. * testsuite/17_intro/headers/c++2017/parallel_mode.cc: Likewise. * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise. * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc: Likewise. * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise. * testsuite/18_support/byte/81076.cc: Likewise. * testsuite/18_support/byte/global_neg.cc: Likewise. * testsuite/18_support/byte/ops.cc: Likewise. * testsuite/18_support/byte/requirements.cc: Likewise. * testsuite/18_support/headers/cfloat/values_c++17.cc: Likewise. * testsuite/18_support/launder/1.cc: Likewise. * testsuite/18_support/launder/nodiscard.cc: Likewise. * testsuite/18_support/launder/requirements.cc: Likewise. * testsuite/18_support/launder/requirements_neg.cc: Likewise. * testsuite/18_support/new_aligned.cc: Likewise. * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc: Likewise. * testsuite/19_diagnostics/error_code/is_error_code_v.cc: Likewise. * testsuite/19_diagnostics/error_condition/hash.cc: Likewise. * testsuite/20_util/addressof/requirements/constexpr.cc: Likewise. * testsuite/20_util/as_const/1.cc: Likewise. * testsuite/20_util/as_const/rvalue_neg.cc: Likewise. * testsuite/20_util/bind/83427.cc: Likewise. * testsuite/20_util/bind/is_placeholder_v.cc: Likewise. * testsuite/20_util/bool_constant/requirements.cc: Likewise. * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise. * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc: Likewise. * testsuite/20_util/duration_cast/rounding.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: Likewise. * testsuite/20_util/from_chars/1_neg.cc: Likewise. * testsuite/20_util/from_chars/requirements.cc: Likewise. * testsuite/20_util/function/91456.cc: Likewise. * testsuite/20_util/function/cons/deduction.cc: Likewise. * testsuite/20_util/function_objects/83607.cc: Likewise. * testsuite/20_util/function_objects/invoke/59768.cc: Likewise. * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise. * testsuite/20_util/function_objects/not_fn/1.cc: Likewise. * testsuite/20_util/function_objects/not_fn/87538.cc: Likewise. * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc: Likewise. * testsuite/20_util/has_unique_object_representations/value.cc: Likewise. * testsuite/20_util/hash/nullptr.cc: Likewise. * testsuite/20_util/in_place/requirements.cc: Likewise. * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise. * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_aggregate/value.cc: Likewise. * testsuite/20_util/is_invocable/83395.cc: Likewise. * testsuite/20_util/is_invocable/91456.cc: Likewise. * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_invocable/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_invocable/value.cc: Likewise. * testsuite/20_util/is_literal_type/deprecated-1z.cc: Likewise. * testsuite/20_util/is_nothrow_constructible/94003.cc: Likewise. * testsuite/20_util/is_nothrow_invocable/83395.cc: Likewise. * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise. * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise. * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_nothrow_swappable_with/value.cc: Likewise. * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_swappable/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_swappable/value.cc: Likewise. * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/is_swappable_with/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_swappable_with/value.cc: Likewise. * testsuite/20_util/logical_traits/83134.cc: Likewise. * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/logical_traits/requirements/typedefs.cc: Likewise. * testsuite/20_util/logical_traits/value.cc: Likewise. * testsuite/20_util/pair/cons/deduction.cc: Likewise. * testsuite/20_util/pair/swap_cxx17.cc: Likewise. * testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise. * testsuite/20_util/reference_wrapper/83427.cc: Likewise. * testsuite/20_util/reference_wrapper/deduction.cc: Likewise. * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise. * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise. * testsuite/20_util/shared_ptr/requirements/weak_type.cc: Likewise. * testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise. * testsuite/20_util/time_point_cast/rounding.cc: Likewise. * testsuite/20_util/to_chars/3.cc: Likewise. * testsuite/20_util/to_chars/chars_format.cc: Likewise. * testsuite/20_util/to_chars/lwg3266.cc: Likewise. * testsuite/20_util/to_chars/requirements.cc: Likewise. * testsuite/20_util/tuple/78939.cc: Likewise. * testsuite/20_util/tuple/apply/1.cc: Likewise. * testsuite/20_util/tuple/apply/2.cc: Likewise. * testsuite/20_util/tuple/cons/deduction.cc: Likewise. * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise. * testsuite/20_util/tuple/make_from_tuple/2.cc: Likewise. * testsuite/20_util/tuple/swap_cxx17.cc: Likewise. * testsuite/20_util/tuple/tuple_size_v.cc: Likewise. * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise. * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc: Likewise. * testsuite/20_util/variable_templates_for_traits.cc: Likewise. * testsuite/20_util/void_t/1.cc: Likewise. * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise. * testsuite/24_iterators/container_access.cc: Likewise. * testsuite/24_iterators/headers/iterator/range_access_c++17.cc: Likewise. * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Likewise. * testsuite/24_iterators/range_access/range_access_cpp17.cc: Likewise. * testsuite/24_iterators/range_access/range_access_cpp17_neg.cc: Likewise. * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise. * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc: Likewise. * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise. * testsuite/26_numerics/headers/cmath/special_functions_global.cc: Likewise. * testsuite/26_numerics/lcm/1.cc: Likewise. * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. * testsuite/26_numerics/valarray/deduction.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: Likewise. * testsuite/27_io/manipulators/standard/char/quoted_sv.cc: Likewise. * testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc: Likewise. * testsuite/27_io/types/4.cc: Likewise. * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise. * testsuite/libstdc++-prettyprinters/91997.cc: Likewise. * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/function_objects/searchers.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc: Likewise. * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: Likewise. * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc: Likewise. * testsuite/25_algorithms/clamp/1.cc: Likewise. * testsuite/25_algorithms/clamp/2.cc: Likewise. * testsuite/25_algorithms/clamp/constexpr.cc: Likewise. * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/for_each/for_each_n.cc: Likewise. * testsuite/25_algorithms/for_each/for_each_n_debug.cc: Likewise. * testsuite/25_algorithms/sample/1.cc: Likewise. * testsuite/25_algorithms/sample/2.cc: Likewise. * testsuite/25_algorithms/sample/3.cc: Likewise. * testsuite/25_algorithms/sample/81221.cc: Likewise. * testsuite/25_algorithms/search/searcher.cc: Likewise. * testsuite/26_numerics/exclusive_scan/1.cc: Likewise. * testsuite/26_numerics/inclusive_scan/1.cc: Likewise. * testsuite/26_numerics/reduce/1.cc: Likewise. * testsuite/26_numerics/reduce/2.cc: Likewise. * testsuite/26_numerics/transform_exclusive_scan/1.cc: Likewise. * testsuite/26_numerics/transform_inclusive_scan/1.cc: Likewise. * testsuite/26_numerics/transform_reduce/1.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/23_containers/array/cons/deduction.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise. * testsuite/23_containers/array/element_access/constexpr_c++17.cc: Likewise. * testsuite/23_containers/array/requirements/constexpr_iter.cc: Likewise. * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc: Likewise. * testsuite/23_containers/deque/cons/deduction.cc: Likewise. * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc: Likewise. * testsuite/23_containers/forward_list/cons/deduction.cc: Likewise. * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc: Likewise. * testsuite/23_containers/list/cons/deduction.cc: Likewise. * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc: Likewise. * testsuite/23_containers/map/cons/deduction.cc: Likewise. * testsuite/23_containers/map/modifiers/extract.cc: Likewise. * testsuite/23_containers/map/modifiers/insert/83226.cc: Likewise. * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Likewise. * testsuite/23_containers/map/modifiers/merge.cc: Likewise. * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise. * testsuite/23_containers/multimap/cons/deduction.cc: Likewise. * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise. * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise. * testsuite/23_containers/multiset/cons/deduction.cc: Likewise. * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise. * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise. * testsuite/23_containers/priority_queue/deduction.cc: Likewise. * testsuite/23_containers/queue/deduction.cc: Likewise. * testsuite/23_containers/queue/members/emplace_cxx17_return.cc: Likewise. * testsuite/23_containers/set/cons/deduction.cc: Likewise. * testsuite/23_containers/set/modifiers/extract.cc: Likewise. * testsuite/23_containers/set/modifiers/merge.cc: Likewise. * testsuite/23_containers/set/modifiers/node_swap.cc: Likewise. * testsuite/23_containers/stack/deduction.cc: Likewise. * testsuite/23_containers/stack/members/emplace_cxx17_return.cc: Likewise. * testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise. * testsuite/23_containers/unordered_map/modifiers/extract.cc: Likewise. * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc: Likewise. * testsuite/23_containers/unordered_map/modifiers/merge.cc: Likewise. * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc: Likewise. * testsuite/23_containers/unordered_multimap/cons/deduction.cc: Likewise. * testsuite/23_containers/unordered_multimap/modifiers/extract.cc: Likewise. * testsuite/23_containers/unordered_multimap/modifiers/merge.cc: Likewise. * testsuite/23_containers/unordered_multiset/cons/deduction.cc: Likewise. * testsuite/23_containers/unordered_multiset/modifiers/extract.cc: Likewise. * testsuite/23_containers/unordered_multiset/modifiers/merge.cc: Likewise. * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise. * testsuite/23_containers/unordered_set/modifiers/extract.cc: Likewise. * testsuite/23_containers/unordered_set/modifiers/merge.cc: Likewise. * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc: Likewise. * testsuite/23_containers/vector/cons/89164_c++17.cc: Likewise. * testsuite/23_containers/vector/cons/deduction.cc: Likewise. * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/21_strings/basic_string/79162.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/86138.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: Likewise. * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc: Likewise. * testsuite/21_strings/basic_string/hash/hash.cc: Likewise. * testsuite/21_strings/basic_string/lwg2758.cc: Likewise. * testsuite/21_strings/basic_string/lwg2946.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/append/char/4.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc: Likewise. * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc: Likewise. * testsuite/21_strings/basic_string/operations/compare/char/2.cc: Likewise. * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string/operations/data/char/2.cc: Likewise. * testsuite/21_strings/basic_string/operations/data/char/86169.cc: Likewise. * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string/operations/find/char/5.cc: Likewise. * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc: Likewise. * testsuite/21_strings/basic_string/operators/char/5.cc: Likewise. * testsuite/21_strings/basic_string/operators/wchar_t/5.cc: Likewise. * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise. * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/empty.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc: Likewise. * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/include.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/94051.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc: Likewise. * testsuite/21_strings/basic_string_view/literals/types.cc: Likewise. * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc: Likewise. * testsuite/21_strings/basic_string_view/literals/values.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/data/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/4.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/89446.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc: Likewise. * testsuite/21_strings/basic_string_view/range_access/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc: Likewise. * testsuite/21_strings/basic_string_view/requirements/typedefs.cc: Likewise. * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise. * testsuite/21_strings/basic_string_view/types/1.cc: Likewise. * testsuite/21_strings/char_traits/requirements/char/99181.cc: Likewise. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/memory_resource/1.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/20_util/memory_resource/2.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/1.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/93208.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/release.cc: Likewise. * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc: Likewise. * testsuite/20_util/polymorphic_allocator/1.cc: Likewise. * testsuite/20_util/polymorphic_allocator/construct_pair.cc: Likewise. * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise. * testsuite/20_util/polymorphic_allocator/select.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/allocate.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/cons.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/cons_single.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/is_equal.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/multithreaded.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/options.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/release.cc: Likewise. * testsuite/20_util/synchronized_pool_resource/release_single.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/cons.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/options.cc: Likewise. * testsuite/20_util/unsynchronized_pool_resource/release.cc: Likewise. * testsuite/21_strings/basic_string/types/pmr_typedefs.cc: Likewise. * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise. * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/forward_list/pmr_typedefs.cc: Likewise. * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/list/pmr_typedefs.cc: Likewise. * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/map/pmr_typedefs.cc: Likewise. * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise. * testsuite/23_containers/multimap/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise. * testsuite/23_containers/multiset/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/set/pmr_typedefs.cc: Likewise. * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/unordered_map/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/unordered_set/pmr_typedefs.cc: Likewise. * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc: Likewise. * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise. * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc: Likewise. * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/29_atomics/atomic/69769.cc: Remove -std=gnu++17 from dg-options. * testsuite/29_atomics/atomic/is_always_lock_free.cc: * testsuite/29_atomics/atomic/requirements/typedefs.cc: * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc: * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise. * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise. * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise. * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc: Likewise. * testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/shared_lock/70766.cc: Likewise. * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise. * testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc: Likewise. * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/any/assign/1.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/20_util/any/assign/2.cc: Likewise. * testsuite/20_util/any/assign/emplace.cc: Likewise. * testsuite/20_util/any/assign/exception.cc: Likewise. * testsuite/20_util/any/assign/self.cc: Likewise. * testsuite/20_util/any/cons/1.cc: Likewise. * testsuite/20_util/any/cons/2.cc: Likewise. * testsuite/20_util/any/cons/90415.cc: Likewise. * testsuite/20_util/any/cons/92156.cc: Likewise. * testsuite/20_util/any/cons/aligned.cc: Likewise. * testsuite/20_util/any/cons/explicit.cc: Likewise. * testsuite/20_util/any/cons/in_place.cc: Likewise. * testsuite/20_util/any/cons/nontrivial.cc: Likewise. * testsuite/20_util/any/make_any.cc: Likewise. * testsuite/20_util/any/misc/any_cast.cc: Likewise. * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise. * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise. * testsuite/20_util/any/misc/swap.cc: Likewise. * testsuite/20_util/any/modifiers/1.cc: Likewise. * testsuite/20_util/any/modifiers/83658.cc: Likewise. * testsuite/20_util/any/modifiers/92156.cc: Likewise. * testsuite/20_util/any/observers/type.cc: Likewise. * testsuite/20_util/any/requirements.cc: Likewise. * testsuite/20_util/any/typedefs.cc: Likewise. * testsuite/20_util/optional/77288.cc: Likewise. * testsuite/20_util/optional/84601.cc: Likewise. * testsuite/20_util/optional/assignment/1.cc: Likewise. * testsuite/20_util/optional/assignment/2.cc: Likewise. * testsuite/20_util/optional/assignment/3.cc: Likewise. * testsuite/20_util/optional/assignment/4.cc: Likewise. * testsuite/20_util/optional/assignment/5.cc: Likewise. * testsuite/20_util/optional/assignment/6.cc: Likewise. * testsuite/20_util/optional/assignment/7.cc: Likewise. * testsuite/20_util/optional/assignment/8.cc: Likewise. * testsuite/20_util/optional/assignment/9.cc: Likewise. * testsuite/20_util/optional/bad_access.cc: Likewise. * testsuite/20_util/optional/cons/77727.cc: Likewise. * testsuite/20_util/optional/cons/85642.cc: Likewise. * testsuite/20_util/optional/cons/copy.cc: Likewise. * testsuite/20_util/optional/cons/deduction.cc: Likewise. * testsuite/20_util/optional/cons/default.cc: Likewise. * testsuite/20_util/optional/cons/move.cc: Likewise. * testsuite/20_util/optional/cons/trivial.cc: Likewise. * testsuite/20_util/optional/cons/value.cc: Likewise. * testsuite/20_util/optional/cons/value_neg.cc: Likewise. * testsuite/20_util/optional/constexpr/cons/default.cc: Likewise. * testsuite/20_util/optional/constexpr/cons/value.cc: Likewise. * testsuite/20_util/optional/constexpr/in_place.cc: Likewise. * testsuite/20_util/optional/constexpr/make_optional.cc: Likewise. * testsuite/20_util/optional/constexpr/nullopt.cc: Likewise. * testsuite/20_util/optional/constexpr/observers/1.cc: Likewise. * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise. * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise. * testsuite/20_util/optional/constexpr/observers/4.cc: Likewise. * testsuite/20_util/optional/constexpr/observers/5.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/1.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/2.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/3.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/4.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/5.cc: Likewise. * testsuite/20_util/optional/constexpr/relops/6.cc: Likewise. * testsuite/20_util/optional/hash.cc: Likewise. * testsuite/20_util/optional/in_place.cc: Likewise. * testsuite/20_util/optional/make_optional.cc: Likewise. * testsuite/20_util/optional/nullopt.cc: Likewise. * testsuite/20_util/optional/observers/1.cc: Likewise. * testsuite/20_util/optional/observers/2.cc: Likewise. * testsuite/20_util/optional/observers/3.cc: Likewise. * testsuite/20_util/optional/observers/4.cc: Likewise. * testsuite/20_util/optional/observers/5.cc: Likewise. * testsuite/20_util/optional/observers/6.cc: Likewise. * testsuite/20_util/optional/relops/1.cc: Likewise. * testsuite/20_util/optional/relops/2.cc: Likewise. * testsuite/20_util/optional/relops/3.cc: Likewise. * testsuite/20_util/optional/relops/4.cc: Likewise. * testsuite/20_util/optional/relops/5.cc: Likewise. * testsuite/20_util/optional/relops/6.cc: Likewise. * testsuite/20_util/optional/relops/7.cc: Likewise. * testsuite/20_util/optional/requirements.cc: Likewise. * testsuite/20_util/optional/swap/1.cc: Likewise. * testsuite/20_util/optional/swap/2.cc: Likewise. * testsuite/20_util/optional/typedefs.cc: Likewise. * testsuite/20_util/variant/80165.cc: Likewise. * testsuite/20_util/variant/85183.cc: Likewise. * testsuite/20_util/variant/86874.cc: Likewise. * testsuite/20_util/variant/87431.cc: Likewise. * testsuite/20_util/variant/87619.cc: Likewise. * testsuite/20_util/variant/91807.cc: Likewise. * testsuite/20_util/variant/any.cc: Likewise. * testsuite/20_util/variant/compile.cc: Likewise. * testsuite/20_util/variant/deduction.cc: Likewise. * testsuite/20_util/variant/exception_safety.cc: Likewise. * testsuite/20_util/variant/hash.cc: Likewise. * testsuite/20_util/variant/index_type.cc: Likewise. * testsuite/20_util/variant/relops/89851.cc: Likewise. * testsuite/20_util/variant/relops/90008.cc: Likewise. * testsuite/20_util/variant/run.cc: Likewise. * testsuite/20_util/variant/visit.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/27_io/basic_filebuf/open/char/path.cc: Remove -std=gnu++17 from dg-options directive. * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise. * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise. * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise. * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise. * testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise. * testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise. * testsuite/27_io/filesystem/directory_entry/86597.cc: Likewise. * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: Likewise. * testsuite/27_io/filesystem/file_status/1.cc: Likewise. * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise. * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise. * testsuite/27_io/filesystem/iterators/91067.cc: Likewise. * testsuite/27_io/filesystem/iterators/caching.cc: Likewise. * testsuite/27_io/filesystem/iterators/directory_iterator.cc: Likewise. * testsuite/27_io/filesystem/iterators/pop.cc: Likewise. * testsuite/27_io/filesystem/iterators/recursion_pending.cc: Likewise. * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc: Likewise. * testsuite/27_io/filesystem/operations/absolute.cc: Likewise. * testsuite/27_io/filesystem/operations/all.cc: Likewise. * testsuite/27_io/filesystem/operations/canonical.cc: Likewise. * testsuite/27_io/filesystem/operations/copy.cc: Likewise. * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise. * testsuite/27_io/filesystem/operations/create_directories.cc: Likewise. * testsuite/27_io/filesystem/operations/create_directory.cc: Likewise. * testsuite/27_io/filesystem/operations/create_symlink.cc: Likewise. * testsuite/27_io/filesystem/operations/current_path.cc: Likewise. * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise. * testsuite/27_io/filesystem/operations/exists.cc: Likewise. * testsuite/27_io/filesystem/operations/file_size.cc: Likewise. * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise. * testsuite/27_io/filesystem/operations/last_write_time.cc: Likewise. * testsuite/27_io/filesystem/operations/permissions.cc: Likewise. * testsuite/27_io/filesystem/operations/proximate.cc: Likewise. * testsuite/27_io/filesystem/operations/read_symlink.cc: Likewise. * testsuite/27_io/filesystem/operations/relative.cc: Likewise. * testsuite/27_io/filesystem/operations/remove.cc: Likewise. * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise. * testsuite/27_io/filesystem/operations/rename.cc: Likewise. * testsuite/27_io/filesystem/operations/resize_file.cc: Likewise. * testsuite/27_io/filesystem/operations/space.cc: Likewise. * testsuite/27_io/filesystem/operations/status.cc: Likewise. * testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise. * testsuite/27_io/filesystem/operations/temp_directory_path.cc: Likewise. * testsuite/27_io/filesystem/operations/weakly_canonical.cc: Likewise. * testsuite/27_io/filesystem/path/append/path.cc: Likewise. * testsuite/27_io/filesystem/path/append/source.cc: Likewise. * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise. * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise. * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise. * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise. * testsuite/27_io/filesystem/path/concat/92853.cc: Likewise. * testsuite/27_io/filesystem/path/concat/94063.cc: Likewise. * testsuite/27_io/filesystem/path/concat/path.cc: Likewise. * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise. * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise. * testsuite/27_io/filesystem/path/construct/90281.cc: Likewise. * testsuite/27_io/filesystem/path/construct/90634.cc: Likewise. * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise. * testsuite/27_io/filesystem/path/construct/default.cc: Likewise. * testsuite/27_io/filesystem/path/construct/format.cc: Likewise. * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise. * testsuite/27_io/filesystem/path/construct/range.cc: Likewise. * testsuite/27_io/filesystem/path/construct/string_view.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/extension.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/filename.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/relative_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_directory.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_name.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/root_path.cc: Likewise. * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise. * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc: Likewise. * testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise. * testsuite/27_io/filesystem/path/generation/normal.cc: Likewise. * testsuite/27_io/filesystem/path/generation/normal2.cc: Likewise. * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise. * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise. * testsuite/27_io/filesystem/path/generic/94242.cc: Likewise. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Likewise. * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise. * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise. * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise. * testsuite/27_io/filesystem/path/itr/components.cc: Likewise. * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: Likewise. * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise. * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise. * testsuite/27_io/filesystem/path/native/string-char8_t.cc: Likewise. * testsuite/27_io/filesystem/path/native/string.cc: Likewise. * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise. * testsuite/27_io/filesystem/path/nonmember/cmp.cc: Likewise. * testsuite/27_io/filesystem/path/nonmember/hash_value.cc: Likewise. * testsuite/27_io/filesystem/path/query/empty.cc: Likewise. * testsuite/27_io/filesystem/path/query/empty_neg.cc: * testsuite/27_io/filesystem/path/query/has_extension.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_filename.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_parent_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_relative_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_directory.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_name.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_root_path.cc: Likewise. * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise. * testsuite/27_io/filesystem/path/query/is_absolute.cc: Likewise. * testsuite/27_io/filesystem/path/query/is_relative.cc: Likewise. * testsuite/experimental/filesystem/path/construct/string_view.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc: Remove -std=gnu++17 from dg-options. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc: Likewise. * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc: Likewise. * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc: Likewise. * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/includes.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/set.cc: Likewise. * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-2.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test.cc: Likewise. * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc: Likewise. * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise. * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise. * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc: Likewise. * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error for additional errors in C++20. * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc: Likewise. * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise. * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-10 Jonathan Wakely * testsuite/20_util/variant/compile.cc: Rename 'any' to avoid clash with std::any. 2021-05-11 Jonathan Wakely Backported from master: 2021-05-06 Jonathan Wakely * include/std/type_traits (remove_cvref_t): Define in terms of remove_cvref. * testsuite/20_util/remove_cvref/value.cc: Check alias. 2021-05-11 Jonathan Wakely Backported from master: 2021-04-22 Jonathan Wakely PR libstdc++/99006 * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp is not an array type. * include/bits/shared_ptr_base.h (__allocate_shared): Likewise. * testsuite/20_util/shared_ptr/creation/99006.cc: New test. 2021-05-11 Philippe Blain Backported from master: 2021-04-21 Philippe Blain Jonathan Wakely PR libstdc++/99453 * python/Makefile.am: Install libstdc++*-gdb.py more robustly. * python/Makefile.in: Regenerate. 2021-05-11 Patrick Palka Backported from master: 2021-05-11 Patrick Palka * src/c++17/ryu/LOCAL_PATCHES: Update. * src/c++17/ryu/ryu_generic_128.h: Remove extern "C". Remove declarations for never-defined functions. * testsuite/20_util/to_chars/4.cc: New test. 2021-05-07 Jonathan Wakely Backported from master: 2021-05-07 Jonathan Wakely * include/std/istream (__rvalue_stream_extraction_t): Replace use of __rval_streamable. * include/std/ostream (__rvalue_stream_insertion_t): Likewise. (__rval_streamable): Remove. (_Require_derived_from_ios_base, __derived_from_ios_base): New helper for checking constraints. * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Fix reference to the wrong subclause of the standard. * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/6.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/99692.cc: New test. * testsuite/27_io/filesystem/path/io/dr2989.cc: Adjust pruned errors. 2021-05-06 Jonathan Wakely Backported from master: 2021-04-30 Jonathan Wakely * include/std/istream (operator>>(Istream&&, x&)): Simplify, as per LWG 1203. * include/std/ostream (operator<<(Ostream&&, const x&)): Likewise. * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc: Adjust dg-error pattern. * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Define is_extractable trait to replace std::__is_extractable. Make it work with rvalue streams as well as lvalues, to replace f() and g() helper functions. * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/6.cc: Define is_insertable trait to replace std::__is_insertable. Make it work with rvalue streams as well as lvalues, to replace f() and g() helper functions. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc: Likewise. * testsuite/27_io/filesystem/path/io/dr2989.cc: Prune additional errors from new constraints. * testsuite/27_io/rvalue_streams-2.cc: Remove PR 80675 checks, which are no longer expected to compile. * testsuite/27_io/rvalue_streams.cc: Adjust existing test. Verify LWG 1203 changes. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-05 Jonathan Wakely * testsuite/20_util/function_objects/invoke/3.cc: Check feature test macro. * testsuite/20_util/function_objects/invoke/version.cc: New test. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-04 Jonathan Wakely * include/std/future (promise::set_value): Check for existence of shared state before dereferncing it. (promise::set_exception, promise::set_value_at_thread_exit) (promise::set_exception_at_thread_exit): Likewise. (promise::set_value, promise::set_exception) (promise::set_value_at_thread_exit) (promise::set_exception_at_thread_exit): Likewise. (promise::set_value, promise::set_exception) (promise::set_value_at_thread_exit) (promise::set_exception_at_thread_exit): Likewise. * testsuite/30_threads/promise/members/at_thread_exit2.cc: Remove unused variable. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-04 Jonathan Wakely * include/bits/basic_string.h (basic_string(const CharT*, const A&)): Do not do arithmetic on null pointer. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-04 Jonathan Wakely * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp (find_key_pointer(key_const_reference, false_type)) (find_key_pointer(key_const_reference, true_type)): Do not dereference null pointer. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-04 Jonathan Wakely * testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid overflow. * testsuite/24_iterators/reverse_iterator/2.cc: Do not add non-zero value to null pointer. * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc: Use past-the-end iterator for result. * testsuite/25_algorithms/move_backward/69478.cc: Likewise. * testsuite/25_algorithms/move_backward/93872.cc: Likewise. 2021-05-06 Jonathan Wakely Backported from master: 2021-05-04 Jonathan Wakely PR libstdc++/100384 * include/std/variant (__get_t): New alias template yielding the return type of std::get on a variant. (__visit_result_t): New alias template yielding the result of std::visit. (__same_types): Move into namespace __detail::__variant. (__check_visitor_results): Likewise. Use __invoke_result_t and __get_t. (__check_visitor_result): Remove. (visit): Use __visit_result_t for return type. * testsuite/20_util/variant/100384.cc: New test. 2021-05-05 Patrick Palka Backported from master: 2021-05-05 Patrick Palka * include/std/ranges (transform_view::_Iterator::iter_swap): Remove as per LWG 3520. (join_view::_Iterator::iter_swap): Add indirectly_swappable constraint as per LWG 3517. 2021-05-04 Patrick Palka Backported from master: 2021-04-30 Patrick Palka * include/std/ranges (split_view::_InnerIter::operator++): Depend on _Base instead of _Vp directly, as per LWG 3532. 2021-04-30 Jonathan Wakely Backported from master: 2021-04-30 Jonathan Wakely * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only define for C++17 and later. * include/std/version (__cpp_lib_semaphore): Fix condition to match the one in . 2021-04-29 Jonathan Wakely Backported from master: 2021-04-26 Jonathan Wakely PR libstdc++/100259 * include/experimental/internet (net::ip::make_error_code) (net::ip::make_error_condition, net::ip::make_network_v4) (net::ip::operator==(const udp&, const udp&)): Add 'inline'. 2021-04-29 Jonathan Wakely Backported from master: 2021-04-28 Jonathan Wakely * include/bits/basic_string.h (__cpp_lib_constexpr_string): Define. * include/std/version (__cpp_lib_constexpr_string): Define. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: Check for __cpp_lib_constexpr_string. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: Likewise. * testsuite/21_strings/char_traits/requirements/version.cc: New test. 2021-04-28 Jonathan Wakely Backported from master: 2021-04-28 Jonathan Wakely PR libstdc++/100298 * include/bits/std_thread.h (thread::hardware_concurrency): Add missing noexcept to inline definition for non-gthreads targets. 2021-04-28 Jakub Jelinek Revert: 2021-04-22 Jakub Jelinek PR target/100182 * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for ia32. * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for ia32. 2021-04-27 Patrick Palka Backported from master: 2021-04-27 Patrick Palka PR libstdc++/100290 * include/std/ranges (join_view::_Iterator::operator++): Correct the return type of the lambda to avoid returning a copy of _M_parent->_M_inner. * testsuite/std/ranges/adaptors/join.cc (test10): New test. 2021-04-27 Release Manager * GCC 11.1.0 released. 2021-04-23 Jonathan Wakely Backported from master: 2021-04-22 Jonathan Wakely * include/bits/atomic_timed_wait.h (__cond_wait_until_impl): Handle system_clock as well as steady_clock. * testsuite/30_threads/semaphore/try_acquire_for.cc: Re-enable. * testsuite/30_threads/semaphore/try_acquire_until.cc: Re-enable. 2021-04-23 Jonathan Wakely Backported from master: 2021-04-22 Jonathan Wakely * testsuite/30_threads/semaphore/try_acquire_posix.cc: Add options for libatomic. 2021-04-22 Thomas Rodgers Backported from master: 2021-04-22 Thomas Rodgers * include/bits/atomic_wait.h: Always notify waiters in the case of 'bare' address notification. 2021-04-22 Jonathan Wakely Backported from master: 2021-04-22 Jonathan Wakely PR libstdc++/100179 * include/bits/semaphore_base.h: Remove #error. * include/std/semaphore: Do not define anything unless one of the implementations is available. 2021-04-22 Jakub Jelinek Backported from master: 2021-04-22 Jakub Jelinek PR target/100182 * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for ia32. * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for ia32. 2021-04-22 Thomas Rodgers Backported from master: 2021-04-21 Thomas Rodgers * include/bits/semaphore_base.h: Always reload __old in __atomic_semaphore::_S_do_try_acquire(). * testsuite/30_threads/stop_token/stop_callback/destroy.cc: re-enable testcase. 2021-04-21 Thomas Rodgers Backported from master: 2021-04-21 Thomas Rodgers * include/bits/semaphore_base.h: Add missing _M_try_acquire() member to __platform_wait. 2021-04-21 Jonathan Wakely Backported from master: 2021-04-21 Jonathan Wakely * include/std/latch: Replace tab characters in license text. * include/std/semaphore: Likewise. 2021-04-21 Jakub Jelinek Backported from master: 2021-04-21 Jakub Jelinek PR libstdc++/100164 * acinclude.m4: For POSIX semaphores AC_DEFINE HAVE_POSIX_SEMAPHORE rather than _GLIBCXX_HAVE_POSIX_SEMAPHORE. * configure: Regenerated. * config.h.in: Regenerated. 2021-04-20 Jonathan Wakely Backported from master: 2021-04-20 Jonathan Wakely * testsuite/30_threads/semaphore/try_acquire_for.cc: Disable test for targets not using futexes for semaphores. * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Disable for all targets. 2021-04-20 Thomas Rodgers Backported from master: 2021-04-20 Thomas Rodgers * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/this_thread_sleep.h: New file. * include/bits/atomic_base.h: Adjust all calls to __atomic_wait/__atomic_notify for new call signatures. * include/bits/atomic_timed_wait.h: Extensive rewrite. * include/bits/atomic_wait.h: Likewise. * include/bits/semaphore_base.h: Adjust all calls to __atomic_wait/__atomic_notify for new call signatures. * include/std/atomic: Likewise. * include/std/barrier: Likewise. * include/std/latch: Likewise. * include/std/semaphore: Likewise. * include/std/thread (this_thread::sleep_for) (this_thread::sleep_until): Move to new header. * testsuite/29_atomics/atomic/wait_notify/bool.cc: Simplify test. * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise. * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise. * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise. 2021-04-20 Patrick Palka Backported from master: 2021-04-20 Patrick Palka PR libstdc++/95983 * include/bits/stl_iterator.h (__detail::__move_iter_cat): Define. (move_iterator): Derive from the above in C++20 in order to conditionally define iterator_category as per P2259. (move_iterator::__base_cat): No longer used, so remove. (move_iterator::iterator_category): Remove in C++20. (__detail::__common_iter_use_postfix_proxy): Define. (common_iterator::_Proxy): Rename to ... (common_iterator:__arrow_proxy): ... this. (common_iterator::__postfix_proxy): Define as per P2259. (common_iterator::operator->): Adjust. (common_iterator::operator++): Adjust as per P2259. (iterator_traits::_S_iter_cat): Define. (iterator_traits::iterator_category): Change as per P2259. (__detail::__counted_iter_value_type): Define. (__detail::__counted_iter_concept): Define. (__detail::__counted_iter_cat): Define. (counted_iterator): Derive from the above three classes in order to conditionally define value_type, iterator_concept and iterator category respectively as per P2259. (counted_iterator::operator->): Define as per P2259. (incrementable_traits): Remove as per P2259. (iterator_traits): Adjust as per P2259. * include/std/ranges (__detail::__iota_view_iter_cat): Define. (iota_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (iota_view::_S_iter_cat): Rename to ... (iota_view::_S_iter_concept): ... this. (iota_view::iterator_concept): Use it to apply LWG 3291 changes. (iota_view::iterator_category): Remove. (__detail::__filter_view_iter_cat): Define. (filter_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (filter_view::_Iterator): Move to struct __filter_view_iter_cat. (filter_view::_Iterator::iterator_category): Remove. (transform_view::_Base): Define. (transform_view::__iter_cat): Define. (transform_view::_Iterator): Derive from the above in order to conditionally define iterator_category as per P2259. (transform_view::_Iterator::_Base): Just alias transform_view::_Base. (transform_view::_Iterator::_S_iter_cat): Move to struct transform_view::__iter_cat. (transform_view::_Iterator::iterator_category): Remove. (transform_view::_Sentinel::_Base): Just alias transform_view::_Base. (join_view::_Base): Define. (join_view::_Outer_iter): Define. (join_view::_Inner_iter): Define. (join_view::_S_ref_is_glvalue): Define. (join_view::__iter_cat): Define. (join_view::_Iterator): Derive from it in order to conditionally define iterator_category as per P2259. (join_view::_Iterator::_Base): Just alias join_view::_Base. (join_view::_Iterator::_S_ref_is_glvalue): Just alias join_view::_S_ref_is_glvalue. (join_view::_Iterator::_S_iter_cat): Move to struct transform_view::__iter_cat. (join_view::_Iterator::_Outer_iter): Just alias join_view::_Outer_iter. (join_view::_Iterator::_Inner_iter): Just alias join_view::_Inner_iter. (join_view::_Iterator::iterator_category): Remove. (join_view::_Sentinel::_Base): Just alias join_view::_Base. (__detail::__split_view_outer_iter_cat): Define. (__detail::__split_view_inner_iter_cat): Define. (split_view::_Base): Define. (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat in order to conditionally define iterator_category as per P2259. (split_view::_Outer_iter::iterator_category): Remove. (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat in order to conditionally define iterator_category as per P2259. (split_view::_Inner_iter::_S_iter_cat): Move to __split_view_inner_iter_cat. (split_view::_Inner_iter::iterator_category): Remove. (elements_view::_Base): Define. (elements_view::__iter_cat): Define. (elements_view::_Iterator): Derive from the above in order to conditionall define iterator_category as per P2259. (elements_view::_Iterator::_Base): Just alias elements_view::_Base. (elements_view::_Iterator::_S_iter_concept) (elements_view::_Iterator::iterator_concept): Define as per P2259. (elements_view::_Iterator::iterator_category): Remove. (elements_view::_Sentinel::_Base): Just alias elements_view::_Base. * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust constraints on iterator_traits. * testsuite/std/ranges/p2259.cc: New test. 2021-04-20 Jonathan Wakely Backported from master: 2021-04-20 Jonathan Wakely PR libstdc++/100146 * include/std/charconv (__cpp_lib_to_chars): Define conditionally. * include/std/version (__cpp_lib_to_chars): Likewise.. * testsuite/20_util/from_chars/4.cc: Only check feature test macro, not _GLIBCXX_HAVE_USELOCALE. * testsuite/20_util/from_chars/5.cc: Likewise. * testsuite/20_util/from_chars/6.cc: Likewise. * testsuite/20_util/to_chars/long_double.cc: Likewise. 2021-04-20 Jakub Jelinek Backported from master: 2021-04-20 Jakub Jelinek * testsuite/util/testsuite_abi.cc (compare_symbols): If any symbol versions with _IEEE128_ substring are found, set ieee_version_found to true. Ignore missing symbols with _IEEE128_ in version name if !ieee_version_found. Use i->first as version_name instead of i->second.version_name if the latter is empty. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 2021-04-19 H.J. Lu * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 2021-04-17 Jakub Jelinek * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. 2021-04-17 Jakub Jelinek * 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/i386-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 2021-04-15 Jonathan Wakely * testsuite/lib/dg-options.exp (add_options_for_libatomic): Also add libatomic options for 32-bit sparc*-*-linux-gnu. 2021-04-15 Jonathan Wakely PR libstdc++/96657 * libsupc++/Makefile.am: Add atomicity.cc here. * src/c++98/Makefile.am: Remove it from here. * libsupc++/Makefile.in: Regenerate. * src/c++98/Makefile.in: Regenerate. * testsuite/18_support/exception_ptr/96657.cc: New test. 2021-04-13 Jonathan Wakely PR libstdc++/100060 * include/std/bit: Only include for hosted build, use otherwise. 2021-04-13 Jonathan Wakely * doc/xml/manual/backwards_compatibility.xml: Remove porting notes for libg++ and libstdc++-v2, and bibliography. * doc/html/*: Regenerated. 2021-04-12 Jonathan Wakely PR libstdc++/100044 * include/bits/ranges_util.h (__detail::__iterator_sentinel_pair): Remove helper concept. (subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove deduction guides, as per LWG 3404. * testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class template argument deduction fails. 2021-04-12 Jonathan Wakely * testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc: Adjust expected error for C++20 mode. * testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc: Likewise. 2021-04-12 Jonathan Wakely PR libstdc++/99995 * testsuite/17_intro/headers/c++1998/49745.cc: Include all standard headers and XFAIL for effective-target c++20. 2021-04-09 François Dumont PR libstdc++/99402 * include/debug/helper_functions.h (__can_advance(_InputIterator, const std::pair<_Diff, _Distance_precision>&, int)): New. (__can_advance(const _Safe_iterator<>&, const std::pair<_Diff, _Distance_precision>&, int)): New. * include/debug/macros.h (__glibcxx_check_can_increment_dist): New, use latter. (__glibcxx_check_can_increment_range): Adapt to use latter. (__glibcxx_check_can_decrement_range): Likewise. * include/debug/safe_iterator.h (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&, int)): New. (__can_advance(const _Safe_iterator<>&, const std::pair<_Diff, _Distance_precision>&, int)): New. * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&, int)): New. (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&, std::pair&, bool)): Adapt for __dp_sign_max_size. (__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist. (__copy_move_backward_a): Likewise. (__equal_aux): Likewise. * include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&, const std::pair<_Diff, _Distance_precision>&, int)): New. (__can_advance(const std::move_iterator<>&, const std::pair<_Diff, _Distance_precision>&, int)): New. * testsuite/25_algorithms/copy/debug/99402.cc: New test. 2021-04-09 Jonathan Wakely PR libstdc++/99985 * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix to be a valid constexpr function in C++11. * testsuite/23_containers/unordered_set/cons/99985.cc: New test. 2021-04-09 Jonathan Wakely * include/bits/fs_fwd.h: Fix doxygen group command. * include/bits/streambuf_iterator.h: Likewise. * include/bits/uses_allocator_args.h: Likewise. * include/std/memory: Likewise. * include/tr1/complex: Likewise. 2021-04-08 Jonathan Wakely * include/bits/basic_string.h: Tweak doxygen comment. 2021-04-08 Patrick Palka * include/std/ranges (__detail::find): Define. (split_view::_OuterIter::operator++): Apply proposed resolution of LWG 3505. * testsuite/std/ranges/adaptors/split.cc (test10): New test. 2021-04-08 Patrick Palka * include/std/ranges (__detail::find_if): Simplify. (__detail::find_if_not): Likewise. (__detail::min): Remove. (__detail::mismatch): Simplify. (take_view::size): Use std::min instead of __detail::min. 2021-04-08 Patrick Palka * include/std/ranges (__detail::__returnable_element): New concept. (elements_view): Use this concept in its constraints. Add missing private access specifier. (elements_view::_S_get_element): Define as per LWG 3502. (elements_view::operator*, elements_view::operator[]): Use _S_get_element. (elements_view::operator++): Remove unnecessary constraint as per LWG 3492. * testsuite/std/ranges/adaptors/elements.cc (test05): New test. 2021-04-08 Jonathan Wakely * doc/Makefile.am (stamp-pdf-doxygen): Also grep for out-of-memory error in log file. * doc/Makefile.in: Regenerate. 2021-04-08 Jonathan Wakely * configure: Regenerate. 2021-04-08 Jonathan Wakely * include/bits/random.h: Fix doxygen group commands. * include/bits/regex_constants.h: Likewise. * include/tr1/random.h: Likewise. 2021-04-08 Jonathan Wakely * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): New function to determine noexcept-specifier for move constructors. (_Hashtable): Use _S_nothrow_move() on move constructors. * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc: Correct static assertion message. * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc: Likewise. * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc: Likewise. * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc: Likewise. 2021-04-08 Patrick Palka PR libstdc++/98384 * testsuite/20_util/to_chars/long_double.cc: Don't run the test on targets without a large long double. XFAIL the execution on targets with a non-conforming printf. 2021-04-08 Patrick Palka PR libstdc++/99433 * include/std/ranges (__adaptor::__maybe_refwrap): Remove. (__adaptor::__adaptor_invocable): New concept. (__adaptor::__adaptor_partial_app_viable): New concept. (__adaptor::_RangeAdaptorClosure): Rewrite, turning it into a non-template base class. (__adaptor::_RangeAdaptor): Rewrite, turning it into a CRTP base class template. (__adaptor::_Partial): New class template that represents partial application of a range adaptor non-closure. (__adaptor::__pipe_invocable): New concept. (__adaptor::_Pipe): New class template. (__detail::__can_ref_view): New concept. (__detail::__can_subrange): New concept. (all): Replace the lambda here with ... (_All): ... this functor. Add appropriate constraints. (__detail::__can_filter_view): New concept. (filter, _Filter): As in all/_All. (__detail::__can_transform): New concept. (transform, _Transform): As in all/_All. (__detail::__can_take_view): New concept. (take, _Take): As in all/_All. (__detail::__can_take_while_view): New concept. (take_while, _TakeWhile): As in all/_All. (__detail::__can_drop_view): New concept. (drop, _Drop): As in all/_All. (__detail::__can_drop_while_view): New concept. (drop_while, _DropWhile): As in all/_All. (__detail::__can_join_view): New concept. (join, _Join): As in all/_All. (__detail::__can_split_view): New concept. (split, _Split): As in all/_All. Rename template parameter _Fp to _Pattern. (__detail::__already_common): New concept. (__detail::__can_common_view): New concept. (common, _Common): As in all/_All. (__detail::__can_reverse_view): New concept. (reverse, _Reverse): As in all/_All. (__detail::__can_elements_view): New concept. (elements, _Elements): As in all/_All. (keys, values): Adjust. * testsuite/std/ranges/adaptors/99433.cc: New test. * testsuite/std/ranges/adaptors/all.cc: No longer expect that adding empty range adaptor closure objects to a pipeline doesn't increase the size of the pipeline. (test05): New test. * testsuite/std/ranges/adaptors/common.cc (test03): New test. * testsuite/std/ranges/adaptors/drop.cc (test09): New test. * testsuite/std/ranges/adaptors/drop_while.cc (test04): New test. * testsuite/std/ranges/adaptors/elements.cc (test04): New test. * testsuite/std/ranges/adaptors/filter.cc (test06): New test. * testsuite/std/ranges/adaptors/join.cc (test09): New test. * testsuite/std/ranges/adaptors/p2281.cc: New test. * testsuite/std/ranges/adaptors/reverse.cc (test07): New test. * testsuite/std/ranges/adaptors/split.cc (test01, test04): Adjust. (test09): New test. * testsuite/std/ranges/adaptors/split_neg.cc (test01): Adjust expected error message. (test02): Likewise. Extend test. * testsuite/std/ranges/adaptors/take.cc (test06): New test. * testsuite/std/ranges/adaptors/take_while.cc (test05): New test. * testsuite/std/ranges/adaptors/transform.cc (test07, test08): New test. 2021-04-08 Jonathan Wakely * include/std/string_view: Adjust Doxygen @file comment. 2021-04-08 Jonathan Wakely * include/std/type_traits (is_scoped_enum): Constrain partial specialization to not match incomplete enum types. Use a requires-expression instead of instantiating is_convertible. (is_scoped_enum): Add as workaround for PR c++/99968. * testsuite/20_util/is_scoped_enum/value.cc: Check with incomplete types and opaque-enum-declarations. 2021-04-07 Jonathan Wakely PR libstdc++/99805 * src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call non-const member on _M_pathname, to avoid copy-on-write. * testsuite/27_io/filesystem/path/decompose/parent_path.cc: Check construction from strings that might be shared. 2021-04-06 Jonathan Wakely * include/bits/move.h (forward, move, move_if_noexcept) (addressof): Add _GLIBCXX_NODISCARD. * include/bits/ranges_cmp.h (identity::operator()): Add nodiscard attribute. * include/c_global/cstddef (to_integer): Likewise. * include/std/bit (bit_cast): Likewise. * include/std/utility (as_const, to_underlying): Likewise. 2021-04-06 Jonathan Wakely * include/bits/move.h (forward): Change static_assert message to be unambiguous about what must be true. * testsuite/20_util/forward/c_neg.cc: Adjust dg-error. * testsuite/20_util/forward/f_neg.cc: Likewise. 2021-04-06 Jonathan Wakely * include/bits/alloc_traits.h: Use markdown for code font. * include/bits/basic_string.h: Fix @param names. * include/bits/max_size_type.h: Remove period after @file. * include/bits/regex.h: Fix duplicate @retval names, and rename. * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add group open to match existing group close. * include/ext/pb_ds/priority_queue.hpp: Add blank line before group open. 2021-04-06 Jonathan Wakely * include/bits/atomic_base.h: Fix doxygen group close. * include/bits/basic_ios.h: Likewise. * include/bits/forward_list.h: Likewise. * include/bits/fs_dir.h: Likewise. * include/bits/fs_ops.h: Likewise. * include/bits/fs_path.h: Likewise. * include/bits/functional_hash.h: Likewise. * include/bits/gslice.h: Likewise. * include/bits/gslice_array.h: Likewise. * include/bits/hashtable_policy.h: Likewise. * include/bits/indirect_array.h: Likewise. * include/bits/locale_classes.h: Likewise. * include/bits/locale_facets.h: Likewise. * include/bits/locale_facets_nonio.h: Likewise. * include/bits/mask_array.h: Likewise. * include/bits/refwrap.h: Likewise. * include/bits/regex.h: Likewise. * include/bits/regex_automaton.h: Likewise. * include/bits/regex_compiler.h: Likewise. * include/bits/regex_constants.h: Likewise. * include/bits/regex_error.h: Likewise. * include/bits/regex_executor.h: Likewise. * include/bits/regex_scanner.h: Likewise. * include/bits/shared_ptr.h: Likewise. * include/bits/shared_ptr_atomic.h: Likewise. * include/bits/shared_ptr_base.h: Likewise. * include/bits/slice_array.h: Likewise. * include/bits/specfun.h: Likewise. * include/bits/std_function.h: Likewise. * include/bits/std_mutex.h: Likewise. * include/bits/stl_deque.h: Likewise. * include/bits/stl_iterator.h: Likewise. * include/bits/stl_iterator_base_types.h: Likewise. * include/bits/stl_map.h: Likewise. * include/bits/stl_multimap.h: Likewise. * include/bits/stl_multiset.h: Likewise. * include/bits/stl_numeric.h: Likewise. * include/bits/stl_pair.h: Likewise. * include/bits/stl_set.h: Likewise. * include/bits/stl_uninitialized.h: Likewise. * include/bits/stream_iterator.h: Likewise. * include/bits/streambuf_iterator.h: Likewise. * include/bits/unique_ptr.h: Likewise. * include/bits/unordered_map.h: Likewise. * include/bits/unordered_set.h: Likewise. * include/decimal/decimal: Likewise. * include/experimental/any: Likewise. * include/experimental/array: Likewise. * include/experimental/bits/fs_dir.h: Likewise. * include/experimental/bits/fs_fwd.h: Likewise. * include/experimental/bits/fs_ops.h: Likewise. * include/experimental/bits/fs_path.h: Likewise. * include/experimental/buffer: Likewise. * include/experimental/internet: Likewise. * include/experimental/optional: Likewise. * include/experimental/propagate_const: Likewise. * include/experimental/socket: Likewise. * include/ext/pb_ds/assoc_container.hpp: Likewise. * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Likewise. * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise. * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise. * include/ext/pb_ds/detail/types_traits.hpp: Likewise. * include/ext/pb_ds/exception.hpp: Likewise. * include/ext/pb_ds/priority_queue.hpp: Likewise. * include/ext/pb_ds/tag_and_trait.hpp: Likewise. * include/ext/random: Likewise. * include/std/any: Likewise. * include/std/atomic: Likewise. * include/std/bitset: Likewise. * include/std/chrono: Likewise. * include/std/complex: Likewise. * include/std/condition_variable: Likewise. * include/std/fstream: Likewise. * include/std/future: Likewise. * include/std/iostream: Likewise. * include/std/istream: Likewise. * include/std/mutex: Likewise. * include/std/numeric: Likewise. * include/std/ostream: Likewise. * include/std/ratio: Likewise. * include/std/shared_mutex: Likewise. * include/std/stdexcept: Likewise. * include/std/streambuf: Likewise. * include/std/system_error: Likewise. * include/std/thread: Likewise. * include/std/valarray: Likewise. * include/std/variant: Likewise. * include/tr1/cmath: Likewise. * include/tr1/regex: Likewise. * include/tr2/dynamic_bitset: Likewise. * libsupc++/atomic_lockfree_defines.h: Likewise. * libsupc++/exception: Likewise. * libsupc++/exception.h: Likewise. * libsupc++/exception_ptr.h: Likewise. * libsupc++/nested_exception.h: Likewise. 2021-03-31 Alexandre Oliva * testsuite/30_threads/future/members/poll.cc: Use faster after-ready call in the calibration loop. 2021-03-29 Jonathan Wakely * doc/xml/manual/status_cxx2017.xml: Adjust link for PSTL. * doc/html/manual/status.html: Regenerate. 2021-03-28 François Dumont * include/debug/forward_list (forward_list(forward_list&&, const allocator_type&)): Add noexcept qualification. * include/debug/list (list(list&&, const allocator_type&)): Likewise and add call to safe container allocator aware move constructor. * include/debug/vector (vector(vector&&, const allocator_type&)): Fix noexcept qualification. * testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc: Add allocator-extended move constructor noexceot qualification check. * testsuite/23_containers/list/cons/noexcept_move_construct.cc: Likewise. 2021-03-26 Jonathan Wakely * src/c++11/random.cc (USE_LCG): Define when a pseudo-random fallback is needed. [USE_LCG] (bad_seed, construct_lcg_at, destroy_lcg_at, __lcg): New helper functions and callback. (random_device::_M_init): Add 'prng' and 'all' enumerators. Replace switch with fallthrough with a series of 'if' statements. [USE_LCG]: Construct an lcg_type engine and use __lcg when cpuid checks fail. (random_device::_M_init_pretr1) [USE_MT19937]: Accept "prng" token. (random_device::_M_getval): Check for callback unconditionally and always pass _M_file pointer. * testsuite/26_numerics/random/random_device/85494.cc: Remove effective-target check. Use new random_device_available helper. * testsuite/26_numerics/random/random_device/94087.cc: Likewise. * testsuite/26_numerics/random/random_device/cons/default-cow.cc: Remove effective-target check. * testsuite/26_numerics/random/random_device/cons/default.cc: Likewise. * testsuite/26_numerics/random/random_device/cons/token.cc: Use new random_device_available helper. Test "prng" token. * testsuite/util/testsuite_random.h (random_device_available): New helper function. 2021-03-25 François Dumont * include/debug/string (basic_string(const basic_string&, const _Alloc&)): Define even if !_GLIBCXX_USE_CXX11_ABI. (basic_string(basic_string&&, const _Alloc&)): Likewise and add noexcept qualification. (basic_string<>::erase): Adapt to take __const_iterator. (basic_string(const _CharT*, const _Allocator&)): Remove assign call. (basic_string<>::insert(const_iterator, _InputIte, _InputIte)): Try to remove iterator debug layer even if !_GLIBCXX_USE_CXX11_ABI. [_GLIBCXX_USE_CHAR8_T] (__gnu_debug::u8string): New. (__gnu_debug::u16string, __gnu_debug::u32string): New. (std::hash<__gnu_debug::basic_string<>>): New partial specialization. (std::__is_fast_hash<__gnu_debug::basic_string<>>): Likewise. * testsuite/util/exception/safety.h (erase_base<__gnu_debug::basic_string<>>): New partial specialization. (insert_base<__gnu_debug::basic_string<>>): Likewise. * testsuite/util/testsuite_container_traits.h (traits<__gnu_debug::basic_string<>>): New partial specialization. * testsuite/21_strings/basic_string/hash/debug.cc: New test. * testsuite/21_strings/basic_string/requirements/citerators.cc: Add test on __gnu_debug::string. * testsuite/21_strings/basic_string/requirements/dr438/constructor.cc: Likewise. * testsuite/21_strings/basic_string/requirements/exception/basic.cc: Likewise. * testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc: Likewise. * testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc: Likewise. * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string/requirements/typedefs.cc: Likewise. 2021-03-25 Jakub Jelinek PR c++/99672 * testsuite/18_support/source_location/consteval.cc (main): Adjust expected column numbers. * testsuite/18_support/source_location/1.cc (main): Likewise. 2021-03-25 Jonathan Wakely * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare malloc. 2021-03-25 Jonathan Wakely * testsuite/util/exception/safety.h (setup_base::generate): Support seeding random engine. (erase_point, erase_range): Adjust range of random numbers to ensure dereferenceable iterators are used where required. (generation_prohibited::run): Do not try to erase from empty containers. * testsuite/util/testsuite_containergen.h (test_containers): Support seeding random engine. 2021-03-23 Jonathan Wakely * testsuite/std/ranges/adaptors/reverse.cc: Replace duplicated line with a check that uses the const being/end overloads. 2021-03-23 Moritz Sichert * include/std/ranges (reverse_view::begin, reverse_view::end): Qualify make_reverse_iterator calls to avoid ADL. * testsuite/std/ranges/adaptors/reverse.cc: Test that views::reverse works when make_reverse_iterator is defined in an associated namespace. 2021-03-23 Jonathan Wakely * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT): Do not define when compiling with Clang. 2021-03-22 Jonathan Wakely * include/std/string_view (basic_string_view(Range&&)): Define new constructor and deduction guide. * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc: New test. * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc: New test. 2021-03-22 Jonathan Wakely * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])): Add missing 'noexcept' as per LWG 2280. (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list)) (rend(initializer_list)): Add 'noexcept' as per LWG 3537. * testsuite/24_iterators/range_access/range_access.cc: Check for expected noexcept specifiers. Check result types of generic std::begin and std::end overloads. * testsuite/24_iterators/range_access/range_access_cpp14.cc: Check for expected noexcept specifiers. * testsuite/24_iterators/range_access/range_access_cpp17.cc: Likewise. 2021-03-19 Jonathan Wakely * include/std/type_traits (is_scoped_enum): Define. * include/std/version (__cpp_lib_is_scoped_enum): Define. * testsuite/20_util/is_scoped_enum/value.cc: New test. * testsuite/20_util/is_scoped_enum/version.cc: New test. 2021-03-16 Jonathan Wakely PR libstdc++/99341 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove std::once_flag symbols. * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Likewise. * config/abi/pre/gnu.ver: Likewise. * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] (struct __once_flag_compat): Remove. (_ZNSt9once_flag11_M_activateEv): Remove. (_ZNSt9once_flag9_M_finishEb): Remove. 2021-03-16 Jonathan Wakely PR libstdc++/99341 * include/std/mutex [_GLIBCXX_HAVE_LINUX_FUTEX] (once_flag): Revert to pthread_once_t implementation. [_GLIBCXX_HAVE_LINUX_FUTEX] (call_once): Likewise. * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] (struct __once_flag_compat): New type matching the reverted implementation of once_flag using futexes. (once_flag::_M_activate): Remove, replace with ... (_ZNSt9once_flag11_M_activateEv): ... alias symbol. (once_flag::_M_finish): Remove, replace with ... (_ZNSt9once_flag9_M_finishEb): ... alias symbol. * testsuite/30_threads/call_once/66146.cc: Removed. 2021-03-15 Iain Sandoe * testsuite/17_intro/names.cc: Exclude j from the list of test symbols for Darwin. 2021-03-15 Iain Sandoe * config/os/bsd/darwin/ppc-extra.ver: Add matching for to_chars and from_chars for long double. 2021-03-15 Patrick Palka * include/bits/max_size_type.h (__max_size_type::operator _Tp): Fix formatting. (__max_size_type::operator++): Define. (__max_size_type::operator--): Likewise. (__max_size_type::operator<=>): Conditionally define (in place of the other comparison operators). (__max_diff_type::operator _Tp): Fix formatting. (__max_diff_type::operator++): Define. (__max_diff_type::operator--): Likewise. (__max_diff_type::operator<=>): Conditionally define (in place of the other comparison operators). * testsuite/std/ranges/iota/max_size_type.cc (test01): Test these operator overloads. 2021-03-15 Caroline Tice PR libstdc++/99172 * src/Makefile.am (AM_CXXFLAGS_PRE, AM_CXXFLAGS): Add AM_CXXFLAGS_PRE with the old definition of AM_CXXFLAGS; make AM_CXXFLAGS to be AM_CXXFLAGS_PRE with '-fvtable-verify=std' filtered out. * src/Makefile.in: Regenerate. 2021-03-11 Patrick Palka * src/c++17/floating_to_chars.cc: Simplify the file as if __SIZEOF_INT128__ is always defined. [!defined __SIZEOF_INT128__]: Include "uint128_t.h". Define a base-10 to_chars overload for the uint128_t class type. * src/c++17/uint128_t.h: New file. * testsuite/20_util/to_chars/long_double.cc: No longer expect an execution FAIL on targets that have a large long double type but lack __int128. 2021-03-11 Patrick Palka * src/c++17/ryu/LOCAL_PATCHES: Update. * src/c++17/ryu/d2s_intrinsics.h: Don't define uint128_t. * src/c++17/ryu/generic_128.h: Likewise. * src/c++17/ryu/ryu_generic_128.h (struct floating_decimal_128): Use uint128_t instead of __uint128_t. (generic_binary_to_decimal): Likewise. 2021-03-11 Patrick Palka * src/c++17/ryu/LOCAL_PATCHES: New file. 2021-03-11 Patrick Palka * src/c++17/floating_to_chars.cc (uint128_t): New conditionally defined alias of unsigned __int128. (floating_type_traits_binary128::mantissa_t): Use uint128_t instead of unsigned __int128. (floating_type_traits::mantissa_t) [LONG_DOUBLE_KIND == LDK_IBM128]: Likewise. (get_ieee_repr): Likewise. Make casts from uint_t to mantissa_t and uint32_t explicit. Simplify the extraction of mantissa, exponent and sign bit. 2021-03-11 Jonathan Wakely * include/std/barrier (barrier::arrival_token): New move-only class that encapsulates the underlying token value. 2021-03-11 Jonathan Wakely * python/libstdcxx/v6/printers.py (find_type): Use tag attribute instead of unqualified() method. 2021-03-11 Jonathan Wakely PR libstdc++/99537 * include/std/stop_token (_Stop_state_t::_M_release_ownership): Use acq_rel memory ordering. 2021-03-11 Jonathan Wakely PR libstdc++/99533 * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new helper function to check for permission denied errors. * src/filesystem/dir.cc (recursive_directory_iterator): Likewise. * src/filesystem/dir-common.h (is_permission_denied_error): New helper function. 2021-03-11 Jonathan Wakely PR libstdc++/99536 * include/bits/random.h (normal_distribution): Use default-initializer for _M_saved and _M_saved_available. 2021-03-10 John David Anglin * testsuite/29_atomics/atomic/wait_notify/bool.cc: Add options to link with libatomic. * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise. * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise. * testsuite/30_threads/barrier/arrive.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise. * testsuite/30_threads/barrier/completion.cc: Likewise. * testsuite/30_threads/latch/3.cc: Likewise. * testsuite/30_threads/semaphore/try_acquire.cc: Likewise. * testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise. * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise. 2021-03-10 Jonathan Wakely PR libstdc++/99413 * include/bits/align.h: Include debug/assertions.h. * include/bits/codecvt.h: Include bits/c++config.h. * include/bits/enable_special_members.h: Likewise. * include/bits/erase_if.h: Likewise. * include/bits/functional_hash.h: Include . * include/bits/invoke.h: Include bits/move.h. * include/bits/ostream_insert.h: Include bits/exception_defines.h. * include/bits/parse_numbers.h: Include . * include/bits/predefined_ops.h: Include bits/c++config.h. * include/bits/range_access.h: Include bits/stl_iterator.h. * include/bits/stl_bvector.h: Do not include bits/stl_vector.h. * include/bits/stl_iterator.h: Include bits/stl_iterator_base_types.h. * include/bits/stl_uninitialized.h: Include bits/stl_algobase.h. * include/bits/uniform_int_dist.h: Include bits/concept_check.h. * include/bits/unique_lock.h: Include bits/std_mutex.h. * include/debug/assertions.h: Include bits/c++config.h. 2021-03-10 Jonathan Wakely * include/bits/ranges_cmp.h (__eq_builtin_ptr_cmp): Remove. (ranges::equal_to, ranges::not_equal_to): Do not constrain with __eq_builtin_ptr_cmp. (ranges::less, ranges::greater, ranges::less_equal) (ranges::greater_equal): Do not constrain with __less_builtin_ptr_cmp. * libsupc++/compare (compare_three_way): Do not constrain with __3way_builtin_ptr_cmp. * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to... * testsuite/18_support/comparisons/object/lwg3530.cc: ...here. * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test. 2021-03-10 Jonathan Wakely * testsuite/std/time/syn_c++20.cc: Enable synopsis checks for C++20 calendar types. 2021-03-06 Jakub Jelinek PR libstdc++/99396 * include/std/bit (__rotl, __rotr): Add optimized variants for power of two _Nd which the compiler can pattern match the rotates. 2021-03-04 Jonathan Wakely PR libstdc++/99382 * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc: Make storage larger than required. Verify no write to the last element. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: Likewise. 2021-03-03 Rainer Orth * 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. 2021-03-03 Rainer Orth * include/experimental/bits/simd.h: Replace reserved _X, _B by _Xp, _Bp. * include/experimental/bits/simd_builtin.h: Likewise. * include/experimental/bits/simd_x86.h: Likewise. 2021-02-27 Jonathan Wakely PR libstdc++/99301 * include/std/chrono (year_month_day::_M_days_since_epoch()): Convert chrono::month and chrono::day to unsigned before converting to uint32_t. 2021-02-25 Jonathan Wakely * include/std/chrono (year_month_day::_S_from_days): Perform all calculations with type uint32_t. 2021-02-25 Jonathan Wakely * doc/xml/manual/abi.xml: Document versioning for GCC 11. * doc/html/manual/abi.html: Regenerate. 2021-02-25 Jonathan Wakely PR libstdc++/99270 * testsuite/27_io/headers/cstdio/types_std.cc: Use pointer to FILE instead of FILE. 2021-02-25 Andreas Schwab * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update. 2021-02-25 Jonathan Wakely PR libstdc++/99265 * include/std/chrono (year_month_day::_S_from_days): Cast long to int explicitly. 2021-02-25 Jonathan Wakely * include/std/utility (to_underlying): Define. * include/std/version (__cpp_lib_to_underlying): Define. * testsuite/20_util/to_underlying/1.cc: New test. * testsuite/20_util/to_underlying/version.cc: New test. 2021-02-24 Jonathan Wakely PR libstdc++/99261 * src/c++17/floating_to_chars.cc (sprintf_ld): Add extra args before value to be printed. 2021-02-24 Patrick Palka * src/c++17/floating_to_chars.cc (__floating_to_chars_precision): Relax the condition that guards the printf code path to accept F128_type as well as long double. 2021-02-24 Cassio Neri * include/std/chrono (year_month_day_last:day): New implementation. 2021-02-24 Cassio Neri * include/std/chrono (year::is_leap): New implementation. * testsuite/std/time/year/2.cc: New test. 2021-02-24 Cassio Neri * include/std/chrono (year_month_day::_M_days_since_epoch): New implementation. * testsuite/std/time/year_month_day/4.cc: New test. 2021-02-24 Cassio Neri * include/std/chrono (year_month_day::_S_from_days): New implementation. * testsuite/std/time/year_month_day/3.cc: New test. 2021-02-24 Patrick Palka PR libstdc++/98384 * testsuite/20_util/to_chars/long_double.cc: Include . (test01): Simplify verifying the nearby values by using a 2-iteration loop and a dedicated output buffer to check that the nearby values are different. Factor out the printf-based verification into a local function, and check that the leading hex digits agree before comparing to the output of printf. Also verify the output by round-tripping it through from_chars. 2021-02-24 Jonathan Wakely PR libstdc++/98389 * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Do not match to_chars symbols for long double arguments mangled as 'g'. * config/os/gnu-linux/ldbl-extra.ver: Likewise. * config/os/gnu-linux/ldbl-ieee128-extra.ver: Likewise. * src/c++17/Makefile.am [GLIBCXX_LDBL_ALT128_COMPAT_TRUE]: Use -mabi=ibmlongdouble for floating_to_chars.cc. * src/c++17/Makefile.in: Regenerate. * src/c++17/floating_to_chars.cc (floating_type_traits_binary128): New type defining type traits of IEEE binary128 format. (floating_type_traits<__float128>): Define specialization. (floating_type_traits): Define in terms of floating_type_traits_binary128 when appropriate. (floating_to_shortest_scientific): Handle __float128. (sprintf_ld): New function template for printing a long double or __ieee128 value using sprintf. (__floating_to_chars_shortest, __floating_to_chars_precision): Use sprintf_ld. (to_chars): Define overloads for __float128. 2021-02-24 Jonathan Wakely * testsuite/17_intro/names.cc: Undefine 'u' on powerpc*-linux*. 2021-02-23 Martin Sebor PR c++/99074 * libsupc++/dyncast.cc (__dynamic_cast): Return null when first argument is null. 2021-02-23 Jakub Jelinek PR libstdc++/99181 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New test. 2021-02-23 Jakub Jelinek PR libstdc++/99181 * include/bits/char_traits.h (char_traits::compare): For constexpr evaluation don't call __gnu_cxx::char_traits::compare but do the comparison loop directly. 2021-02-23 Jakub Jelinek PR libstdc++/97549 * include/pstl/parallel_backend_serial.h: Remove __pstl::__par_backend. 2021-02-23 Patrick Palka PR libstdc++/98384 * src/c++17/floating_to_chars.cc (get_ieee_repr): Extract the high- and low-order parts from an IBM long double value in an endian-agnostic way. 2021-02-19 Jonathan Wakely * include/bits/atomic_wait.h (__thread_relax()): Call __thread_yield() not __gthread_yield(). 2021-02-15 Jonathan Wakely * include/bits/atomic_wait.h (__thread_yield()): Check _GLIBCXX_HAS_GTHREADS before using __gthread_yield. (__thread_relax()): Use __thread_yield() instead of repeating the preprocessor checks for __gthread_yield. 2021-02-15 Jonathan Wakely * include/std/mutex (once_flag::_M_activate()): Add explicit return statement for passive case. (once_flag::_M_finish(bool)): Use reserved name for parameter. 2021-02-14 Jonathan Wakely PR libstdc++/99096 * testsuite/util/testsuite_fs.h: Always include . 2021-02-12 Jonathan Wakely PR libstdc++/88881 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround. 2021-02-12 Jonathan Wakely * doc/xml/manual/status_cxx2014.xml: Document implementation specific properties of std::experimental::filesystem::rename. * doc/xml/manual/status_cxx2017.xml: Document implementation specific properties of std::filesystem::rename. * doc/html/*: Regenerate. * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour for directories on Windows. * src/filesystem/ops-common.h (__gnu_posix::rename): Use MoveFileExW on Windows. * testsuite/27_io/filesystem/operations/rename.cc: New test. * testsuite/experimental/filesystem/operations/rename.cc: New test. 2021-02-12 Jonathan Wakely * testsuite/util/testsuite_fs.h (nonexistent_path): Add random number to the path. 2021-02-12 Jonathan Wakely * include/experimental/internet (address_v6::to_string): Include scope ID in string. * testsuite/experimental/net/internet/address/v6/members.cc: Test to_string() results. 2021-02-12 Jonathan Wakely * include/experimental/internet (address_v6::any): Avoid using memcpy in constexpr function. (address_v6::loopback): Likewise. (make_address_v6): Fix missing return statements on error paths. * include/experimental/io_context: Avoid -Wdangling-else warning. * testsuite/experimental/net/internet/address/v4/members.cc: Remove unused variables. * testsuite/experimental/net/internet/address/v6/members.cc: New test. 2021-02-12 Jonathan Wakely * include/bits/shared_ptr_base.h (__shared_ptr::_M_get_deleter): Add unused attribute to parameter. * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Likewise. 2021-02-12 Jonathan Wakely * testsuite/27_io/basic_ostream/emit/1.cc: Expect test to fail if -fno-rtti is used. * testsuite/30_threads/async/forced_unwind.cc: Expect test to abort if -fno-rtti is used. 2021-02-12 Jonathan Wakely * testsuite/util/testsuite_allocator.h (memory_resource): Remove requirement for RTTI and exceptions to be enabled. 2021-02-12 Jonathan Wakely * testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc: Use static_cast when RTTI is disabled. * testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc: Likewise. * testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc: Likewise. * testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc: Likewise. * testsuite/27_io/basic_stringstream/str/char/2.cc: Likewise. * testsuite/27_io/basic_stringstream/str/wchar_t/2.cc: Likewise. 2021-02-12 Jonathan Wakely * include/std/ostream (__syncbuf_base::_S_get): Mark parameter as unused and only use dynamic_cast when RTTI is enabled. 2021-02-12 Jonathan Wakely PR libstdc++/99077 * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)): Change int parameter to error_code, to match std::ios_failure. (__throw_ios_failure(const char*, int)): Construct error_code from int parameter. 2021-02-11 Jonathan Wakely * libsupc++/eh_ptr.cc (_GLIBCXX_EH_PTR_RELOPS_COMPAT): Define new macro. * libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Check new macro instead of _GLIBCXX_EH_PTR_COMPAT. (operator==): Likewise. 2021-02-11 Jonathan Wakely PR libstdc++/99058 * doc/xml/manual/status_cxx2011.xml: Document when support became stable. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Likewise. * doc/html/manual/status.html: Regenerate. 2021-02-10 Jonathan Wakely PR libstdc++/88881 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround. 2021-02-10 Jonathan Wakely * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent) (fs::remove): Use std::system_category() for error codes from GetLastError(). * src/filesystem/ops.cc (fs::create_hard_link, fs::remove): Likewise. 2021-02-10 Jonathan Wakely * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo in __MINGW32__ macro name. * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. * testsuite/27_io/filesystem/path/generation/proximate.cc: Likewise. * testsuite/27_io/filesystem/path/generation/relative.cc: Likewise. * testsuite/util/testsuite_fs.h: Likewise. 2021-02-09 François Dumont * include/bits/stl_tree.h (__has_is_transparent, __has_is_transparent_t): Move... * include/bits/stl_function.h: ...here. * include/bits/hashtable_policy.h (_Hash_code_base<>::_M_hash_code_tr): New.. (_Hashtable_base<>::_M_equals_tr): New. * include/bits/hashtable.h (_Hashtable<>::_M_find_tr, _Hashtable<>::_M_count_tr, _Hashtable<>::_M_equal_range_tr): New member function templates to perform heterogeneous lookup. (_Hashtable<>::_M_find_before_node_tr): New. (_Hashtable<>::_M_find_node_tr): New. * include/bits/unordered_map.h (unordered_map::find<>, unordered_map::count<>, unordered_map::contains<>, unordered_map::equal_range<>): New member function templates to perform heterogeneous lookup. (unordered_multimap::find<>, unordered_multimap::count<>, unordered_multimap::contains<>, unordered_multimap::equal_range<>): Likewise. * include/bits/unordered_set.h (unordered_set::find<>, unordered_set::count<>, unordered_set::contains<>, unordered_set::equal_range<>): Likewise. (unordered_multiset::find<>, unordered_multiset::count<>, unordered_multiset::contains<>, unordered_multiset::equal_range<>): Likewise. * include/debug/unordered_map (unordered_map::find<>, unordered_map::equal_range<>): Likewise. (unordered_multimap::find<>, unordered_multimap::equal_range<>): Likewise. * include/debug/unordered_set (unordered_set::find<>, unordered_set::equal_range<>): Likewise. (unordered_multiset::find<>, unordered_multiset::equal_range<>): Likewise. * testsuite/23_containers/unordered_map/operations/1.cc: New test. * testsuite/23_containers/unordered_multimap/operations/1.cc: New test. * testsuite/23_containers/unordered_multiset/operations/1.cc: New test. * testsuite/23_containers/unordered_set/operations/1.cc: New test. 2021-02-09 François Dumont * include/bits/stl_deque.h (std::operator-(deque::iterator, deque::iterator)): Replace if/then with a null pointer test. 2021-02-09 Jonathan Wakely * testsuite/27_io/filesystem/operations/remove_all.cc: Remove test directory after making it writable again. * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. 2021-02-09 Jonathan Wakely PR libstdc++/99021 * include/std/coroutine (coroutine_handle

::from_address): Add noexcept. 2021-02-09 Vladimir Vishnevsky * include/ext/stdio_sync_filebuf.h: Remove unused . * src/c++17/fs_ops.cc (fs::permissions): Qualify mode_t. 2021-02-09 Jakub Jelinek PR middle-end/98465 * include/bits/basic_string.tcc (basic_string::_M_replace): When __s points to the characters moved by earlier _S_move, compute the source address using expression based on the __p pointer rather than __s pointer. 2021-02-03 Jonathan Wakely * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Add comparison with same category and different values. * testsuite/19_diagnostics/error_code/operators/less.cc: Likewise. Fix comparison involving different categories. * testsuite/19_diagnostics/error_code/operators/three_way.cc: Likewise. * testsuite/19_diagnostics/error_condition/operators/less.cc: Add comment. * testsuite/19_diagnostics/error_condition/operators/three_way.cc: Likewise. 2021-02-03 yaozhongxiao * include/experimental/bits/simd_neon.h: Replace repeated vpadd calls with a single vaddv for aarch64. 2021-02-03 Matthias Kretz * testsuite/Makefile.am: Warn about the workaround. Add -fno-tree-vrp to CXXFLAGS passed to the check_simd script. Improve initial user feedback from make check-simd. * testsuite/Makefile.in: Regenerated. 2021-02-03 Matthias Kretz * include/experimental/bits/simd.h: Add __detail::_Minimum and __detail::_Maximum to use them as _BinaryOperation to _S_reduce. Add hmin and hmax overloads for simd and const_where_expression. * include/experimental/bits/simd_scalar.h (_SimdImplScalar::_S_reduce): Make unused _BinaryOperation parameter const-ref to allow calling _S_reduce with an rvalue. * testsuite/experimental/simd/tests/reductions.cc: Add tests for hmin and hmax. Since the compiler statically determined that all tests pass, repeat the test after a call to make_value_unknown. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/tests/bits/verify.h (verify): Add instruction pointer data member. Ensure that the `if (m_failed)` branch is always inlined into the calling code. The body of the conditional can still be a function call. Move the get_ip call into the verify ctor to simplify the ctor calls. (COMPARE): Don't mention the use of all_of for reduction of a simd_mask. It only distracts from the real issue. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/driver.sh: Abstract reading test options into read_src_option function. Read skip, only, expensive, and xfail via read_src_option. Add timeout and timeout-factor options and adjust timeout variable accordingly. * testsuite/experimental/simd/tests/loadstore.cc: Set timeout-factor 2. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/driver.sh: When handling the pipe to log (and on verbose to stdout) count the lines. If it exceeds 1000 log the issue and exit 125, which is then handled as a failure. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/tests/hypot3_fma.cc: Add skip: markup for long double on powerpc64*. 2021-02-03 Matthias Kretz * include/experimental/bits/simd.h: Add __have_power10vec conditional on _ARCH_PWR10. * include/experimental/bits/simd_builtin.h: Forward declare _MaskImplPpc and use it as _MaskImpl when __ALTIVEC__ is defined. (_MaskImplBuiltin::_S_some_of): Call _S_popcount from the _SuperImpl for optimizations and correctness. * include/experimental/bits/simd_ppc.h: Add _MaskImplPpc. (_MaskImplPpc::_S_popcount): Implement via vec_cntm for POWER10. Otherwise, for >=int use -vec_sums divided by a sizeof factor. For * testsuite/experimental/simd/driver.sh: Remove executable on SIGINT. Process compiler and test executable output: In verbose mode print messages immediately, limited to 1000 lines and breaking long lines to below $COLUMNS (or 1024 if not set). Communicating the exit status of the compiler / test with the necessary pipe is done via a message through stdout/-in. 2021-02-03 Matthias Kretz * testsuite/Makefile.am: Ensure .simd.summary is empty before collecting a new summary. * testsuite/Makefile.in: Regenerate. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/generate_makefile.sh: Use different variables internally than documented for user overrides. This makes internal append/prepend work as intended. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/driver.sh (verify_test): Print test output on run xfail. Do not repeat lines from the log that were already printed on stdout. (test_selector): Make the compiler flags pattern usable as a substring selector. (toplevel): Trap on SIGINT and remove the log and sum files. Call timout with --foreground to quickly terminate on SIGINT. * testsuite/experimental/simd/generate_makefile.sh: Simplify run targets via target patterns. Default DRIVEROPTS to -v for run targets. Remove log and sum files after completion of the run target (so that it's always recompiled). Place help text into text file for reasonable 'make help' performance. 2021-02-03 Matthias Kretz * include/experimental/bits/simd.h: Remove unnecessary static assertion. Allow sizeof(8) integer __intrinsic_type to enable the necessary mask type. 2021-02-03 Matthias Kretz * include/experimental/bits/simd.h: Let __intrinsic_type be valid if sizeof(long double) == sizeof(double) and use a __vector double as member type. 2021-02-03 Matthias Kretz * include/experimental/bits/simd.h (__is_intrinsic_type): New internal type trait. Alias for __is_vector_type on x86. (_VectorTraitsImpl): Enable for __intrinsic_type in addition for __vector_type. (__intrin_bitcast): Allow casting to & from vector & intrinsic types. (__intrinsic_type): Explicitly specialize for NEON intrinsic vector types. 2021-02-03 Matthias Kretz * testsuite/experimental/simd/driver.sh: Implement skip, only, expensive, and xfail markers. They can select on type, ABI tag subset number, target-triplet, and compiler flags. * testsuite/experimental/simd/generate_makefile.sh: The summary now includes lines for unexpected passes and expected failures. If the skip or only markers are only conditional on the type, do not generate rules for those types. * testsuite/experimental/simd/tests/abs.cc: Mark test expensive for ABI tag subsets 1-9. * testsuite/experimental/simd/tests/algorithms.cc: Ditto. * testsuite/experimental/simd/tests/broadcast.cc: Ditto. * testsuite/experimental/simd/tests/casts.cc: Ditto. * testsuite/experimental/simd/tests/generator.cc: Ditto. * testsuite/experimental/simd/tests/integer_operators.cc: Ditto. * testsuite/experimental/simd/tests/loadstore.cc: Ditto. * testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto. * testsuite/experimental/simd/tests/mask_conversions.cc: Ditto. * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto. * testsuite/experimental/simd/tests/mask_loadstore.cc: Ditto. * testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto. * testsuite/experimental/simd/tests/mask_operators.cc: Ditto. * testsuite/experimental/simd/tests/mask_reductions.cc: Ditto. * testsuite/experimental/simd/tests/operator_cvt.cc: Ditto. * testsuite/experimental/simd/tests/operators.cc: Ditto. * testsuite/experimental/simd/tests/reductions.cc: Ditto. * testsuite/experimental/simd/tests/simd.cc: Ditto. * testsuite/experimental/simd/tests/split_concat.cc: Ditto. * testsuite/experimental/simd/tests/splits.cc: Ditto. * testsuite/experimental/simd/tests/where.cc: Ditto. * testsuite/experimental/simd/tests/fpclassify.cc: Ditto. In addition replace "test only floattypes" marker by unconditional "float|double|ldouble" only marker. * testsuite/experimental/simd/tests/frexp.cc: Ditto. * testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto. * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc: Ditto. * testsuite/experimental/simd/tests/logarithm.cc: Ditto. * testsuite/experimental/simd/tests/math_1arg.cc: Ditto. * testsuite/experimental/simd/tests/math_2arg.cc: Ditto. * testsuite/experimental/simd/tests/remqo.cc: Ditto. * testsuite/experimental/simd/tests/trigonometric.cc: Ditto. * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto. * testsuite/experimental/simd/tests/sincos.cc: Ditto. In addition, xfail on run because the reference data is missing. 2021-02-02 Jonathan Wakely * doc/xml/manual/status_cxx2011.xml: Remove stray table cell. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Likewise. * doc/html/manual/status.html: Regenerate. 2021-02-01 François Dumont PR libstdc++/70303 * include/bits/stl_deque.h (std::deque<>::operator-(iterator, iterator)): Return 0 if both iterators are value-initialized. * testsuite/23_containers/deque/70303.cc: New test. * testsuite/23_containers/vector/70303.cc: New test. 2021-02-01 Jonathan Wakely * doc/xml/manual/status_cxx2011.xml: Update std::call_once status. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Likewise. Update std::from_chars and std::to_chars status. Fix formatting. * doc/html/manual/status.html: Regenerate. 2021-01-28 Jonathan Wakely * include/experimental/bits/numeric_traits.h: Update copyright dates. * include/experimental/bits/simd.h: Likewise. * include/experimental/bits/simd_builtin.h: Likewise. * include/experimental/bits/simd_converter.h: Likewise. * include/experimental/bits/simd_detail.h: Likewise. * include/experimental/bits/simd_fixed_size.h: Likewise. * include/experimental/bits/simd_math.h: Likewise. * include/experimental/bits/simd_neon.h: Likewise. * include/experimental/bits/simd_ppc.h: Likewise. * include/experimental/bits/simd_scalar.h: Likewise. * include/experimental/bits/simd_x86.h: Likewise. * include/experimental/bits/simd_x86_conversions.h: Likewise. * include/experimental/simd: Likewise. * testsuite/experimental/simd/*: Likewise. 2021-01-27 Jonathan Wakely * doc/xml/manual/status_cxx2017.xml: Replace invalid entity. * doc/html/*: Regenerate. 2021-01-27 Jonathan Wakely * testsuite/experimental/simd/generate_makefile.sh: Use printf instead of echo when printing escape characters. 2021-01-27 Matthias Kretz * scripts/check_simd: New file. This script is called from the the check-simd target. It determines a set of compiler flags and simulator setups for calling generate_makefile.sh and passes the information back to the check-simd target, which recurses to the generated Makefiles. * scripts/create_testsuite_files: Remove files below simd/tests/ from testsuite_files and place them in testsuite_files_simd. * testsuite/Makefile.am: Add testsuite_files_simd. Add check-simd target. * testsuite/Makefile.in: Regenerate. * testsuite/experimental/simd/driver.sh: New file. This script compiles and runs a given simd test, logging its output and status. It uses the timeout command to implement compile and test timeouts. * testsuite/experimental/simd/generate_makefile.sh: New file. This script generates a Makefile which uses driver.sh to compile and run the tests and collect the logs into a single log file. * testsuite/experimental/simd/tests/abs.cc: New file. Tests abs(simd). * testsuite/experimental/simd/tests/algorithms.cc: New file. Tests min/max(simd, simd). * testsuite/experimental/simd/tests/bits/conversions.h: New file. Contains functions to support tests involving conversions. * testsuite/experimental/simd/tests/bits/make_vec.h: New file. Support functions make_mask and make_vec. * testsuite/experimental/simd/tests/bits/mathreference.h: New file. Support functions to supply precomputed math function reference data. * testsuite/experimental/simd/tests/bits/metahelpers.h: New file. Support code for SFINAE testing. * testsuite/experimental/simd/tests/bits/simd_view.h: New file. * testsuite/experimental/simd/tests/bits/test_values.h: New file. Test functions to easily drive a test with simd objects initialized from a given list of values and a range of random values. * testsuite/experimental/simd/tests/bits/ulp.h: New file. Support code to determine the ULP distance of simd objects. * testsuite/experimental/simd/tests/bits/verify.h: New file. Test framework for COMPARE'ing simd objects and instantiating the test templates with value_type and ABI tag. * testsuite/experimental/simd/tests/broadcast.cc: New file. Test simd broadcasts. * testsuite/experimental/simd/tests/casts.cc: New file. Test simd casts. * testsuite/experimental/simd/tests/fpclassify.cc: New file. Test floating-point classification functions. * testsuite/experimental/simd/tests/frexp.cc: New file. Test frexp(simd). * testsuite/experimental/simd/tests/generator.cc: New file. Test simd generator constructor. * testsuite/experimental/simd/tests/hypot3_fma.cc: New file. Test 3-arg hypot(simd,simd,simd) and fma(simd,simd,sim). * testsuite/experimental/simd/tests/integer_operators.cc: New file. Test integer operators. * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc: New file. Test ldexp(simd), scalbn(simd), scalbln(simd), and modf(simd). * testsuite/experimental/simd/tests/loadstore.cc: New file. Test (converting) simd loads and stores. * testsuite/experimental/simd/tests/logarithm.cc: New file. Test log*(simd). * testsuite/experimental/simd/tests/mask_broadcast.cc: New file. Test simd_mask broadcasts. * testsuite/experimental/simd/tests/mask_conversions.cc: New file. Test simd_mask conversions. * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: New file. Test simd_mask implicit conversions. * testsuite/experimental/simd/tests/mask_loadstore.cc: New file. Test simd_mask loads and stores. * testsuite/experimental/simd/tests/mask_operator_cvt.cc: New file. Test simd_mask operators convert as specified. * testsuite/experimental/simd/tests/mask_operators.cc: New file. Test simd_mask compares, subscripts, and negation. * testsuite/experimental/simd/tests/mask_reductions.cc: New file. Test simd_mask reductions. * testsuite/experimental/simd/tests/math_1arg.cc: New file. Test 1-arg math functions on simd. * testsuite/experimental/simd/tests/math_2arg.cc: New file. Test 2-arg math functions on simd. * testsuite/experimental/simd/tests/operator_cvt.cc: New file. Test implicit conversions on simd binary operators behave as specified. * testsuite/experimental/simd/tests/operators.cc: New file. Test simd compares, subscripts, not, unary minus, plus, minus, multiplies, divides, increment, and decrement. * testsuite/experimental/simd/tests/reductions.cc: New file. Test reduce(simd). * testsuite/experimental/simd/tests/remqo.cc: New file. Test remqo(simd). * testsuite/experimental/simd/tests/simd.cc: New file. Basic sanity checks of simd types. * testsuite/experimental/simd/tests/sincos.cc: New file. Test sin(simd) and cos(simd). * testsuite/experimental/simd/tests/split_concat.cc: New file. Test split(simd) and concat(simd, simd). * testsuite/experimental/simd/tests/splits.cc: New file. Test split(simd_mask). * testsuite/experimental/simd/tests/trigonometric.cc: New file. Test remaining trigonometric functions on simd. * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: New file. Test trunc(simd), ceil(simd), and floor(simd). * testsuite/experimental/simd/tests/where.cc: New file. Test masked operations using where. 2021-01-27 Matthias Kretz * doc/xml/manual/status_cxx2017.xml: Add implementation status of the Parallelism TS 2. Document implementation-defined types and behavior. * include/Makefile.am: Add new headers. * include/Makefile.in: Regenerate. * include/experimental/simd: New file. New header for Parallelism TS 2. * include/experimental/bits/numeric_traits.h: New file. Implementation of P1841R1 using internal naming. Addition of missing IEC559 functionality query. * include/experimental/bits/simd.h: New file. Definition of the public simd interfaces and general implementation helpers. * include/experimental/bits/simd_builtin.h: New file. Implementation of the _VecBuiltin simd_abi. * include/experimental/bits/simd_converter.h: New file. Generic simd conversions. * include/experimental/bits/simd_detail.h: New file. Internal macros for the simd implementation. * include/experimental/bits/simd_fixed_size.h: New file. Simd fixed_size ABI specific implementations. * include/experimental/bits/simd_math.h: New file. Math overloads for simd. * include/experimental/bits/simd_neon.h: New file. Simd NEON specific implementations. * include/experimental/bits/simd_ppc.h: New file. Implement bit shifts to avoid invalid results for integral types smaller than int. * include/experimental/bits/simd_scalar.h: New file. Simd scalar ABI specific implementations. * include/experimental/bits/simd_x86.h: New file. Simd x86 specific implementations. * include/experimental/bits/simd_x86_conversions.h: New file. x86 specific conversion optimizations. The conversion patterns work around missing conversion patterns in the compiler and should be removed as soon as PR85048 is resolved. * testsuite/experimental/simd/standard_abi_usable.cc: New file. Test that all (not all fixed_size, though) standard simd and simd_mask types are usable. * testsuite/experimental/simd/standard_abi_usable_2.cc: New file. As above but with -ffast-math. * testsuite/libstdc++-dg/conformance.exp: Don't build simd tests from the standard test loop. Instead use check_vect_support_and_set_flags to build simd tests with the relevant machine flags. 2021-01-27 Jonathan Wakely PR libstdc++/66414 * include/bits/string_view.tcc (basic_string_view::find(const CharT*, size_type, size_type)): Optimize. 2021-01-27 Paul Fee * include/bits/basic_string.h (basic_string::contains): New member functions. * include/std/string_view (basic_string_view::contains): Likewise. * include/std/version (__cpp_lib_string_contains): Define. * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc: Remove trailing whitespace. * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string/operations/contains/char/1.cc: New test. * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc: New test. * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc: New test. * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc: New test. * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc: New test. 2021-01-21 Jonathan Wakely * src/c++17/Makefile.in: Regenerate. 2021-01-20 David Edelsohn * config/os/aix/ctype_inline.h (bool ctype:: is): Cast _OBJ_DATA subscript to unsigned char. Add _THREAD_SAFE access to __lc_type. (const char* ctype:: is): Same. 2021-01-18 Jonathan Wakely PR libstdc++/98725 * testsuite/20_util/unique_ptr/io/lwg2948.cc: Do not try to write to a wide character stream if wide character support is disabled in the library. 2021-01-18 Jonathan Wakely * testsuite/27_io/basic_stringstream/cons/char/1.cc: Use stringbuf not wstringbuf. 2021-01-18 Jakub Jelinek PR debug/98708 * src/c++11/Makefile.am (cxx11-ios_failure-lt.s, cxx11-ios_failure.s): Compile with -gno-as-loc-support. * src/c++11/Makefile.in: Regenerated. 2021-01-16 H.J. Lu * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc: Add -fcf-protection=none to -march=i486. 2021-01-14 François Dumont * testsuite/23_containers/deque/debug/98466.cc: Make it pre-C++11 compliant. 2021-01-14 Alexandre Oliva * testsuite/30_threads/future/members/poll.cc: Calibrate iteration count. 2021-01-14 François Dumont PR libstdc++/98466 * include/bits/hashtable_policy.h (_Node_iterator_base()): Set _M_cur to nullptr. (_Node_iterator()): Make default. (_Node_const_iterator()): Make default. * include/debug/macros.h (__glibcxx_check_erae_range_after): Add _M_singular iterator checks. * include/debug/safe_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator are value initialized. * include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Likewise. * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): Add _M_singular checks on input iterators. * src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare): Remove _M_singular checks. * testsuite/23_containers/deque/debug/98466.cc: New test. * testsuite/23_containers/unordered_map/debug/98466.cc: New test. 2021-01-14 Jonathan Wakely PR libstdc++/98471 * include/bits/fs_path.h (__throw_conversion_error): New function to throw or abort on character conversion errors. (__wstr_from_utf8): Move definition after filesystem_error has been defined. Use __throw_conversion_error. (path::_S_convert<_EcharT>): Use __throw_conversion_error. (path::_S_str_convert<_CharT, _Traits, _Allocator>): Likewise. (path::u8string): Likewise. 2021-01-14 Jonathan Wakely * include/std/barrier: Update copyright years. Fix whitespace. * include/std/version: Fix whitespace. * testsuite/30_threads/barrier/1.cc: Update copyright years. * testsuite/30_threads/barrier/2.cc: Likewise. * testsuite/30_threads/barrier/arrive.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise. * testsuite/30_threads/barrier/completion.cc: Likewise. 2021-01-13 Jonathan Wakely * doc/doxygen/user.cfg.in (INPUT): Remove include/debug/array. 2021-01-10 David Edelsohn PR libstdc++/98613 * testsuite/ext/vstring/cons/moveable.cc: Suppress false positive warning. * testsuite/ext/vstring/modifiers/assign/move_assign.cc: Same. 2021-01-08 Olivier Hainque * testsuite/20_util/bind/ref_neg.cc: Tweak the dg-prune-output regex for out-of-build-tree contexts. 2021-01-07 Thomas Rodgers * doc/doxygen/user.cfg.in: Add new header. * include/Makefile.am (std_headers): likewise. * include/Makefile.in: Regenerate. * include/precompiled/stdc++.h: Add new header. * include/std/barrier: New file. * include/std/version: Add __cpp_lib_barrier feature test macro. * testsuite/30_threads/barrier/1.cc: New test. * testsuite/30_threads/barrier/2.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise. * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise. * testsuite/30_threads/barrier/arrive.cc: Likewise. * testsuite/30_threads/barrier/completion.cc: Likewise. 2021-01-07 Patrick Palka PR libstdc++/98384 * testsuite/20_util/to_chars/long_double.cc: Use nexttowardl instead of the non-standard nextupl and nextdownl. 2021-01-05 Samuel Thibault * configure: Re-generate. 2021-01-05 Ed Smith-Rowland <3dw4rd@verizon.net> * include/precompiled/stdc++.h: Add to C++20 section. 2021-01-01 Jakub Jelinek * ChangeLog-2020: Rotate ChangeLog. New file. Copyright (C) 2021 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.