2020-05-07  Release Manager

	* GCC 10.1.0 released.

2020-05-07  Eric Botcazou  <ebotcazou@adacore.com>

	* 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  <hongjiu.lu@intel.com>

	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.

2020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
	* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
	Likewise.
	* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
	Likewise.

2020-05-06  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <jakub@redhat.com>

	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
	* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
	* config/abi/post/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  <jwakely@redhat.com>

	* doc/xml/faq.xml: Use working link for SGI STL FAQ.
	* doc/html/*: Regenerate.

2020-05-01  Jonathan Wakely  <jwakely@redhat.com>

	Backport from mainline
	2020-05-01  Jonathan Wakely  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	PR libstdc++/89510
	* include/bits/alloc_traits.h (allocator_traits::_S_construct)
	(allocator_traits::_S_destroy)
	(allocator_traits<allocator<T>>::construct): Use traits in
	noexcept-specifiers.
	* include/bits/allocator.h (allocator<void>::construct)
	(allocator<void>::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  <jwakely@redhat.com>

	PR libstdc++/94854
	* include/bits/basic_string.tcc: Update comment about explicit
	instantiations.

2020-04-28  Jonathan Wakely  <jwakely@redhat.com>

	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  <ppalka@redhat.com>

	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  <jwakely@redhat.com>
	    Iain Sandoe  <iain@sandoe.co.uk>

	PR c++/94759
	* include/std/coroutine: Implement handing for non-
	class coroutine return types.

2020-04-24  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <kamleshbhalui@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	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<T>, Args&&...))
	(any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
	(any::emplace(Args&&...))
	(any::emplace(initializer_list<U>, 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  <jwakely@redhat.com>

	* 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  <rodgert@appliantology.com>

	* 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  <iain@sandoe.co.uk>

	* 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  <jwakely@redhat.com>

	* 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 <algorithm>, 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 <utility>.

	* 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  <jwakely@redhat.com>

	* 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  <trodgers@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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  <kretz@kde.org>

	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.

2020-04-19  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* include/bits/forward_list.h (forward_list): Define operator<=> and
	remove redundant comparison operators for C++20.
	* include/bits/stl_bvector.h (vector<bool, Alloc>): 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  <jwakely@redhat.com>

	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
	name of unused parameter.

2020-04-15  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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<A*> to be used when comparing std::shared_ptr<A> 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  <iain@sandoe.co.uk>

	* include/std/coroutine: Update coroutines builtin define,
	per n4861.

2020-04-09  Jonathan Wakely  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* include/bits/slice_array.h (operator==(const slice&, const slice&)):
	Define for C++20.
	* include/std/complex (operator==(const T&, const complex<T>&))
	(operator!=(const complex<T>&, const complex<T>&))
	(operator!=(const complex<T>&, const T&))
	(operator!=(const T&, const complex<T>&)): 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  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	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<char>, std::char_traits<wchar_t>)
	(std::char_traits<char8_t>): Make move, copy and assign usable in
	constant expressions for C++20.
	(std::char_traits<char16_t>, std::char_traits<char32_t>): 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  <gerald@pfeifer.com>

	* 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  <jwakely@redhat.com>

	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  <andrea.corallo@arm.com>

	* testsuite/experimental/net/execution_context/use_service.cc:
	Require pthread and gthreads.

2020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>

	* 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  <ville.voutilainen@gmail.com>

	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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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
	<bits/range_access.h>.
	(__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
	<bits/iterator_concepts.h>.
	(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  <jwakely@redhat.com>

	* 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  <mac@mcrowe.com>

	* 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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	PR libstdc++/93245
	* include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
	* 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<C,T,A>()): 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  <jwakely@redhat.com>

	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<socket_errc>):
	Define specialization before use.
	* testsuite/experimental/net/executor/1.cc: New test.

2020-03-16  Jonathan Wakely  <jwakely@redhat.com>

	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  <jwakely@redhat.com>

	* 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  <ppalka@redhat.com>

	* 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  <jwakely@redhat.com>

	* 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  <jwakely@redhat.com>

	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<value_type>)): Likewise.
	* testsuite/27_io/filesystem/path/concat/94063.cc: New test.

2020-03-06  Patrick Palka  <ppalka@redhat.com>

	* include/std/ranges (join_view::_Sentinel<_Const>): Befriend
	join_view::_Sentinel<!_Const>.
	* 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  <jwakely@redhat.com>

	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  <krebbel@linux.ibm.com>

	* src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
	would match ENOSYS.

2020-03-05  Jonathan Wakely  <jwakely@redhat.com>

	* 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 <bits/ostream_insert.h>.
	* testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.

2020-03-04  Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/cpp_type_traits.h (__memcpyable): Fix comment.

2020-03-04  Patrick Palka  <ppalka@redhat.com>

	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  <jwakely@redhat.com>

	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
