2023-07-07 Release Manager * GCC 10.5.0 released. 2023-06-23 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. 2023-06-23 Jonathan Wakely Backported from master: 2023-06-01 Jonathan Wakely * doc/xml/manual/evolution.xml: Document removal of implicit allocator rebinding extensions in strict mode and for C++20. * doc/html/*: Regenerate. 2023-06-23 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-06-23 Jonathan Wakely Backported from master: 2020-06-17 Jonathan Wakely PR libstdc++/94540 * include/bits/stl_uninitialized.h (__uninitialized_default_1): Construct the first value at *__first instead of on the stack. (__uninitialized_default_n_1): Likewise. Improve comments on several of the non-standard algorithms. * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc: New test. * testsuite/23_containers/vector/cons/94540.cc: New test. 2023-06-23 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. 2023-06-23 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. 2023-06-23 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. 2023-06-23 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. 2023-06-23 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. 2023-06-23 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. 2023-06-23 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. 2023-06-23 Jonathan Wakely Backported from master: 2020-09-11 Jonathan Wakely * include/bits/regex_error.h (__throw_regex_error): Fix parameter declaration and use reserved attribute names. 2023-06-23 Christophe Lyon Backported from master: 2020-09-11 Christophe Lyon * include/bits/regex_error.h: Avoid warning with -fno-exceptions. 2023-05-21 Iain Sandoe * include/bits/fs_path.h: Rename __null_terminated to __nul_terminated to avoid colliding with a macro in Darwin system headers. 2023-05-03 Jonathan Wakely PR libstdc++/105844 * include/std/numeric (lcm): Ensure out-of-range result is detected in constant evaluation. * testsuite/26_numerics/lcm/105844.cc: Adjust dg-error string. 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-28 Jonathan Wakely Backported from master: 2020-11-24 Jonathan Wakely PR libstdc++/67791 * src/c++11/thread.cc (thread::_M_start_thread(_State_ptr, void (*)())): Check that gthreads is available before calling __gthread_create. 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/std/memory (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-04-27 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. 2023-04-27 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. 2023-04-27 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. 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. 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-08-03 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. 2022-08-03 Jonathan Wakely * include/bits/list.tcc (list::merge) [!USE_CXX11_ABI]: Remove call to size() and try-catch block. 2022-08-03 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. 2022-08-03 Jonathan Wakely Backported from master: 2021-06-15 Jonathan Wakely * include/std/ranges (subrange(i, s, n)): Remove assertion. * testsuite/std/ranges/subrange/constexpr.cc: New test. 2022-08-03 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. 2022-07-23 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-23 Jonathan Wakely Backported from master: 2021-11-05 Jonathan Wakely * include/bits/range_access.h (begin(valarray), end(valarray)): Add noexcept. 2022-07-22 Patrick Palka Backported from master: 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-06-28 Release Manager * GCC 10.4.0 released. 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-15 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-06-15 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-06-15 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-06-15 Jonathan Wakely * testsuite/23_containers/map/allocator/move_cons.cc: New test. * testsuite/23_containers/multimap/allocator/move_cons.cc: New test. * testsuite/23_containers/multiset/allocator/move_cons.cc: New test. * testsuite/23_containers/set/allocator/move_cons.cc: New test. 2022-06-15 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/multiset/allocator/103501.cc: New test. * testsuite/23_containers/set/allocator/103501.cc: New test. 2022-06-14 Jonathan Wakely PR libstdc++/97944 * testsuite/30_threads/jthread/95989.cc: Mark XFAIL. 2022-06-14 Jonathan Wakely Backported from master: 2020-11-24 Jonathan Wakely * testsuite/30_threads/jthread/95989.cc: Run all three test functions, not just the first one twice. 2022-06-14 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-06-14 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. 2022-06-10 Jonathan Wakely Backported from master: 2022-06-10 Jonathan Wakely PR libstdc++/105915 * include/experimental/bits/fs_path.h (path::begin, path::end): Remove noexcept from declarations. 2022-05-31 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-05-31 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/stl_iterator.h (common_iterator): Constrain the default ctor. (counted_iterator): Likewise. * include/std/ranges (ranges::view): Remove default_initializable requirement. (subrange): Constrain the default ctor. (__detail::__box::operator=): Handle self-assignment. (single_view): Constraint the default ctor. (iota_view): Relax semiregular constraint to copyable. Constrain the default ctor. (iota_view::_Iterator): Constraint the default ctor. (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): Constrain the default ctor. (common_view): Likewise. (reverse_view): Likewise. (elements_view): Likewise. (elements_view::_Iterator): Likewise. * include/std/span (enable_view>): Define this partial specialization to true unconditionally. * 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-05-29 Iain Sandoe Backported from master: 2021-03-15 Iain Sandoe * testsuite/17_intro/names.cc: Exclude j from the list of test symbols for Darwin. 2022-05-29 Iain Sandoe Backported from master: 2021-11-19 Iain Sandoe * testsuite/lib/prune.exp: Prune dsymutil (ld64) warning. 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/html/manual/status.html: Regenerate. * doc/xml/manual/status_cxx2020.xml: Fix supported version for C++20 bit operations. 2022-05-09 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-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-04-26 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-26 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-26 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-26 Jonathan Wakely Backported from master: 2021-06-14 Jonathan Wakely * include/bits/range_access.h (ranges::empty): Check whether conversion to bool can throw. * testsuite/std/ranges/access/empty.cc: Check for correct noexcept-specifier. 2022-04-26 Jonathan Wakely PR libstdc++/102048 * include/ext/rope (rope::erase(size_type)): Deprecate broken function. 2022-04-26 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. 2022-04-26 Jonathan Wakely Backported from master: 2021-11-01 Jonathan Wakely * include/std/span (span(Range&&)): Reorder constraints. 2022-04-26 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. 2022-04-26 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. 2022-04-26 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 2022-04-26 Jonathan Wakely Backported from master: 2021-12-09 Jonathan Wakely PR libstdc++/103630 * libsupc++/exception_ptr.h (make_exception_ptr): Decay the template parameter. Use typeid of the static type. * testsuite/18_support/exception_ptr/103630.cc: New test. 2022-04-26 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-26 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-26 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-26 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-26 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-26 Jonathan Wakely Backported from master: 2022-04-14 Jonathan Wakely * doc/xml/manual/intro.xml: Fix comment. 2022-04-26 Jonathan Wakely Backported from master: 2022-03-03 Jonathan Wakely * testsuite/17_intro/names.cc (func): Undef on AIX. 2022-04-26 Jonathan Wakely Backported from master: 2022-01-27 Jonathan Wakely * include/bits/range_access.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-26 Jonathan Wakely Backported from master: 2022-01-06 Jonathan Wakely * testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor. 2022-04-26 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-26 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-26 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-26 Jonathan Wakely Backported from master: 2021-08-25 Jonathan Wakely * testsuite/17_intro/names.cc: Check 'sz'. 2022-04-14 Jonathan Wakely * doc/xml/manual/status_cxx1998.xml: Refer to GCC 10 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-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-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: 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-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 * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip versioned namespace from the type name that is printed. 2022-01-05 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. 2022-01-05 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. 2022-01-05 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-26 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-26 Jonathan Wakely Backported from master: 2021-08-19 Jonathan Wakely PR libstdc++/101965 * include/std/charconv (__to_chars_i): Remove redundant check. 2021-11-26 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-26 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.cc: New test. * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add constexpr to constructor so it can be used for C++20 tests. 2021-11-26 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-26 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_default_constructor. Construct that base-class explicitly in all non-forwarding, non-defaulted constructors. * testsuite/23_containers/unordered_map/cons/default.cc: New test. * testsuite/23_containers/unordered_set/cons/default.cc: New test. 2021-11-26 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-11-26 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-26 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-26 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-11-26 Jonathan Wakely * testsuite/27_io/types/1.cc: Add c++11 target selector to warnings. 2021-11-26 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-11-26 Jonathan Wakely * testsuite/23_containers/array/comparison_operators/96851.cc: Skip test in debug mode. 2021-11-26 Jonathan Wakely * include/bits/stl_iterator.h: Include required header for std::iterator class template and iterator category tags. 2021-11-26 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-23 Jonathan Wakely Backported from master: 2021-11-23 Jonathan Wakely PR libstdc++/103381 * include/ext/bitmap_allocator.h: Include instead of . 2021-11-01 Jonathan Wakely * include/std/valarray (begin, end): Remove nodiscard attribute. 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-13 Jonathan Wakely Backported from master: 2021-10-13 Jonathan Wakely * testsuite/28_regex/match_results/102667.C: Moved to... * testsuite/28_regex/match_results/102667.cc: ...here. 2021-10-13 Jonathan Wakely * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc: Use -std=gnu++17 option. 2021-10-13 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-13 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-10-13 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-10-13 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-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 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 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-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-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-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-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-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-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 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-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-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 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-10 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-07-22 Jonathan Wakely Backported from master: 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-07-22 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-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-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-06 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-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 * include/std/variant (__same_types, __check_visitor_results): Remove. 2021-06-18 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-06-18 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-06-18 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-06-18 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-06-18 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-06-18 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-06-18 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. * 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-06-18 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-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-14 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/uses_allocator/69293_neg.cc: Likewise. * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. 2021-06-14 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-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-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-03 Jonathan Wakely Backported from master: 2021-06-01 Jonathan Wakely PR libstdc++/100833 * include/bits/range_access.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-03 Jonathan Wakely Backported from master: 2021-05-26 Jonathan Wakely PR libstdc++/100768 * include/bits/range_access.h (ranges::advance) (ranges::distance, ranges::next, ranges::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-03 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-06-03 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-17 Jonathan Wakely PR libstdc++/100630 * include/bits/fs_path.h (__is_constructible_from): Test construction from a const lvalue, not an rvalue. * include/experimental/bits/fs_path.h (__is_constructible_from): Likewise. * testsuite/27_io/filesystem/path/construct/100630.cc: New test. * testsuite/experimental/filesystem/path/construct/100630.cc: New test. 2021-05-17 Jonathan Wakely Backported from master: 2021-03-11 Jonathan Wakely * python/libstdcxx/v6/printers.py (find_type): Use tag attribute instead of unqualified() method. 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-05-04 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-05-03 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-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. 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-21 Jonathan Wakely PR libstdc++/100180 * testsuite/experimental/net/internet/address/v6/members.cc: Require gthreads. 2021-04-21 Patrick Palka Backported from master: 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-21 Patrick Palka Backported from master: 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-21 Patrick Palka Backported from master: 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-21 Patrick Palka Backported from master: 2020-10-31 Patrick Palka PR libstdc++/97600 * include/std/ranges (basic_istream_view::begin): Initialize _Iterator from 'this' instead of '*this'. (basic_istream_view::_Iterator::_Iterator): Adjust constructor accordingly. (filter_view::_Iterator::_Iterator): Take a filter_view* argument instead of a filter_view& argument. (filter_view::_Sentinel::_Sentinel): Likewise. (filter_view::begin): Initialize _Iterator from 'this' instead of '*this'. (filter_view::end): Likewise. (transform_view::_Iterator::_Iterator): Take a _Parent* instead of a _Parent&. (filter_view::_Iterator::operator+): Adjust accordingly. (filter_view::_Iterator::operator-): Likewise. (filter_view::begin): Initialize _Iterator from 'this' instead of '*this'. (filter_view::end): Likewise. (join_view::_Iterator): Take a _Parent* instead of a _Parent&. (join_view::_Sentinel): Likewise. (join_view::begin): Initialize _Iterator from 'this' instead of '*this'. (join_view::end): Initialize _Sentinel from 'this' instead of '*this'. (split_view::_OuterIter): Take a _Parent& instead of a _Parent*. (split_view::begin): Initialize _OuterIter from 'this' instead of '*this'. (split_view::end): Likewise. * testsuite/std/ranges/97600.cc: New test. 2021-04-19 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-19 Jonathan Wakely Backported from master: 2020-10-26 Jonathan Wakely PR libstdc++/97570 * libsupc++/new_opa.cc: Declare size_t in global namespace. Remove unused header. 2021-04-13 Jonathan Wakely Backported from master: 2021-04-13 Jonathan Wakely PR libstdc++/100060 * include/std/bit: Only include for hosted build, use otherwise. 2021-04-12 Jonathan Wakely Backported from master: 2021-04-12 Jonathan Wakely PR libstdc++/100044 * include/std/ranges (__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 Backported from master: 2020-08-24 Jonathan Wakely * include/bits/iterator_concepts.h (indirectly_readable): Add partial specializations to resolve ambiguities (LWG 3446). * testsuite/24_iterators/associated_types/readable.traits.cc: Check types with both value_type and element_type. 2021-04-09 Jonathan Wakely PR bootstrap/99983 * include/bits/hashtable.h (_Hashtable): Fix noexcept-speciofier on definition to match the one on the declaration. 2021-04-09 Jonathan Wakely Backported from master: 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 Backported from master: 2021-04-09 Jonathan Wakely * include/bits/fs_fwd.h: Fix doxygen group command. * include/bits/streambuf_iterator.h: Likewise. * include/std/chrono: Likewise. * include/std/memory: Likewise. * include/std/thread: Likewise. * include/tr1/complex: Likewise. 2021-04-09 Jonathan Wakely Backported from master: 2021-04-08 Jonathan Wakely * include/bits/basic_string.h: Tweak doxygen comment. 2021-04-09 Jonathan Wakely Backported from master: 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 Backported from master: 2020-07-30 Jonathan Wakely * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: Use allocator with the correct value type. * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: Likewise. 2021-04-08 François Dumont Backported from master: 2020-07-29 François Dumont PR libstdc++/96029 * include/bits/hashtable.h (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)): Add noexcept qualification. (_Hashtable(_Hashtable&&)): Fix noexcept qualification. (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept qualification. * include/bits/unordered_map.h (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept qualification. (unordered_multimap(unordered_multimap&&, const allocator_type&)): Likewise. * include/bits/unordered_set.h (unordered_set(unordered_set&&, const allocator_type&)): Likewise. (unordered_multiset(unordered_multiset&&, const allocator_type&)): Likewise. * include/debug/unordered_map (unordered_map(unordered_map&&, const allocator_type&)): Likewise. (unordered_multimap(unordered_multimap&&, const allocator_type&)): Likewise. * include/debug/unordered_set (unordered_set(unordered_set&&, const allocator_type&)): Likewise. (unordered_multiset(unordered_multiset&&, const allocator_type&)): Likewise. * testsuite/23_containers/unordered_map/allocator/default_init.cc: New test. * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc: New test. * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc: New test. * testsuite/23_containers/unordered_map/modifiers/move_assign.cc: New test. * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc: New test. * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc: New test. * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: New test. * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc: New test. * testsuite/23_containers/unordered_set/allocator/default_init.cc: New test. * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: New test. * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc: New test. 2021-04-08 François Dumont Backported from master: 2020-07-08 François Dumont PR libstdc++/96029 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept qualification based only on _Compare one. * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add static asserts. * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc: Likewise. * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc: Likewise. * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise. 2021-04-08 Jonathan Wakely Backported from master: 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-08 Jonathan Wakely * doc/xml/manual/status_cxx2017.xml: Replace Intel parallelstl link with LLVM repo for PSTL. * doc/html/manual/status.html: Regenerate. 2021-04-08 Jonathan Wakely Backported from master: 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/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-08 Jonathan Wakely Backported from master: 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/istream: Likewise. * include/std/iostream: 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/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-04-08 Jonathan Wakely Backported from master: 2021-04-08 Jonathan Wakely * include/std/string_view: Adjust Doxygen @file comment. 2021-04-08 Release Manager * GCC 10.3.0 released. 2021-04-01 Jonathan Wakely Backported from master: 2021-02-14 Jonathan Wakely PR libstdc++/99096 * testsuite/util/testsuite_fs.h: Always include . 2021-04-01 Jonathan Wakely Backported from master: 2020-12-17 Jonathan Wakely * config.h.in: Regenerate. * config/os/djgpp/error_constants.h: Test POSIX errno macros directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. * config/os/mingw32-w64/error_constants.h: Likewise. * config/os/mingw32/error_constants.h: Likewise. * configure: Regenerate. 2021-03-29 Jonathan Wakely Backported from master: 2020-11-30 Jonathan Wakely * testsuite/20_util/specialized_algorithms/pstl/*: Add dg-timeout-factor. * testsuite/25_algorithms/pstl/*: Likewise. * testsuite/26_numerics/pstl/*: Likewise. * testsuite/28_regex/*: Likewise. 2021-03-29 Jonathan Wakely Backported from master: 2020-11-26 Jonathan Wakely * testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc: Add dg-timeout-factor directive. * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: Likewise. * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc: Likewise. * testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise. * testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: Likewise. * testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: Likewise. * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-11 Jonathan Wakely * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using #ifdef instead of #if. (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before using __gthread_yield. 2021-03-29 Jonathan Wakely Backported from master: 2020-06-19 Jonathan Wakely PR libstdc++/95765 * include/bits/stl_algobase.h (__size_to_integer(float)) (__size_to_integer(double), __size_to_integer(long double)) (__size_to_integer(__float128)): Cast return type explicitly. 2021-03-29 Jonathan Wakely Backported from master: 2020-11-25 Jonathan Wakely * testsuite/17_intro/names.cc: Do not test 'v' on AIX. 2021-03-29 Jonathan Wakely Backported from master: 2020-07-30 Jonathan Wakely * include/bits/basic_string.h (size_type, difference_type): Use allocator_traits to obtain the allocator's size_type and difference_type. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-01 Jonathan Wakely * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)): New helper function for finding GCD of two positive intmax_t values. (duration::__divide): New helper alias for dividing one period by another. (duration::__is_harmonic): Use __divide not ratio_divide. (duration(const duration&)): Require the duration rep types to be convertible. * testsuite/20_util/duration/cons/dr2094.cc: New test. * testsuite/20_util/duration/requirements/reduced_period.cc: Fix definition of unused member functions in test type. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Adjust expected errors. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-27 Jonathan Wakely * include/std/chrono (__duration_common_type): Ensure the reduced ratio is used. Remove unused partial specialization using __failure_type. (common_type): Pass reduced ratios to __duration_common_type. Add partial specializations for simple cases involving a single duration or time_point type. (duration::period): Use reduced ratio. (duration::operator+(), duration::operator-()): Return duration type using the reduced ratio. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Adjust expected errors. * testsuite/20_util/duration/requirements/reduced_period.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-03 Jonathan Wakely PR libstdc++/96592 * include/std/tuple (_TupleConstraints): Use alternative is_constructible instead of std::is_constructible. * testsuite/20_util/tuple/cons/96592.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-07-31 Jonathan Wakely * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to definition of aggregates in C++20. * testsuite/20_util/optional/requirements.cc: Adjust for defaulted comparisons in C++20. 2021-03-29 Jonathan Wakely Backported from master: 2020-07-31 Jonathan Wakely * testsuite/20_util/tuple/78939.cc: Suppress warnings about deprecation of volatile-qualified structured bindings in C++20. * testsuite/20_util/variable_templates_for_traits.cc: Likewise for deprecation of is_pod in C++20 2021-03-29 Jonathan Wakely Backported from master: 2020-06-09 Jonathan Wakely * include/std/optional (bad_optional_access): Define default constructor and destructor as defaulted. * testsuite/20_util/optional/bad_access.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-06-04 Jonathan Wakely * include/bits/ranges_algobase.h (__copy_n_fn): Only call ranges::copy for positive values. * include/bits/stl_algo.h (copy_n): Convert Size argument to an integral type and only call __copy_n for positive values. * testsuite/util/testsuite_iterators.h (random_access_iterator_wrapper::operator+=): Fix range check for negative values. (output_container, input_container, forward_container) (bidirectional_container, random_access_container): New alias templates. * testsuite/25_algorithms/copy_n/5.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-06-16 Jonathan Wakely * include/std/atomic (atomic): Add static assertions. * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-06-09 Jonathan Wakely * include/bits/stl_iterator.h (move_iterator::operator=): Define. * testsuite/24_iterators/move_iterator/dr3265.cc: New test. 2021-03-29 Paul Keir Backported from master: 2020-06-15 Paul Keir * include/bits/char_traits.h (char_traits::move): constexpr move with overlap was using copy_backward incorrectly. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-07-31 Jonathan Wakely * testsuite/20_util/time_point_cast/rounding.cc: Remove duplicate dg-do directive and add c++17 effective target. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-11 Jonathan Wakely * testsuite/30_threads/thread/cons/84535.cc: Use a custom namespace. * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. 2021-03-29 Jonathan Wakely Backported from master: 2020-11-26 Jonathan Wakely * testsuite/lib/libstdc++.exp (libstdc++_init): Only set tool_timeout if it hasn't been set by the user already. 2021-03-29 Moritz Sichert Backported from master: 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-29 Jonathan Wakely Backported from master: 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-29 Jonathan Wakely Backported from master: 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-29 Jonathan Wakely Backported from master: 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-29 Jonathan Wakely Backported from master: 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-29 Jonathan Wakely Backported from master: 2021-03-10 Jonathan Wakely * include/bits/range_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-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 2021-02-12 Jonathan Wakely * testsuite/util/testsuite_fs.h (nonexistent_path): Add random number to the path. 2021-03-29 Jonathan Wakely Backported from master: 2021-02-12 Jonathan Wakely * include/experimental/internet (address_v6::to_string): Include scope ID in string. (address_v6::loopback): Fix to be constexpr in C++14. * testsuite/experimental/net/internet/address/v6/members.cc: Test to_string() results. 2021-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 2020-10-29 Jonathan Wakely * testsuite/25_algorithms/all_of/constexpr.cc: Check result of the algorithm. * testsuite/25_algorithms/any_of/constexpr.cc: Likewise. * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise. * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise. * testsuite/25_algorithms/count/constexpr.cc: Likewise. * testsuite/25_algorithms/equal/constexpr.cc: Likewise. * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise. * testsuite/25_algorithms/fill/constexpr.cc: Likewise. * testsuite/25_algorithms/find_end/constexpr.cc: Likewise. * testsuite/25_algorithms/find_if/constexpr.cc: Likewise. * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise. * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise. * testsuite/25_algorithms/is_sorted_until/constexpr.cc: Likewise. * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: Likewise. * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise. * testsuite/25_algorithms/merge/constexpr.cc: Likewise. * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise. * testsuite/25_algorithms/none_of/constexpr.cc: Likewise. * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise. * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise. * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise. * testsuite/25_algorithms/reverse/constexpr.cc: Likewise. * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/search/constexpr.cc: Likewise. * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise. * testsuite/25_algorithms/set_intersection/constexpr.cc: Likewise. * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: Likewise. * testsuite/25_algorithms/set_union/constexpr.cc: Likewise. * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise. * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise. 2021-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 2021-02-12 Jonathan Wakely PR libstdc++/88881 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround. 2021-03-29 Jonathan Wakely Backported from master: 2021-02-10 Jonathan Wakely PR libstdc++/88881 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround. 2021-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 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-03-29 Jonathan Wakely Backported from master: 2020-12-16 Jonathan Wakely PR libstdc++/98319 * include/experimental/random: Only define contents for C++14 and later. * include/experimental/source_location: Likewise. * include/experimental/utility: Likewise. * testsuite/experimental/feat-lib-fund.cc: Include all LFTS headers that are present. Allow test to run for all modes. 2021-03-29 Jonathan Wakely Backported from master: 2020-12-16 Jonathan Wakely PR libstdc++/93151 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove. * configure.ac: Regenerate. * config/os/generic/error_constants.h: Test POSIX errno macros directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: Likewise. * testsuite/19_diagnostics/headers/system_error/93151.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-12-10 Jonathan Wakely PR libstdc++/98226 * include/std/bit (__countl_one, __countr_one): Remove redundant branches. 2021-03-29 Jonathan Wakely Backported from master: 2020-11-09 Jonathan Wakely * include/std/bit (__popcount): Remove redundant check for zero. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-30 Jonathan Wakely * include/std/ranges (enable_borrowed_view>) (enable_borrowed_view>) (enable_borrowed_view>) (enable_borrowed_view>) (enable_borrowed_view>) (enable_borrowed_view>): Add partial specializations as per P2017R1. * testsuite/std/ranges/adaptors/conditionally_borrowed.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-29 Jonathan Wakely * include/std/ranges (subrange::subrange(R&&)): Use direct-initialization instead of list-initialization, so a potential narrowing conversion from ranges::size(r) to the stored size isn't ill-formed. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-08 Jonathan Wakely PR libstdc++/82584 * include/bits/random.tcc (discrete_distribution::param_type::_M_initialize) (piecewise_constant_distribution::param_type::_M_initialize) (piecewise_linear_distribution::param_type::_M_initialize): Add assertions for positive sums.. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-08 Jonathan Wakely * include/bits/random.h (__detail::_Mod): Revert last change. (__detail::__mod): Do not use _Mod for a==0 case. * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: Check other cases with a==0. Also check runtime results. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-07 Jonathan Wakely * include/bits/random.h (__detail::_Mod): Avoid divide by zero. * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-21 Jonathan Wakely * include/std/ranges (drop_view::begin()): Adjust constraints to match the correct condition for O(1) ranges::next (LWG 3482). * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is cached for non-sized_range. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-21 Jonathan Wakely * include/std/ranges (transform_view, elements_view): Relax constraints on operator- for iterators, as per LWG 3483. * testsuite/std/ranges/adaptors/elements.cc: Check that we can take the difference of two iterators from a non-random access range. * testsuite/std/ranges/adaptors/transform.cc: Likewise. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-28 Jonathan Wakely PR libstdc++/95592 * include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR) (_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION): Use elaborated-type-specifier and qualified-id to avoid ambiguities with QNX system headers. * testsuite/26_numerics/valarray/95592.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-27 Jonathan Wakely * include/bits/locale_conv.h (__str_codecvt_out_all): Add cast to compare operands of the same signedness. * include/bits/locale_facets_nonio.tcc (time_get::_M_extract_wday_or_month): Likewise. * include/bits/sstream.tcc (basic_stringbuf::overflow): Likewise. * include/tr1/legendre_function.tcc (__sph_legendre): Use unsigned for loop variable. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all): Add casts to compare types of the same signedness. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely * include/bits/ranges_algobase.h (__equal_fn): Remove unused typedef. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&)) (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress warnings for uses of std::auto_ptr. * include/experimental/type_traits (is_literal_type_v): Likewise, for use of std::is_literal_type. * include/std/condition_variable (condition_variable_any::_Unlock): Likewise, for use of std::uncaught_exception. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely * include/bits/fs_path.h (path::_List::type()): Avoid narrowing conversion. 2021-03-29 Jonathan Wakely Backported from master: 2020-09-07 Jonathan Wakely * include/std/ranges (__box): Simplify constraints as per LWG 3477. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-24 Jonathan Wakely * include/std/ranges (ranges::iota_view::size()): Perform all calculations in the right unsigned types. * testsuite/std/ranges/iota/size.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-11 Jonathan Wakely * include/experimental/executor (system_context::_M_run()): Fix predicate. (system_context::join()): Do not join unless joinable. * testsuite/experimental/net/system_context/1.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-08-10 Jonathan Wakely * include/bits/stl_iterator.h (inserter): Do not deduce iterator type (LWG 561). * testsuite/24_iterators/insert_iterator/dr561.cc: New test. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-27 Jonathan Wakely * include/bits/fs_path.h (path::_List::begin, path::_List::end): Add noexcept to match definitions in src/c++17/fs_path.cc. 2021-03-29 Jonathan Wakely Backported from master: 2020-10-27 Jonathan Wakely * src/c++17/fs_dir.cc (fs::directory_iterator::operator*): Add noexcept. Do not throw on precondition violation. 2021-03-19 Jakub Jelinek Backported from master: 2021-02-23 Jakub Jelinek PR libstdc++/99181 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New test. 2021-03-19 Jakub Jelinek Backported from master: 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-09 Jonathan Wakely Backported from master: 2021-02-09 Jonathan Wakely PR libstdc++/99021 * include/std/coroutine (coroutine_handle

::from_address): Add noexcept. 2021-01-13 Jonathan Wakely PR libstdc++/98605 * include/std/mutex (call_once): Use NOLINT to suppress clang analyzer warnings. 2021-01-11 Jonathan Wakely Backported from master: 2020-12-02 Jonathan Wakely * python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the name of the type and pass it to the iterator. (StdPathPrinter): Likewise. * testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test. 2021-01-11 Jonathan Wakely Backported from master: 2020-12-16 Jonathan Wakely PR libstdc++/96083 * include/ext/throw_allocator.h: Use __has_builtin to check for __builtin_sprintf support, and use std::sprintf if necessary. 2021-01-11 Jonathan Wakely Backported from master: 2020-12-02 Jonathan Wakely PR libstdc++/65480 PR libstdc++/68735 * python/libstdcxx/v6/printers.py (function_pointer_to_name): New helper function to get the name of a function from its address. (StdExpAnyPrinter.__init__): Use it. 2021-01-11 Jonathan Wakely Backported from master: 2020-07-31 Jonathan Wakely * testsuite/experimental/filesystem/filesystem_error/cons.cc: Remove -std=gnu++17 option. 2021-01-08 Iain Sandoe Backported from master: 2020-07-17 Iain Sandoe * include/std/coroutine: Mark the methods of the trivial awaitables as constexpr. 2021-01-03 Iain Sandoe Jakub Jelinek PR target/97865 * configure: Regenerate. 2020-12-03 Jonathan Wakely Backported from master: 2020-12-03 Jonathan Wakely * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. 2020-12-01 Patrick Palka Backported from master: 2020-10-12 Patrick Palka PR libstdc++/95322 * include/std/ranges (take_view::_CI): Define this alias template as per LWG 3449 and remove ... (take_view::_Sentinel::_CI): ... this type alias. (take_view::_Sentinel::operator==): Adjust use of _CI accordingly. Define a second overload that accepts an iterator of the opposite constness as per LWG 3449. (take_while_view::_Sentinel::operator==): Likewise. * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449. 2020-11-26 Jonathan Wakely Backported from master: 2020-11-26 Jonathan Wakely PR libstdc++/98001 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid FILE* to constructor. 2020-11-25 Jonathan Wakely Backported from master: 2020-11-25 Jonathan Wakely PR libstdc++/97935 * include/bits/iterator_concepts.h (__detail::__iter_without_category): New helper concept. (__iterator_traits::__cat): Use __detail::__iter_without_category. * testsuite/24_iterators/associated_types/iterator.traits.cc: New test. 2020-11-25 Jonathan Wakely Backported from master: 2020-06-04 Jonathan Wakely * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref) (__detail::__cat, __detail::__diff): Move to class scope in the relevant __iterator_traits specializations. (__iterator_traits<>): Use nested class templates instead of ones from namespace __detail. * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to class scope in iterator_traits>. (iterator_traits>): Use nested class template instead of __detail::__common_iter_ptr. 2020-11-24 Jonathan Wakely Backported from master: 2020-10-02 Jonathan Wakely * testsuite/29_atomics/atomic_float/value_init.cc: Use float instead of double so that __atomic_load_8 isn't needed. 2020-11-20 Jonathan Wakely Backported from master: 2020-11-20 Jonathan Wakely PR libstdc++/92546 * include/std/regex (pmr::smatch, pmr::wsmatch): Declare using underlying __normal_iterator type, not nested typedef basic_string::const_iterator. 2020-11-20 Jonathan Wakely PR libstdc++/97876 * include/std/stop_token (_Stop_state_t): Define default constructor as user-provided not defaulted. 2020-11-20 Jonathan Wakely Backported from master: 2020-11-19 Jonathan Wakely PR libstdc++/95989 * config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID): Define new macro to get reliable thread ID. * include/std/stop_token (_Stop_state_t::_M_request_stop): Use new macro if it's defined. (_Stop_state_t::_M_remove_callback): Likewise. * include/std/thread (this_thread::get_id): Likewise. * testsuite/30_threads/jthread/95989.cc: New test. * testsuite/30_threads/this_thread/95989.cc: New test. 2020-11-18 Patrick Palka Backported from master: 2020-11-18 Patrick Palka * include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify local variable inner. (join_view::_Iterator::operator->): Use _Inner_iter instead of _Outer_iter in the function signature as per LWG 3500. * testsuite/std/ranges/adaptors/join.cc (test08): Test it. 2020-11-18 Jonathan Wakely Backported from master: 2020-10-06 Jonathan Wakely * include/std/ranges (join_view): Remove deduction guide. (views::join): Add explicit template argument list to prevent deducing the wrong type. * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474 here, from ... * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed. 2020-11-18 Jonathan Wakely Backported from master: 2020-08-24 Jonathan Wakely * include/std/ranges (join_view): Add deduction guide (LWG 3474). * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test. 2020-11-18 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely * include/std/version (__cpp_lib_array_constexpr) (__cpp_lib_constexpr_char_traits): Only define C++17 value when compiling C++17. 2020-11-18 Jonathan Wakely Backported from master: 2020-06-15 Jonathan Wakely * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): Update value for C++20. * include/std/version (__cpp_lib_constexpr_char_traits): Likewise. * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: Update expected value. 2020-11-18 Jonathan Wakely Backported from master: 2020-11-17 Jonathan Wakely PR libstdc++/97869 * include/precompiled/stdc++.h: Include . * include/std/version (__cpp_lib_span): Check __cpp_lib_concepts before defining. 2020-11-17 Patrick Palka Backported from master: 2020-11-17 Patrick Palka PR libstdc++/97828 * include/bits/ranges_algo.h (__search_n_fn::operator()): Check random_access_iterator before using the backtracking implementation. When the backwards scan fails prematurely, reset __remainder appropriately. * testsuite/25_algorithms/search_n/97828.cc: New test. 2020-11-16 Jonathan Wakely Backported from master: 2020-11-13 Jonathan Wakely PR libstdc++/93456 * src/c++11/futex.cc (relative_timespec): Remove redundant check negative values. * testsuite/30_threads/future/members/93456.cc: New. 2020-11-16 Jonathan Wakely Backported from master: 2020-11-16 Jonathan Wakely * src/c++11/futex.cc (relative_timespec): New function to create relative time from two absolute times. (__atomic_futex_unsigned_base::_M_futex_wait_until): Use relative_timespec. 2020-11-16 Jonathan Wakely Backported from master: 2020-11-12 Jonathan Wakely * include/std/future (future::wait_for): Do not wait for durations less than or equal to zero. * testsuite/30_threads/future/members/poll.cc: New test. 2020-11-13 Jonathan Wakely Backported from master: 2020-11-13 Jonathan Wakely PR libstdc++/97798 * include/ext/numeric_traits.h (__glibcxx_signed) (__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove macros. (__is_integer_nonstrict::__width): Define new constant. (__numeric_traits_integer): Define constants in terms of each other and __is_integer_nonstrict::__width, rather than the removed macros. (_GLIBCXX_INT_N_TRAITS): Macro to define explicit specializations for non-standard integer types. 2020-11-13 Jonathan Wakely PR libstdc++/96042 * testsuite/std/ranges/iota/96042.cc: Only assert that the difference type is wider than long long if __int128 is supported. 2020-11-12 Jonathan Wakely Backported from master: 2020-08-20 Jonathan Wakely * include/bits/iterator_concepts.h [__STRICT_ANSI__] (incrementable_traits<__int128>): Define specialization. (incrementable_traits): Likewise. * testsuite/std/ranges/iota/96042.cc: Test iota_view with __int128. 2020-11-12 Jonathan Wakely Backported from master: 2020-08-19 Jonathan Wakely Patrick Palka PR libstdc++/96042 * include/bits/range_access.h (__detail::__to_unsigned_like): Do not use make_unsigned_t in the return type, as it can result in an error before the integral constraint is checked. [__STRICT_ANSI__]: Add overloads for 128-bit integer types. (__detail::__make_unsigned_like_t): Define as the return type of __to_unsigned_like. * testsuite/std/ranges/subrange/96042.cc: New test. 2020-11-12 Jonathan Wakely Backported from master: 2020-08-19 Jonathan Wakely PR libstdc++/96042 * include/ext/numeric_traits.h (__is_integer_nonstrict): New trait which is true for 128-bit integers even in strict modes. (__numeric_traits_integer, __numeric_traits): Use __is_integer_nonstrict instead of __is_integer. * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__] (numeric_limits<__int128>, (numeric_limits): Define. * testsuite/std/ranges/iota/96042.cc: New test. 2020-11-11 Paul Scharnofske Backported from master: 2020-11-11 Paul Scharnofske * include/std/thread (jthread::operator=(jthread&&)): Transfer any existing state to a temporary that will request a stop and then join. * testsuite/30_threads/jthread/jthread.cc: Test move assignment. 2020-11-05 Jonathan Wakely Backported from master: 2020-11-05 Jonathan Wakely PR libstdc++/96269 * include/std/optional (operator==, operator!=, operator<) (operator>, operator<=, operator>=): Fix types used in SFINAE constraints. * testsuite/20_util/optional/relops/96269.cc: New test. 2020-11-05 Jonathan Wakely Backported from master: 2020-11-05 Jonathan Wakely PR libstdc++/97731 * src/filesystem/dir.cc (recursive_directory_iterator): Call the right overload of _Dir::advance. * testsuite/experimental/filesystem/iterators/97731.cc: New test. 2020-11-05 Jonathan Wakely Backported from master: 2020-10-10 Jonathan Wakely PR libstdc++/97362 * doc/html/manual/source_code_style.html: Regenerate. * doc/xml/manual/appendix_contributing.xml: Add __deref to BADNAMES. * include/debug/functions.h (_Irreflexive_checker::__deref): Rename to __ref. * testsuite/17_intro/badnames.cc: Check __deref. 2020-11-04 Jonathan Wakely Backported from master: 2020-11-04 Jonathan Wakely PR libstdc++/92285 * doc/xml/manual/evolution.xml: Document change to base class. * doc/html/manual/api.html: Regenerate. 2020-11-04 Jonathan Wakely * doc/xml/manual/evolution.xml: Document new C++20 headers. * doc/html/*: Regenerate. 2020-11-04 Jonathan Wakely Backported from master: 2020-06-01 Jonathan Wakely * doc/xml/manual/evolution.xml: Document deprecation of __is_nullptr_t and removal of std::allocator members. * doc/html/manual/api.html: Regenerate. 2020-11-04 Jonathan Wakely Backported from master: 2020-06-01 Jonathan Wakely * doc/xml/manual/containers.xml: Replace with . * doc/xml/manual/evolution.xml: Likewise. * doc/html/manual/api.html: Regenerate. * doc/html/manual/containers.html: Regenerate. 2020-10-29 Patrick Palka Backported from master: 2020-10-29 Patrick Palka * testsuite/25_algorithms/lexicographical_compare/constrained.cc: (test03): Fix initializing the vector vy with the array y of size 4. 2020-10-28 Patrick Palka Backported from master: 2020-10-23 Patrick Palka * include/std/ranges (single_view::single_view): Mark the in place constructor explicit as per LWG 3428. (take_view): Remove the constraint on the deduction guide's template parameter as per LWG 3447. 2020-10-21 Patrick Palka Backported from master: 2020-09-22 Patrick Palka * include/std/span (span::front): Remove static_assert. (span::back): Likewise. (span::operator[]): Likewise. * testsuite/23_containers/span/back_neg.cc: Rewrite to verify that we check the preconditions of back() only when it's called. * testsuite/23_containers/span/front_neg.cc: Likewise for front(). * testsuite/23_containers/span/index_op_neg.cc: Likewise for operator[]. 2020-10-21 Patrick Palka Backported from master: 2020-10-12 Patrick Palka * include/std/ranges (take_while_view::begin): Constrain the const overload further as per LWG 3450. (take_while_view::end): Likewise. * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG 3450. 2020-10-21 Patrick Palka Backported from master: 2020-09-22 Patrick Palka * include/bits/stl_algo.h (__sample): Exit early when the input range is empty. * testsuite/25_algorithms/sample/3.cc: New test. 2020-10-21 Patrick Palka Backported from master: 2020-09-22 Patrick Palka * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20. (search): Likewise for the overload that takes a searcher. * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr std::for_each_n. * testsuite/25_algorithms/search/constexpr.cc: Test constexpr std::search overload that takes a searcher. 2020-10-21 Patrick Palka Backported from master: 2020-08-27 Patrick Palka PR libstdc++/95322 * include/std/ranges (transform_view::sentinel::__distance_from): Give this a deduced return type. (transform_view::sentinel::operator-): Adjust the return type so that it's based on the constness of the iterator rather than that of the sentinel. * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488. 2020-10-21 Patrick Palka Backported from master: 2020-08-27 Patrick Palka * include/std/ranges (elements_view::begin): Adjust constraints. (elements_view::end): Likewise. (elements_view::_Sentinel::operator==): Templatize to take both _Iterator and _Iterator. (elements_view::_Sentinel::operator-): Likewise. * testsuite/std/ranges/adaptors/elements.cc: Add testcase for the example from P1994R1. * testsuite/std/ranges/adaptors/lwg3406.cc: New test. 2020-10-21 Patrick Palka Backported from master: 2020-08-27 Patrick Palka * include/std/ranges (elements_view::end): Replace these two overloads with four new overloads. (elements_view::_Iterator::operator==): Remove. (elements_view::_Iterator::operator-): Likewise. (elements_view::_Sentinel): Define. 2020-10-20 Jonathan Wakely Backported from master: 2020-08-10 Jonathan Wakely * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Use gdb.Type.strip_typedefs(). * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in the emulated old type. 2020-10-20 Jonathan Wakely Backported from master: 2020-10-14 Jonathan Wakely * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] (basic_string(const _CharT*, const _Alloc&)): Constrain to require an allocator-like type to fix CTAD ambiguity (LWG 3706). Define inline. * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI] (basic_string(const _CharT*, const _Alloc&)): Remove non-inline definition. * testsuite/21_strings/basic_string/cons/char/deduction.cc: Remove dg-skip-if. * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: Likewise. 2020-10-20 Jonathan Wakely Backported from master: 2020-10-14 Jonathan Wakely * testsuite/21_strings/basic_string/allocator/char/minimal.cc: Do not require cxx11-abi effective target. * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: Likewise. * testsuite/27_io/basic_fstream/cons/base.cc: Likewise. 2020-10-20 Jonathan Wakely Backported from master: 2020-10-08 Jonathan Wakely * include/bits/ios_base.h (ios_base::failure): Add constructors takeing error_code argument. Add code() member function. * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to run for the old ABI but do not check for derivation from std::system_error. * testsuite/27_io/ios_base/failure/error_code.cc: New test. 2020-10-20 Nuno Lopes Backported from master: 2020-10-13 Nuno Lopes * include/bits/stl_algo.h (any_of): Fix incorrect description in comment. 2020-10-20 Jonathan Wakely Backported from master: 2020-10-12 Jonathan Wakely * include/bits/stl_algobase.h (copy, move, copy_backward) (move_backward): Fix documentation for returned iterator. 2020-10-20 Jonathan Wakely Backported from master: 2020-09-24 Jonathan Wakely * doc/xml/manual/configure.xml: Correct name of option. * doc/html/*: Regenerate. 2020-10-19 Jonathan Wakely Backported from master: 2020-09-21 Jonathan Wakely PR libstdc++/97132 * include/std/memory (assume_aligned): Do not use __builtin_assume_aligned during constant evaluation. * testsuite/20_util/assume_aligned/1.cc: Improve test. * testsuite/20_util/assume_aligned/97132.cc: New test. 2020-10-15 Jonathan Wakely Backported from master: 2020-10-15 Jonathan Wakely * include/std/concepts: Fix typos in copyright notice. * include/std/ranges: Likewise. 2020-10-15 Jonathan Wakely * doc/xml/manual/status_cxx2020.xml: Remove red background for completed feature. * doc/html/manual/status.html: Regenerate. 2020-10-13 Patrick Palka Backported from master: 2020-10-08 Patrick Palka PR libstdc++/95788 * include/bits/ranges_uninitialized.h: (__construct_at_fn::operator()): Rewrite in terms of std::construct_at. Declare it conditionally noexcept. Qualify calls to declval in its requires-clause. * testsuite/20_util/specialized_algorithms/construct_at/95788.cc: New test. 2020-10-08 Jonathan Wakely Backported from master: 2020-10-07 Jonathan Wakely * include/bits/random.h (seed_seq(initializer_list)): Rename parameter to use reserved name. * include/bits/ranges_algo.h (shift_left, shift_right): Rename template parameters to use reserved name. * testsuite/17_intro/names.cc: Check "il". Do not check "d" and "y" in C++20 mode. 2020-10-06 Patrick Palka Backported from master: 2020-10-02 Patrick Palka * include/bits/stl_iterator.h (reverse_iterator::iter_move): Define for C++20 as per P0896. (reverse_iterator::iter_swap): Likewise. (move_iterator::operator*): Apply P0896 changes for C++20. (move_iterator::operator[]): Likewise. * testsuite/24_iterators/reverse_iterator/cust.cc: New test. 2020-09-22 Jonathan Wakely Backported from master: 2020-09-22 Jonathan Wakely PR libstdc++/97167 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check for empty string before inspecting the first character. * testsuite/27_io/filesystem/path/append/source.cc: Append empty string_view to path. 2020-09-22 Jonathan Wakely Backported from master: 2020-09-22 Jonathan Wakely PR libstdc++/96803 * include/std/tuple (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl&)): Use correct value category in __use_alloc call. * testsuite/20_util/tuple/cons/96803.cc: Check with constructors that require correct value category to be used. 2020-09-22 Jonathan Wakely Backported from master: 2020-08-26 Jonathan Wakely PR libstdc++/96803 * include/std/tuple (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl&)): Replace parameter pack with a type parameter and a pack and pass the first type to __use_alloc. * testsuite/20_util/tuple/cons/96803.cc: New test. 2020-09-21 Jonathan Wakely Backported from master: 2020-08-10 Jonathan Wakely PR libstdc++/94681 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead of calling ::lstat directly. * src/filesystem/ops.cc (read_symlink): Likewise. 2020-09-21 Jonathan Wakely Backported from master: 2020-08-10 Jonathan Wakely PR libstdc++/94681 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on $enable_libstdcxx_filesystem_ts. * configure: Regenerate. 2020-09-21 Jonathan Wakely Backported from master: 2020-09-20 Jonathan Wakely PR libstdc++/97101 * include/std/functional (bind_front): Fix order of parameters in is_nothrow_constructible_v specialization. * testsuite/20_util/function_objects/bind_front/97101.cc: New test. 2020-09-21 Jonathan Wakely Backported from master: 2020-09-10 Jonathan Wakely PR libstdc++/94160 * src/c++17/memory_resource.cc (munge_options): Round max_blocks_per_chunk to a multiple of four. (__pool_resource::_M_alloc_pools()): Simplify slightly. * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Check that valid pointers are returned when small values are used for max_blocks_per_chunk. 2020-09-03 Jonathan Wakely Backported from master: 2020-07-07 Jonathan Wakely * include/Makefile.am: Remove bits/int_limits.h. * include/Makefile.in: Regenerate. * include/bits/int_limits.h: Removed. * include/bits/parse_numbers.h (_Select_int_base): Replace __int_limits with __int_traits. * include/bits/range_access.h (_SSize::operator()): Likewise. * include/ext/numeric_traits.h (__numeric_traits_integer): Add static assertion. (__int_traits): New alias template. * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) (__countr_zero, __countr_one, __popcount, __bit_ceil) (__bit_floor, __bit_width) Replace __int_limits with __int_traits. * include/std/charconv (__to_chars_8, __from_chars_binary) (__from_chars_alpha_to_num, from_chars): Likewise. * include/std/memory_resource (polymorphic_allocator::allocate) (polymorphic_allocator::allocate_object): Likewise. * include/std/string_view (basic_string_view::_S_compare): Likewise. * include/std/utility (cmp_equal, cmp_less, in_range): Likewise. 2020-09-02 Jonathan Wakely Backported from master: 2020-08-28 Jonathan Wakely PR libstdc++/92978 * include/std/numeric (__abs_integral): Replace with ... (__detail::__absu): New function template that returns an unsigned type, guaranteeing it can represent the most negative signed value. (__detail::__gcd, __detail::__lcm): Require arguments to be unsigned and therefore already non-negative. (gcd, lcm): Convert arguments to absolute value as unsigned type before calling __detail::__gcd or __detail::__lcm. * include/experimental/numeric (gcd, lcm): Likewise. * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected errors. * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. * testsuite/26_numerics/gcd/92978.cc: New test. * testsuite/26_numerics/lcm/92978.cc: New test. * testsuite/experimental/numeric/92978.cc: New test. 2020-09-02 Jonathan Wakely Backported from master: 2020-09-02 Jonathan Wakely PR libstdc++/96851 * include/bits/cpp_type_traits.h (__is_memcmp_ordered): New trait that says if memcmp can be used for ordering. (__is_memcmp_ordered_with): Likewise, for two types. * include/bits/ranges_algo.h (__lexicographical_compare_fn): Use new traits instead of __is_byte and __numeric_traits. * include/bits/stl_algobase.h (__lexicographical_compare_aux1) (__is_byte_iter): Likewise. * include/std/array (operator<=>): Likewise. Only use memcmp when std::is_constant_evaluated() is false. * testsuite/23_containers/array/comparison_operators/96851.cc: New test. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust dg-error line numbers. 2020-09-02 Jonathan Wakely * include/bits/stl_iterator.h (counted_iterator::operator++(int)): Use __throw_exception_again macro. 2020-08-26 Jonathan Wakely Backported from master: 2020-08-26 Jonathan Wakely PR libstdc++/71960 * include/experimental/string_view (basic_string_view): Enable debug assertions. * include/std/string_view (basic_string_view): Likewise. 2020-08-26 Jonathan Wakely Backported from master: 2020-08-24 Jonathan Wakely PR libstdc++/96766 * include/std/variant (_Variant_storage): Replace implicit conversions from size_t to __index_type with explicit casts. 2020-08-21 Jonathan Wakely Backported from master: 2020-08-21 Jonathan Wakely PR libstdc++/96718 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require tbb-backend effective target. * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test.cc: Likewise. 2020-08-19 Jonathan Wakely Backported from master: 2020-08-19 Jonathan Wakely * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead" message in deprecated warnings. * include/bits/ios_base.h (io_state, open_mode, seek_dir) (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST. * include/std/streambuf (stossc): Replace C++11 attribute with _GLIBCXX_DEPRECATED_SUGGEST. * include/std/type_traits (__is_nullptr_t): Use _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED. * testsuite/27_io/types/1.cc: Check for deprecated warnings. Also check for io_state, open_mode and seek_dir typedefs. 2020-08-11 Jonathan Wakely PR libstdc++/89760 * testsuite/experimental/net/execution_context/make_service.cc: Add dg-require-gthreads. * testsuite/experimental/net/executor/1.cc: Likewise. * testsuite/experimental/net/headers.cc: Likewise. * testsuite/experimental/net/internet/address/v4/comparisons.cc: Likewise. * 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/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/socket/basic_socket.cc: Likewise. * testsuite/experimental/net/timer/waitable/cons.cc: Likewise. * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. 2020-08-10 Jonathan Wakely Backported from master: 2020-08-10 Jonathan Wakely PR libstdc++/95749 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS] (stat_type): Change to __stat64. (stat): Use _wstat64. 2020-08-07 Jonathan Wakely Backported from master: 2020-08-07 Jonathan Wakely PR libstdc++/96303 * include/debug/bitset (bitset::operator==): Call _M_base() on right operand. (bitset::operator!=): Likewise, but don't define it at all when default comparisons are supported by the compiler. * testsuite/23_containers/bitset/operations/96303.cc: New test. 2020-08-06 Jonathan Wakely Backported from master: 2020-08-06 Jonathan Wakely PR libstdc++/96484 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error immediately for non-symlinks. * src/filesystem/ops.cc (fs::read_symlink): Likewise. 2020-07-23 Release Manager * GCC 10.2.0 released. 2020-07-09 Jonathan Wakely Backported from master: 2020-06-08 Jonathan Wakely * include/bits/unique_ptr.h (operator<<): Define for C++20. * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test. * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line number. * testsuite/20_util/default_delete/void_neg.cc: Likewise. 2020-07-09 Jonathan Wakely Backported from master: 2020-05-27 Jonathan Wakely PR libstdc++/95322 * include/std/ranges (transform_view::_Sentinel): Allow hidden friends to work with _Iterator and _Iterator. (join_view::_Sentinel): Likewise. * testsuite/std/ranges/adaptors/95322.cc: New test. 2020-07-09 Jonathan Wakely Backported from master: 2020-05-04 Jonathan Wakely PR libstdc++/94936 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools): Add comment about single-threaded behaviour. (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist class member access out of loop. (synchronized_pool_resource::synchronized_pool_resource()) (synchronized_pool_resource::~synchronized_pool_resource()) (synchronized_pool_resource::release()): Check __gthread_active_p before creating and/or deleting the thread-specific data key. (synchronized_pool_resource::_M_thread_specific_pools()): Adjust assertions. (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast path for single-threaded case. (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)): Likewise. Return if unable to find a pool that owns the allocation. * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: New test. * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New test. * testsuite/20_util/synchronized_pool_resource/release_single.cc: New test. 2020-07-09 Jonathan Wakely Backported from master: 2020-05-19 Jonathan Wakely PR libstdc++/94087 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be passed in. (__x86_rdseed_rdrand): New function that uses rdseed with rdrand fallback. (random_device::_M_init): Use __x86_rdseed_rdrand when both instructions are available. * testsuite/26_numerics/random/random_device/94087.cc: New test. 2020-07-02 Ville Voutilainen Backported from master: 2020-07-02 Ville Voutilainen PR libstdc++/91807 * include/std/variant (_Copy_assign_base::operator=(const _Copy_assign_base&): Do the move-assignment from a temporary so that the temporary is constructed with an explicit index. * testsuite/20_util/variant/91807.cc: New. 2020-07-02 Jonathan Wakely Backported from master: 2020-07-02 Jonathan Wakely PR libstdc++/91153 PR target/93224 * testsuite/29_atomics/atomic_float/1.cc: Use different values for tests. * testsuite/29_atomics/atomic_ref/float.cc: Likewise. 2020-07-01 Jonathan Wakely Backported from master: 2020-06-16 Jonathan Wakely PR libstdc++/95282 * include/bits/atomic_base.h (__atomic_impl::load): Add const-qualifier to parameter so that _Tp is deduced as the non-const type, and use _Val to get the unqualified type. (__atomic_impl::exchange): Use the _Val alias to remove volatile from the reinterpret_cast result type. * testsuite/29_atomics/atomic_float/95282.cc: New test. 2020-07-01 Jonathan Wakely Backported from master: 2020-07-01 Jonathan Wakely PR libstdc++/94627 * include/bits/regex.h (operator==, operator!=): Remove noexcept equality comparisons for match_results. * testsuite/28_regex/match_results/94627.cc: New test. 2020-06-29 Ville Voutilainen Backported from master: 2020-06-28 Ville Voutilainen PR libstdc++/95915 * include/std/variant (_Uninitialized): Adjust the condition and the comment. * testsuite/20_util/variant/95915.cc: New. * testsuite/20_util/variant/compile.cc: Add new test. 2020-06-24 Jonathan Wakely Backported from master: 2020-06-24 Jonathan Wakely * include/std/charconv (__from_chars_binary): Ignore leading zeros. * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases, not just 10 and 16. * testsuite/20_util/from_chars/3.cc: New test. 2020-06-24 Jonathan Wakely Backported from master: 2020-06-24 Jonathan Wakely * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers. * include/std/charconv (__detail::__to_chars): Avoid -Wsign-compare warning. 2020-06-24 Jonathan Wakely Backported from master: 2020-06-24 Jonathan Wakely PR libstdc++/95851 * include/std/charconv (__to_chars_i): Check for zero-sized buffer unconditionally. * testsuite/20_util/to_chars/95851.cc: New test. 2020-06-22 Jason Merrill * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Remove greedy_ops tests. * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Remove greedy_ops tests. 2020-06-11 Patrick Palka PR libstdc++/95578 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Also check that the iterator and sentinel have the same type before applying the unwrapping optimization for __normal_iterator. Split the check into two, one for the first iterator/sentinel pair and another for second iterator/sentinel pair. Remove uses of __niter_base, and remove uses of std::move on a __normal_iterator. * include/bits/ranges_algobase.h (__equal_fn): Likewise. (__copy_or_move): Likewise. Perform similar adjustments for the reverse_iterator and move_iterator optimizations. Inline the checks into the if-constexprs, and use using-declarations to make them less visually noisy. Remove uses of __niter_wrap. (__copy_or_move_backward): Likewise. * testsuite/25_algorithms/copy/95578.cc: New test. * testsuite/25_algorithms/copy_backward/95578.cc: New test. * testsuite/25_algorithms/equal/95578.cc: New test. * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test. * testsuite/25_algorithms/move/95578.cc: New test. * testsuite/25_algorithms/move_backward/95578.cc: New test. 2020-05-28 Patrick Palka PR libstdc++/95322 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy): Remove and instead define it ... (common_iterator::_Proxy): ... here. (common_iterator::operator->): Use it. * testsuite/24_iterators/common_iterator/2.cc: New test. * testsuite/std/ranges/adaptors/95322.cc: New test. 2020-05-26 Alexandre Oliva PR libstdc++/77691 * include/experimental/memory_resource (__resource_adaptor_imp::do_allocate): Handle max_align_t on x86-vxworks as on x86-solaris. (__resource_adaptor_imp::do_deallocate): Likewise. * testsuite/experimental/memory_resource/new_delete_resource.cc: Drop xfail. (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris. (test03): Drop max-align test for char-aligned alloc. 2020-05-23 Jonathan Wakely Backport from mainline 2020-05-23 Jonathan Wakely * include/bits/fs_path.h (__detail::_S_range_begin) (__detail::_S_range_end): Remove unintentional static specifiers. * include/experimental/bits/fs_path.h (__detail::_S_range_begin) (__detail::_S_range_end): Likewise. 2020-05-23 Jonathan Wakely Backport from mainline 2020-05-23 Jonathan Wakely PR libstdc++/95289 * include/debug/helper_functions.h (__get_distance): Only declare as a constexpr function for C++14 and up. * testsuite/25_algorithms/copy/debug/95289.cc: New test. 2020-05-21 Jonathan Wakely Backport from mainline 2020-05-21 Jonathan Wakely * include/experimental/executor (use_future_t::use_future_t()): Fix incorrect noexcept-specifier. * include/experimental/internet (basic_resolver_results): Adjust whitespace. * include/experimental/socket (__basic_socket_impl::release): Add member function. (basic_socket(io_context&, const endpoint_type&)): Fix argument to target constructor. (basic_socket::release(), basic_socket::release(error_code&)): Add missing member functions. (basic_socket::is_open()): Add nodiscard attribute. (basic_socket::close(error_code&)): Pass argument to base function. (basic_socket_acceptor::release()) (basic_socket_acceptor::release(error_code&)): Add missing member functions. (basic_socket_acceptor::is_open()): Add nodiscard attribute. (basic_socket_streambuf::error()): Add noexcept. (basic_socket_iostream::error()): Likewise. * testsuite/experimental/net/socket/basic_socket.cc: New test. 2020-05-21 Jonathan Wakely Backport from mainline 2020-05-21 Jonathan Wakely PR libstdc++/93983 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator): Reorder constraints to avoid recursion when constructors use iterator_traits (LWG 3420). * testsuite/24_iterators/customization_points/lwg3420.cc: New test. 2020-05-12 Jonathan Wakely Backport from mainline 2020-05-04 Jonathan Wakely PR libstdc++/94906 * src/c++17/memory_resource.cc (monotonic_buffer_resource::_Chunk::release): Use size_t for shift operands. Backport from mainline 2020-05-03 Jonathan Wakely PR libstdc++/94933 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types usable in constant expressions. * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and non-scalars. 2020-05-07 Jonathan Wakely Backport from mainline 2020-05-01 Jonathan Wakely Patrick Palka PR libstdc++/92894 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): Add trait to determine return type and an alias for it. (ranges::__cust_imove::_IMove::operator()): Use __result instead of deduced return type. * testsuite/24_iterators/customization_points/92894.cc: New test. * testsuite/24_iterators/indirect_callable/92894.cc: New test. 2020-05-07 Release Manager * GCC 10.1.0 released. 2020-05-07 Eric Botcazou * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. 2020-05-06 H.J. Lu * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 2020-05-06 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. 2020-05-06 Jonathan Wakely * doc/xml/manual/abi.xml (abi.versioning.history): Document library versions for GCC 9.[123] and 10.1 releases. * doc/html/*: Regenerate. 2020-05-06 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/aarch64-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. 2020-05-04 Jonathan Wakely * doc/xml/faq.xml: Use working link for SGI STL FAQ. * doc/html/*: Regenerate. 2020-05-01 Jonathan Wakely Backport from mainline 2020-05-01 Jonathan Wakely PR libstdc++/94901 * include/std/type_traits (__is_complete_or_unbounded): Replace BADNAME _T with _Tp. * testsuite/17_intro/badnames.cc: New test. 2020-04-30 Jonathan Wakely PR libstdc++/89510 * include/bits/alloc_traits.h (allocator_traits::_S_construct) (allocator_traits::_S_destroy) (allocator_traits>::construct): Use traits in noexcept-specifiers. * include/bits/allocator.h (allocator::construct) (allocator::destroy): Likewise. * include/ext/malloc_allocator.h (malloc_allocator::construct) (malloc_allocator::destroy): Likewise. * include/ext/new_allocator.h (new_allocator::construct) (new_allocator::destroy): Likewise. * testsuite/20_util/allocator/89510.cc: New test. * testsuite/ext/malloc_allocator/89510.cc: New test. * testsuite/ext/new_allocator/89510.cc: New test. 2020-04-29 Jonathan Wakely PR libstdc++/94854 * include/bits/basic_string.tcc: Update comment about explicit instantiations. 2020-04-28 Jonathan Wakely PR libstdc++/91480 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal): Remove non-standard macro. * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define to indicate P1032R1 support. * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise. * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise. * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise. * include/std/version (__cpp_lib_allocator_is_always_equal): Remove. (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view) (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define. * testsuite/20_util/function_objects/constexpr_searcher.cc: Check feature test macro. * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/copy/char/ constexpr.cc: Likewise. * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise. PR libstdc++/94831 * include/bits/alloc_traits.h (_S_construct): Restore placement new-expression for C++11/14/17 and call std::construct_at directly for C++20. * include/bits/stl_construct.h (_Construct): Revert to non-constexpr function returning void. * testsuite/20_util/specialized_algorithms/ uninitialized_value_construct/94831.cc: New test. * testsuite/23_containers/vector/cons/94831.cc: New test. 2020-04-28 Patrick Palka LWG 3433 subrange::advance(n) has UB when n < 0 * include/std/ranges (subrange::prev): Fix typo. (subrange::advance): Handle a negative argument as per the proposed resolution of LWG 3433. * testsuite/std/ranges/subrange/lwg3433.cc: New test. 2020-04-28 Jonathan Wakely Iain Sandoe PR c++/94759 * include/std/coroutine: Implement handing for non- class coroutine return types. 2020-04-24 Jonathan Wakely * include/experimental/executor (service_already_exists): Make default constructor public (LWG 3414). * testsuite/experimental/net/execution_context/make_service.cc: Check the service_already_exists can be default constructed. 2020-04-24 Kamlesh Kumar Jonathan Wakely PR libstdc++/90415 PR libstdc++/92156 * include/std/any (any): Rename template parameters for consistency with the standard. (any::_Decay): Rename to _Decay_if_not_any. (any::any(T&&):: Remove is_constructible from constraints. Remove non-standard overload. (any::any(in_place_type_t, Args&&...)) (any::any(in_place_type_t, initializer_list, Args&&...)) (any::emplace(Args&&...)) (any::emplace(initializer_list, Args&&...)): Use decay_t instead of _Decay. * testsuite/20_util/any/cons/90415.cc: New test. * testsuite/20_util/any/cons/92156.cc: New Test. * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives more robust. * testsuite/20_util/any/modifiers/92156.cc: New test. 2020-04-23 Jonathan Wakely * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. * doc/html/*: Regenerate. * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert value for C++17 to 201803L because P0858R0 is supported for C++17. * include/std/version (__cpp_lib_array_constexpr): Likewise. * testsuite/23_containers/array/element_access/constexpr_c++17.cc: Check for value corresponding to P0031R0 features being tested. * testsuite/23_containers/array/requirements/constexpr_iter.cc: Check for value corresponding to P0858R0 features being tested. * include/std/version (__cpp_lib_three_way_comparison): Define for freestanding builds. 2020-04-23 Thomas Rodgers * include/experimental/net/executor (system_context): Mark system_context::system_context() = delete. * testsuite/experimental/net/executor/1.cc: Add new test to check system_context is not default constructible. 2020-04-23 Iain Sandoe * include/std/coroutine: Update the inline namespace to __n4861. Add the __cpp_lib_coroutine define, set to 201902L. * include/std/version: Add __cpp_lib_coroutine, set to 201902L. 2020-04-22 Jonathan Wakely * include/std/execution (__cpp_lib_execution): Define to indicate support for P0024R2 and P1001R2. * include/std/version (__cpp_lib_execution): Define. * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro defined by , move other tests to new tests ... * testsuite/25_algorithms/pstl/feature_test-2.cc: New test. * testsuite/25_algorithms/pstl/feature_test-3.cc: New test. * testsuite/25_algorithms/pstl/feature_test-4.cc: New test. * testsuite/25_algorithms/pstl/feature_test-5.cc: New test. * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define different values for C++17 and C++20, to indicate different feature sets. Update value for C++20 to indicate P1032R1 support. * include/std/version (__cpp_lib_array_constexpr): Likewise. * testsuite/23_containers/array/comparison_operators/constexpr.cc: Check feature test macro. * testsuite/23_containers/array/element_access/constexpr_c++17.cc: New test. * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check feature test macro. * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test in C++17 mode and check feature test macro. * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define here. * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be defined by . * include/std/functional (__cpp_lib_concepts): Update macro value to indicate P1964R2 support. * include/std/version (__cpp_lib_concepts): Likewise. * testsuite/std/concepts/1.cc: Adjust expected value. * testsuite/std/concepts/2.cc: Likewise. * include/std/functional (__cpp_lib_constexpr_invoke): Rename to __cpp_lib_constexpr_functional. * include/std/version (__cpp_lib_constexpr_invoke): Likewise. * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust. * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to indicate P1006R1 support. (__cpp_lib_to_address): Define to indicate P0653R2 support. * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate P1227R2 support. * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate P0769R2 support. * include/std/atomic (__cpp_lib_atomic_float): Define to indicate P0020R6 support. * include/std/memory (__cpp_lib_assume_aligned): Define to indicate P1007R3 support. * include/std/memory_resource (__cpp_lib_polymorphic_allocator): Define to indicate P0339R6 support. * include/std/string_view (__cpp_lib_starts_ends_with): Define to indicate P0457R2 support. * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define to indicate P0758R1 support. (__cpp_lib_remove_cvref): Define to indicate P0550R2 support. (__cpp_lib_type_identity): Define to indicate P0887R1 support. * include/std/version (__cpp_lib_atomic_float) (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref) (__cpp_lib_type_identity, __cpp_lib_assume_aligned) (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator) (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with) (__cpp_lib_to_address): Define. * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old macro. * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion): Likewise. * include/std/version (__cpp_lib_map_insertion) (__cpp_lib_unordered_map_insertion): Remove. * include/std/condition_variable (__cpp_lib_jthread): Remove redundant definition. * include/std/stop_token (__cpp_lib_jthread): Update macro value to indicate P1869R1 support. * include/std/version (__cpp_lib_jthread): Update value. * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check for updated macro value. * testsuite/30_threads/condition_variable_any/stop_token/2.cc: Likewise. * testsuite/30_threads/jthread/1.cc: Likewise. * testsuite/30_threads/jthread/2.cc: Likewise. * testsuite/30_threads/stop_token/1.cc: Likewise. * testsuite/30_threads/stop_token/2.cc: Likewise. * testsuite/21_strings/basic_string/erasure.cc: Check for __cpp_lib_erase_if macro. * testsuite/23_containers/deque/erasure.cc: Add header name to #error messages. * testsuite/23_containers/forward_list/erasure.cc: Likewise. * testsuite/23_containers/list/erasure.cc: Likewise. * testsuite/23_containers/map/erasure.cc: Likewise. * testsuite/23_containers/set/erasure.cc: Likewise. * testsuite/23_containers/unordered_map/erasure.cc: Likewise. * testsuite/23_containers/unordered_set/erasure.cc: Likewise. * testsuite/23_containers/vector/erasure.cc: Likewise. 2020-04-21 Jonathan Wakely * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way to define operator<=>. * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test. * doc/Makefile.am (xml_sources_manual): Add missing XML files. * doc/Makefile.in: Regenerate. * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead of "this page". * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections to the C++11 status table. * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature proposals with table matching contents of the C++14 standard. * doc/xml/manual/status_cxx2017.xml: Add table matching contents of the C++17 standard. * doc/html/*: Regenerate. PR c++/94149 * include/std/type_traits (__is_nt_constructible_impl): Add partial specializations for bounded arrays with non-empty initializers. * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test. 2020-04-20 Thomas Rodgers * testsuite/lib/libstdc++.exp: Add additional_flags= -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when compiling with a newer Thread Building Blocks. 2020-04-20 Jonathan Wakely * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. * testsuite/20_util/is_constructible/51185.cc: Make test class a non-aggregate so that the test verifies the same thing in all -std modes. * testsuite/20_util/is_constructible/value-2.cc: Adjust expected results for some types when paren-init for aggregates is supported. * include/std/version (__cpp_lib_three_way_comparison): Update value. * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. (__detail::__synth3way): Add noexcept-specifier. * include/bits/stl_map.h (map): Define operator<=> and remove operator< for C++20. * include/bits/stl_multimap.h (multimap): Likewise. * include/bits/stl_multiset.h (multiset): Likewise. * include/bits/stl_set.h (set): Likewise. * include/bits/stl_tree.h (_Rb_tree): Likewise. (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant operator!= for C++20. * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20. * include/debug/multimap.h (__gnu_debug::multimap): Likewise. * include/debug/multiset.h (__gnu_debug::multiset): Likewise. * include/debug/set.h (__gnu_debug::set): Likewise. * testsuite/23_containers/map/operators/cmp_c++20.cc: New test. * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test. * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test. * testsuite/23_containers/set/operators/cmp_c++20.cc: New test. 2020-04-20 Matthias Kretz * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose. 2020-04-19 Jonathan Wakely * include/bits/stl_queue.h (queue): Define operator<=> for C++20. * include/bits/stl_stack.h (stack): Likewise. * testsuite/23_containers/queue/cmp_c++20.cc: New test. * testsuite/23_containers/stack/cmp_c++20.cc: New test. * include/bits/unordered_map.h (unordered_map, unordered_multimap): Remove redundant operator!= for C++20. * include/bits/unordered_set.h (unordered_set, unordered_multiset): Likewise. * include/debug/unordered_map (unordered_map, unordered_multimap): Likewise. * include/debug/unordered_set (unordered_set, unordered_multiset): Likewise. PR other/94629 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix redundant assignment in constructor. 2020-04-18 Jonathan Wakely * include/std/chrono (duration, time_point): Define operator<=> and remove redundant operator!= for C++20. * testsuite/20_util/duration/comparison_operators/three_way.cc: New test. * testsuite/20_util/time_point/comparison_operators/three_way.cc: New test. * testsuite/util/native_type/native_priority_queue.hpp: Use allocator_traits to rebind allocator. 2020-04-17 Jonathan Wakely * include/bits/forward_list.h (forward_list): Define operator<=> and remove redundant comparison operators for C++20. * include/bits/stl_bvector.h (vector): Likewise. * include/bits/stl_deque.h (deque): Likewise. * include/bits/stl_iterator.h (__normal_iterator): Likewise. * include/bits/stl_list.h (list): Likewise. * include/bits/stl_vector.h (vector): Likewise. * include/debug/deque (__gnu_debug::deque): Likewise. * include/debug/forward_list (__gnu_debug::forward_list): Likewise. * include/debug/list (__gnu_debug::list): Likewise. * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator): Likewise. * include/debug/vector (__gnu_debug::vector): Likewise. * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define operator<=> for C++20. * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test. * testsuite/23_containers/forward_list/cmp_c++20.cc: New test. * testsuite/23_containers/list/cmp_c++20.cc: New test. * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test. * testsuite/23_containers/vector/cmp_c++20.cc: New test. * include/bits/basic_string.h (basic_string): Define operator<=> and remove redundant comparison operators for C++20. * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits): Add comparison_category members. (__detail::__char_traits_cmp_cat): New helper to get comparison category from char traits class. * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not define for C++20. (sub_match): Define operator<=> and remove redundant comparison operators for C++20. (match_results): Remove redundant operator!= for C++20. * include/std/string_view (basic_string_view): Define operator<=> and remove redundant comparison operators for C++20. * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New test. * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc: New test. * testsuite/21_strings/basic_string_view/operations/copy/char/ constexpr.cc: Initialize variable. * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ constexpr.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add dg-do directive and remove comments showing incorrect signatures. * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: Likewise. * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc: New test. * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc: New test. * testsuite/28_regex/sub_match/compare_c++20.cc: New test. 2020-04-16 Jonathan Wakely * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove name of unused parameter. 2020-04-15 Jonathan Wakely * include/bits/fs_dir.h (file_status): Define operator== for C++20. (directory_entry): Define operator<=> and remove redundant comparison operators for C++20. * include/bits/fs_fwd.h (space_info): Define operator== for C++20. * include/bits/fs_path.h (path): Define operator<=> and remove redundant comparison operators for C++20. * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment. * 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. * include/bits/allocator.h (operator!=): Do not define for C++20. * include/bits/locale_classes.h (operator!=): Likewise. * include/bits/std_function.h (operator==(nullptr_t, const function&)) (operator!=(const function&, nullptr_t)) (operator!=(nullptr_t, const function&)): Likewise. * include/ext/bitmap_allocator.h (operator!=): Likewise. * include/ext/debug_allocator.h (operator!=): Likewise. * include/ext/extptr_allocator.h (operator!=): Likewise. * include/ext/malloc_allocator.h (operator!=): Likewise. * include/ext/mt_allocator.h (operator!=): Likewise. * include/ext/new_allocator.h (operator!=): Likewise. * include/ext/pool_allocator.h (operator!=): Likewise. * include/ext/throw_allocator.h (operator!=): Likewise. * include/std/bitset (bitset::operator!=): Likewise. * include/std/memory_resource (operator!=): Likewise. * include/std/scoped_allocator (operator!=): Likewise. * include/std/typeindex (operator<=>): Define for C++20. * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test. 2020-04-14 Jonathan Wakely * libsupc++/compare (compare_three_way): Fix constraint so that BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with. * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: New test. PR libstdc++/94562 * include/bits/shared_ptr.h (operator<=>): Define for C++20. * include/bits/shared_ptr_base.h (operator<=>): Likewise. * include/bits/unique_ptr.h (operator<=>): Add inline specifier. * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test. * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect std::less to be used when comparing std::shared_ptr objects in C++20. PR libstdc++/94565 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor. * testsuite/18_support/comparisons/categories/94565.cc: New test. 2020-04-13 Iain Sandoe * include/std/coroutine: Update coroutines builtin define, per n4861. 2020-04-09 Jonathan Wakely * libsupc++/compare (compare_three_way): Fix noexcept-specifier. (strong_order, weak_order, partial_order): Replace uses of <=> with compare_three_way function object (LWG 3324). * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add equality operator so that X satisfies three_way_comparable. * testsuite/18_support/comparisons/algorithms/strong_order.cc: Likewise. * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise. * include/bits/unique_ptr.h (operator<=>): Define for C++20. * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line. * testsuite/20_util/default_delete/void_neg.cc: Likewise. * testsuite/20_util/unique_ptr/comparison/compare.cc: New test. * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test. 2020-04-08 Jonathan Wakely * include/bits/slice_array.h (operator==(const slice&, const slice&)): Define for C++20. * include/std/complex (operator==(const T&, const complex&)) (operator!=(const complex&, const complex&)) (operator!=(const complex&, const T&)) (operator!=(const T&, const complex&)): Do not declare for C++20. * testsuite/26_numerics/slice/compare.cc: New test. * include/std/charconv (to_chars_result, from_chars_result): Add defaulted equality comparisons for C++20. * testsuite/20_util/from_chars/compare.cc: New test. * testsuite/20_util/to_chars/compare.cc: New test. 2020-04-07 Jonathan Wakely PR libstdc++/94520 * include/std/charconv (__integer_to_chars_result_type) (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to allow use in C++14. * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace use of std::string_view with std::string. * testsuite/20_util/from_chars/2.cc: Likewise. * testsuite/20_util/to_chars/1.cc: Likewise. * testsuite/20_util/to_chars/2.cc: Likewise. 2020-04-06 Jonathan Wakely PR libstdc++/94498 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it usable in constant expressions for C++20. (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add _GLIBCXX20_CONSTEXPR. (std::char_traits, std::char_traits) (std::char_traits): Make move, copy and assign usable in constant expressions for C++20. (std::char_traits, std::char_traits): Make move and copy usable in constant expressions for C++20. * include/std/string_view (basic_string_view::copy): Add _GLIBCXX20_CONSTEXPR. * testsuite/21_strings/basic_string_view/operations/copy/char/ constexpr.cc: New test. * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ constexpr.cc: New test. 2020-04-05 Gerald Pfeifer * doc/xml/manual/appendix_contributing.xml: Refer to Git documentation instead of Subversion. Switch to https. * doc/html/manual/appendix_contributing.html: Regenerate. 2020-04-03 Jonathan Wakely PR libstdc++/93960 * include/bits/ptr_traits.h (__to_address): Add special case for debug iterators, to avoid dereferenceable check. * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. * testsuite/20_util/to_address/debug.cc: New test. 2020-04-01 Andrea Corallo * testsuite/experimental/net/execution_context/use_service.cc: Require pthread and gthreads. 2020-04-01 Gerald Pfeifer * doc/xml/manual/appendix_free.xml: Move "free books" list from fsf.org to gnu.org. * doc/html/manual/appendix_free.html: Regenerate. 2020-03-31 Ville Voutilainen Library-side tests for parenthesized aggregate init PR c++/92878 PR c++/92947 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New. * testsuite/20_util/any/assign/92878_92947.cc: Likewise. * testsuite/20_util/any/cons/92878_92947.cc: Likewise. * testsuite/20_util/is_constructible/92878_92947.cc: Likewise. * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise. * testsuite/20_util/optional/cons/92878_92947.cc: Likewise. * testsuite/20_util/pair/cons/92878_92947.cc: Likewise. * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise. * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc: Likewise. * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise. * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise. * testsuite/20_util/variant/92878_92947.cc: Likewise. * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/forward_list/modifiers/92878_92947.cc: Likewise. * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise. * testsuite/23_containers/queue/92878_92947.cc: Likewise. * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc: Likewise. * testsuite/23_containers/stack/92878_92947.cc: Likewise. * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc: Likewise. * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc: Likewise. * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc: Likewise. * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc: Likewise. * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc: Likewise. 2020-03-28 Jonathan Wakely * testsuite/20_util/is_constructible/value-2.cc: Fix test to account for changes due to parenthesized aggregate-initialization in C++20. * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash with std::chrono::sys_time in C++20. * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause to constrain C++20 versions of comparison operators. Fix backwards logic of relational operators. (move_iterator): Use requires-clause to constrain comparison operators in C++20. Do not declare non-standard same-type overloads for C++20. * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result of comparisons and check using greedy_ops type. * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise. * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant main function from compile-only test. * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise. 2020-03-27 Jonathan Wakely * include/bits/range_cmp.h (__cpp_lib_ranges): Define. * include/bits/stl_iterator.h: Check value of __cpp_concepts so that C++20 concepts are required. * include/bits/stl_iterator_base_types.h: Likewise. * include/std/concepts: Likewise. * include/std/version: Likewise. * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test macro. * include/bits/stl_iterator.h (reverse_iterator::iterator_concept) (reverse_iterator::iterator_category): Define for C++20. (reverse_iterator): Define comparison operators correctly for C++20. (__normal_iterator): Add constraints to comparison operators for C++20. (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new overload for input iterators. (move_iterator): Add constraints to comparison operators for C++20. Define operator<=> for C++20. * testsuite/24_iterators/move_iterator/input_iterator.cc: New test. * testsuite/24_iterators/move_iterator/move_only.cc: New test. * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test. * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test. * include/bits/iterator_concepts.h (__detail::__decay_copy) (__detail::__member_begin, __detail::__adl_begin): Move here from . (__detail::__ranges_begin, __detail::__range_iter_t): Define. * bits/range_access.h (__cust_access::__decay_copy) (__cust_access::__member_begin, __cust_access::__adl_begin): Move to . (ranges::iterator_t): Use __detail::__range_iter_t. * include/bits/stl_iterator.h (back_insert_iterator): Simplify conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members. (front_insert_iterator): Likewise. (insert_iterator): Implement changes from P0896R4 for C++20. * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test. * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test. * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust for inclusion in synopsis_c++20.cc which expects different signatures for some function templates. * testsuite/24_iterators/insert_iterator/constexpr.cc: New test. * include/std/type_traits (__is_array_convertible): Move definition to immediately after is_convertible. 2020-03-26 Jonathan Wakely * include/std/chrono (chrono::days, chrono::weeks, chrono::years) (chrono::months, chrono::sys_days, chrono::local_t) (chrono::local_time, chrono::local_seconds, chrono::local_days): Define for C++20. (chrono::time_point): Add missing static assert. * testsuite/20_util/time_point/requirements/duration_neg.cc: New test. * testsuite/std/time/clock/file/overview.cc: New test. * testsuite/std/time/clock/file/members.cc: New test. * testsuite/std/time/syn_c++20.cc: New test. 2020-03-25 Mike Crowe * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New test. * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New test. 2020-03-25 Jonathan Wakely * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ... * include/std/chrono (filesystem::__file_clock): Here. (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys): Define public member functions for C++20. (is_clock, is_clock_v): Define traits for C++20. * include/std/condition_variable (condition_variable::wait_until): Add check for valid clock. * include/std/future (_State_baseV2::wait_until): Likewise. * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise. * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until): Likewise. * include/std/thread (this_thread::sleep_until): Likewise. * testsuite/30_threads/condition_variable/members/2.cc: Qualify slow_clock with new namespace. * testsuite/30_threads/condition_variable/members/clock_neg.cc: New test. * testsuite/30_threads/condition_variable_any/members/clock_neg.cc: New test. * testsuite/30_threads/future/members/clock_neg.cc: New test. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc: Qualify slow_clock with new namespace. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/ clock_neg.cc: New test. * testsuite/30_threads/shared_future/members/clock_neg.cc: New test. * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test. * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc: New test. * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify slow_clock with new namespace. * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New test. * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test. * testsuite/std/time/traits/is_clock.cc: New test. * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test namespace. 2020-03-21 Jonathan Wakely PR libstdc++/93245 * include/experimental/bits/fs_path.h (path::generic_string()): * testsuite/experimental/filesystem/path/generic/generic_string.cc: Improve test coverage. PR libstdc++/94242 * include/bits/fs_path.h (path::_S_str_convert): Replace first parameter with basic_string_view so that strings with different allocators can be accepted. (path::generic_string()): Use basic_string object that uses the right allocator type. * testsuite/27_io/filesystem/path/generic/94242.cc: New test. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve test coverage. 2020-03-18 Jonathan Wakely PR libstdc++/94033 * include/std/type_traits (__is_nt_default_constructible_atom): Remove. (__is_nt_default_constructible_impl): Remove. (__is_nothrow_default_constructible_impl): Remove. (__is_nt_constructible_impl): Add bool template parameter. Adjust partial specializations. (__is_nothrow_constructible_impl): Replace class template with alias template. (is_nothrow_default_constructible): Derive from alias template __is_nothrow_constructible_impl instead of __is_nothrow_default_constructible_impl. * testsuite/20_util/is_nothrow_constructible/94003.cc: New test. * include/std/stop_token (stop_token::_Stop_state_ref): Define comparison operators explicitly if the compiler won't synthesize them. * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check __cpp_lib_concepts before using iter_reference_t. * include/bits/stream_iterator.h (istream_iterator): Check __cpp_lib_concepts before using default_sentinel_t. * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise. PR libstdc++/94203 * include/experimental/executor (executor::executor(Executor)): Call make_shared directly instead of _M_create. Create _Tgt1 object. (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)): Call allocate_shared directly instead of _M_create. Create _Tgt2 object. (executor::target_type): Add cast needed for new _Tgt interface. (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func. (executor::_Tgt): Define the same interface whether RTTI is enabled or not. (executor::_Tgt::target_type, executor::_Tgt::target): Do not use std::type_info in the interface. (executor::_Tgt::_M_func): Add data member. (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates. (executor::_Tgt1::_S_func): Define function to access target without depending on RTTI. (executor::_M_create): Remove. (operator==, operator!=): Simplify comparisons for executor. * include/experimental/socket (is_error_code_enum): Define specialization before use. * testsuite/experimental/net/executor/1.cc: New test. 2020-03-16 Jonathan Wakely PR libstdc++/94199 * include/experimental/executor (service_already_exists): Add default constructor. Declare make_service to be a friend. * testsuite/experimental/net/execution_context/make_service.cc: New test. 2020-03-12 Jonathan Wakely * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass a null pointer to functions with nonnull(1) attribute. 2020-03-11 Patrick Palka * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix, 'address' -> 'std::__addressof'. * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of a non-forward input_range. * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make default constructor protected instead of deleted, like with input_iterator_wrapper. (test_range::iterator): Add comment explaining that this type is used only when the underlying wrapper is input_iterator_wrapper or output_iterator_wrapper. Remove delegating defaulted constructor so that the inherited default constructor is used instead. LWG 3286 ranges::size is not required to be valid after a call to ranges::begin on an input range * include/std/ranges (subrange::subrange): Split single-argument constructor into two, one constrained by _S_store_size and another by !_S_store_size. (take_view::begin): Call size() before calling ranges::begin(_M_base). * testsuite/std/ranges/adaptors/lwg3286.cc: New test. * testsuite/std/ranges/subrange/lwg3286.cc: New test. 2020-03-10 Jonathan Wakely * include/std/ranges (split_view::_OuterIter::__at_end): Use __current instead of _M_current. (split_view::_OuterIter::operator++): Likewise. * include/std/ranges (transform_view::_Iterator::__iter_move): Remove. (transform_view::_Iterator::operator*): Add noexcept-specifier. (transform_view::_Iterator::iter_move): Inline __iter_move body here. (split_view::_OuterIter::__current): Add noexcept. (split_view::_InnerIter::__iter_swap): Remove. (split_view::_InnerIter::__iter_move): Remove. (split_view::_InnerIter::_M_i_current): New accessors. (split_view::_InnerIter::__at_end): Use _M_i_current(). (split_view::_InnerIter::operator*): Likewise. (split_view::_InnerIter::operator++): Likewise. (iter_move(const _InnerIter&)): Likewise. (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise. * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier for iter_move and iter_swap on split_view's inner iterator. PR c++/94117 * include/std/ranges (ranges::transform_view::_Iterator::iter_move): Change expression in noexcept-specifier to match function body. * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add comment explaining multiple dg-do directives. * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive so test is run as well as compiled. 2020-03-09 Jonathan Wakely PR libstdc++/94063 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to handle concatenations that change the type of the first component. (path::operator+=(basic_string_view)): Likewise. * testsuite/27_io/filesystem/path/concat/94063.cc: New test. 2020-03-06 Patrick Palka * include/std/ranges (join_view::_Sentinel<_Const>): Befriend join_view::_Sentinel. * testsuite/std/ranges/adaptors/join.cc: Augment test. PR libstdc++/93978 * include/bits/range_access.h (__cust_access::_Empty::operator()): Declare return type to be bool instead of auto. * testsuite/std/ranges/adaptors/93978.cc: New test. 2020-03-06 Jonathan Wakely PR libstdc++/94069 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER] (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect second argument to __glibcxx_rwlock_init. * testsuite/30_threads/shared_timed_mutex/94069.cc: New test. PR libstdc++/93244 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust test to not fail due to PR 94063. * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise. * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise. 2020-03-06 Andreas Krebbel * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it would match ENOSYS. 2020-03-05 Jonathan Wakely * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable. * testsuite/27_io/filesystem/operations/copy.cc: Fix typo. * testsuite/experimental/filesystem/operations/copy.cc: Likewise. * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type for return value, and in comparison. * testsuite/experimental/filesystem/operations/file_size.cc: Likewise. PR libstdc++/94051 * include/std/string_view: Include . * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test. 2020-03-04 Jonathan Wakely * include/bits/cpp_type_traits.h (__memcpyable): Fix comment. 2020-03-04 Patrick Palka PR libstdc++/94017 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine condition for when to use memset, making sure to additionally check that the output pointer's value type is a non-volatile byte type. Instead of requiring that the fill type is a byte type, just require that it's an integral type. * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc: New test. * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was blocked by PR 94017. * testsuite/25_algorithms/fill/94017.cc: New test. * testsuite/25_algorithms/fill_n/94017.cc: New test. LWG 3355 The memory algorithms should support move-only input iterators introduced by P1207 * include/bits/ranges_uninitialized.h (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting to copy __ifirst, which could be a move-only input iterator. Use operator- instead of ranges::distance to compute distance from a sized sentinel. (__uninitialized_copy_n_fn::operator()): Likewise. (__uninitialized_move_fn::operator()): Likewise. (__uninitialized_move_n_fn::operator()): Likewise. (__uninitialized_destroy_fn::operator()): Use std::move to avoid attempting to copy __first. (__uninitialized_destroy_n_fn::operator()): Likewise. * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: Augment test. * .../specialized_algorithms/uninitialized_copy/constrained.cc: Likewise. * .../specialized_algorithms/uninitialized_move/constrained.cc: Likewise. * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make protected instead of private. (test_sized_range_sized_sent): New. * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy): New testsuite iterator. * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it. * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise. * include/bits/ranges_uninitialized.h (uninitialized_copy_fn::operator()): Pass a reference type as the first argument to is_nothrow_assignable_v. (uninitialized_copy_fn::operator()): Likewise. (uninitialized_move_fn::operator()): Likewise. Return an in_out_result with the input iterator stripped of its move_iterator. (uninitialized_move_n_fn::operator()): Likewise. (uninitialized_fill_fn::operator()): Pass a reference type as the first argument to is_nothrow_assignable_v. (uninitialized_fill_n_fn::operator()): Likewise. 2020-03-03 Jonathan Wakely PR libstdc++/94013 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New traits to control when to use memmove and memcmp optimizations. (__is_nonvolatile_trivially_copyable): New helper trait. * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not use memcmp optimization with volatile data. * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable. (__copy_or_move, __copy_or_move_backward): Use __memcpyable. * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable. (__copy_move_backward_a2): Likewise. (__equal_aux1): Use __memcmpable. (__lexicographical_compare_aux): Do not use memcmp optimization with volatile data. * testsuite/25_algorithms/copy/94013.cc: New test. * testsuite/25_algorithms/copy_backward/94013.cc: New test. * testsuite/25_algorithms/equal/94013.cc: New test. * testsuite/25_algorithms/fill/94013.cc: New test. * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test. * testsuite/25_algorithms/move/94013.cc: New test. * testsuite/25_algorithms/move_backward/94013.cc: New test. * include/bits/stl_algobase.h (lexicographical_compare_three_way): Avoid redundant iterator comparisons (LWG 3410). 2020-03-02 Jonathan Wakely PR libstdc++/93972 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to differ. * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test. * include/std/ranges (__detail::__maybe_empty_t): Rename to __maybe_present_t. (__adaptor::_RangeAdaptor, join_view, split_view): Use new name. * include/bits/ranges_algo.h (shift_right): Add 'typename' to dependent type. 2020-03-01 H.J. Lu * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 2020-02-29 John David Anglin * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*. * testsuite/17_intro/headers/c++2011/charset.cc: Likewise. * testsuite/17_intro/headers/c++2014/charset.cc: Likewise. * testsuite/17_intro/headers/c++2017/charset.cc: Likewise. * testsuite/17_intro/headers/c++2020/charset.cc: Likewise. * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: Add libatomic option. * testsuite/30_threads/jthread/jthread.cc: Likewise. 2020-02-29 François Dumont * include/bits/stl_algo.h (__find_if, __count_if, __is_permutation, std::is_permutation): Move... * include/bits/stl_algobase.h: ...here. * include/bits/hashtable_policy.h: Remove include. 2020-02-29 John David Anglin * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic option. * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise. * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise. * testsuite/30_threads/stop_token/stop_source.cc: Likewise. * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise. * testsuite/30_threads/stop_token/stop_token.cc: Likewise. * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: Likewise. PR libstdc++/92906 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 2020-02-28 Patrick Palka PR libstdc++/93972 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): Fix condition for when to use memcmp, making it consistent with the corresponding condition used in std::lexicographical_compare. * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test. * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to existing signatures for C++2a. 2020-02-28 Jonathan Wakely * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run test instead of just compiling it. 2020-02-28 Patrick Palka * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false whenever the underlying range models common_range. * include/std/ranges (__detail::_CachedPosition): New struct. (views::filter_view::_S_needs_cached_begin): New member variable. (views::filter_view::_M_cached_begin): New member variable. (views::filter_view::begin): Use _M_cached_begin to cache its result. (views::drop_view::_S_needs_cached_begin): New static member variable. (views::drop_view::_M_cached_begin): New member variable. (views::drop_view::begin): Use _M_cached_begin to cache its result when _S_needs_cached_begin. (views::drop_while_view::_M_cached_begin): New member variable. (views::drop_while_view::begin): Use _M_cached_begin to cache its result. (views::reverse_view::_S_needs_cached_begin): New static member variable. (views::reverse_view::_M_cached_begin): New member variable. (views::reverse_view::begin): Use _M_cached_begin to cache its result when _S_needs_cached_begin. * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that drop_view::begin caches its result. * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check that drop_while_view::begin caches its result. * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that filter_view::begin caches its result. * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that reverse_view::begin caches its result. 2020-02-28 Jonathan Wakely * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for filesystems that silently truncate timestamps. * testsuite/experimental/filesystem/operations/last_write_time.cc: Likewise. * testsuite/21_strings/basic_string/cons/char/1.cc: Disable -Wstringop-overflow warnings. 2020-02-27 Jonathan Wakely * testsuite/lib/libstdc++.exp (v3_target_compile): Add -fdiagnostics-urls=never to options. 2020-02-27 Patrick Palka * include/std/ranges (transform_view::_Iterator<_Const>): Befriend _Iterator. (transform_view::_Sentinel<_Const>): Befriend _Sentinel. (take_view::_Sentinel<_Const>): Likewise. (take_while_view::_Sentinel<_Const>): Likewise. (split_view::_OuterIter<_Const>): Befriend _OuterIter. * testsuite/std/ranges/adaptors/split.cc: Augment test. * testsuite/std/ranges/adaptors/take.cc: Augment test. * testsuite/std/ranges/adaptors/take_while.cc: Augment test. * testsuite/std/ranges/adaptors/transform.cc: Augment test. * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the base() of a vector<>::iterator is a pointer. * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise. * testsuite/25_algorithms/move/constrained.cc: Likewise. * testsuite/25_algorithms/move_backward/constrained.cc: Likewise. * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data() instead of &foo[0]. * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise. * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise. * testsuite/25_algorithms/shuffle/constrained.cc: Likewise. * testsuite/25_algorithms/sort/constrained.cc: Likewise. * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise. 2020-02-27 Jonathan Wakely * include/debug/array (operator<=>): Define for C++20. * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adjust dg-error line numbers. * testsuite/23_containers/array/tuple_interface/ tuple_element_debug_neg.cc: Likewise. * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before defining _GLIBCXX_ASSERTIONS. * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise. * testsuite/23_containers/span/first_assert_neg.cc: Likewise. * testsuite/23_containers/span/front_assert_neg.cc: Likewise. * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise. * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise. * testsuite/23_containers/span/last_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise. * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise. * include/debug/string (__gnu_debug::basic_string::insert): Fix for C++98 where the member function of the base class returns void. * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add equality comparisons that support value-initialized iterators. * include/bits/boost_concept_check.h (__function_requires): Add _GLIBCXX14_CONSTEXPR. * testsuite/25_algorithms/min/concept_checks.cc: New test. 2020-02-26 Patrick Palka PR libstdc++/93936 * include/std/ranges (split_view::_InnerIter::operator==): Compare the operands' _M_i rather than their _M_i.current(). * testsuite/std/ranges/adaptors/split.cc: Augment test. P1645R1 constexpr for algorithms * include/bits/stl_numeric.h (iota, accumulate, inner_product, partial_sum, adjacent_difference): Make conditionally constexpr for C++20. * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature test macro. (reduce, transform_reduce, exclusive_scan, inclusive_scan, transform_exclusive_scan, transform_inclusive_scan): Make conditionally constexpr for C++20. * include/std/version (__cpp_lib_constexpr_numeric): Define. * testsuite/26_numerics/accumulate/constexpr.cc: New test. * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise. * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise. * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise. * testsuite/26_numerics/inner_product/constexpr.cc: Likewise. * testsuite/26_numerics/iota/constexpr.cc: Likewise. * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise. * testsuite/26_numerics/reduce/constexpr.cc: Likewise. * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise. * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise. * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise. 2020-02-26 Jonathan Wakely * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare variables in smaller scope and avoid calling ranges::distance when we know they are pointers. Remove statically-unreachable use of __builtin_unreachable(). * include/bits/stl_algobase.h (__lexicographical_compare::__lc): Define inline. * include/std/ranges (__detail::__maybe_empty_t): Define new helper alias. (__detail::__maybe_const_t): Likewise. (__adaptor::_RangeAdaptor): Use __maybe_empty_t. (transform_view, take_view, take_while_view, elements_view): Use __maybe_const_t. (join_view, split_view): Use both. 2020-02-25 Patrick Palka LWG 3397 basic_istream_view::iterator should not provide iterator_category * include/std/ranges (basic_istream_view:_Iterator::iterator_category): Rename to ... (basic_istream_view:_Iterator::iterator_concept): ... this. * testsuite/std/ranges/istream_view.cc: Augment test. LWG 3325 Constrain return type of transformation function for transform_view * include/std/ranges (transform_view): Constrain the return type of the transformation function as per LWG 3325. * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test. LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained * include/std/ranges (join_view::_Iterator::operator--): Require that range_reference_t<_Base> models common_range. * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test. LWG 3301 transform_view::_Iterator has incorrect iterator_category * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust determination of iterator_category as per LWG 3301. * testsuite/std/ranges/adaptors/transform.cc: Augment test. LWG 3292 iota_view is under-constrained * include/std/ranges (iota_view): Require that _Winc models semiregular as per LWG 3292. * testsuite/std/ranges/iota/lwg3292_neg.cc: New test. 2020-02-25 Jonathan Wakely * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove during constant evaluation. Call __builtin_memmove directly instead of __memmove. (__copy_or_move_backward): Likewise. * include/bits/stl_algobase.h (__memmove): Remove. (__copy_move::__copy_m) (__copy_move_backward::__copy_m): Use __builtin_memmove directly instead of __memmove. (__copy_move_a2): Do not use memmove during constant evaluation. (__copy_move_backward_a2): Use _IsMove constant to select correct __copy_move_backward specialization. * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies begin turned into moves during constant evaluation. * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of previous commit. PR libstdc++/93872 * include/bits/stl_algobase.h (__memmove): Cast away const before doing move assignment. * testsuite/25_algorithms/move/93872.cc: New test. * testsuite/25_algorithms/move_backward/93872.cc: New test. 2020-02-24 Patrick Palka PR libstdc++/93884 * include/bits/ranges_algobase.h (__copy_or_move, __copy_or_move_backward): Don't inspect the iter_value_t of the output iterator, instead inspect its iterator_traits directly. * include/bits/stl_iterator.h (back_insert_iterator::container): Conditionally initialize. (back_insert_iterator::difference_type): Conditionally define. (back_insert_iterator::back_insert_iterator): Conditionally define this default constructor. (front_insert_iterator::container): Conditionally initialize. (front_insert_iterator::difference_type): Conditionally define. (front_insert_iterator::front_insert_iterator): Conditionally define this default constructor. * 24_iterators/back_insert_iterator/pr93884.cc: New test. * 24_iterators/front_insert_iterator/pr93884.cc: New test. P0769R2 Add shift to * include/bits/ranges_algo.h (shift_left, shift_right): New. * testsuite/25_algorithms/shift_left/1.cc: New test. * testsuite/25_algorithms/shift_right/1.cc: New test. 2020-02-24 Jonathan Wakely * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): Make noexcept-specifier conditional. * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check noexcept-specifier. * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): Add constructor. (operator==(istream_iterator, default_sentinel_t)): Add operator. (ostream_iterator::difference_type): Define to ptrdiff_t for C++20. * include/bits/streambuf_iterator.h (istreambuf_iterator(default_sentinel_t)): Add constructor. (operator==(istreambuf_iterator, default_sentinel_t)): Add operator. * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: New test. * testsuite/24_iterators/istream_iterator/sentinel.cc: New test. * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: New test. * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. * include/std/ranges (__deep_const_range, __enable_view_impl): Remove. (ranges::enable_view): Simplify (LWG 3326). * include/bits/range_access.h (ranges::enable_view): Declare. * include/bits/regex.h (__enable_view_impl): Remove partial specialization. * include/bits/stl_multiset.h (__enable_view_impl): Likewise. * include/bits/stl_set.h (__enable_view_impl): Likewise. * include/bits/unordered_set.h (__enable_view_impl): Likewise. * include/debug/multiset.h (__enable_view_impl): Likewise. * include/debug/set.h (__enable_view_impl): Likewise. * include/debug/unordered_set (__enable_view_impl): Likewise. * include/experimental/string_view (ranges::enable_view): Define partial specialization. * include/std/span (ranges::enable_view): Likewise. * include/std/string_view (ranges::enable_view): Likewise. * testsuite/std/ranges/view.cc: Check satisfaction of updated concept. 2020-02-21 Jonathan Wakely * include/std/optional (operator<=>(optional, optional)) (operator<=>(optional, nullopt), operator<=>(optional, U)): Define for C++20. * include/std/tuple (__tuple_cmp): New helper function for <=>. (operator<=>(tuple, tuple...)): Define for C++20. * include/std/variant (operator<=>(variant, variant)) (operator<=>(monostate, monostate)): Define for C++20. * testsuite/20_util/optional/relops/three_way.cc: New test. * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test. * testsuite/20_util/variant/89851.cc: Move to ... * testsuite/20_util/variant/relops/89851.cc: ... here. * testsuite/20_util/variant/90008.cc: Move to ... * testsuite/20_util/variant/relops/90008.cc: ... here. * testsuite/20_util/variant/relops/three_way.cc: New test. 2020-02-20 Patrick Palka * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility function. (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use __maybe_refwrap to capture lvalue references by reference, and then use unwrap_reference_t to forward the by-reference captures as references. * testsuite/std/ranges/adaptors/split.cc: Augment test. * testsuite/std/ranges/adaptors/split_neg.cc: New test. * include/std/ranges (iota_view): Forward declare _Sentinel. (iota_view::_Iterator): Befriend _Sentinel. (iota_view::_Sentinel::_M_equal): New member function. (iota_view::_Sentinel::operator==): Use it. (views::_Iota::operator()): Forward __f using the correct type. * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota with integers of different signedness, to appease iota_view's deduction guide. * testsuite/std/ranges/iota/iota_view.cc: Augment test. 2020-02-20 Jonathan Wakely * include/bits/range_access.h (ranges::begin): Reject array of incomplete type. (ranges::end, ranges::size): Require arrays to be bounded. (ranges::data): Require lvalue or borrowed_range. (ranges::iterator_t): Remove constraint. * testsuite/std/ranges/access/begin.cc: Do not check array of incomplete type. * testsuite/std/ranges/access/begin_neg.cc: New test. * testsuite/std/ranges/access/end_neg.cc: Adjust expected error. * testsuite/std/ranges/access/size_neg.cc: Adjust expected error. * testsuite/std/ranges/access/ssize.cc: Do not check array of incomplete type. * include/std/system_error (error_category::operator<=>) (operator<=>(const error_code&, const error_code&)) (operator<=>(const error_condition&, const error_condition&)): Define for C++20. * testsuite/19_diagnostics/error_category/operators/less.cc: New test. * testsuite/19_diagnostics/error_category/operators/three_way.cc: New test. * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove incorrect comment. * testsuite/19_diagnostics/error_code/operators/less.cc: New test. * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove incorrect comment. * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test. * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove incorrect comment. * testsuite/19_diagnostics/error_condition/operators/less.cc: New test. * testsuite/19_diagnostics/error_condition/operators/not_equal.cc: Remove incorrect comment. * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New test. * libsupc++/typeinfo (type_info::operator!=): Remove for C++20. * include/std/thread (thread::id::operator<=>): Define for C++20. * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of functions in namespace std. * testsuite/30_threads/thread/id/operators_c++20.cc: New test. 2020-02-19 Patrick Palka * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the null terminator of the underlying string as part of the test_range. (main): Call test03. 2020-02-19 Jonathan Wakely * include/bits/stl_iterator.h (common_iterator): Add copyable requirement (LWG 3385). * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust expected declaration. * include/std/ranges (take_while_view, drop_view, drop_while_view) (elements_view:_Iterator): Initialize data members (LWG 3364). * libsupc++/compare (three_way_comparable): Remove always-false check that should have been removed with weak_equality (P1959R0). (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360). * include/std/concepts (__detail::__partially_ordered_with): Move here from . (totally_ordered, totally_ordered_with): Use __partially_ordered_with to simplify definition (LWG 3331). * libsupc++/compare (__detail::__partially_ordered_with): Move to . * include/std/concepts (totally_ordered_with): Remove redundant requirement (LWG 3329). * include/std/ranges (__detail::__convertible_to_non_slicing): New helper concept. (__detail::__pair_like_convertible_to): Remove. (__detail::__pair_like_convertible_from): Add requirements for non-slicing conversions. (subrange): Constrain constructors with __convertible_to_non_slicing. Remove constructors from pair-like types. Add new deduction guide. * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test. * include/bits/iterator_concepts.h (iter_move): Add declaration to prevent unqualified lookup finding a suitable declaration (LWG 3247). * include/std/memory_resource (polymorphic_allocator::allocate) (polymorphic_allocator::allocate_object): Change type of exception to bad_array_new_length (LWG 3237). * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test. * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348). * include/std/version (__cpp_lib_unwrap_ref): Likewise. * testsuite/20_util/unwrap_reference/1.cc: Check macro. * testsuite/20_util/unwrap_reference/3.cc: New test. * include/std/numeric (midpoint(T8, T*)): Do not check for complete type during overload resolution, use static assert instead (LWG 3200). * testsuite/26_numerics/midpoint/pointer.cc: Do not test with incomplete type. * testsuite/26_numerics/midpoint/pointer_neg.cc: New test. * include/std/span (span(T (&)[N])): Use non-deduced context to prevent first parameter from interfering with class template argument deduction (LWG 3369). * testsuite/23_containers/span/deduction.cc: Add missing 'const'. * testsuite/23_containers/span/lwg3255.cc: Check for construction from rvalues. * include/std/span (span::const_iterator, span::const_reverse_iterator) (span::cbegin(), span::cend(), span::crbegin(), span::crend()): Remove (LWG 3320). * testsuite/23_containers/span/everything.cc: Replace uses of cbegin and cend. * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_copy/ constrained.cc: Likewise. * testsuite/20_util/specialized_algorithms/ uninitialized_default_construct/constrained.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_fill/ constrained.cc: Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_move/ constrained.cc: Likewise. * testsuite/20_util/specialized_algorithms/ uninitialized_value_construct/constrained.cc: Likewise. * include/bits/range_access.h (range_size_t): Define alias template. * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. * include/std/ranges (filter_view, transform_view, take_view) (join_view, split_view, reverse_view): Remove commented-out converting constructors (LWG 3280). * include/std/memory (uninitialized_construct_using_allocator): Use std::construct_at (LWG 3321). * include/std/memory_resource (polymorphic_allocator::allocate_bytes) (polymorphic_allocator::allocate_object) (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304). LWG 3379. "safe" in several library names is misleading * include/bits/range_access.h (enable_safe_range): Rename to enable_borrowed_range. (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range. (safe_range): Rename to borrowed_range. * include/bits/ranges_algo.h: Adjust to use new names. * include/bits/ranges_algobase.h: Likewise. * include/bits/ranges_uninitialized.h: Likewise. * include/std/ranges: Likewise. (safe_iterator_t): Rename to borrowed_iterator_t. (safe_subrange_t): Rename to borrowed_subrange_t. * include/std/span: Adjust to use new names. * include/std/string_view: Likewise. * include/experimental/string_view: Likewise. * testsuite/std/ranges/access/begin.cc: Likewise. * testsuite/std/ranges/access/cbegin.cc: Likewise. * testsuite/std/ranges/access/cdata.cc: Likewise. * testsuite/std/ranges/access/cend.cc: Likewise. * testsuite/std/ranges/access/crbegin.cc: Likewise. * testsuite/std/ranges/access/crend.cc: Likewise. * testsuite/std/ranges/access/data.cc: Likewise. * testsuite/std/ranges/access/end.cc: Likewise. * testsuite/std/ranges/access/rbegin.cc: Likewise. * testsuite/std/ranges/access/rend.cc: Likewise. * testsuite/std/ranges/safe_range.cc: Likewise. * testsuite/std/ranges/safe_range_types.cc: Likewise. * testsuite/util/testsuite_iterators.h: Likewise. * include/std/ranges (tuple_element<0, const subrange>) (tuple_element<1, const subrange>): Add partial specializations (LWG 3398). * testsuite/std/ranges/subrange/tuple_like.cc: New test. * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn) (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool. 2020-02-18 Patrick Palka P1983R0 Wording for GB301, US296, US292, US291, and US283 * include/std/ranges (filter_view::pred): New member function. (join_view::_Iterator::_Iterator): Remove now-redundant comment since P1983R0 fixes the highlighted issue in the same way. (join_view::_Iterator<_Const>): Add friend join_view::_Iterator. (join_view::_M_inner): Remove mutable specifier, effectively reverting the proposed wording changes of P3278. (join_view::begin): Refine the condition for when to return a const iterator. (split_view::_OuterIter::_OuterIter): Adjust constraints. * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred exists and works. 2020-02-18 Jonathan Wakely PR libstdc++/93818 * include/std/ranges (_RangeAdaptor): Add deduction guide. (filter_view::_Iterator): Add alias _Vp_iter and use in place of iterator_t<_Vp>. (filter_view::_Iterator::_S_iter_cat()): Add 'typename'. (transform_view::_Iterator): Add alias _Base_iter and use in place of iterator_t<_Base>. (transform_view::_Iterator::_S_iter_cat()): Add 'typename'. (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases. (join_view::_Iterator::_S_iter_cat()): Add 'typename'. (split_view::_InnerIter::_S_iter_cat()): Likewise. * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid assumption that long is wider than int. * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise. * testsuite/20_util/integer_comparisons/less.cc: Likewise. * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise. * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise. P1976R2 Fixed-size span construction from dynamic range * include/std/span (__cpp_lib_span): Update value. (span(It, size_type), span(It, End)): Make conditionally explicit. Add assertion. (span(R&&), span(const span&)): Likewise and relax constraints. (span::first(), span::last()): Use explicit type in return statement. (as_bytes, as_writable_bytes): Likewise. * include/std/version (__cpp_lib_span): Update value. * testsuite/23_containers/span/1.cc: Check new value. * testsuite/23_containers/span/2.cc: Check new value. * testsuite/23_containers/span/explicit.cc: New test. * include/std/span (span::__is_compatible_array): Simplify alias template by using requires-clause. (span::__is_compatible_ref): New alias template for constraining constructors. (span::__is_compatible_iterator, span::__is_compatible_range): Remove. (span(It, size_type), span(It, End)): Use __is_compatible_ref. (span(T(&)[N], span(array&), span(const array&)): Remove redundant parentheses. (span(R&&)): Add missing constraints. * include/std/span (span): Reorder members and rename template parameters to match declarations in the C++2a working paper. P2116R0 Remove tuple-like protocol support from fixed-extent span * include/std/span (get, tuple_size, tuple_element): Remove. * testsuite/23_containers/span/everything.cc: Remove checks for tuple-like API. * testsuite/23_containers/span/get_neg.cc: Remove. * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove. * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove. * testsuite/23_containers/span/tuple_size_neg.cc: Remove. 2020-02-17 Patrick Palka P2106R0 Alternative wording for GB315 and GB316 * include/bits/ranges_algo.h (in_fun_result): New. (for_each_result, for_each_n_result): Change into an alias of in_fun_result. (in_in_result): New. (mismatch_result): Change into an alias of in_in_result. (copy_if_result): Change into an alias of in_out_result. (swap_ranges_result): Change into an alias of in_in_result. (unary_transform_result): Change into an alias of in_out_result. (in_in_out_result): New. (binary_transform_result): Change into an alias of in_in_out_result. (replace_copy_result, replace_copy_if_result, remove_copy_if_result, remove_copy_result, unique_copy_result, reverse_copy_result, rotate_copy_result, partial_sort_copy_result): Change into an alias of in_out_result. (in_out_out_result): New. (partition_copy_result, merge_result): Change into an alias of in_out_out_result. (set_union_result, set_intersection_result): Change into an alias of in_in_out_result. (set_difference_result): Change into an alias of in_out_result. (set_symmetric_difference): Change into an alias of in_in_out_result. (min_max_result): New. (minmax_result, minmax_element_result): Change into an alias of min_max_result. (in_found_result): New. (next_permutation_result, prev_permutation_result): Change into an alias of in_found_result. (__next_permutation_fn::operator(), __prev_permutation_fn::operator()): Adjust following changes to next_permutation_result and prev_permutation_result. * include/bits/ranges_algobase.h (in_out_result): New. (copy_result, move_result, move_backward_result, copy_backward_result, copy_n_result): Change into an alias of in_out_result. * include/bits/ranges_uninitialized.h (uninitialized_copy_result, uninitialized_copy_n_result, uninitialized_move_result, uninitialized_move_n_result): Likewise. * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of structured bindings. * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise. P1243R4 Rangify new algorithms * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn, for_each_n, __sample_fn, sample, __clamp_fn, clamp): New. * testsuite/25_algorithms/clamp/constrained.cc: New test. * testsuite/25_algorithms/for_each/constrained.cc: Augment test. * testsuite/25_algorithms/sample/constrained.cc: New test. 2020-02-17 Jonathan Wakely P1964R2 Wording for boolean-testable * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) (__adjacent_find_fn): Cast result of predicate to bool. * include/std/concepts (__boolean): Remove. (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add new helper concepts. (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with) (predicate): Use __boolean_testable instead of boolean. * libsupc++/compare (__detail::__partially_ordered, _Synth3way): Likewise. P1970R2 Consistency for size() functions: Add ranges::ssize * include/bits/range_access.h (_SSize, ssize): Define for C++20. * testsuite/std/ranges/access/ssize.cc: New test. P1956R1 On the names of low-level bit manipulation functions * include/bits/hashtable_policy.h: Update comment. * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename. (ispow2, ceil2, floor2, log2p1): Likewise. (__cpp_lib_int_pow2): Add feature test macro. * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1. * include/std/memory (assume_aligned): Adjust use of ispow2. * include/std/version (__cpp_lib_int_pow2): Add. * libsupc++/new_opa.cc: Adjust use of __ispow2. * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1. * testsuite/17_intro/freestanding.cc: Adjust use of ispow2. * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ... * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here. * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ... * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here. * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ... * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here. * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ... * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here. * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ... * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here. * include/std/charconv: Add comment. PR libstdc++/92546 (partial) * include/bits/random.h (uniform_random_bit_generator): Move definition to . * include/bits/ranges_algo.h: Include instead of . * include/bits/ranges_algobase.h: Do not include . * include/bits/uniform_int_dist.h (uniform_random_bit_generator): Move here. * include/std/ranges: Do not include . * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. PR libstdc++/92546 (partial) * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/int_limits.h: New header. * include/bits/parse_numbers.h (__select_int::_Select_int): Replace numeric_limits with __detail::__int_limits. * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1): Likewise. * include/std/charconv (__to_chars_8, __from_chars_binary) (__from_chars_alpha_to_num, from_chars): Likewise. * include/std/memory_resource (polymorphic_allocator::allocate) (polymorphic_allocator::allocate_object): Likewise. * include/std/string_view (basic_string_view::_S_compare): Likewise. * include/std/utility (in_range): Likewise. * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for extra error about incomplete type __int_limits. * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include . * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise. * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise. * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise. * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise. * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise. * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise. * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise. * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise. * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise. * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise. * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise. * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update value for partial_ordering::unordered. * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add const-qualified expression variations. * include/std/concepts (copyable): Likewise. * include/std/type_traits (__is_standard_integer): New helper trait. * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater) (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20. * include/std/version (__cpp_lib_integer_comparison_functions): Define. * testsuite/20_util/integer_comparisons/1.cc: New test. * testsuite/20_util/integer_comparisons/2.cc: New test. * testsuite/20_util/integer_comparisons/equal.cc: New test. * testsuite/20_util/integer_comparisons/equal_neg.cc: New test. * testsuite/20_util/integer_comparisons/greater_equal.cc: New test. * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test. * testsuite/20_util/integer_comparisons/greater_neg.cc: New test. * testsuite/20_util/integer_comparisons/in_range.cc: New test. * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test. * testsuite/20_util/integer_comparisons/less.cc: New test. * testsuite/20_util/integer_comparisons/less_equal.cc: New test. * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test. * testsuite/20_util/integer_comparisons/less_neg.cc: New test. * testsuite/20_util/integer_comparisons/not_equal.cc: New test. * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test. 2020-02-16 Patrick Palka * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): Move code after an early exit constexpr if to under an else branch. * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise. 2020-02-15 Patrick Palka * include/bits/ranges_algo.h: Adjust whitespace and formatting. * include/bits/ranges_algobase.h: Likewise. * include/bits/ranges_uninitialized.h: Likewise. * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of, binary_search, copy_if, count, count_if, equal_range, find, find_end, find_first_of, find_if, find_if_not, for_each, generate, generate_n, includes, inplace_merge, is_heap, is_heap_until, is_partitioned, is_permutation, is_sorted, is_sorted_until, lexicographical_compare, lower_bound, make_heap, max, max_element, merge, min, min_element, minmax, minmax_element, mismatch, next_permutation, none_of, nth_element, partial_sort, partial_sort_copy, partition, partition_copy, partition_point, pop_heap, prev_permutation, push_heap, remove, remove_copy, remove_copy_if, remove_if, replace, replace_copy, replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy, search, search_n, set_difference, set_intersection, set_symmetric_difference, set_union, shuffle, sort, sort_heap, stable_partition, stable_sort, swap_ranges, transform, unique, unique_copy, upper_bound): Convert into function objects. * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n, fill, move_backward, copy_backward): Likewise. * include/bits/ranges_uninitialized.h (uninitialized_default_construct, uninitialized_default_construct_n, uninitialized_value_construct, uninitialized_value_construct_n, uninitialized_copy, uninitialized_copy_n, uninitialized_move, uninitialized_move_n, uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at, destroy, destroy_n): Likewise. * include/bits/ranges_algo.h (ranges::__find_end): Fold into ... (ranges::find_end): ... here. (ranges::__lexicographical_compare): Fold into ... (ranges::lexicographical_compare): ... here. * include/bits/ranges_algobase.h (ranges::__equal): Fold into ... (ranges::equal): ... here. 2020-02-15 Jonathan Wakely * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L. * include/std/deque: Likewise. * include/std/forward_list: Likewise. * include/std/list: Likewise. * include/std/string: Likewise. * include/std/vector: Likewise. * include/std/version: Likewise. * testsuite/23_containers/deque/erasure.cc: Test for new value. * testsuite/23_containers/forward_list/erasure.cc: Likewise. * testsuite/23_containers/list/erasure.cc: Likewise. * testsuite/23_containers/map/erasure.cc: Likewise. * testsuite/23_containers/set/erasure.cc: Likewise. * testsuite/23_containers/unordered_map/erasure.cc: Likewise. * testsuite/23_containers/unordered_set/erasure.cc: Likewise. * testsuite/23_containers/vector/erasure.cc: Likewise. 2020-02-15 Jonathan Wakely * include/bits/random.h (uniform_random_bit_generator): Require min() and max() to be constant expressions and min() to be less than max(). * testsuite/26_numerics/random/concept.cc: Check additional cases. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 2020-02-13 Patrick Palka * include/Makefile.am: Add . * include/Makefile.in: Regenerate. * include/bits/ranges_uninitialized.h: New header. * include/std/memory: Include it. * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New test. * .../uninitialized_copy/constrained.cc: New test. * .../uninitialized_default_construct/constrained.cc: New test. * .../uninitialized_fill/constrained.cc: New test. * .../uninitialized_move/constrained.cc: New test. * .../uninitialized_value_construct/constrained.cc: New test. * include/Makefile.am: Add bits/ranges_algobase.h * include/Makefile.in: Regenerate. * bits/ranges_algo.h: Include and refactor existing #includes. (__detail::__is_normal_iterator, __detail::is_reverse_iterator, __detail::__is_move_iterator, copy_result, move_result, __equal, equal, copy_result, move_result, move_backward_result, copy_backward_result, __copy_or_move_backward, __copy_or_move, copy, move, copy_backward, move_backward, copy_n_result, copy_n, fill_n, fill): Split out into ... * bits/range_algobase.h: ... this new header. 2020-02-12 Patrick Palka LWG 3389 and LWG 3390 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when constructing the move_iterator with __i. (counted_iterator::counted_iterator): Use std::move when initializing M_current with __i. * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test. * testsuite/24_iterators/move_iterator/lwg3390.cc: New test. 2020-02-12 Sandra Loosemore PR libstdc++/79193 PR libstdc++/88999 * configure: Regenerated. 2020-02-12 François Dumont * include/bits/hashtable.h (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add missing std namespace qualification to forward call. 2020-02-09 Jonathan Wakely * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix comment. * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise. * include/std/ranges: Fix non-ASCII characters in comment. * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require equality comparison to be valid and return bool. (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison. * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check type with ambiguous conversion to fundamental types. * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise. 2020-02-07 Jonathan Wakely * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t): Use remove_cvref_t. (readable_traits): Rename to indirectly_readable_traits. (readable): Rename to indirectly_readable. (writable): Rename to indirectly_writable. (__detail::__iter_exchange_move): Do not use remove_reference_t. (indirectly_swappable): Adjust requires expression parameter types. expression. * include/bits/ranges_algo.h (ranges::transform, ranges::replace) (ranges::replace_if, ranges::generate_n, ranges::generate) (ranges::remove): Use new name for writable. * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow): Use new name for readable. * include/ext/pointer.h (readable_traits<_Pointer_adapter

>): Use new name for readable_traits. * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise. * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for new definition of indirectly_readable. * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change to take parameters of common_iterator, instead of the common_iterator type itself. Fix argument for __common_iter_has_arrow constraint. (iterator_traits>::pointer): Adjust. 2020-02-07 Jonathan Wakely * include/std/ranges (iota_view): Add braces to prevent -Wempty-body warning. (basic_istream_view::_Iterator::operator++()): Add missing return. 2020-02-07 Patrick Palka * include/bits/ranges_algo.h: Remove extraneous &&. * include/std/ranges (ranges::__detail::__stream_extractable, ranges::basic_istream_view, ranges::istream_view): Define. * testsuite/std/ranges/istream_view: New test. Implement C++20 range adaptors * include/std/ranges: Include and . (subrange::_S_store_size): Mark as const instead of constexpr to avoid what seems to be a bug in GCC. (__detail::__box): Give it defaulted copy and move constructors. (ranges::views::_Single::operator()): Mark constexpr. (ranges::views::_Iota::operator()): Mark constexpr. (__detail::Empty): Define. (ranges::views::__closure::_RangeAdaptor, ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view, ranges::views::all, ranges::__detail::find_if, ranges::__detail::find_if_not, ranges::__detail::mismatch, ranges::detail::min, filter_view, ranges::views::filter, transform_view, ranges::views::transform, take_view, ranges::views::take, take_while_view, ranges::views::take_while, drop_view, ranges::views::drop, join_view, ranges::views::join, __detail::require_constant, __detail::tiny_range, split_view, ranges::views::split, ranges::views::_Counted, ranges::views::counted, common_view, ranges::views::common, reverse_view, ranges::views::reverse, ranges::views::__detail::__is_reversible_subrange, ranges::views::__detail::__is_reverse_view, reverse_view, ranges::views::reverse, __detail::__has_tuple_element, elements_view, ranges::views::elements, ranges::views::keys, ranges::views::values): Define. (views): Alias for ranges::views. (tuple_size>, tuple_element<0, ranges::subrange>, tuple_element<1, ranges::subrange>): New partial specializations. * testsuite/std/ranges/adaptors/all.cc: New test. * testsuite/std/ranges/adaptors/common.cc: Likewise. * testsuite/std/ranges/adaptors/counted.cc: Likewise. * testsuite/std/ranges/adaptors/drop.cc: Likewise. * testsuite/std/ranges/adaptors/drop_while.cc: Likewise. * testsuite/std/ranges/adaptors/elements.cc: Likewise. * testsuite/std/ranges/adaptors/filter.cc: Likewise. * testsuite/std/ranges/adaptors/join.cc: Likewise. * testsuite/std/ranges/adaptors/reverse.cc: Likewise. * testsuite/std/ranges/adaptors/split.cc: Likewise. * testsuite/std/ranges/adaptors/take.cc: Likewise. * testsuite/std/ranges/adaptors/take_while.cc: Likewise. * testsuite/std/ranges/adaptors/transform.cc: Likewise. 2020-02-07 Jonathan Wakely * libsupc++/compare (__cmp_cat::type): Define typedef for underlying type of enumerations and comparison category types. (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type. (__cmp_cat::_Ncmp::unordered): Change value to 2. (partial_ordering::_M_value, weak_ordering::_M_value) (strong_ordering::_M_value): Change type to __cmp_cat::type. (partial_ordering::_M_is_ordered): Remove data member. (partial_ordering): Use second bit of _M_value for unordered. Adjust comparison operators. (weak_ordering::operator partial_ordering): Simplify to remove branches. (operator<=>(unspecified, weak_ordering)): Likewise. (strong_ordering::operator partial_ordering): Likewise. (strong_ordering::operator weak_ordering): Likewise. (operator<=>(unspecified, strong_ordering)): Likewise. * testsuite/18_support/comparisons/categories/partialord.cc: New test. * testsuite/18_support/comparisons/categories/strongord.cc: New test. * testsuite/18_support/comparisons/categories/weakord.cc: New test. * include/std/ranges (iota_view::_Iterator): Fix typo in name of __cpp_lib_three_way_comparison macro and use deduced return type for operator<=>. * testsuite/std/ranges/iota/iterator.cc: New test. 2020-02-07 Patrick Palka Jonathan Wakely Implement C++20 constrained algorithms * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/std/algorithm: Include . * include/bits/ranges_algo.h: New file. * testsuite/25_algorithms/adjacent_find/constrained.cc: New test. * testsuite/25_algorithms/all_of/constrained.cc: New test. * testsuite/25_algorithms/any_of/constrained.cc: New test. * testsuite/25_algorithms/binary_search/constrained.cc: New test. * testsuite/25_algorithms/copy/constrained.cc: New test. * testsuite/25_algorithms/copy_backward/constrained.cc: New test. * testsuite/25_algorithms/copy_if/constrained.cc: New test. * testsuite/25_algorithms/copy_n/constrained.cc: New test. * testsuite/25_algorithms/count/constrained.cc: New test. * testsuite/25_algorithms/count_if/constrained.cc: New test. * testsuite/25_algorithms/equal/constrained.cc: New test. * testsuite/25_algorithms/equal_range/constrained.cc: New test. * testsuite/25_algorithms/fill/constrained.cc: New test. * testsuite/25_algorithms/fill_n/constrained.cc: New test. * testsuite/25_algorithms/find/constrained.cc: New test. * testsuite/25_algorithms/find_end/constrained.cc: New test. * testsuite/25_algorithms/find_first_of/constrained.cc: New test. * testsuite/25_algorithms/find_if/constrained.cc: New test. * testsuite/25_algorithms/find_if_not/constrained.cc: New test. * testsuite/25_algorithms/for_each/constrained.cc: New test. * testsuite/25_algorithms/generate/constrained.cc: New test. * testsuite/25_algorithms/generate_n/constrained.cc: New test. * testsuite/25_algorithms/heap/constrained.cc: New test. * testsuite/25_algorithms/includes/constrained.cc: New test. * testsuite/25_algorithms/inplace_merge/constrained.cc: New test. * testsuite/25_algorithms/is_partitioned/constrained.cc: New test. * testsuite/25_algorithms/is_permutation/constrained.cc: New test. * testsuite/25_algorithms/is_sorted/constrained.cc: New test. * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test. * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New test. * testsuite/25_algorithms/lower_bound/constrained.cc: New test. * testsuite/25_algorithms/max/constrained.cc: New test. * testsuite/25_algorithms/max_element/constrained.cc: New test. * testsuite/25_algorithms/merge/constrained.cc: New test. * testsuite/25_algorithms/min/constrained.cc: New test. * testsuite/25_algorithms/min_element/constrained.cc: New test. * testsuite/25_algorithms/minmax/constrained.cc: New test. * testsuite/25_algorithms/minmax_element/constrained.cc: New test. * testsuite/25_algorithms/mismatch/constrained.cc: New test. * testsuite/25_algorithms/move/constrained.cc: New test. * testsuite/25_algorithms/move_backward/constrained.cc: New test. * testsuite/25_algorithms/next_permutation/constrained.cc: New test. * testsuite/25_algorithms/none_of/constrained.cc: New test. * testsuite/25_algorithms/nth_element/constrained.cc: New test. * testsuite/25_algorithms/partial_sort/constrained.cc: New test. * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test. * testsuite/25_algorithms/partition/constrained.cc: New test. * testsuite/25_algorithms/partition_copy/constrained.cc: New test. * testsuite/25_algorithms/partition_point/constrained.cc: New test. * testsuite/25_algorithms/prev_permutation/constrained.cc: New test. * testsuite/25_algorithms/remove/constrained.cc: New test. * testsuite/25_algorithms/remove_copy/constrained.cc: New test. * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test. * testsuite/25_algorithms/remove_if/constrained.cc: New test. * testsuite/25_algorithms/replace/constrained.cc: New test. * testsuite/25_algorithms/replace_copy/constrained.cc: New test. * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test. * testsuite/25_algorithms/replace_if/constrained.cc: New test. * testsuite/25_algorithms/reverse/constrained.cc: New test. * testsuite/25_algorithms/reverse_copy/constrained.cc: New test. * testsuite/25_algorithms/rotate/constrained.cc: New test. * testsuite/25_algorithms/rotate_copy/constrained.cc: New test. * testsuite/25_algorithms/search/constrained.cc: New test. * testsuite/25_algorithms/search_n/constrained.cc: New test. * testsuite/25_algorithms/set_difference/constrained.cc: New test. * testsuite/25_algorithms/set_intersection/constrained.cc: New test. * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New test. * testsuite/25_algorithms/set_union/constrained.cc: New test. * testsuite/25_algorithms/shuffle/constrained.cc: New test. * testsuite/25_algorithms/sort/constrained.cc: New test. * testsuite/25_algorithms/stable_partition/constrained.cc: New test. * testsuite/25_algorithms/stable_sort/constrained.cc: New test. * testsuite/25_algorithms/swap_ranges/constrained.cc: New test. * testsuite/25_algorithms/transform/constrained.cc: New test. * testsuite/25_algorithms/unique/constrained.cc: New test. * testsuite/25_algorithms/unique_copy/constrained.cc: New test. * testsuite/25_algorithms/upper_bound/constrained.cc: New test. 2020-02-06 Jonathan Wakely * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR number in comment. Fix indentation. * include/bits/stl_algobase.h (__iter_swap, __iter_swap): Remove redundant _GLIBCXX20_CONSTEXPR. * include/std/ranges (viewable_range): Replace decay_t with remove_cvref_t (LWG 3375). 2020-02-05 Jonathan Wakely * include/bits/iterator_concepts.h (iter_reference_t) (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t): Remove workarounds for PR c++/67704. * testsuite/24_iterators/aliases.cc: New test. 2020-02-05 Patrick Palka * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i when initializing _M_current. (move_iterator::base): Split into two overloads differing in ref-qualifiers as in P1207R4 for C++20. 2020-02-04 Jonathan Wakely * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after use. PR libstdc++/93562 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define. (unique_ptr::swap, unique_ptr::swap): Call it. * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test. 2020-02-01 Andrew Burgess * configure: Regenerate. 2020-01-31 Patrick Palka * testsuite/24_iterators/range_operations/distance.cc: Do not assume test_range::end() returns the same type as test_range::begin(). * testsuite/24_iterators/range_operations/next.cc: Likewise. * testsuite/24_iterators/range_operations/prev.cc: Likewise. * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end): Always return a sentinel. 2020-01-29 Jonathan Wakely PR libstdc++/92895 * include/std/stop_token (stop_token::stop_possible()): Call new _M_stop_possible() function. (stop_token::stop_requested()): Do not use stop_possible(). (stop_token::binary_semaphore): New class, as temporary stand-in for std::binary_semaphore. (stop_token::_Stop_cb::_M_callback): Add noexcept to type. (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done): New data members for symchronization with stop_callback destruction. (stop_token::_Stop_cb::_Stop_cb): Make non-template. (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute): Remove. (stop_token::_Stop_cb::_M_run): New member function. (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx): Remove. (stop_token::_Stop_state::_M_owners): New data member to track reference count for ownership. (stop_token::_Stop_state::_M_value): New data member combining a spinlock, the stop requested flag, and the reference count for associated stop_source objects. (stop_token::_Stop_state::_M_requester): New data member for synchronization with stop_callback destruction. (stop_token::_Stop_state::_M_stop_possible()): New member function. (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit of _M_value. (stop_token::_Stop_state::_M_add_owner) (stop_token::_Stop_state::_M_release_ownership) (stop_token::_Stop_state::_M_add_ssrc) (stop_token::_Stop_state::_M_sub_ssrc): New member functions for updating reference counts. (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) (stop_token::_Stop_state::_M_try_lock) (stop_token::_Stop_state::_M_try_lock_and_stop) (stop_token::_Stop_state::_M_do_try_lock): New member functions for managing spinlock. (stop_token::_Stop_state::_M_request_stop): Use atomic operations to read and update state. Release lock while running callbacks. Use new data members to synchronize with callback destruction. (stop_token::_Stop_state::_M_remove_callback): Likewise. (stop_token::_Stop_state::_M_register_callback): Use atomic operations to read and update state. (stop_token::_Stop_state_ref): Handle type to manage _Stop_state, replacing shared_ptr. (stop_source::stop_source(const stop_source&)): Update reference count. (stop_source::operator=(const stop_source&)): Likewise. (stop_source::~stop_source()): Likewise. (stop_source::stop_source(stop_source&&)): Define as defaulted. (stop_source::operator=(stop_source&&)): Establish postcondition on parameter. (stop_callback): Enforce preconditions on template parameter. Replace base class with data member of new _Cb_impl type. (stop_callback::stop_callback(const stop_token&, Cb&&)) (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race. (stop_callback::_Cb_impl): New type wrapping _Callback member and defining the _S_execute member function. * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New test. * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test. * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test. * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc: New test. * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New test. * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test. * testsuite/30_threads/stop_token/stop_source/assign.cc: New test. * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New test. * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use three_way_comparable_with. (__detail::__3way_cmp_with): Remove workaround for fixed bug. (compare_three_way::operator()): Remove redundant constraint from requires-clause. (__detail::_Synth3way::operator()): Use three_way_comparable_with instead of workaround. * testsuite/18_support/comparisons/object/93479.cc: Prune extra output due to simplified constraints on compare_three_way::operator(). PR libstdc++/93479 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid. * testsuite/18_support/comparisons/object/93479.cc: New test. * testsuite/std/ranges/access/end.cc: Do not assume test_range::end() returns the same type as test_range::begin(). Add comments. * testsuite/std/ranges/access/rbegin.cc: Likewise. * testsuite/std/ranges/access/rend.cc: Likewise. * testsuite/std/ranges/range.cc: Do not assume the sentinel for test_range is the same as its iterator type. * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add operator- overloads to satisfy sized_sentinel_for when the iterator satisfies random_access_iterator. 2020-01-28 Jonathan Wakely PR libstdc++/93470 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict static assertion to object types. PR libstdc++/93325 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for clock_gettime instead of explicit glibc version check. * configure: Regenerate. 2020-01-28 Martin Liska PR libstdc++/93478 * include/std/atomic: Fix typo. * include/std/optional: Likewise. 2020-01-27 Andrew Burgess * configure: Regenerate. 2020-01-27 Jonathan Wakely PR libstdc++/93426 * include/std/span (span): Fix deduction guide. * testsuite/23_containers/span/deduction.cc: New test. 2020-01-24 Jonathan Wakely * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type. (__cmp_cat::_Ord::equivalent): Add enumerator. (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less and greater. (partial_ordering, weak_ordering, strong_ordering): Remove constructors taking __cmp_cat::_Eq parameters. Use renamed enumerators. 2020-01-24 Maciej W. Rozycki * acinclude.m4: Handle `--with-toolexeclibdir='. * Makefile.in: Regenerate. * aclocal.m4: Regenerate. * configure: Regenerate. * doc/Makefile.in: Regenerate. * include/Makefile.in: Regenerate. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * python/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * src/c++11/Makefile.in: Regenerate. * src/c++17/Makefile.in: Regenerate. * src/c++98/Makefile.in: Regenerate. * src/filesystem/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. 2020-01-23 Alexandre Oliva * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros. * configure: Rebuild. * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t. 2020-01-23 Jonathan Wakely PR libstdc++/91947 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify rule. * include/Makefile.in: Regenerate. 2020-01-20 Jonathan Wakely * doc/xml/faq.xml: Fix grammar. * doc/xml/manual/appendix_contributing.xml: Improve instructions. * doc/xml/manual/spine.xml: Update copyright years. * doc/html/*: Regenerate. 2020-01-19 Eric S. Raymond * doc/xml/faq.xml: Update for SVN -> Git transition. * doc/xml/manual/appendix_contributing.xml: Likewise. * doc/xml/manual/status_cxx1998.xml: Likewise. * 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. 2020-01-18 Iain Sandoe * include/Makefile.am: Add coroutine to the std set. * include/Makefile.in: Regenerated. * include/std/coroutine: New file. 2020-01-17 Jonathan Wakely PR libstdc++/92376 * include/bits/c++config: Only do PSTL config when the header is present, to fix freestanding. * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation functions if they were detected by configure. 2020-01-16 Kai-Uwe Eckhardt Matthew Bauer Jonathan Wakely PR bootstrap/64271 (partial) * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type to unsigned short. (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit) (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync definitions with NetBSD upstream. (ctype_base::blank): Use _CTYPE_BL. * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove Declaration. (ctype::classic_table): Use _C_ctype_tab_ instead of _C_ctype_. (ctype::do_toupper, ctype::do_tolower): Cast char parameters to unsigned char. * config/os/bsd/netbsd/ctype_inline.h (ctype::is): Likewise. 2020-01-16 François Dumont PR libstdc++/91263 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend. * include/bits/hashtable_policy.h: Include . (_Equality_base): Remove. (_Equality<>::_M_equal): Review implementation. Use std::is_permutation. * testsuite/23_containers/unordered_multiset/operators/1.cc (Hash, Equal, test02, test03): New. * testsuite/23_containers/unordered_set/operators/1.cc (Hash, Equal, test02, test03): New. 2020-01-15 Jonathan Wakely PR libstdc++/93267 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type): Move here from and define using __int128 when available. (__is_integer_like, __is_signed_integer_like): Move here from . (weakly_incrementable): Use __is_signed_integer_like. * include/bits/range_access.h (__max_diff_type, __max_size_type) (__is_integer_like, __is_signed_integer_like): Move to . (__make_unsigned_like_t): Move here from . * include/std/ranges (__make_unsigned_like_t): Move to . (iota_view): Replace using-directive with using-declarations. * testsuite/std/ranges/iota/93267.cc: New test. * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory. 2020-01-13 Jonathan Wakely PR libstdc++/93244 * include/bits/fs_path.h (path::generic_string) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash. * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check root-dir is converted to forward slash in generic pathname. * testsuite/27_io/filesystem/path/generic/utf.cc: New test. * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test. PR libstdc++/58605 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization): Define. (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>) (__atomic_float): Add default member initializer for C++20. * include/std/atomic (atomic): Likewise. (atomic::atomic()): Remove noexcept-specifier on default constructor. * include/std/version (__cpp_lib_atomic_value_initialization): Define. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line number. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. * testsuite/29_atomics/atomic/cons/value_init.cc: New test. * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test. * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust expected result for is_trivially_default_constructible. * testsuite/29_atomics/atomic_float/requirements.cc: Likewise. * testsuite/29_atomics/atomic_float/value_init.cc: New test. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise. * testsuite/29_atomics/atomic_integral/cons/value_init.cc * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust expected results for is_trivially_default_constructible. * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add new test generator. 2020-01-10 Jonathan Wakely * testsuite/util/testsuite_iterators.h: Improve comment. * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11 initialization syntax. PR libstdc++/92285 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type of base class independent of __cplusplus value. [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the type defined in the base class * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test. * testsuite/24_iterators/istreambuf_iterator/requirements/ base_classes.cc: Adjust expected base class for C++98. 2020-01-09 Olivier Hainque * doc/xml/manual/appendix_contributing.xml: Document _C2 as a reserved identifier, by VxWorks. * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2. * include/bits/stl_multimap.h: Likewise. 2020-01-09 Jonathan Wakely * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==) (_ExtPtr_allocator::operator!=): Add missing const qualifiers. * include/ext/pointer.h (readable_traits<_Pointer_adapter>): Add partial specialization to disambiguate the two constrained specializations. * include/experimental/type_traits (experimental::is_pod_v): Disable -Wdeprecated-declarations warnings around reference to std::is_pod. * include/std/type_traits (is_pod_v): Likewise. * testsuite/18_support/max_align_t/requirements/2.cc: Also check is_standard_layout and is_trivial. Do not check is_pod for C++20. * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc: Add -Wno-deprecated for C++20. * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise. * testsuite/20_util/is_pod/value.cc: Likewise. * testsuite/experimental/type_traits/value.cc: Likewise. 2020-01-09 JeanHeyd "ThePhD" Meneide * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro. * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20. * testuite/20_util/is_pod/deprecated-2a.cc: New test. 2020-01-09 Jonathan Wakely PR libstdc++/93205 * include/bits/random.h (operator>>): Check stream operation succeeds. * include/bits/random.tcc (operator<<): Remove redundant __ostream_type typedefs. (operator>>): Remove redundant __istream_type typedefs. Check stream operations succeed. (__extract_params): New function to fill a vector from a stream. * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. PR libstdc++/93208 * config/abi/pre/gnu.ver: Add new exports. * include/std/memory_resource (memory_resource::~memory_resource()): Do not define inline. (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise. * src/c++17/memory_resource.cc (memory_resource::~memory_resource()): Define. (monotonic_buffer_resource::~monotonic_buffer_resource()): Define. * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test. 2020-01-09 François Dumont PR libstdc++/92124 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New template alias. (_Hashtable<>::__fwd_value_for): New. (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template parameter. (_Hashtable<>::_M_assign<>): Add _Ht template parameter. (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt. (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept with std::move. (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt. (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)): Adapt. (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)): Adapt. * testsuite/23_containers/unordered_set/92124.cc: New. 2020-01-08 Jonathan Wakely PR libstdc++/93201 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more detailed error reporting for remove_all. Check result of recursive call before incrementing iterator. (remove_all(const path&), remove_all(const path&, error_code&)): Use do_remove_all. * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check result of recursive call before incrementing iterator. * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors are reported correctly. * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. 2020-01-07 Thomas Rodgers * include/std/condition_variable (condition_variable_any::wait_on): Rename to match current draft standard. (condition_variable_any::wait_on_until): Likewise. (condition_variable_any::wait_on_for): Likewise. * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: Adjust tests to account for renamed methods. 2020-01-07 François Dumont PR libstdc++/92124 * include/bits/stl_tree.h (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace std::move_if_noexcept by std::move. * testsuite/23_containers/map/92124.cc: New. * testsuite/23_containers/set/92124.cc: New. 2020-01-06 Jonathan Wakely * include/std/stop_token (stop_token): Remove operator!= (LWG 3254). (stop_source): Likewise (LWG 3362). * testsuite/30_threads/stop_token/stop_source.cc: Test equality comparisons. * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp) (lexicographical_compare_three_way): Do not depend on __cpp_lib_concepts. * include/std/version (__cpp_lib_three_way_comparison): Only define when __cpp_lib_concepts is defined. * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 2020-01-03 Jonathan Wakely * include/bits/stl_algobase.h (lexicographical_compare_three_way): Only define four-argument overload when __cpp_lib_concepts is defined. 2020-01-01 John David Anglin * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 2020-01-01 Jakub Jelinek Update copyright years. Copyright (C) 2020 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.