Turn on -mpcrel by default for -mcpu=future
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobb3d001c02ab6f7cf72bf844c79c503abc034749e
1 2020-04-24  Jonathan Wakely  <jwakely@redhat.com>
3         * include/experimental/executor (service_already_exists): Make default
4         constructor public (LWG 3414).
5         * testsuite/experimental/net/execution_context/make_service.cc: Check
6         the service_already_exists can be default constructed.
8 2020-04-24  Kamlesh Kumar  <kamleshbhalui@gmail.com>
9             Jonathan Wakely  <jwakely@redhat.com>
11         PR libstdc++/90415
12         PR libstdc++/92156
13         * include/std/any (any): Rename template parameters for consistency
14         with the standard.
15         (any::_Decay): Rename to _Decay_if_not_any.
16         (any::any(T&&):: Remove is_constructible from constraints. Remove
17         non-standard overload.
18         (any::any(in_place_type_t<T>, Args&&...))
19         (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
20         (any::emplace(Args&&...))
21         (any::emplace(initializer_list<U>, Args&&...)):
22         Use decay_t instead of _Decay.
23         * testsuite/20_util/any/cons/90415.cc: New test.
24         * testsuite/20_util/any/cons/92156.cc: New Test.
25         * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
26         more robust.
27         * testsuite/20_util/any/modifiers/92156.cc: New test.
29 2020-04-23  Jonathan Wakely  <jwakely@redhat.com>
31         * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
32         * doc/html/*: Regenerate.
34         * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
35         value for C++17 to 201803L because P0858R0 is supported for C++17.
36         * include/std/version (__cpp_lib_array_constexpr): Likewise.
37         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
38         Check for value corresponding to P0031R0 features being tested.
39         * testsuite/23_containers/array/requirements/constexpr_iter.cc:
40         Check for value corresponding to P0858R0 features being tested.
42         * include/std/version (__cpp_lib_three_way_comparison): Define for
43         freestanding builds.
45 2020-04-23  Thomas Rodgers  <rodgert@appliantology.com>
47         * include/experimental/net/executor (system_context): Mark
48         system_context::system_context() = delete.
49         * testsuite/experimental/net/executor/1.cc: Add new
50         test to check system_context is not default constructible.
52 2020-04-23  Iain Sandoe  <iain@sandoe.co.uk>
54         * include/std/coroutine: Update the inline namespace to __n4861.
55         Add the __cpp_lib_coroutine define, set to 201902L.
56         * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
58 2020-04-22  Jonathan Wakely  <jwakely@redhat.com>
60         * include/std/execution (__cpp_lib_execution): Define to indicate
61         support for P0024R2 and P1001R2.
62         * include/std/version (__cpp_lib_execution): Define.
63         * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
64         defined by <algorithm>, move other tests to new tests ...
65         * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
66         * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
67         * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
68         * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
70         * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
71         different values for C++17 and C++20, to indicate different feature
72         sets. Update value for C++20 to indicate P1032R1 support.
73         * include/std/version (__cpp_lib_array_constexpr): Likewise.
74         * testsuite/23_containers/array/comparison_operators/constexpr.cc:
75         Check feature test macro.
76         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
77         New test.
78         * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
79         feature test macro.
80         * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
81         in C++17 mode and check feature test macro.
83         * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
84         here.
85         * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
86         defined by <utility>.
88         * include/std/functional (__cpp_lib_concepts): Update macro value to
89         indicate P1964R2 support.
90         * include/std/version (__cpp_lib_concepts): Likewise.
91         * testsuite/std/concepts/1.cc: Adjust expected value.
92         * testsuite/std/concepts/2.cc: Likewise.
94         * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
95         __cpp_lib_constexpr_functional.
96         * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
97         * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
99         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
100         indicate P1006R1 support.
101         (__cpp_lib_to_address): Define to indicate P0653R2 support.
102         * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
103         P1227R2 support.
104         * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
105         P0769R2 support.
106         * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
107         P0020R6 support.
108         * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
109         P1007R3 support.
110         * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
111         Define to indicate P0339R6 support.
112         * include/std/string_view (__cpp_lib_starts_ends_with): Define to
113         indicate P0457R2 support.
114         * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
115         to indicate P0758R1 support.
116         (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
117         (__cpp_lib_type_identity): Define to indicate P0887R1 support.
118         * include/std/version (__cpp_lib_atomic_float)
119         (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
120         (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
121         (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
122         (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
123         (__cpp_lib_to_address): Define.
124         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
126         * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
127         macro.
128         * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
129         Likewise.
130         * include/std/version (__cpp_lib_map_insertion)
131         (__cpp_lib_unordered_map_insertion): Remove.
133         * include/std/condition_variable (__cpp_lib_jthread): Remove
134         redundant definition.
135         * include/std/stop_token (__cpp_lib_jthread): Update macro value to
136         indicate P1869R1 support.
137         * include/std/version (__cpp_lib_jthread): Update value.
138         * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
139         for updated macro value.
140         * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
141         Likewise.
142         * testsuite/30_threads/jthread/1.cc: Likewise.
143         * testsuite/30_threads/jthread/2.cc: Likewise.
144         * testsuite/30_threads/stop_token/1.cc: Likewise.
145         * testsuite/30_threads/stop_token/2.cc: Likewise.
147         * testsuite/21_strings/basic_string/erasure.cc: Check for
148         __cpp_lib_erase_if macro.
149         * testsuite/23_containers/deque/erasure.cc: Add header name to #error
150         messages.
151         * testsuite/23_containers/forward_list/erasure.cc: Likewise.
152         * testsuite/23_containers/list/erasure.cc: Likewise.
153         * testsuite/23_containers/map/erasure.cc: Likewise.
154         * testsuite/23_containers/set/erasure.cc: Likewise.
155         * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
156         * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
157         * testsuite/23_containers/vector/erasure.cc: Likewise.
159 2020-04-21  Jonathan Wakely  <jwakely@redhat.com>
161         * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
162         to define operator<=>.
163         * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
165         * doc/Makefile.am (xml_sources_manual): Add missing XML files.
166         * doc/Makefile.in: Regenerate.
167         * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
168         of "this page".
169         * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
170         to the C++11 status table.
171         * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
172         proposals with table matching contents of the C++14 standard.
173         * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
174         the C++17 standard.
175         * doc/html/*: Regenerate.
177         PR c++/94149
178         * include/std/type_traits (__is_nt_constructible_impl): Add partial
179         specializations for bounded arrays with non-empty initializers.
180         * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
182 2020-04-20  Thomas Rodgers  <trodgers@redhat.com>
184         * testsuite/lib/libstdc++.exp: Add additional_flags=
185         -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
186         compiling with a newer Thread Building Blocks.
188 2020-04-20  Jonathan Wakely  <jwakely@redhat.com>
190         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
192         * testsuite/20_util/is_constructible/51185.cc: Make test class a
193         non-aggregate so that the test verifies the same thing in all -std
194         modes.
195         * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
196         results for some types when paren-init for aggregates is supported.
198         * include/std/version (__cpp_lib_three_way_comparison): Update value.
199         * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
200         (__detail::__synth3way): Add noexcept-specifier.
202         * include/bits/stl_map.h (map): Define operator<=> and remove
203         operator< for C++20.
204         * include/bits/stl_multimap.h (multimap): Likewise.
205         * include/bits/stl_multiset.h (multiset): Likewise.
206         * include/bits/stl_set.h (set): Likewise.
207         * include/bits/stl_tree.h (_Rb_tree): Likewise.
208         (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
209         operator!= for C++20.
210         * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
211         * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
212         * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
213         * include/debug/set.h (__gnu_debug::set): Likewise.
214         * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
215         * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
216         * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
217         * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
219 2020-04-20  Matthias Kretz  <kretz@kde.org>
221         * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
223 2020-04-19  Jonathan Wakely  <jwakely@redhat.com>
225         * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
226         * include/bits/stl_stack.h (stack): Likewise.
227         * testsuite/23_containers/queue/cmp_c++20.cc: New test.
228         * testsuite/23_containers/stack/cmp_c++20.cc: New test.
230         * include/bits/unordered_map.h (unordered_map, unordered_multimap):
231         Remove redundant operator!= for C++20.
232         * include/bits/unordered_set.h (unordered_set, unordered_multiset):
233         Likewise.
234         * include/debug/unordered_map (unordered_map, unordered_multimap):
235         Likewise.
236         * include/debug/unordered_set (unordered_set, unordered_multiset):
237         Likewise.
239         PR other/94629
240         * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
241         redundant assignment in constructor.
243 2020-04-18  Jonathan Wakely  <jwakely@redhat.com>
245         * include/std/chrono (duration, time_point): Define operator<=> and
246         remove redundant operator!= for C++20.
247         * testsuite/20_util/duration/comparison_operators/three_way.cc: New
248         test.
249         * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
250         test.
252         * testsuite/util/native_type/native_priority_queue.hpp: Use
253         allocator_traits to rebind allocator.
255 2020-04-17  Jonathan Wakely  <jwakely@redhat.com>
257         * include/bits/forward_list.h (forward_list): Define operator<=> and
258         remove redundant comparison operators for C++20.
259         * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
260         * include/bits/stl_deque.h (deque): Likewise.
261         * include/bits/stl_iterator.h (__normal_iterator): Likewise.
262         * include/bits/stl_list.h (list): Likewise.
263         * include/bits/stl_vector.h (vector): Likewise.
264         * include/debug/deque (__gnu_debug::deque): Likewise.
265         * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
266         * include/debug/list (__gnu_debug::list): Likewise.
267         * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
268         Likewise.
269         * include/debug/vector (__gnu_debug::vector): Likewise.
270         * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
271         operator<=> for C++20.
272         * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
273         * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
274         * testsuite/23_containers/list/cmp_c++20.cc: New test.
275         * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
276         * testsuite/23_containers/vector/cmp_c++20.cc: New test.
278         * include/bits/basic_string.h (basic_string): Define operator<=> and
279         remove redundant comparison operators for C++20.
280         * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
281         Add comparison_category members.
282         (__detail::__char_traits_cmp_cat): New helper to get comparison
283         category from char traits class.
284         * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
285         define for C++20.
286         (sub_match): Define operator<=> and remove redundant comparison
287         operators for C++20.
288         (match_results): Remove redundant operator!= for C++20.
289         * include/std/string_view (basic_string_view): Define operator<=> and
290         remove redundant comparison operators for C++20.
291         * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
292         test.
293         * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
294         New test.
295         * testsuite/21_strings/basic_string_view/operations/copy/char/
296         constexpr.cc: Initialize variable.
297         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
298         constexpr.cc: Likewise.
299         * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
300         dg-do directive and remove comments showing incorrect signatures.
301         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
302         Likewise.
303         * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
304         New test.
305         * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
306         New test.
307         * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
309 2020-04-16  Jonathan Wakely  <jwakely@redhat.com>
311         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
312         name of unused parameter.
314 2020-04-15  Jonathan Wakely  <jwakely@redhat.com>
316         * include/bits/fs_dir.h (file_status): Define operator== for C++20.
317         (directory_entry): Define operator<=> and remove redundant comparison
318         operators for C++20.
319         * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
320         * include/bits/fs_path.h (path): Define operator<=> and remove
321         redundant comparison operators for C++20.
322         * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
323         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
324         * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
325         * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
327         * include/bits/allocator.h (operator!=): Do not define for C++20.
328         * include/bits/locale_classes.h (operator!=): Likewise.
329         * include/bits/std_function.h (operator==(nullptr_t, const function&))
330         (operator!=(const function&, nullptr_t))
331         (operator!=(nullptr_t, const function&)): Likewise.
332         * include/ext/bitmap_allocator.h (operator!=): Likewise.
333         * include/ext/debug_allocator.h (operator!=): Likewise.
334         * include/ext/extptr_allocator.h (operator!=): Likewise.
335         * include/ext/malloc_allocator.h (operator!=): Likewise.
336         * include/ext/mt_allocator.h (operator!=): Likewise.
337         * include/ext/new_allocator.h (operator!=): Likewise.
338         * include/ext/pool_allocator.h (operator!=): Likewise.
339         * include/ext/throw_allocator.h (operator!=): Likewise.
340         * include/std/bitset (bitset::operator!=): Likewise.
341         * include/std/memory_resource (operator!=): Likewise.
342         * include/std/scoped_allocator (operator!=): Likewise.
344         * include/std/typeindex (operator<=>): Define for C++20.
345         * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
347 2020-04-14  Jonathan Wakely  <jwakely@redhat.com>
349         * libsupc++/compare (compare_three_way): Fix constraint so that
350         BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
351         * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
352         New test.
354         PR libstdc++/94562
355         * include/bits/shared_ptr.h (operator<=>): Define for C++20.
356         * include/bits/shared_ptr_base.h (operator<=>): Likewise.
357         * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
358         * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
359         * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
360         std::less<A*> to be used when comparing std::shared_ptr<A> objects in
361         C++20.
363         PR libstdc++/94565
364         * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
365         * testsuite/18_support/comparisons/categories/94565.cc: New test.
367 2020-04-13  Iain Sandoe  <iain@sandoe.co.uk>
369         * include/std/coroutine: Update coroutines builtin define,
370         per n4861.
372 2020-04-09  Jonathan Wakely  <jwakely@redhat.com>
374         * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
375         (strong_order, weak_order, partial_order): Replace uses of <=> with
376         compare_three_way function object (LWG 3324).
377         * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
378         equality operator so that X satisfies three_way_comparable.
379         * testsuite/18_support/comparisons/algorithms/strong_order.cc:
380         Likewise.
381         * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
383         * include/bits/unique_ptr.h (operator<=>): Define for C++20.
384         * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
385         * testsuite/20_util/default_delete/void_neg.cc: Likewise.
386         * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
387         * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
389 2020-04-08  Jonathan Wakely  <jwakely@redhat.com>
391         * include/bits/slice_array.h (operator==(const slice&, const slice&)):
392         Define for C++20.
393         * include/std/complex (operator==(const T&, const complex<T>&))
394         (operator!=(const complex<T>&, const complex<T>&))
395         (operator!=(const complex<T>&, const T&))
396         (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
397         * testsuite/26_numerics/slice/compare.cc: New test.
399         * include/std/charconv (to_chars_result, from_chars_result): Add
400         defaulted equality comparisons for C++20.
401         * testsuite/20_util/from_chars/compare.cc: New test.
402         * testsuite/20_util/to_chars/compare.cc: New test.
404 2020-04-07  Jonathan Wakely  <jwakely@redhat.com>
406         PR libstdc++/94520
407         * include/std/charconv (__integer_to_chars_result_type)
408         (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
409         allow use in C++14.
410         * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
411         use of std::string_view with std::string.
412         * testsuite/20_util/from_chars/2.cc: Likewise.
413         * testsuite/20_util/to_chars/1.cc: Likewise.
414         * testsuite/20_util/to_chars/2.cc: Likewise.
416 2020-04-06  Jonathan Wakely  <jwakely@redhat.com>
418         PR libstdc++/94498
419         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
420         usable in constant expressions for C++20.
421         (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
422         _GLIBCXX20_CONSTEXPR.
423         (std::char_traits<char>, std::char_traits<wchar_t>)
424         (std::char_traits<char8_t>): Make move, copy and assign usable in
425         constant expressions for C++20.
426         (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
427         and copy usable in constant expressions for C++20.
428         * include/std/string_view (basic_string_view::copy): Add
429         _GLIBCXX20_CONSTEXPR.
430         * testsuite/21_strings/basic_string_view/operations/copy/char/
431         constexpr.cc: New test.
432         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
433         constexpr.cc: New test.
435 2020-04-05  Gerald Pfeifer  <gerald@pfeifer.com>
437         * doc/xml/manual/appendix_contributing.xml: Refer to Git
438         documentation instead of Subversion.  Switch to https.
439         * doc/html/manual/appendix_contributing.html: Regenerate.
441 2020-04-03  Jonathan Wakely  <jwakely@redhat.com>
443         PR libstdc++/93960
444         * include/bits/ptr_traits.h (__to_address): Add special case for debug
445         iterators, to avoid dereferenceable check.
446         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
447         * testsuite/20_util/to_address/debug.cc: New test.
449 2020-04-01  Andrea Corallo  <andrea.corallo@arm.com>
451         * testsuite/experimental/net/execution_context/use_service.cc:
452         Require pthread and gthreads.
454 2020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>
456         * doc/xml/manual/appendix_free.xml: Move "free books" list from
457         fsf.org to gnu.org.
458         * doc/html/manual/appendix_free.html: Regenerate.
460 2020-03-31  Ville Voutilainen  <ville.voutilainen@gmail.com>
462         Library-side tests for parenthesized aggregate init
464         PR c++/92878
465         PR c++/92947
467         * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
468         * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
469         * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
470         * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
471         * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
472         * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
473         * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
474         * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
475         * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
476         Likewise.
477         * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
478         * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
479         * testsuite/20_util/variant/92878_92947.cc: Likewise.
480         * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
481         Likewise.
482         * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
483         Likewise.
484         * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
485         Likewise.
486         * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
487         Likewise.
488         * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
489         Likewise.
490         * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
491         Likewise.
492         * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
493         * testsuite/23_containers/queue/92878_92947.cc: Likewise.
494         * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
495         Likewise.
496         * testsuite/23_containers/stack/92878_92947.cc: Likewise.
497         * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
498         Likewise.
499         * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
500         Likewise.
501         * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
502         Likewise.
503         * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
504         Likewise.
505         * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
506         Likewise.
508 2020-03-28  Jonathan Wakely  <jwakely@redhat.com>
510         * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
511         for changes due to parenthesized aggregate-initialization in C++20.
512         * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
513         with std::chrono::sys_time in C++20.
515         * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
516         to constrain C++20 versions of comparison operators. Fix backwards
517         logic of relational operators.
518         (move_iterator): Use requires-clause to constrain comparison operators
519         in C++20. Do not declare non-standard same-type overloads for C++20.
520         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
521         of comparisons and check using greedy_ops type.
522         * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
523         * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
524         main function from compile-only test.
525         * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
527 2020-03-27  Jonathan Wakely  <jwakely@redhat.com>
529         * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
530         * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
531         C++20 concepts are required.
532         * include/bits/stl_iterator_base_types.h: Likewise.
533         * include/std/concepts: Likewise.
534         * include/std/version: Likewise.
535         * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
536         macro.
538         * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
539         (reverse_iterator::iterator_category): Define for C++20.
540         (reverse_iterator): Define comparison operators correctly for C++20.
541         (__normal_iterator): Add constraints to comparison operators for C++20.
542         (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
543         overload for input iterators.
544         (move_iterator): Add constraints to comparison operators for C++20.
545         Define operator<=> for C++20.
546         * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
547         * testsuite/24_iterators/move_iterator/move_only.cc: New test.
548         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
549         * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
551         * include/bits/iterator_concepts.h (__detail::__decay_copy)
552         (__detail::__member_begin, __detail::__adl_begin): Move here from
553         <bits/range_access.h>.
554         (__detail::__ranges_begin, __detail::__range_iter_t): Define.
555         * bits/range_access.h (__cust_access::__decay_copy)
556         (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
557         <bits/iterator_concepts.h>.
558         (ranges::iterator_t): Use __detail::__range_iter_t.
559         * include/bits/stl_iterator.h (back_insert_iterator): Simplify
560         conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
561         (front_insert_iterator): Likewise.
562         (insert_iterator): Implement changes from P0896R4 for C++20.
563         * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
564         * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
565         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
566         for inclusion in synopsis_c++20.cc which expects different signatures
567         for some function templates.
568         * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
570         * include/std/type_traits (__is_array_convertible): Move definition
571         to immediately after is_convertible.
573 2020-03-26  Jonathan Wakely  <jwakely@redhat.com>
575         * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
576         (chrono::months, chrono::sys_days, chrono::local_t)
577         (chrono::local_time, chrono::local_seconds, chrono::local_days):
578         Define for C++20.
579         (chrono::time_point): Add missing static assert.
580         * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
581         * testsuite/std/time/clock/file/overview.cc: New test.
582         * testsuite/std/time/clock/file/members.cc: New test.
583         * testsuite/std/time/syn_c++20.cc: New test.
585 2020-03-25  Mike Crowe  <mac@mcrowe.com>
587         * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
588         test.
589         * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
590         test.
592 2020-03-25  Jonathan Wakely  <jwakely@redhat.com>
594         * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
595         * include/std/chrono (filesystem::__file_clock): Here.
596         (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
597         Define public member functions for C++20.
598         (is_clock, is_clock_v): Define traits for C++20.
599         * include/std/condition_variable (condition_variable::wait_until): Add
600         check for valid clock.
601         * include/std/future (_State_baseV2::wait_until): Likewise.
602         * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
603         * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
604         Likewise.
605         * include/std/thread (this_thread::sleep_until): Likewise.
606         * testsuite/30_threads/condition_variable/members/2.cc: Qualify
607         slow_clock with new namespace.
608         * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
609         test.
610         * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
611         New test.
612         * testsuite/30_threads/future/members/clock_neg.cc: New test.
613         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
614         Qualify slow_clock with new namespace.
615         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
616         clock_neg.cc: New test.
617         * testsuite/30_threads/shared_future/members/clock_neg.cc: New
618         test.
619         * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
620         * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
621         New test.
622         * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
623         slow_clock with new namespace.
624         * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
625         * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
626         test.
627         * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
628         * testsuite/std/time/traits/is_clock.cc: New test.
629         * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
630         namespace.
632 2020-03-21  Jonathan Wakely  <jwakely@redhat.com>
634         PR libstdc++/93245
635         * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
636         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
637         Improve test coverage.
639         PR libstdc++/94242
640         * include/bits/fs_path.h (path::_S_str_convert): Replace first
641         parameter with basic_string_view so that strings with different
642         allocators can be accepted.
643         (path::generic_string<C,T,A>()): Use basic_string object that uses the
644         right allocator type.
645         * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
646         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
647         test coverage.
649 2020-03-18  Jonathan Wakely  <jwakely@redhat.com>
651         PR libstdc++/94033
652         * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
653         (__is_nt_default_constructible_impl): Remove.
654         (__is_nothrow_default_constructible_impl): Remove.
655         (__is_nt_constructible_impl): Add bool template parameter. Adjust
656         partial specializations.
657         (__is_nothrow_constructible_impl): Replace class template with alias
658         template.
659         (is_nothrow_default_constructible): Derive from alias template
660         __is_nothrow_constructible_impl instead of
661         __is_nothrow_default_constructible_impl.
662         * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
664         * include/std/stop_token (stop_token::_Stop_state_ref): Define
665         comparison operators explicitly if the compiler won't synthesize them.
667         * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
668         __cpp_lib_concepts before using iter_reference_t.
669         * include/bits/stream_iterator.h (istream_iterator): Check
670         __cpp_lib_concepts before using default_sentinel_t.
671         * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
673         PR libstdc++/94203
674         * include/experimental/executor (executor::executor(Executor)): Call
675         make_shared directly instead of _M_create. Create _Tgt1 object.
676         (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
677         Call allocate_shared directly instead of _M_create. Create _Tgt2
678         object.
679         (executor::target_type): Add cast needed for new _Tgt interface.
680         (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
681         (executor::_Tgt): Define the same interface whether RTTI is enabled or
682         not.
683         (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
684         std::type_info in the interface.
685         (executor::_Tgt::_M_func): Add data member.
686         (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
687         (executor::_Tgt1::_S_func): Define function to access target without
688         depending on RTTI.
689         (executor::_M_create): Remove.
690         (operator==, operator!=): Simplify comparisons for executor.
691         * include/experimental/socket (is_error_code_enum<socket_errc>):
692         Define specialization before use.
693         * testsuite/experimental/net/executor/1.cc: New test.
695 2020-03-16  Jonathan Wakely  <jwakely@redhat.com>
697         PR libstdc++/94199
698         * include/experimental/executor (service_already_exists): Add default
699         constructor. Declare make_service to be a friend.
700         * testsuite/experimental/net/execution_context/make_service.cc: New
701         test.
703 2020-03-12  Jonathan Wakely  <jwakely@redhat.com>
705         * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
706         a null pointer to functions with nonnull(1) attribute.
708 2020-03-11  Patrick Palka  <ppalka@redhat.com>
710         * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
711         'address' -> 'std::__addressof'.
712         * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
713         a non-forward input_range.
714         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
715         default constructor protected instead of deleted, like with
716         input_iterator_wrapper.
717         (test_range::iterator): Add comment explaining that this type is used
718         only when the underlying wrapper is input_iterator_wrapper or
719         output_iterator_wrapper.  Remove delegating defaulted constructor so
720         that the inherited default constructor is used instead.
722         LWG 3286 ranges::size is not required to be valid after a call to
723         ranges::begin on an input range
724         * include/std/ranges (subrange::subrange): Split single-argument
725         constructor into two, one constrained by _S_store_size and another by
726         !_S_store_size.
727         (take_view::begin): Call size() before calling ranges::begin(_M_base).
728         * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
729         * testsuite/std/ranges/subrange/lwg3286.cc: New test.
731 2020-03-10  Jonathan Wakely  <jwakely@redhat.com>
733         * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
734         instead of _M_current.
735         (split_view::_OuterIter::operator++): Likewise.
737         * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
738         (transform_view::_Iterator::operator*): Add noexcept-specifier.
739         (transform_view::_Iterator::iter_move): Inline __iter_move body here.
740         (split_view::_OuterIter::__current): Add noexcept.
741         (split_view::_InnerIter::__iter_swap): Remove.
742         (split_view::_InnerIter::__iter_move): Remove.
743         (split_view::_InnerIter::_M_i_current): New accessors.
744         (split_view::_InnerIter::__at_end): Use _M_i_current().
745         (split_view::_InnerIter::operator*): Likewise.
746         (split_view::_InnerIter::operator++): Likewise.
747         (iter_move(const _InnerIter&)): Likewise.
748         (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
749         * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
750         for iter_move and iter_swap on split_view's inner iterator.
752         PR c++/94117
753         * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
754         Change expression in noexcept-specifier to match function body.
756         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
757         comment explaining multiple dg-do directives.
758         * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
759         so test is run as well as compiled.
761 2020-03-09  Jonathan Wakely  <jwakely@redhat.com>
763         PR libstdc++/94063
764         * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
765         handle concatenations that change the type of the first component.
766         (path::operator+=(basic_string_view<value_type>)): Likewise.
767         * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
769 2020-03-06  Patrick Palka  <ppalka@redhat.com>
771         * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
772         join_view::_Sentinel<!_Const>.
773         * testsuite/std/ranges/adaptors/join.cc: Augment test.
775         PR libstdc++/93978
776         * include/bits/range_access.h (__cust_access::_Empty::operator()):
777         Declare return type to be bool instead of auto.
778         * testsuite/std/ranges/adaptors/93978.cc: New test.
780 2020-03-06  Jonathan Wakely  <jwakely@redhat.com>
782         PR libstdc++/94069
783         * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
784         (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
785         second argument to __glibcxx_rwlock_init.
786         * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
788         PR libstdc++/93244
789         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
790         test to not fail due to PR 94063.
791         * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
792         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
794 2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
796         * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
797         would match ENOSYS.
799 2020-03-05  Jonathan Wakely  <jwakely@redhat.com>
801         * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
802         * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
803         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
804         * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
805         for return value, and in comparison.
806         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
808         PR libstdc++/94051
809         * include/std/string_view: Include <bits/ostream_insert.h>.
810         * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
812 2020-03-04  Jonathan Wakely  <jwakely@redhat.com>
814         * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
816 2020-03-04  Patrick Palka  <ppalka@redhat.com>
818         PR libstdc++/94017
819         * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
820         condition for when to use memset, making sure to additionally check that
821         the output pointer's value type is a non-volatile byte type.  Instead of
822         requiring that the fill type is a byte type, just require that it's an
823         integral type.
824         * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
825         New test.
826         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
827         New test.
828         * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
829         blocked by PR 94017.
830         * testsuite/25_algorithms/fill/94017.cc: New test.
831         * testsuite/25_algorithms/fill_n/94017.cc: New test.
833         LWG 3355 The memory algorithms should support move-only input iterators
834         introduced by P1207
835         * include/bits/ranges_uninitialized.h
836         (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
837         to copy __ifirst, which could be a move-only input iterator.  Use
838         operator- instead of ranges::distance to compute distance from a sized
839         sentinel.
840         (__uninitialized_copy_n_fn::operator()): Likewise.
841         (__uninitialized_move_fn::operator()): Likewise.
842         (__uninitialized_move_n_fn::operator()): Likewise.
843         (__uninitialized_destroy_fn::operator()): Use std::move to avoid
844         attempting to copy __first.
845         (__uninitialized_destroy_n_fn::operator()): Likewise.
846         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
847         Augment test.
848         * .../specialized_algorithms/uninitialized_copy/constrained.cc:
849         Likewise.
850         * .../specialized_algorithms/uninitialized_move/constrained.cc:
851         Likewise.
853         * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
854         protected instead of private.
855         (test_sized_range_sized_sent): New.
857         * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
858         New testsuite iterator.
859         * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
860         * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
862         * include/bits/ranges_uninitialized.h
863         (uninitialized_copy_fn::operator()): Pass a reference type as the first
864         argument to is_nothrow_assignable_v.
865         (uninitialized_copy_fn::operator()): Likewise.
866         (uninitialized_move_fn::operator()): Likewise.  Return an in_out_result
867         with the input iterator stripped of its move_iterator.
868         (uninitialized_move_n_fn::operator()): Likewise.
869         (uninitialized_fill_fn::operator()): Pass a reference type as the first
870         argument to is_nothrow_assignable_v.
871         (uninitialized_fill_n_fn::operator()): Likewise.
873 2020-03-03  Jonathan Wakely  <jwakely@redhat.com>
875         PR libstdc++/94013
876         * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
877         traits to control when to use memmove and memcmp optimizations.
878         (__is_nonvolatile_trivially_copyable): New helper trait.
879         * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
880         use memcmp optimization with volatile data.
881         * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
882         (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
883         * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
884         (__copy_move_backward_a2): Likewise.
885         (__equal_aux1): Use __memcmpable.
886         (__lexicographical_compare_aux): Do not use memcmp optimization with
887         volatile data.
888         * testsuite/25_algorithms/copy/94013.cc: New test.
889         * testsuite/25_algorithms/copy_backward/94013.cc: New test.
890         * testsuite/25_algorithms/equal/94013.cc: New test.
891         * testsuite/25_algorithms/fill/94013.cc: New test.
892         * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
893         * testsuite/25_algorithms/move/94013.cc: New test.
894         * testsuite/25_algorithms/move_backward/94013.cc: New test.
896         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
897         Avoid redundant iterator comparisons (LWG 3410).
899 2020-03-02  Jonathan Wakely  <jwakely@redhat.com>
901         PR libstdc++/93972
902         * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
903         differ.
904         * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
906         * include/std/ranges (__detail::__maybe_empty_t): Rename to
907         __maybe_present_t.
908         (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
910         * include/bits/ranges_algo.h (shift_right): Add 'typename' to
911         dependent type.
913 2020-03-01  H.J. Lu  <hongjiu.lu@intel.com>
915         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
917 2020-02-29  John David Anglin  <danglin@gcc.gnu.org>
919         * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
920         * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
921         * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
922         * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
923         * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
925         * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
926         Add libatomic option.
927         * testsuite/30_threads/jthread/jthread.cc: Likewise.
929 2020-02-29  François Dumont  <fdumont@gcc.gnu.org>
931         * include/bits/stl_algo.h
932         (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
933         * include/bits/stl_algobase.h: ...here.
934         * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
936 2020-02-29  John David Anglin  <danglin@gcc.gnu.org>
938         * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
939         option.
940         * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
941         Likewise.
942         * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
943         * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
944         * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
945         * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
946         * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
947         * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
948         * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
949         Likewise.
951         PR libstdc++/92906
952         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
954 2020-02-28  Patrick Palka  <ppalka@redhat.com>
956         PR libstdc++/93972
957         * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
958         Fix condition for when to use memcmp, making it consistent with the
959         corresponding condition used in std::lexicographical_compare.
960         * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
962         * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
963         functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
964         existing signatures for C++2a.
966 2020-02-28  Jonathan Wakely  <jwakely@redhat.com>
968         * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
969         test instead of just compiling it.
971 2020-02-28  Patrick Palka  <ppalka@redhat.com>
973         * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
974         whenever the underlying range models common_range.
976         * include/std/ranges (__detail::_CachedPosition): New struct.
977         (views::filter_view::_S_needs_cached_begin): New member variable.
978         (views::filter_view::_M_cached_begin): New member variable.
979         (views::filter_view::begin): Use _M_cached_begin to cache its
980         result.
981         (views::drop_view::_S_needs_cached_begin): New static member variable.
982         (views::drop_view::_M_cached_begin): New member variable.
983         (views::drop_view::begin): Use _M_cached_begin to cache its result
984         when _S_needs_cached_begin.
985         (views::drop_while_view::_M_cached_begin): New member variable.
986         (views::drop_while_view::begin): Use _M_cached_begin to cache its
987         result.
988         (views::reverse_view::_S_needs_cached_begin): New static member
989         variable.
990         (views::reverse_view::_M_cached_begin): New member variable.
991         (views::reverse_view::begin): Use _M_cached_begin to cache its result
992         when _S_needs_cached_begin.
993         * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
994         drop_view::begin caches its result.
995         * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
996         that drop_while_view::begin caches its result.
997         * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
998         filter_view::begin caches its result.
999         * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
1000         reverse_view::begin caches its result.
1002 2020-02-28  Jonathan Wakely  <jwakely@redhat.com>
1004         * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
1005         filesystems that silently truncate timestamps.
1006         * testsuite/experimental/filesystem/operations/last_write_time.cc:
1007         Likewise.
1009         * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
1010         -Wstringop-overflow warnings.
1012 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
1014         * testsuite/lib/libstdc++.exp (v3_target_compile): Add
1015         -fdiagnostics-urls=never to options.
1017 2020-02-27  Patrick Palka  <ppalka@redhat.com>
1019         * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
1020         _Iterator<!_Const>.
1021         (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
1022         (take_view::_Sentinel<_Const>): Likewise.
1023         (take_while_view::_Sentinel<_Const>): Likewise.
1024         (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
1025         * testsuite/std/ranges/adaptors/split.cc: Augment test.
1026         * testsuite/std/ranges/adaptors/take.cc: Augment test.
1027         * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
1028         * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1030         * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
1031         base() of a vector<>::iterator is a pointer.
1032         * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
1033         * testsuite/25_algorithms/move/constrained.cc: Likewise.
1034         * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
1035         * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
1036         instead of &foo[0].
1037         * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
1038         * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
1039         * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
1040         * testsuite/25_algorithms/sort/constrained.cc: Likewise.
1041         * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
1043 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
1045         * include/debug/array (operator<=>): Define for C++20.
1046         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
1047         Adjust dg-error line numbers.
1048         * testsuite/23_containers/array/tuple_interface/
1049         tuple_element_debug_neg.cc: Likewise.
1051         * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
1052         defining _GLIBCXX_ASSERTIONS.
1053         * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
1054         * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
1055         * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
1056         * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
1057         * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
1058         * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
1059         * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
1060         * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
1061         * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
1062         * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
1063         * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
1064         * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
1066         * include/debug/string (__gnu_debug::basic_string::insert): Fix for
1067         C++98 where the member function of the base class returns void.
1069         * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
1070         equality comparisons that support value-initialized iterators.
1072         * include/bits/boost_concept_check.h (__function_requires): Add
1073         _GLIBCXX14_CONSTEXPR.
1074         * testsuite/25_algorithms/min/concept_checks.cc: New test.
1076 2020-02-26  Patrick Palka  <ppalka@redhat.com>
1078         PR libstdc++/93936
1079         * include/std/ranges (split_view::_InnerIter::operator==): Compare
1080         the operands' _M_i rather than their _M_i.current().
1081         * testsuite/std/ranges/adaptors/split.cc: Augment test.
1083         P1645R1 constexpr for <numeric> algorithms
1084         * include/bits/stl_numeric.h (iota, accumulate, inner_product,
1085         partial_sum, adjacent_difference): Make conditionally constexpr for
1086         C++20.
1087         * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
1088         test macro.
1089         (reduce, transform_reduce, exclusive_scan, inclusive_scan,
1090         transform_exclusive_scan, transform_inclusive_scan): Make conditionally
1091         constexpr for C++20.
1092         * include/std/version (__cpp_lib_constexpr_numeric): Define.
1093         * testsuite/26_numerics/accumulate/constexpr.cc: New test.
1094         * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
1095         * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
1096         * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
1097         * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
1098         * testsuite/26_numerics/iota/constexpr.cc: Likewise.
1099         * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
1100         * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
1101         * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
1102         * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
1103         * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
1105 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
1107         * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
1108         variables in smaller scope and avoid calling ranges::distance when we
1109         know they are pointers. Remove statically-unreachable use of
1110         __builtin_unreachable().
1111         * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
1112         Define inline.
1114         * include/std/ranges (__detail::__maybe_empty_t): Define new helper
1115         alias.
1116         (__detail::__maybe_const_t): Likewise.
1117         (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
1118         (transform_view, take_view, take_while_view, elements_view): Use
1119         __maybe_const_t.
1120         (join_view, split_view): Use both.
1122 2020-02-25  Patrick Palka  <ppalka@redhat.com>
1124         LWG 3397 basic_istream_view::iterator should not provide
1125         iterator_category
1126         * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
1127         Rename to ...
1128         (basic_istream_view:_Iterator::iterator_concept): ... this.
1129         * testsuite/std/ranges/istream_view.cc: Augment test.
1131         LWG 3325 Constrain return type of transformation function for
1132         transform_view
1133         * include/std/ranges (transform_view): Constrain the return type of the
1134         transformation function as per LWG 3325.
1135         * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
1137         LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
1138         * include/std/ranges (join_view::_Iterator::operator--): Require that
1139         range_reference_t<_Base> models common_range.
1140         * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
1142         LWG 3301 transform_view::_Iterator has incorrect iterator_category
1143         * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
1144         determination of iterator_category as per LWG 3301.
1145         * testsuite/std/ranges/adaptors/transform.cc: Augment test.
1147         LWG 3292 iota_view is under-constrained
1148         * include/std/ranges (iota_view): Require that _Winc models semiregular
1149           as per LWG 3292.
1150         * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
1152 2020-02-25  Jonathan Wakely  <jwakely@redhat.com>
1154         * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
1155         during constant evaluation. Call __builtin_memmove directly instead of
1156         __memmove.
1157         (__copy_or_move_backward): Likewise.
1158         * include/bits/stl_algobase.h (__memmove): Remove.
1159         (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
1160         (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
1161         Use __builtin_memmove directly instead of __memmove.
1162         (__copy_move_a2): Do not use memmove during constant evaluation.
1163         (__copy_move_backward_a2): Use _IsMove constant to select correct
1164         __copy_move_backward specialization.
1165         * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
1166         begin turned into moves during constant evaluation.
1168         * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
1169         previous commit.
1171         PR libstdc++/93872
1172         * include/bits/stl_algobase.h (__memmove): Cast away const before
1173         doing move assignment.
1174         * testsuite/25_algorithms/move/93872.cc: New test.
1175         * testsuite/25_algorithms/move_backward/93872.cc: New test.
1177 2020-02-24  Patrick Palka  <ppalka@redhat.com>
1179         PR libstdc++/93884
1180         * include/bits/ranges_algobase.h (__copy_or_move,
1181         __copy_or_move_backward): Don't inspect the iter_value_t of the output
1182         iterator, instead inspect its iterator_traits directly.
1183         * include/bits/stl_iterator.h (back_insert_iterator::container):
1184         Conditionally initialize.
1185         (back_insert_iterator::difference_type): Conditionally define.
1186         (back_insert_iterator::back_insert_iterator): Conditionally define this
1187         default constructor.
1188         (front_insert_iterator::container): Conditionally initialize.
1189         (front_insert_iterator::difference_type): Conditionally define.
1190         (front_insert_iterator::front_insert_iterator): Conditionally define
1191         this default constructor.
1192         * 24_iterators/back_insert_iterator/pr93884.cc: New test.
1193         * 24_iterators/front_insert_iterator/pr93884.cc: New test.
1195         P0769R2 Add shift to <algorithm>
1196         * include/bits/ranges_algo.h (shift_left, shift_right): New.
1197         * testsuite/25_algorithms/shift_left/1.cc: New test.
1198         * testsuite/25_algorithms/shift_right/1.cc: New test.
1200 2020-02-24  Jonathan Wakely  <jwakely@redhat.com>
1202         * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1203         Make noexcept-specifier conditional.
1204         * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
1205         noexcept-specifier.
1207         * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
1208         Add constructor.
1209         (operator==(istream_iterator, default_sentinel_t)): Add operator.
1210         (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
1211         * include/bits/streambuf_iterator.h
1212         (istreambuf_iterator(default_sentinel_t)): Add constructor.
1213         (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
1214         * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
1215         New test.
1216         * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
1217         * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
1218         New test.
1219         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
1221         * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
1222         (ranges::enable_view): Simplify (LWG 3326).
1223         * include/bits/range_access.h (ranges::enable_view): Declare.
1224         * include/bits/regex.h (__enable_view_impl): Remove partial
1225         specialization.
1226         * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
1227         * include/bits/stl_set.h (__enable_view_impl): Likewise.
1228         * include/bits/unordered_set.h (__enable_view_impl): Likewise.
1229         * include/debug/multiset.h (__enable_view_impl): Likewise.
1230         * include/debug/set.h (__enable_view_impl): Likewise.
1231         * include/debug/unordered_set (__enable_view_impl): Likewise.
1232         * include/experimental/string_view (ranges::enable_view): Define
1233         partial specialization.
1234         * include/std/span (ranges::enable_view): Likewise.
1235         * include/std/string_view (ranges::enable_view): Likewise.
1236         * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
1238 2020-02-21  Jonathan Wakely  <jwakely@redhat.com>
1240         * include/std/optional (operator<=>(optional<T>, optional<U>))
1241         (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
1242         Define for C++20.
1243         * include/std/tuple (__tuple_cmp): New helper function for <=>.
1244         (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
1245         * include/std/variant (operator<=>(variant<T...>, variant<T...>))
1246         (operator<=>(monostate, monostate)): Define for C++20.
1247         * testsuite/20_util/optional/relops/three_way.cc: New test.
1248         * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
1249         * testsuite/20_util/variant/89851.cc: Move to ...
1250         * testsuite/20_util/variant/relops/89851.cc: ... here.
1251         * testsuite/20_util/variant/90008.cc: Move to ...
1252         * testsuite/20_util/variant/relops/90008.cc: ... here.
1253         * testsuite/20_util/variant/relops/three_way.cc: New test.
1255 2020-02-20  Patrick Palka  <ppalka@redhat.com>
1257         * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
1258         function.
1259         (views::__adaptor::_RangeAdaptor::operator()): Add comments.  Use
1260         __maybe_refwrap to capture lvalue references by reference, and then use
1261         unwrap_reference_t to forward the by-reference captures as references.
1262         * testsuite/std/ranges/adaptors/split.cc: Augment test.
1263         * testsuite/std/ranges/adaptors/split_neg.cc: New test.
1265         * include/std/ranges (iota_view): Forward declare _Sentinel.
1266         (iota_view::_Iterator): Befriend _Sentinel.
1267         (iota_view::_Sentinel::_M_equal): New member function.
1268         (iota_view::_Sentinel::operator==): Use it.
1269         (views::_Iota::operator()): Forward __f using the correct type.
1270         * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
1271         with integers of different signedness, to appease iota_view's deduction
1272         guide.
1273         * testsuite/std/ranges/iota/iota_view.cc: Augment test.
1275 2020-02-20  Jonathan Wakely  <jwakely@redhat.com>
1277         * include/bits/range_access.h (ranges::begin): Reject array of
1278         incomplete type.
1279         (ranges::end, ranges::size): Require arrays to be bounded.
1280         (ranges::data): Require lvalue or borrowed_range.
1281         (ranges::iterator_t): Remove constraint.
1282         * testsuite/std/ranges/access/begin.cc: Do not check array of
1283         incomplete type.
1284         * testsuite/std/ranges/access/begin_neg.cc: New test.
1285         * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
1286         * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
1287         * testsuite/std/ranges/access/ssize.cc: Do not check array of
1288         incomplete type.
1290         * include/std/system_error (error_category::operator<=>)
1291         (operator<=>(const error_code&, const error_code&))
1292         (operator<=>(const error_condition&, const error_condition&)): Define
1293         for C++20.
1294         * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
1295         * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
1296         test.
1297         * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
1298         incorrect comment.
1299         * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
1300         * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
1301         incorrect comment.
1302         * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
1303         * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
1304         incorrect comment.
1305         * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
1306         * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
1307         Remove incorrect comment.
1308         * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
1309         test.
1311         * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
1313         * include/std/thread (thread::id::operator<=>): Define for C++20.
1314         * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
1315         functions in namespace std.
1316         * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
1318 2020-02-19  Patrick Palka  <ppalka@redhat.com>
1320         * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
1321         null terminator of the underlying string as part of the test_range.
1322         (main): Call test03.
1324 2020-02-19  Jonathan Wakely  <jwakely@redhat.com>
1326         * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
1327         requirement (LWG 3385).
1328         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
1329         expected declaration.
1331         * include/std/ranges (take_while_view, drop_view, drop_while_view)
1332         (elements_view:_Iterator): Initialize data members (LWG 3364).
1334         * libsupc++/compare (three_way_comparable): Remove always-false check
1335         that should have been removed with weak_equality (P1959R0).
1336         (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
1338         * include/std/concepts (__detail::__partially_ordered_with): Move here
1339         from <compare>.
1340         (totally_ordered, totally_ordered_with): Use __partially_ordered_with
1341         to simplify definition (LWG 3331).
1342         * libsupc++/compare (__detail::__partially_ordered_with): Move to
1343         <concepts>.
1345         * include/std/concepts (totally_ordered_with): Remove redundant
1346         requirement (LWG 3329).
1348         * include/std/ranges (__detail::__convertible_to_non_slicing): New
1349         helper concept.
1350         (__detail::__pair_like_convertible_to): Remove.
1351         (__detail::__pair_like_convertible_from): Add requirements for
1352         non-slicing conversions.
1353         (subrange): Constrain constructors with __convertible_to_non_slicing.
1354         Remove constructors from pair-like types. Add new deduction guide.
1355         * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
1357         * include/bits/iterator_concepts.h (iter_move): Add declaration to
1358         prevent unqualified lookup finding a suitable declaration (LWG 3247).
1360         * include/std/memory_resource (polymorphic_allocator::allocate)
1361         (polymorphic_allocator::allocate_object): Change type of exception to
1362         bad_array_new_length (LWG 3237).
1363         * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
1365         * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
1366         * include/std/version (__cpp_lib_unwrap_ref): Likewise.
1367         * testsuite/20_util/unwrap_reference/1.cc: Check macro.
1368         * testsuite/20_util/unwrap_reference/3.cc: New test.
1370         * include/std/numeric (midpoint(T8, T*)): Do not check for complete
1371         type during overload resolution, use static assert instead (LWG 3200).
1372         * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
1373         incomplete type.
1374         * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
1376         * include/std/span (span(T (&)[N])): Use non-deduced context to
1377         prevent first parameter from interfering with class template argument
1378         deduction (LWG 3369).
1379         * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
1380         * testsuite/23_containers/span/lwg3255.cc: Check for construction from
1381         rvalues.
1383         * include/std/span (span::const_iterator, span::const_reverse_iterator)
1384         (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
1385         Remove (LWG 3320).
1386         * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
1387         and cend.
1388         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
1389         Likewise.
1390         * testsuite/20_util/specialized_algorithms/uninitialized_copy/
1391         constrained.cc: Likewise.
1392         * testsuite/20_util/specialized_algorithms/
1393         uninitialized_default_construct/constrained.cc: Likewise.
1394         * testsuite/20_util/specialized_algorithms/uninitialized_fill/
1395         constrained.cc: Likewise.
1396         * testsuite/20_util/specialized_algorithms/uninitialized_move/
1397         constrained.cc: Likewise.
1398         * testsuite/20_util/specialized_algorithms/
1399         uninitialized_value_construct/constrained.cc: Likewise.
1401         * include/bits/range_access.h (range_size_t): Define alias template.
1402         * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
1403         * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
1405         * include/std/ranges (filter_view, transform_view, take_view)
1406         (join_view, split_view, reverse_view): Remove commented-out converting
1407         constructors (LWG 3280).
1409         * include/std/memory (uninitialized_construct_using_allocator): Use
1410         std::construct_at (LWG 3321).
1412         * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
1413         (polymorphic_allocator::allocate_object)
1414         (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
1416         LWG 3379. "safe" in several library names is misleading
1417         * include/bits/range_access.h (enable_safe_range): Rename to
1418         enable_borrowed_range.
1419         (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
1420         (safe_range): Rename to borrowed_range.
1421         * include/bits/ranges_algo.h: Adjust to use new names.
1422         * include/bits/ranges_algobase.h: Likewise.
1423         * include/bits/ranges_uninitialized.h: Likewise.
1424         * include/std/ranges: Likewise.
1425         (safe_iterator_t): Rename to borrowed_iterator_t.
1426         (safe_subrange_t): Rename to borrowed_subrange_t.
1427         * include/std/span: Adjust to use new names.
1428         * include/std/string_view: Likewise.
1429         * include/experimental/string_view: Likewise.
1430         * testsuite/std/ranges/access/begin.cc: Likewise.
1431         * testsuite/std/ranges/access/cbegin.cc: Likewise.
1432         * testsuite/std/ranges/access/cdata.cc: Likewise.
1433         * testsuite/std/ranges/access/cend.cc: Likewise.
1434         * testsuite/std/ranges/access/crbegin.cc: Likewise.
1435         * testsuite/std/ranges/access/crend.cc: Likewise.
1436         * testsuite/std/ranges/access/data.cc: Likewise.
1437         * testsuite/std/ranges/access/end.cc: Likewise.
1438         * testsuite/std/ranges/access/rbegin.cc: Likewise.
1439         * testsuite/std/ranges/access/rend.cc: Likewise.
1440         * testsuite/std/ranges/safe_range.cc: Likewise.
1441         * testsuite/std/ranges/safe_range_types.cc: Likewise.
1442         * testsuite/util/testsuite_iterators.h: Likewise.
1444         * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
1445         (tuple_element<1, const subrange<I, S, K>>): Add partial
1446         specializations (LWG 3398).
1447         * testsuite/std/ranges/subrange/tuple_like.cc: New test.
1449         * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1450         (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
1451         (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
1453 2020-02-18  Patrick Palka  <ppalka@redhat.com>
1455         P1983R0 Wording for GB301, US296, US292, US291, and US283
1456         * include/std/ranges (filter_view::pred): New member function.
1457         (join_view::_Iterator::_Iterator): Remove now-redundant comment since
1458         P1983R0 fixes the highlighted issue in the same way.
1459         (join_view::_Iterator<_Const>): Add friend
1460         join_view::_Iterator<!_Const>.
1461         (join_view::_M_inner): Remove mutable specifier, effectively reverting
1462         the proposed wording changes of P3278.
1463         (join_view::begin): Refine the condition for when to return a const
1464         iterator.
1465         (split_view::_OuterIter::_OuterIter): Adjust constraints.
1466         * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
1467         exists and works.
1469 2020-02-18  Jonathan Wakely  <jwakely@redhat.com>
1471         PR libstdc++/93818
1472         * include/std/ranges (_RangeAdaptor): Add deduction guide.
1473         (filter_view::_Iterator): Add alias _Vp_iter and use in place of
1474         iterator_t<_Vp>.
1475         (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
1476         (transform_view::_Iterator): Add alias _Base_iter and use in place of
1477         iterator_t<_Base>.
1478         (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
1479         (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
1480         (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
1481         (split_view::_InnerIter::_S_iter_cat()): Likewise.
1483         * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
1484         assumption that long is wider than int.
1485         * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
1486         * testsuite/20_util/integer_comparisons/less.cc: Likewise.
1487         * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
1488         * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
1490         P1976R2 Fixed-size span construction from dynamic range
1491         * include/std/span (__cpp_lib_span): Update value.
1492         (span(It, size_type), span(It, End)): Make conditionally explicit. Add
1493         assertion.
1494         (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
1495         constraints.
1496         (span::first<Count>(), span::last<Count>()): Use explicit type in
1497         return statement.
1498         (as_bytes, as_writable_bytes): Likewise.
1499         * include/std/version (__cpp_lib_span): Update value.
1500         * testsuite/23_containers/span/1.cc: Check new value.
1501         * testsuite/23_containers/span/2.cc: Check new value.
1502         * testsuite/23_containers/span/explicit.cc: New test.
1504         * include/std/span (span::__is_compatible_array): Simplify alias
1505         template by using requires-clause.
1506         (span::__is_compatible_ref): New alias template for constraining
1507         constructors.
1508         (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
1509         (span(It, size_type), span(It, End)): Use __is_compatible_ref.
1510         (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
1511         redundant parentheses.
1512         (span(R&&)): Add missing constraints.
1514         * include/std/span (span): Reorder members and rename template
1515         parameters to match declarations in the C++2a working paper.
1517         P2116R0 Remove tuple-like protocol support from fixed-extent span
1518         * include/std/span (get, tuple_size, tuple_element): Remove.
1519         * testsuite/23_containers/span/everything.cc: Remove checks for
1520         tuple-like API.
1521         * testsuite/23_containers/span/get_neg.cc: Remove.
1522         * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
1523         * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
1524         * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
1526 2020-02-17  Patrick Palka  <ppalka@redhat.com>
1528         P2106R0 Alternative wording for GB315 and GB316
1529         * include/bits/ranges_algo.h (in_fun_result): New.
1530         (for_each_result, for_each_n_result): Change into an alias of
1531         in_fun_result.
1532         (in_in_result): New.
1533         (mismatch_result): Change into an alias of in_in_result.
1534         (copy_if_result): Change into an alias of in_out_result.
1535         (swap_ranges_result): Change into an alias of in_in_result.
1536         (unary_transform_result): Change into an alias of in_out_result.
1537         (in_in_out_result): New.
1538         (binary_transform_result): Change into an alias of in_in_out_result.
1539         (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
1540         remove_copy_result, unique_copy_result, reverse_copy_result,
1541         rotate_copy_result, partial_sort_copy_result): Change into an alias of
1542         in_out_result.
1543         (in_out_out_result): New.
1544         (partition_copy_result, merge_result): Change into an alias of
1545         in_out_out_result.
1546         (set_union_result, set_intersection_result): Change into an alias of
1547         in_in_out_result.
1548         (set_difference_result): Change into an alias of in_out_result.
1549         (set_symmetric_difference): Change into an alias of in_in_out_result.
1550         (min_max_result): New.
1551         (minmax_result, minmax_element_result): Change into an alias of
1552         min_max_result.
1553         (in_found_result): New.
1554         (next_permutation_result, prev_permutation_result): Change into an alias
1555         of in_found_result.
1556         (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
1557         Adjust following changes to next_permutation_result and
1558         prev_permutation_result.
1559         * include/bits/ranges_algobase.h (in_out_result): New.
1560         (copy_result, move_result, move_backward_result, copy_backward_result,
1561         copy_n_result): Change into an alias of in_out_result.
1562         * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
1563         uninitialized_copy_n_result, uninitialized_move_result,
1564         uninitialized_move_n_result): Likewise.
1565         * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
1566         structured bindings.
1567         * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
1569         P1243R4 Rangify new algorithms
1570         * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
1571         for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
1572         * testsuite/25_algorithms/clamp/constrained.cc: New test.
1573         * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
1574         * testsuite/25_algorithms/sample/constrained.cc: New test.
1576 2020-02-17  Jonathan Wakely  <jwakely@redhat.com>
1578         P1964R2 Wording for boolean-testable
1579         * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
1580         (__adjacent_find_fn): Cast result of predicate to bool.
1581         * include/std/concepts (__boolean): Remove.
1582         (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
1583         new helper concepts.
1584         (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
1585         (predicate): Use __boolean_testable instead of boolean.
1586         * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
1587         Likewise.
1589         P1970R2 Consistency for size() functions: Add ranges::ssize
1590         * include/bits/range_access.h (_SSize, ssize): Define for C++20.
1591         * testsuite/std/ranges/access/ssize.cc: New test.
1593         P1956R1 On the names of low-level bit manipulation functions
1594         * include/bits/hashtable_policy.h: Update comment.
1595         * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
1596         (ispow2, ceil2, floor2, log2p1): Likewise.
1597         (__cpp_lib_int_pow2): Add feature test macro.
1598         * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
1599         * include/std/memory (assume_aligned): Adjust use of ispow2.
1600         * include/std/version (__cpp_lib_int_pow2): Add.
1601         * libsupc++/new_opa.cc: Adjust use of __ispow2.
1602         * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
1603         * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
1604         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
1605         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
1606         * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
1607         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
1608         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
1609         * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
1610         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
1611         * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
1612         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
1613         * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
1615         * include/std/charconv: Add comment.
1617         PR libstdc++/92546 (partial)
1618         * include/bits/random.h (uniform_random_bit_generator): Move definition
1619         to <bits/uniform_int_dist.h>.
1620         * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
1621         of <bits/random.h>.
1622         * include/bits/ranges_algobase.h: Do not include <cmath>.
1623         * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
1624         Move here.
1625         * include/std/ranges: Do not include <limits>.
1626         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1628         PR libstdc++/92546 (partial)
1629         * include/Makefile.am: Add new header.
1630         * include/Makefile.in: Regenerate.
1631         * include/bits/int_limits.h: New header.
1632         * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
1633         numeric_limits with __detail::__int_limits.
1634         * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
1635         (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
1636         Likewise.
1637         * include/std/charconv (__to_chars_8, __from_chars_binary)
1638         (__from_chars_alpha_to_num, from_chars): Likewise.
1639         * include/std/memory_resource (polymorphic_allocator::allocate)
1640         (polymorphic_allocator::allocate_object): Likewise.
1641         * include/std/string_view (basic_string_view::_S_compare): Likewise.
1642         * include/std/utility (in_range): Likewise.
1643         * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
1644         extra error about incomplete type __int_limits<bool>.
1645         * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
1646         * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1647         * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1648         * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1649         * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1650         * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
1651         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
1652         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
1653         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
1654         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
1655         * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1656         * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
1658         * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
1659         value for partial_ordering::unordered.
1661         * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
1662         const-qualified expression variations.
1663         * include/std/concepts (copyable): Likewise.
1665         * include/std/type_traits (__is_standard_integer): New helper trait.
1666         * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
1667         (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
1668         * include/std/version (__cpp_lib_integer_comparison_functions): Define.
1669         * testsuite/20_util/integer_comparisons/1.cc: New test.
1670         * testsuite/20_util/integer_comparisons/2.cc: New test.
1671         * testsuite/20_util/integer_comparisons/equal.cc: New test.
1672         * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
1673         * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
1674         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
1675         * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
1676         * testsuite/20_util/integer_comparisons/in_range.cc: New test.
1677         * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
1678         * testsuite/20_util/integer_comparisons/less.cc: New test.
1679         * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
1680         * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
1681         * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
1682         * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
1683         * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
1685 2020-02-16  Patrick Palka  <ppalka@redhat.com>
1687         * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
1688         Move code after an early exit constexpr if to under an else branch.
1689         * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
1691 2020-02-15  Patrick Palka  <ppalka@redhat.com>
1693         * include/bits/ranges_algo.h: Adjust whitespace and formatting.
1694         * include/bits/ranges_algobase.h: Likewise.
1695         * include/bits/ranges_uninitialized.h: Likewise.
1697         * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
1698         binary_search, copy_if, count, count_if, equal_range, find, find_end,
1699         find_first_of, find_if, find_if_not, for_each, generate, generate_n,
1700         includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
1701         is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
1702         lower_bound, make_heap, max, max_element, merge, min, min_element,
1703         minmax, minmax_element, mismatch, next_permutation, none_of,
1704         nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
1705         partition_point, pop_heap, prev_permutation, push_heap, remove,
1706         remove_copy, remove_copy_if, remove_if, replace, replace_copy,
1707         replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
1708         search, search_n, set_difference, set_intersection,
1709         set_symmetric_difference, set_union, shuffle, sort, sort_heap,
1710         stable_partition, stable_sort, swap_ranges, transform, unique,
1711         unique_copy, upper_bound): Convert into function objects.
1712         * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
1713         fill, move_backward, copy_backward): Likewise.
1714         * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
1715         uninitialized_default_construct_n, uninitialized_value_construct,
1716         uninitialized_value_construct_n, uninitialized_copy,
1717         uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
1718         uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
1719         destroy, destroy_n): Likewise.
1721         * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
1722         (ranges::find_end): ... here.
1723         (ranges::__lexicographical_compare): Fold into ...
1724         (ranges::lexicographical_compare): ... here.
1725         * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
1726         (ranges::equal): ... here.
1728 2020-02-15  Jonathan Wakely  <jwakely@redhat.com>
1730         * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
1731         * include/std/deque: Likewise.
1732         * include/std/forward_list: Likewise.
1733         * include/std/list: Likewise.
1734         * include/std/string: Likewise.
1735         * include/std/vector: Likewise.
1736         * include/std/version: Likewise.
1737         * testsuite/23_containers/deque/erasure.cc: Test for new value.
1738         * testsuite/23_containers/forward_list/erasure.cc: Likewise.
1739         * testsuite/23_containers/list/erasure.cc: Likewise.
1740         * testsuite/23_containers/map/erasure.cc: Likewise.
1741         * testsuite/23_containers/set/erasure.cc: Likewise.
1742         * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
1743         * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
1744         * testsuite/23_containers/vector/erasure.cc: Likewise.
1746 2020-02-15  Jonathan Wakely  <jwakely@redhat.com>
1748         * include/bits/random.h (uniform_random_bit_generator): Require min()
1749         and max() to be constant expressions and min() to be less than max().
1750         * testsuite/26_numerics/random/concept.cc: Check additional cases.
1751         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
1753 2020-02-13  Patrick Palka  <ppalka@redhat.com>
1755         * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
1756         * include/Makefile.in: Regenerate.
1757         * include/bits/ranges_uninitialized.h: New header.
1758         * include/std/memory: Include it.
1759         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
1760         test.
1761         * .../uninitialized_copy/constrained.cc: New test.
1762         * .../uninitialized_default_construct/constrained.cc: New test.
1763         * .../uninitialized_fill/constrained.cc: New test.
1764         * .../uninitialized_move/constrained.cc: New test.
1765         * .../uninitialized_value_construct/constrained.cc: New test.
1767         * include/Makefile.am: Add bits/ranges_algobase.h
1768         * include/Makefile.in: Regenerate.
1769         * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
1770         existing #includes.
1771         (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
1772         __detail::__is_move_iterator, copy_result, move_result,
1773         __equal, equal, copy_result, move_result, move_backward_result,
1774         copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
1775         move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
1776         fill): Split out into ...
1777         * bits/range_algobase.h: ... this new header.
1779 2020-02-12  Patrick Palka  <ppalka@redhat.com>
1781         LWG 3389 and LWG 3390
1782         * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
1783         constructing the move_iterator with __i.
1784         (counted_iterator::counted_iterator): Use std::move when initializing
1785         M_current with __i.
1786         * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
1787         * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
1789 2020-02-12  Sandra Loosemore  <sandra@codesourcery.com>
1791         PR libstdc++/79193
1792         PR libstdc++/88999
1794         * configure: Regenerated.
1796 2020-02-12  François Dumont  <fdumont@gcc.gnu.org>
1798         * include/bits/hashtable.h
1799         (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
1800         missing std namespace qualification to forward call.
1802 2020-02-09  Jonathan Wakely  <jwakely@redhat.com>
1804         * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
1805         comment.
1806         * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
1808         * include/std/ranges: Fix non-ASCII characters in comment.
1810         * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
1811         equality comparison to be valid and return bool.
1812         (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
1813         * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
1814         type with ambiguous conversion to fundamental types.
1815         * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
1817 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
1819         * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
1820         Use remove_cvref_t.
1821         (readable_traits): Rename to indirectly_readable_traits.
1822         (readable): Rename to indirectly_readable.
1823         (writable): Rename to indirectly_writable.
1824         (__detail::__iter_exchange_move): Do not use remove_reference_t.
1825         (indirectly_swappable): Adjust requires expression parameter types.
1826         expression.
1827         * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
1828         (ranges::replace_if, ranges::generate_n, ranges::generate)
1829         (ranges::remove): Use new name for writable.
1830         * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
1831         Use new name for readable.
1832         * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
1833         new name for readable_traits.
1834         * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
1835         * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
1836         new definition of indirectly_readable.
1838         * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
1839         to take parameters of common_iterator, instead of the common_iterator
1840         type itself. Fix argument for __common_iter_has_arrow constraint.
1841         (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
1843 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
1845         * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
1846         warning.
1847         (basic_istream_view::_Iterator::operator++()): Add missing return.
1849 2020-02-07  Patrick Palka  <ppalka@redhat.com>
1851         * include/bits/ranges_algo.h: Remove extraneous &&.
1853         * include/std/ranges (ranges::__detail::__stream_extractable,
1854         ranges::basic_istream_view, ranges::istream_view): Define.
1855         * testsuite/std/ranges/istream_view: New test.
1857         Implement C++20 range adaptors
1858         * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
1859         (subrange::_S_store_size): Mark as const instead of constexpr to
1860         avoid what seems to be a bug in GCC.
1861         (__detail::__box): Give it defaulted copy and move constructors.
1862         (ranges::views::_Single::operator()): Mark constexpr.
1863         (ranges::views::_Iota::operator()): Mark constexpr.
1864         (__detail::Empty): Define.
1865         (ranges::views::__closure::_RangeAdaptor,
1866         ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
1867         ranges::views::all, ranges::__detail::find_if,
1868         ranges::__detail::find_if_not, ranges::__detail::mismatch,
1869         ranges::detail::min, filter_view, ranges::views::filter, transform_view,
1870         ranges::views::transform, take_view, ranges::views::take,
1871         take_while_view, ranges::views::take_while, drop_view,
1872         ranges::views::drop, join_view, ranges::views::join,
1873         __detail::require_constant, __detail::tiny_range, split_view,
1874         ranges::views::split, ranges::views::_Counted, ranges::views::counted,
1875         common_view, ranges::views::common, reverse_view,
1876         ranges::views::reverse,
1877         ranges::views::__detail::__is_reversible_subrange,
1878         ranges::views::__detail::__is_reverse_view, reverse_view,
1879         ranges::views::reverse, __detail::__has_tuple_element, elements_view,
1880         ranges::views::elements, ranges::views::keys, ranges::views::values):
1881         Define.
1882         (views): Alias for ranges::views.
1883         (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
1884         tuple_element<1, ranges::subrange>): New partial specializations.
1885         * testsuite/std/ranges/adaptors/all.cc: New test.
1886         * testsuite/std/ranges/adaptors/common.cc: Likewise.
1887         * testsuite/std/ranges/adaptors/counted.cc: Likewise.
1888         * testsuite/std/ranges/adaptors/drop.cc: Likewise.
1889         * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
1890         * testsuite/std/ranges/adaptors/elements.cc: Likewise.
1891         * testsuite/std/ranges/adaptors/filter.cc: Likewise.
1892         * testsuite/std/ranges/adaptors/join.cc: Likewise.
1893         * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
1894         * testsuite/std/ranges/adaptors/split.cc: Likewise.
1895         * testsuite/std/ranges/adaptors/take.cc: Likewise.
1896         * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
1897         * testsuite/std/ranges/adaptors/transform.cc: Likewise.
1899 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
1901         * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
1902         type of enumerations and comparison category types.
1903         (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
1904         (__cmp_cat::_Ncmp::unordered): Change value to 2.
1905         (partial_ordering::_M_value, weak_ordering::_M_value)
1906         (strong_ordering::_M_value): Change type to __cmp_cat::type.
1907         (partial_ordering::_M_is_ordered): Remove data member.
1908         (partial_ordering): Use second bit of _M_value for unordered. Adjust
1909         comparison operators.
1910         (weak_ordering::operator partial_ordering): Simplify to remove
1911         branches.
1912         (operator<=>(unspecified, weak_ordering)): Likewise.
1913         (strong_ordering::operator partial_ordering): Likewise.
1914         (strong_ordering::operator weak_ordering): Likewise.
1915         (operator<=>(unspecified, strong_ordering)): Likewise.
1916         * testsuite/18_support/comparisons/categories/partialord.cc: New test.
1917         * testsuite/18_support/comparisons/categories/strongord.cc: New test.
1918         * testsuite/18_support/comparisons/categories/weakord.cc: New test.
1920         * include/std/ranges (iota_view::_Iterator): Fix typo in name of
1921         __cpp_lib_three_way_comparison macro and use deduced return type for
1922         operator<=>.
1923         * testsuite/std/ranges/iota/iterator.cc: New test.
1925 2020-02-07  Patrick Palka  <ppalka@redhat.com>
1926             Jonathan Wakely  <jwakely@redhat.com>
1928         Implement C++20 constrained algorithms
1929         * include/Makefile.am: Add new header.
1930         * include/Makefile.in: Regenerate.
1931         * include/std/algorithm: Include <bits/ranges_algo.h>.
1932         * include/bits/ranges_algo.h: New file.
1933         * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
1934         * testsuite/25_algorithms/all_of/constrained.cc: New test.
1935         * testsuite/25_algorithms/any_of/constrained.cc: New test.
1936         * testsuite/25_algorithms/binary_search/constrained.cc: New test.
1937         * testsuite/25_algorithms/copy/constrained.cc: New test.
1938         * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
1939         * testsuite/25_algorithms/copy_if/constrained.cc: New test.
1940         * testsuite/25_algorithms/copy_n/constrained.cc: New test.
1941         * testsuite/25_algorithms/count/constrained.cc: New test.
1942         * testsuite/25_algorithms/count_if/constrained.cc: New test.
1943         * testsuite/25_algorithms/equal/constrained.cc: New test.
1944         * testsuite/25_algorithms/equal_range/constrained.cc: New test.
1945         * testsuite/25_algorithms/fill/constrained.cc: New test.
1946         * testsuite/25_algorithms/fill_n/constrained.cc: New test.
1947         * testsuite/25_algorithms/find/constrained.cc: New test.
1948         * testsuite/25_algorithms/find_end/constrained.cc: New test.
1949         * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
1950         * testsuite/25_algorithms/find_if/constrained.cc: New test.
1951         * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
1952         * testsuite/25_algorithms/for_each/constrained.cc: New test.
1953         * testsuite/25_algorithms/generate/constrained.cc: New test.
1954         * testsuite/25_algorithms/generate_n/constrained.cc: New test.
1955         * testsuite/25_algorithms/heap/constrained.cc: New test.
1956         * testsuite/25_algorithms/includes/constrained.cc: New test.
1957         * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
1958         * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
1959         * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
1960         * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
1961         * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
1962         * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
1963         test.
1964         * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
1965         * testsuite/25_algorithms/max/constrained.cc: New test.
1966         * testsuite/25_algorithms/max_element/constrained.cc: New test.
1967         * testsuite/25_algorithms/merge/constrained.cc: New test.
1968         * testsuite/25_algorithms/min/constrained.cc: New test.
1969         * testsuite/25_algorithms/min_element/constrained.cc: New test.
1970         * testsuite/25_algorithms/minmax/constrained.cc: New test.
1971         * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
1972         * testsuite/25_algorithms/mismatch/constrained.cc: New test.
1973         * testsuite/25_algorithms/move/constrained.cc: New test.
1974         * testsuite/25_algorithms/move_backward/constrained.cc: New test.
1975         * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
1976         * testsuite/25_algorithms/none_of/constrained.cc: New test.
1977         * testsuite/25_algorithms/nth_element/constrained.cc: New test.
1978         * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
1979         * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
1980         * testsuite/25_algorithms/partition/constrained.cc: New test.
1981         * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
1982         * testsuite/25_algorithms/partition_point/constrained.cc: New test.
1983         * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
1984         * testsuite/25_algorithms/remove/constrained.cc: New test.
1985         * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
1986         * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
1987         * testsuite/25_algorithms/remove_if/constrained.cc: New test.
1988         * testsuite/25_algorithms/replace/constrained.cc: New test.
1989         * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
1990         * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
1991         * testsuite/25_algorithms/replace_if/constrained.cc: New test.
1992         * testsuite/25_algorithms/reverse/constrained.cc: New test.
1993         * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
1994         * testsuite/25_algorithms/rotate/constrained.cc: New test.
1995         * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
1996         * testsuite/25_algorithms/search/constrained.cc: New test.
1997         * testsuite/25_algorithms/search_n/constrained.cc: New test.
1998         * testsuite/25_algorithms/set_difference/constrained.cc: New test.
1999         * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
2000         * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
2001         test.
2002         * testsuite/25_algorithms/set_union/constrained.cc: New test.
2003         * testsuite/25_algorithms/shuffle/constrained.cc: New test.
2004         * testsuite/25_algorithms/sort/constrained.cc: New test.
2005         * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
2006         * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
2007         * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
2008         * testsuite/25_algorithms/transform/constrained.cc: New test.
2009         * testsuite/25_algorithms/unique/constrained.cc: New test.
2010         * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
2011         * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
2013 2020-02-06  Jonathan Wakely  <jwakely@redhat.com>
2015         * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
2016         number in comment. Fix indentation.
2018         * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
2019         redundant _GLIBCXX20_CONSTEXPR.
2021         * include/std/ranges (viewable_range): Replace decay_t with
2022         remove_cvref_t (LWG 3375).
2024 2020-02-05  Jonathan Wakely  <jwakely@redhat.com>
2026         * include/bits/iterator_concepts.h (iter_reference_t)
2027         (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
2028         Remove workarounds for PR c++/67704.
2029         * testsuite/24_iterators/aliases.cc: New test.
2031 2020-02-05  Patrick Palka  <ppalka@redhat.com>
2033         * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
2034         when initializing _M_current.
2035         (move_iterator::base): Split into two overloads differing in
2036         ref-qualifiers as in P1207R4 for C++20.
2038 2020-02-04  Jonathan Wakely  <jwakely@redhat.com>
2040         * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
2041         use.
2043         PR libstdc++/93562
2044         * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
2045         (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
2046         * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
2048 2020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
2050         * configure: Regenerate.
2052 2020-01-31  Patrick Palka  <ppalka@redhat.com>
2054         * testsuite/24_iterators/range_operations/distance.cc: Do not assume
2055         test_range::end() returns the same type as test_range::begin().
2056         * testsuite/24_iterators/range_operations/next.cc: Likewise.
2057         * testsuite/24_iterators/range_operations/prev.cc: Likewise.
2058         * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
2059         Always return a sentinel<I>.
2061 2020-01-29  Jonathan Wakely  <jwakely@redhat.com>
2063         PR libstdc++/92895
2064         * include/std/stop_token (stop_token::stop_possible()): Call new
2065         _M_stop_possible() function.
2066         (stop_token::stop_requested()): Do not use stop_possible().
2067         (stop_token::binary_semaphore): New class, as temporary stand-in for
2068         std::binary_semaphore.
2069         (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
2070         (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
2071         New data members for symchronization with stop_callback destruction.
2072         (stop_token::_Stop_cb::_Stop_cb): Make non-template.
2073         (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
2074         Remove.
2075         (stop_token::_Stop_cb::_M_run): New member function.
2076         (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
2077         Remove.
2078         (stop_token::_Stop_state::_M_owners): New data member to track
2079         reference count for ownership.
2080         (stop_token::_Stop_state::_M_value): New data member combining a
2081         spinlock, the stop requested flag, and the reference count for
2082         associated stop_source objects.
2083         (stop_token::_Stop_state::_M_requester): New data member for
2084         synchronization with stop_callback destruction.
2085         (stop_token::_Stop_state::_M_stop_possible()): New member function.
2086         (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
2087         of _M_value.
2088         (stop_token::_Stop_state::_M_add_owner)
2089         (stop_token::_Stop_state::_M_release_ownership)
2090         (stop_token::_Stop_state::_M_add_ssrc)
2091         (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
2092         updating reference counts.
2093         (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2094         (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
2095         (stop_token::_Stop_state::_M_try_lock)
2096         (stop_token::_Stop_state::_M_try_lock_and_stop)
2097         (stop_token::_Stop_state::_M_do_try_lock): New member functions for
2098         managing spinlock.
2099         (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
2100         read and update state. Release lock while running callbacks. Use new
2101         data members to synchronize with callback destruction.
2102         (stop_token::_Stop_state::_M_remove_callback): Likewise.
2103         (stop_token::_Stop_state::_M_register_callback): Use atomic operations
2104         to read and update state.
2105         (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
2106         replacing shared_ptr.
2107         (stop_source::stop_source(const stop_source&)): Update reference count.
2108         (stop_source::operator=(const stop_source&)): Likewise.
2109         (stop_source::~stop_source()): Likewise.
2110         (stop_source::stop_source(stop_source&&)): Define as defaulted.
2111         (stop_source::operator=(stop_source&&)): Establish postcondition on
2112         parameter.
2113         (stop_callback): Enforce preconditions on template parameter. Replace
2114         base class with data member of new _Cb_impl type.
2115         (stop_callback::stop_callback(const stop_token&, Cb&&))
2116         (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
2117         (stop_callback::_Cb_impl): New type wrapping _Callback member and
2118         defining the _S_execute member function.
2119         * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
2120         test.
2121         * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
2122         * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
2123         * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
2124         New test.
2125         * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
2126         test.
2127         * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
2128         * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
2129         * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
2130         test.
2132         * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
2133         three_way_comparable_with.
2134         (__detail::__3way_cmp_with): Remove workaround for fixed bug.
2135         (compare_three_way::operator()): Remove redundant constraint from
2136         requires-clause.
2137         (__detail::_Synth3way::operator()): Use three_way_comparable_with
2138         instead of workaround.
2139         * testsuite/18_support/comparisons/object/93479.cc: Prune extra
2140         output due to simplified constraints on compare_three_way::operator().
2142         PR libstdc++/93479
2143         * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
2144         * testsuite/18_support/comparisons/object/93479.cc: New test.
2146         * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
2147         returns the same type as test_range::begin(). Add comments.
2148         * testsuite/std/ranges/access/rbegin.cc: Likewise.
2149         * testsuite/std/ranges/access/rend.cc: Likewise.
2150         * testsuite/std/ranges/range.cc: Do not assume the sentinel for
2151         test_range is the same as its iterator type.
2152         * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
2153         operator- overloads to satisfy sized_sentinel_for when the iterator
2154         satisfies random_access_iterator.
2156 2020-01-28  Jonathan Wakely  <jwakely@redhat.com>
2158         PR libstdc++/93470
2159         * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
2160         static assertion to object types.
2162         PR libstdc++/93325
2163         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
2164         clock_gettime instead of explicit glibc version check.
2165         * configure: Regenerate.
2167 2020-01-28  Martin Liska  <mliska@suse.cz>
2169         PR libstdc++/93478
2170         * include/std/atomic: Fix typo.
2171         * include/std/optional: Likewise.
2173 2020-01-27  Andrew Burgess  <andrew.burgess@embecosm.com>
2175         * configure: Regenerate.
2177 2020-01-27  Jonathan Wakely  <jwakely@redhat.com>
2179         PR libstdc++/93426
2180         * include/std/span (span): Fix deduction guide.
2181         * testsuite/23_containers/span/deduction.cc: New test.
2183 2020-01-24  Jonathan Wakely  <jwakely@redhat.com>
2185         * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
2186         (__cmp_cat::_Ord::equivalent): Add enumerator.
2187         (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
2188         and greater.
2189         (partial_ordering, weak_ordering, strong_ordering): Remove
2190         constructors taking __cmp_cat::_Eq parameters. Use renamed
2191         enumerators.
2193 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
2195         * acinclude.m4: Handle `--with-toolexeclibdir='.
2196         * Makefile.in: Regenerate.
2197         * aclocal.m4: Regenerate.
2198         * configure: Regenerate.
2199         * doc/Makefile.in: Regenerate.
2200         * include/Makefile.in: Regenerate.
2201         * libsupc++/Makefile.in: Regenerate.
2202         * po/Makefile.in: Regenerate.
2203         * python/Makefile.in: Regenerate.
2204         * src/Makefile.in: Regenerate.
2205         * src/c++11/Makefile.in: Regenerate.
2206         * src/c++17/Makefile.in: Regenerate.
2207         * src/c++98/Makefile.in: Regenerate.
2208         * src/filesystem/Makefile.in: Regenerate.
2209         * testsuite/Makefile.in: Regenerate.
2211 2020-01-23  Alexandre Oliva <oliva@adacore.com>
2213         * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
2214         * configure: Rebuild.
2216         * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
2218 2020-01-23  Jonathan Wakely  <jwakely@redhat.com>
2220         PR libstdc++/91947
2221         * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
2222         rule.
2223         * include/Makefile.in: Regenerate.
2225 2020-01-20  Jonathan Wakely  <jwakely@redhat.com>
2227         * doc/xml/faq.xml: Fix grammar.
2228         * doc/xml/manual/appendix_contributing.xml: Improve instructions.
2229         * doc/xml/manual/spine.xml: Update copyright years.
2230         * doc/html/*: Regenerate.
2232 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
2234         * doc/xml/faq.xml: Update for SVN -> Git transition.
2235         * doc/xml/manual/appendix_contributing.xml: Likewise.
2236         * doc/xml/manual/status_cxx1998.xml: Likewise.
2237         * doc/xml/manual/status_cxx2011.xml: Likewise.
2238         * doc/xml/manual/status_cxx2014.xml: Likewise.
2239         * doc/xml/manual/status_cxx2017.xml: Likewise.
2240         * doc/xml/manual/status_cxx2020.xml: Likewise.
2241         * doc/xml/manual/status_cxxtr1.xml: Likewise.
2242         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
2244 2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
2246         * include/Makefile.am: Add coroutine to the std set.
2247         * include/Makefile.in: Regenerated.
2248         * include/std/coroutine: New file.
2250 2020-01-17  Jonathan Wakely  <jwakely@redhat.com>
2252         PR libstdc++/92376
2253         * include/bits/c++config: Only do PSTL config when the header is
2254         present, to fix freestanding.
2255         * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
2256         functions if they were detected by configure.
2258 2020-01-16  Kai-Uwe Eckhardt  <kuehro@gmx.de>
2259             Matthew Bauer  <mjbauer95@gmail.com>
2260             Jonathan Wakely  <jwakely@redhat.com>
2262         PR bootstrap/64271 (partial)
2263         * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
2264         to unsigned short.
2265         (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
2266         (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
2267         definitions with NetBSD upstream.
2268         (ctype_base::blank): Use _CTYPE_BL.
2269         * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
2270         Declaration.
2271         (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
2272         (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
2273         parameters to unsigned char.
2274         * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
2276 2020-01-16  François Dumont  <fdumont@gcc.gnu.org>
2278         PR libstdc++/91263
2279         * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
2280         * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
2281         (_Equality_base): Remove.
2282         (_Equality<>::_M_equal): Review implementation. Use
2283         std::is_permutation.
2284         * testsuite/23_containers/unordered_multiset/operators/1.cc
2285         (Hash, Equal, test02, test03): New.
2286         * testsuite/23_containers/unordered_set/operators/1.cc
2287         (Hash, Equal, test02, test03): New.
2289 2020-01-15  Jonathan Wakely  <jwakely@redhat.com>
2291         PR libstdc++/93267
2292         * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
2293         Move here from <bits/range_access.h> and define using __int128 when
2294         available.
2295         (__is_integer_like, __is_signed_integer_like): Move here from
2296         <bits/range_access.h>.
2297         (weakly_incrementable): Use __is_signed_integer_like.
2298         * include/bits/range_access.h (__max_diff_type, __max_size_type)
2299         (__is_integer_like, __is_signed_integer_like): Move to
2300         <bits/iterator_concepts.h>.
2301         (__make_unsigned_like_t): Move here from <ranges>.
2302         * include/std/ranges (__make_unsigned_like_t): Move to
2303         <bits/range_access.h>.
2304         (iota_view): Replace using-directive with using-declarations.
2305         * testsuite/std/ranges/iota/93267.cc: New test.
2306         * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
2308 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
2310         PR libstdc++/93244
2311         * include/bits/fs_path.h (path::generic_string<C,A>)
2312         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
2313         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
2314         root-dir is converted to forward slash in generic pathname.
2315         * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
2316         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
2318         PR libstdc++/58605
2319         * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
2320         Define.
2321         (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
2322         (__atomic_float): Add default member initializer for C++20.
2323         * include/std/atomic (atomic): Likewise.
2324         (atomic::atomic()): Remove noexcept-specifier on default constructor.
2325         * include/std/version (__cpp_lib_atomic_value_initialization): Define.
2326         * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
2327         number.
2328         * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2329         * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
2330         * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
2331         * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
2332         expected result for is_trivially_default_constructible.
2333         * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
2334         * testsuite/29_atomics/atomic_float/value_init.cc: New test.
2335         * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
2336         * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
2337         * testsuite/29_atomics/atomic_integral/cons/value_init.cc
2338         * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
2339         expected results for is_trivially_default_constructible.
2340         * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
2341         new test generator.
2343 2020-01-10  Jonathan Wakely  <jwakely@redhat.com>
2345         * testsuite/util/testsuite_iterators.h: Improve comment.
2347         * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
2348         initialization syntax.
2350         PR libstdc++/92285
2351         * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
2352         of base class independent of __cplusplus value.
2353         [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
2354         type defined in the base class
2355         * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
2356         * testsuite/24_iterators/istreambuf_iterator/requirements/
2357         base_classes.cc: Adjust expected base class for C++98.
2359 2020-01-09  Olivier Hainque  <hainque@adacore.com>
2361         * doc/xml/manual/appendix_contributing.xml: Document _C2
2362         as a reserved identifier, by VxWorks.
2363         * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
2364         * include/bits/stl_multimap.h: Likewise.
2366 2020-01-09  Jonathan Wakely  <jwakely@redhat.com>
2368         * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
2369         (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
2370         * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
2371         partial specialization to disambiguate the two constrained
2372         specializations.
2374         * include/experimental/type_traits (experimental::is_pod_v): Disable
2375         -Wdeprecated-declarations warnings around reference to std::is_pod.
2376         * include/std/type_traits (is_pod_v): Likewise.
2377         * testsuite/18_support/max_align_t/requirements/2.cc: Also check
2378         is_standard_layout and is_trivial. Do not check is_pod for C++20.
2379         * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
2380         Add -Wno-deprecated for C++20.
2381         * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
2382         * testsuite/20_util/is_pod/value.cc: Likewise.
2383         * testsuite/experimental/type_traits/value.cc: Likewise.
2385 2020-01-09  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
2387         * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
2388         * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
2389         * testuite/20_util/is_pod/deprecated-2a.cc: New test.
2391 2020-01-09  Jonathan Wakely  <jwakely@redhat.com>
2393         PR libstdc++/93205
2394         * include/bits/random.h (operator>>): Check stream operation succeeds.
2395         * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
2396         typedefs.
2397         (operator>>): Remove redundant __istream_type typedefs. Check stream
2398         operations succeed.
2399         (__extract_params): New function to fill a vector from a stream.
2400         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
2402         PR libstdc++/93208
2403         * config/abi/pre/gnu.ver: Add new exports.
2404         * include/std/memory_resource (memory_resource::~memory_resource()):
2405         Do not define inline.
2406         (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
2407         * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
2408         Define.
2409         (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
2410         * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
2412 2020-01-09  François Dumont  <fdumont@gcc.gnu.org>
2414         PR libstdc++/92124
2415         * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
2416         template alias.
2417         (_Hashtable<>::__fwd_value_for): New.
2418         (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
2419         parameter.
2420         (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
2421         (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
2422         (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
2423         with std::move.
2424         (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
2425         (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
2426         Adapt.
2427         (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
2428         Adapt.
2429         * testsuite/23_containers/unordered_set/92124.cc: New.
2431 2020-01-08  Jonathan Wakely  <jwakely@redhat.com>
2433         PR libstdc++/93201
2434         * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
2435         detailed error reporting for remove_all. Check result of recursive
2436         call before incrementing iterator.
2437         (remove_all(const path&), remove_all(const path&, error_code&)): Use
2438         do_remove_all.
2439         * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
2440         result of recursive call before incrementing iterator.
2441         * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
2442         are reported correctly.
2443         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
2445 2020-01-07  Thomas Rodgers  <trodgers@redhat.com>
2447         * include/std/condition_variable
2448         (condition_variable_any::wait_on): Rename to match current draft
2449         standard.
2450         (condition_variable_any::wait_on_until): Likewise.
2451         (condition_variable_any::wait_on_for): Likewise.
2452         * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
2453         Adjust tests to account for renamed methods.
2455 2020-01-07  François Dumont  <fdumont@gcc.gnu.org>
2457         PR libstdc++/92124
2458         * include/bits/stl_tree.h
2459         (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
2460         std::move_if_noexcept by std::move.
2461         * testsuite/23_containers/map/92124.cc: New.
2462         * testsuite/23_containers/set/92124.cc: New.
2464 2020-01-06  Jonathan Wakely  <jwakely@redhat.com>
2466         * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
2467         (stop_source): Likewise (LWG 3362).
2468         * testsuite/30_threads/stop_token/stop_source.cc: Test equality
2469         comparisons.
2471         * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
2472         (lexicographical_compare_three_way): Do not depend on
2473         __cpp_lib_concepts.
2474         * include/std/version (__cpp_lib_three_way_comparison): Only define
2475         when __cpp_lib_concepts is defined.
2476         * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
2478 2020-01-03  Jonathan Wakely  <jwakely@redhat.com>
2480         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
2481         Only define four-argument overload when __cpp_lib_concepts is defined.
2483 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
2485         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
2487 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
2489         Update copyright years.
2491 Copyright (C) 2020 Free Software Foundation, Inc.
2493 Copying and distribution of this file, with or without modification,
2494 are permitted in any medium without royalty provided the copyright
2495 notice and this notice are preserved.