[RS6000] biarch test fail
[official-gcc.git] / libstdc++-v3 / ChangeLog
blobe6656ec6497d7011d84ef5670c8b10c2a517e40e
1 2020-10-23  Patrick Palka  <ppalka@redhat.com>
3         * include/std/ranges (single_view::single_view): Mark the
4         in place constructor explicit as per LWG 3428.
5         (take_view): Remove the constraint on the deduction guide's
6         template parameter as per LWG 3447.
8 2020-10-23  Jonathan Wakely  <jwakely@redhat.com>
10         * include/experimental/memory_resource: Include <tuple>.
11         (polymorphic_allocator::construct): Qualify forward_as_tuple.
12         * include/std/memory_resource: Likewise.
14 2020-10-22  Jonathan Wakely  <jwakely@redhat.com>
16         * testsuite/30_threads/condition_variable/members/68519.cc:
17         Define recent_epoch_float_clock::duration to meet the Cpp17Clock
18         requirements.
20 2020-10-22  Jonathan Wakely  <jwakely@redhat.com>
22         * include/std/shared_mutex: Only include <condition_variable>
23         when pthread_rwlock_t and POSIX timers are not available.
24         (__cpp_lib_shared_mutex, __cpp_lib_shared_timed_mutex): Change
25         value to be type 'long'.
26         * include/std/version (__cpp_lib_shared_mutex)
27         (__cpp_lib_shared_timed_mutex): Likewise.
29 2020-10-22  Jonathan Wakely  <jwakely@redhat.com>
31         * include/Makefile.am: Add new header.
32         * include/Makefile.in: Regenerate.
33         * include/bits/shared_ptr.h: Include <iosfwd>.
34         * include/bits/shared_ptr_base.h: Include required headers here
35         directly, instead of in <memory>.
36         * include/bits/uses_allocator_args.h: New file. Move utility
37         functions for uses-allocator construction from <memory> to here.
38         Only define the utility functions when concepts are available.
39         (__cpp_lib_make_obj_using_allocator): Define non-standard
40         feature test macro.
41         * include/std/condition_variable: Remove unused headers.
42         * include/std/future: Likewise.
43         * include/std/memory: Remove headers that are not needed
44         directly, and are now inclkuded where they're needed. Include
45         new <bits/uses_allocator_args.h> header.
46         * include/std/memory_resource: Include only the necessary
47         headers. Use new feature test macro to detect support for the
48         utility functions.
49         * include/std/scoped_allocator: Likewise.
50         * include/std/version (__cpp_lib_make_obj_using_allocator):
51         Define.
53 2020-10-22  Olivier Hainque  <hainque@adacore.com>
55         * crossconfig.m4: Turn vxworks matcher into vxworks*.
56         * configure.host: Likewise.
57         * configure: Regenerate.
59 2020-10-21  Jonathan Wakely  <jwakely@redhat.com>
61         * include/bits/shared_ptr.h (shared_ptr(const weak_ptr&, nothrow_t)):
62         Add noexcept.
63         * include/bits/shared_ptr_base.h (_Sp_counted_base::_M_add_ref_lock):
64         Remove specializations and just call _M_add_ref_lock_nothrow.
65         (__shared_count, __shared_ptr): Use nullptr for null pointer
66         constants.
67         (__shared_count(const __weak_count&)): Use _M_add_ref_lock_nothrow
68         instead of _M_add_ref_lock.
69         (__shared_count(const __weak_count&, nothrow_t)): Add noexcept.
70         (__shared_ptr::operator bool()): Add noexcept.
71         (__shared_ptr(const __weak_ptr&, nothrow_t)): Add noexcept.
73 2020-10-21  Jonathan Wakely  <jwakely@redhat.com>
75         PR libstdc++/97512
76         * include/bits/ranges_util.h (tuple_size<subrange>)
77         (tuple_element<I, cv subrange>): Move here from ...
78         * include/std/ranges: ... here.
79         * testsuite/std/ranges/subrange/97512.cc: New test.
81 2020-10-21  Thomas Rodgers  <trodgers@redhat.com>
83         * include/pstl/algorithm_impl.h: Update file.
84         * include/pstl/execution_impl.h: Likewise.
85         * include/pstl/glue_algorithm_impl.h: Likewise.
86         * include/pstl/glue_memory_impl.h: Likewise.
87         * include/pstl/glue_numeric_impl.h: Likewise.
88         * include/pstl/memory_impl.h: Likewise.
89         * include/pstl/numeric_impl.h: Likewise.
90         * include/pstl/parallel_backend.h: Likewise.
91         * include/pstl/parallel_backend_serial.h: Likewise.
92         * include/pstl/parallel_backend_tbb.h: Likewise.
93         * include/pstl/parallel_backend_utils.h: Likewise.
94         * include/pstl/pstl_config.h: Likewise.
95         * include/pstl/unseq_backend_simd.h: Likewise.
97 2020-10-20  François Dumont  <fdumont@gcc.gnu.org>
99         * include/bits/hashtable_policy.h
100         (_Hash_node_value_base<>): Remove _Hash_node_base inheritance.
101         (_Hash_node_code_cache<bool _Cache_hash_code>): New.
102         (_Hash_node_value<typename _Value, bool _Cache_hash_code>): New.
103         (_Hash_node<>): Inherits _Hash_node_base<> and _Hash_node_value<>.
104         (_Map_base<>::__node_type): Remove.
105         (_Map_base<>::iterator): Remove.
106         (_Insert_base<>::__hash_cached): New.
107         (_Insert_base<>::__constant_iterators): New.
108         (_Insert_base<>::__hashtable_alloc): New.
109         (_Insert_base<>::__node_type): Remove.
110         (_Insert_base<>::__node_ptr): New.
111         (_Hash_code_base<>): Remove specializations.
112         (_Hash_code_base<>::__node_type): Remove.
113         (_Hash_code_base<>::_M_bucket_index(const __node_type*, size_t)):
114         Replace by...
115         (_Hash_code_base<>::_M_bucket_index(const _Hash_node_value<>&, size_t)):
116         ...this.
117         (_Hash_code_base<>::_M_store_code(__node_type*, __hash_code)):
118         Replace by...
119         (_Hash_code_base<>::_M_store_code(_Hash_node_code_cache<>&, __hash_code)):
120         ...this.
121         (_Hash_code_base<>::_M_copy_code(__node_type*, const __node_type*)):
122         Replace by...
123         (_Hash_code_base<>::_M_copy_code(_Hash_node_code_cache<>&,
124         const _Hash_node_code_base<>&)): ...this.
125         (_Hashtable_base<>::__constant_iterators): Remove.
126         (_Hashtable_base<>::__unique_keys): Remove.
127         (_Hashtable_base<>::__node_type): Remove.
128         (_Hashtable_base<>::iterator): Remove.
129         (_Hashtable_base<>::const_iterator): Remove.
130         (_Hashtable_base<>::local_iterator): Remove.
131         (_Hashtable_base<>::const_local_iterator): Remove.
132         (_Hashtable_base<>::__ireturn_type): Remove.
133         (_Hashtable_base<>::_Equal_hash_code<>::_S_equals): Replace by...
134         (_Hashtable_base<>::_S_equals(__hash_code, const _Hash_node_code_hash<>&)):
135         ...this.
136         (_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals): Replace by...
137         (_Hashtable_base<>::_S_node_equals(__hash_code,
138         const _Hash_node_code_hash<>&)): ...this.
139         (_Hashtable_base<>::_Equal_hash_code<>): Remove.
140         (_Hashtable_base<>::_M_equals): Adapt.
141         (_Hashtable_baxe<>::_M_node_equals): Adapt.
142         (_Equality<>::_M_equal): Adapt.
143         (_Hashtable_alloc<>::__node_ptr): New.
144         (_Hashtable_alloc<>::__bucket_type): Rename into...
145         (_Hashtable_alloc<>::__node_base_ptr): ...this.
146         (_Hashtable_alloc<>::__bucket_alloc_type): Rename into...
147         (_Hashtable_alloc<>::__buckets_alloc_type): ...this.
148         (_Hashtable_alloc<>::__bucket_alloc_traits): Rename into...
149         (_Hashtable_alloc<>::__buckets_alloc_traits): ...this.
150         (_Hashtable_alloc<>::__buckets_ptr): New.
151         (_Hashtable_alloc<>::_M_allocate_node): Adapt.
152         (_Hashtable_alloc<>::_M_deallocate_node): Adapt.
153         (_Hashtable_alloc<>::_M_deallocate_node_ptr): Adapt.
154         (_Hashtable_alloc<>::_M_deallocate_nodes): Adapt.
155         (_Hashtable_alloc<>::_M_allocate_buckets): Adapt.
156         (_Hashtable_alloc<>::_M_deallocate_buckets): Adapt.
157         * include/bits/hashtable.h (_Hashtable<>): Adapt.
159 2020-10-20  Aldy Hernandez  <aldyh@redhat.com>
161         * testsuite/21_strings/basic_string/capacity/1.cc: Pass
162         -Wno-stringop-overflow to test.
164 2020-10-20  Jonathan Wakely  <jwakely@redhat.com>
166         PR libstdc++/95917
167         * include/std/coroutine (__noop_coro_frame): Replace with
168         noop_coroutine_handle::__frame.
169         (__dummy_resume_destroy): Define inline in __frame.
170         (__noop_coro_fr): Replace with noop_coroutine_handle::_S_fr
171         and define as inline.
172         * testsuite/18_support/coroutines/95917.cc: New test.
174 2020-10-20  Jonathan Wakely  <jwakely@redhat.com>
176         * include/std/coroutine (coroutine_handle<_Promise>): Remove
177         base class. Add constructors, conversions, accessors etc. as
178         proposed for LWG 3460.
179         (coroutine_handle<noop_coroutine_promise>): Likewise.
180         * testsuite/18_support/coroutines/lwg3460.cc: New test.
182 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
184         * include/bits/unique_ptr.h (make_unique_for_overwrite): Define
185         for C++20.
186         * testsuite/20_util/unique_ptr/creation/array_neg.cc: Remove
187         unused header. Adjust standard reference.
188         * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: New test.
189         * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc: New test.
191 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
193         * include/std/tuple (_Head_base<Idx, Head, true>): Use reserved
194         form of __no_unique_address__ attribute because
195         no_unique_address is not reserved prior to C++20.
197 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
199         * include/bits/node_handle.h (_Node_handle_common): Replace
200         std::optional with custom type.
201         * testsuite/20_util/variant/exception_safety.cc: Add missing
202         header include.
204 2020-10-19  Jonathan Wakely  <jwakely@redhat.com>
206         * include/precompiled/expc++.h: Removed.
208 2020-10-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
210         PR libstdc++/97449
211         * include/std/variant
212         (__gen_vtable_impl<>::_S_apply_single_alt):
213         Diagnose visitor return type mismatches here..
214         (__gen_vtable_impl</*base case*/>::_S_apply):
215         ..not here.
217 2020-10-15  Jonathan Wakely  <jwakely@redhat.com>
219         * include/std/concepts: Fix typos in copyright notice.
220         * include/std/ranges: Likewise.
222 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
224         PR libstdc++/97415
225         * include/std/sstream (basic_stringbuf::str()): Check for
226         null egptr() before comparing to non-null pptr().
228 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
230         * testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc:
231         Do not generate debug info.
232         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc:
233         Likewise.
235 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
237         * include/bits/basic_string.h (basic_string(const Alloc&))
238         (basic_string(const basic_string&)
239         (basic_string(const CharT*, size_type, const Alloc&))
240         (basic_string(const CharT*, const Alloc&))
241         (basic_string(size_type, CharT, const Alloc&))
242         (basic_string(initializer_list<CharT>, const Alloc&))
243         (basic_string(InputIterator, InputIterator, const Alloc&)):
244         Define inline in class body.
245         * include/bits/basic_string.tcc (basic_string(const Alloc&))
246         (basic_string(const basic_string&)
247         (basic_string(const CharT*, size_type, const Alloc&))
248         (basic_string(const CharT*, const Alloc&))
249         (basic_string(size_type, CharT, const Alloc&))
250         (basic_string(initializer_list<CharT>, const Alloc&))
251         (basic_string(InputIterator, InputIterator, const Alloc&)):
252         Move definitions into class body.
254 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
256         * testsuite/lib/libstdc++.exp (check_effective_target_cxx11-abi):
257         Add comments about which test flags get used by the check.
259 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
261         * testsuite/21_strings/basic_string/allocator/char/copy.cc: Make
262         comment more precise about what isn't supported by COW strings.
263         * testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
264         Likewise.
265         * testsuite/21_strings/basic_string/allocator/char/move.cc:
266         Likewise.
267         * testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
268         Likewise.
269         * testsuite/21_strings/basic_string/allocator/char/noexcept.cc:
270         Likewise.
271         * testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
272         Likewise.
273         * testsuite/21_strings/basic_string/allocator/char/swap.cc:
274         Likewise.
275         * testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc:
276         Likewise.
277         * testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
278         Likewise.
279         * testsuite/21_strings/basic_string/allocator/wchar_t/move.cc:
280         Likewise.
281         * testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
282         Likewise.
283         * testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc:
284         Likewise.
285         * testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
286         Likewise.
287         * testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc:
288         Likewise.
290 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
292         * testsuite/21_strings/basic_string/allocator/char/minimal.cc:
293         Do not require cxx11-abi effective target.
294         * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
295         Likewise.
296         * testsuite/27_io/basic_fstream/cons/base.cc: Likewise.
298 2020-10-14  Jonathan Wakely  <jwakely@redhat.com>
300         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
301         (basic_string(const _CharT*, const _Alloc&)): Constrain to
302         require an allocator-like type to fix CTAD ambiguity (LWG 3706).
303         * testsuite/21_strings/basic_string/cons/char/deduction.cc:
304         Remove dg-skip-if.
305         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
306         Likewise.
308 2020-10-13  Nuno Lopes  <nuno.lopes@ist.utl.pt>
310         * include/bits/stl_algo.h (any_of): Fix incorrect description
311         in comment.
313 2020-10-13  Jonathan Wakely  <jwakely@redhat.com>
315         * doc/xml/manual/evolution.xml: Document some API changes
316         and deprecations.
317         * doc/xml/manual/intro.xml: Document LWG 2499.
318         * doc/xml/manual/status_cxx2020.xml: Update status.
319         * doc/html/*: Regenerate.
321 2020-10-13  Jonathan Wakely  <jwakely@redhat.com>
323         * doc/xml/book.txml: Remove trailing whitespace.
324         * doc/xml/chapter.txml: Likewise.
325         * doc/xml/class.txml: Likewise.
326         * doc/xml/gnu/fdl-1.3.xml: Likewise.
327         * doc/xml/gnu/gpl-3.0.xml: Likewise.
328         * doc/xml/manual/abi.xml: Likewise.
329         * doc/xml/manual/algorithms.xml: Likewise.
330         * doc/xml/manual/allocator.xml: Likewise.
331         * doc/xml/manual/appendix_contributing.xml: Likewise.
332         * doc/xml/manual/appendix_free.xml: Likewise.
333         * doc/xml/manual/appendix_porting.xml: Likewise.
334         * doc/xml/manual/atomics.xml: Likewise.
335         * doc/xml/manual/auto_ptr.xml: Likewise.
336         * doc/xml/manual/backwards_compatibility.xml: Likewise.
337         * doc/xml/manual/bitmap_allocator.xml: Likewise.
338         * doc/xml/manual/build_hacking.xml: Likewise.
339         * doc/xml/manual/codecvt.xml: Likewise.
340         * doc/xml/manual/concurrency.xml: Likewise.
341         * doc/xml/manual/concurrency_extensions.xml: Likewise.
342         * doc/xml/manual/configure.xml: Likewise.
343         * doc/xml/manual/containers.xml: Likewise.
344         * doc/xml/manual/ctype.xml: Likewise.
345         * doc/xml/manual/debug.xml: Likewise.
346         * doc/xml/manual/debug_mode.xml: Likewise.
347         * doc/xml/manual/diagnostics.xml: Likewise.
348         * doc/xml/manual/documentation_hacking.xml: Likewise.
349         * doc/xml/manual/evolution.xml: Likewise.
350         * doc/xml/manual/internals.xml: Likewise.
351         * doc/xml/manual/intro.xml: Likewise.
352         * doc/xml/manual/io.xml: Likewise.
353         * doc/xml/manual/iterators.xml: Likewise.
354         * doc/xml/manual/locale.xml: Likewise.
355         * doc/xml/manual/localization.xml: Likewise.
356         * doc/xml/manual/messages.xml: Likewise.
357         * doc/xml/manual/mt_allocator.xml: Likewise.
358         * doc/xml/manual/numerics.xml: Likewise.
359         * doc/xml/manual/parallel_mode.xml: Likewise.
360         * doc/xml/manual/policy_data_structures.xml: Likewise.
361         * doc/xml/manual/prerequisites.xml: Likewise.
362         * doc/xml/manual/shared_ptr.xml: Likewise.
363         * doc/xml/manual/spine.xml: Likewise.
364         * doc/xml/manual/status_cxxtr1.xml: Likewise.
365         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
366         * doc/xml/manual/strings.xml: Likewise.
367         * doc/xml/manual/support.xml: Likewise.
368         * doc/xml/manual/test.xml: Likewise.
369         * doc/xml/manual/test_policy_data_structures.xml: Likewise.
370         * doc/xml/manual/using.xml: Likewise.
371         * doc/xml/manual/using_exceptions.xml: Likewise.
372         * doc/xml/manual/utilities.xml: Likewise.
373         * doc/html/*: Regenerate.
375 2020-10-12  Patrick Palka  <ppalka@redhat.com>
377         * include/std/ranges (take_while_view::begin): Constrain the
378         const overload further as per LWG 3450.
379         (take_while_view::end): Likewise.
380         * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG
381         3450.
383 2020-10-12  Patrick Palka  <ppalka@redhat.com>
385         PR libstdc++/95322
386         * include/std/ranges (take_view::_CI): Define this alias
387         template as per LWG 3449 and remove ...
388         (take_view::_Sentinel::_CI): ... this type alias.
389         (take_view::_Sentinel::operator==): Adjust use of _CI
390         accordingly.  Define a second overload that accepts an iterator
391         of the opposite constness as per LWG 3449.
392         (take_while_view::_Sentinel::operator==): Likewise.
393         * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449.
395 2020-10-12  Jonathan Wakely  <jwakely@redhat.com>
397         * doc/doxygen/user.cfg.in: Update to Doxygen 1.8.20 format.
399 2020-10-12  Jonathan Wakely  <jwakely@redhat.com>
401         * doc/doxygen/user.cfg.in (PREDEFINED): Use __cplusplus=201703L
402         so that C++17 features are documented.
404 2020-10-12  Jonathan Wakely  <jwakely@redhat.com>
406         * include/bits/stl_algobase.h (copy, move, copy_backward)
407         (move_backward): Fix documentation for returned iterator.
409 2020-10-12  Martin Sebor  <msebor@redhat.com>
411         PR c++/97201
412         * libsupc++/new (operator new): Add attribute alloc_size and malloc.
414 2020-10-11  Clement Chigot  <clement.chigot@atos.net>
416         * config/os/aix/t-aix: Add complementary mode object file to
417         libstdc++fs.a
419 2020-10-10  Jonathan Wakely  <jwakely@redhat.com>
421         PR libstdc++/97362
422         * doc/html/manual/source_code_style.html: Regenerate.
423         * doc/xml/manual/appendix_contributing.xml: Add __deref to
424         BADNAMES.
425         * include/debug/functions.h (_Irreflexive_checker::__deref):
426         Rename to __ref.
427         * testsuite/17_intro/badnames.cc: Check __deref.
429 2020-10-10  Ville Voutilainen  <ville.voutilainen@gmail.com>
431         * include/std/variant (__check_visitor_result):
432         Use size_t for indexes.
433         (__check_visitor_results): Likewise.
435 2020-10-09  Ville Voutilainen  <ville.voutilainen@gmail.com>
437         PR libstdc++/95904
438         * include/std/variant (__deduce_visit_result): Add a nested ::type.
439         (__gen_vtable_impl</*base case*/>::_S_apply):
440         Check the visitor return type.
441         (__same_types): New.
442         (__check_visitor_result): Likewise.
443         (__check_visitor_results): Likewise.
444         (visit(_Visitor&&, _Variants&&...)): Use __check_visitor_results
445         in case we're visiting just one variant.
446         * testsuite/20_util/variant/visit_neg.cc: Adjust.
448 2020-10-09  Jonathan Wakely  <jwakely@redhat.com>
450         PR libstdc++/97311
451         * include/bits/random.tcc (seed_seq::generate): Use uint32_t for
452         calculations. Also split the first loop into three loops to
453         avoid branching on k on every iteration, resolving PR 94823.
454         * testsuite/26_numerics/random/seed_seq/97311.cc: New test.
455         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-erro
456         line number.
458 2020-10-09  Daniel Lemire  <lemire@gmail.com>
460         * include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd):
461         New member function implementing Lemire's "nearly divisionless"
462         algorithm.
463         (uniform_int_distribution::operator()): Use _S_nd when the range
464         of the URBG is the full width of the result type.
466 2020-10-09  Jonathan Wakely  <jwakely@redhat.com>
468         * testsuite/Makefile.am: Set and export variable separately.
469         * testsuite/Makefile.in: Regenerate.
471 2020-10-09  Jonathan Wakely  <jwakely@redhat.com>
473         * scripts/check_performance: Use gnu++11 instead of gnu++0x.
474         * testsuite/Makefile.am (check-performance): Export CXXFLAGS to
475         child process.
476         * testsuite/Makefile.in: Regenerate.
478 2020-10-09  Jonathan Wakely  <jwakely@redhat.com>
480         * testsuite/performance/26_numerics/random_dist.cc: New test.
482 2020-10-09  Jonathan Wakely  <jwakely@redhat.com>
484         * testsuite/util/testsuite_performance.h (report_header): Remove
485         unused variable.
487 2020-10-08  Patrick Palka  <ppalka@redhat.com>
489         PR libstdc++/95788
490         * include/bits/ranges_uninitialized.h:
491         (__construct_at_fn::operator()): Rewrite in terms of
492         std::construct_at.  Declare it conditionally noexcept.  Qualify
493         calls to declval in its requires-clause.
494         * testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
495         New test.
497 2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
499         PR libstdc++/82584
500         * include/bits/random.tcc
501         (discrete_distribution::param_type::_M_initialize)
502         (piecewise_constant_distribution::param_type::_M_initialize)
503         (piecewise_linear_distribution::param_type::_M_initialize):
504         Add assertions for positive sums..
505         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
506         line.
508 2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
510         * include/bits/ios_base.h (ios_base::failure): Add constructors
511         takeing error_code argument. Add code() member function.
512         * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
513         run for the old ABI but do not check for derivation from
514         std::system_error.
515         * testsuite/27_io/ios_base/failure/error_code.cc: New test.
517 2020-10-08  Jonathan Wakely  <jwakely@redhat.com>
519         * include/bits/random.h (__detail::_Mod): Revert last change.
520         (__detail::__mod): Do not use _Mod for a==0 case.
521         * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
522         Check other cases with a==0. Also check runtime results.
523         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
524         line.
526 2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
528         * include/bits/random.h (__detail::_Mod): Avoid divide by zero.
529         * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc:
530         New test.
532 2020-10-07  Jonathan Wakely  <jwakely@redhat.com>
534         * include/bits/random.h (seed_seq(initializer_list<T>)): Rename
535         parameter to use reserved name.
536         * include/bits/ranges_algo.h (shift_left, shift_right): Rename
537         template parameters to use reserved name.
538         * libsupc++/exception_ptr.h (exception_ptr): Likewise for
539         parameters and local variables.
540         * testsuite/17_intro/names.cc: Check "il". Do not check "d" and
541         "y" in C++20 mode.
543 2020-10-06  Jonathan Wakely  <jwakely@redhat.com>
545         PR libstdc++/90295
546         * config/abi/pre/gnu.ver (CXXABI_1.3.13): New symbol version.
547         (exception_ptr::_M_addref(), exception_ptr::_M_release()):
548         Export symbols.
549         * libsupc++/eh_ptr.cc (exception_ptr::exception_ptr()):
550         Remove out-of-line definition.
551         (exception_ptr::exception_ptr(const exception_ptr&)):
552         Likewise.
553         (exception_ptr::~exception_ptr()): Likewise.
554         (exception_ptr::operator=(const exception_ptr&)):
555         Likewise.
556         (exception_ptr::swap(exception_ptr&)): Likewise.
557         (exception_ptr::_M_addref()): Add branch prediction.
558         * libsupc++/exception_ptr.h (exception_ptr::operator bool):
559         Add noexcept.
560         [!_GLIBCXX_EH_PTR_COMPAT] (operator==, operator!=): Define
561         inline as hidden friends. Remove declarations at namespace
562         scope.
563         (exception_ptr::exception_ptr()): Define inline.
564         (exception_ptr::exception_ptr(const exception_ptr&)):
565         Likewise.
566         (exception_ptr::~exception_ptr()): Likewise.
567         (exception_ptr::operator=(const exception_ptr&)):
568         Likewise.
569         (exception_ptr::swap(exception_ptr&)): Likewise.
570         * testsuite/util/testsuite_abi.cc: Add CXXABI_1.3.13.
571         * testsuite/18_support/exception_ptr/90295.cc: New test.
573 2020-10-06  Jonathan Wakely  <jwakely@redhat.com>
575         * include/std/ranges (join_view): Remove deduction guide.
576         (views::join): Add explicit template argument list to prevent
577         deducing the wrong type.
578         * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474
579         here, from ...
580         * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed.
582 2020-10-05  Jonathan Wakely  <jwakely@redhat.com>
584         * include/bits/regex.h: Use __int_traits<int> instead of
585         std::numeric_limits<int>.
586         * include/bits/uniform_int_dist.h: Use __int_traits<T>::__max
587         instead of std::numeric_limits<T>::max().
588         * include/bits/hashtable_policy.h: Use size_t(-1) instead of
589         std::numeric_limits<size_t>::max().
590         * include/std/regex: Include <ext/numeric_traits.h>.
591         * include/std/string_view: Use typedef for __int_traits<int>.
592         * src/c++11/hashtable_c++0x.cc: Use size_t(-1) instead of
593         std::numeric_limits<size_t>::max().
594         * testsuite/std/ranges/iota/96042.cc: Include <limits>.
595         * testsuite/std/ranges/iota/difference_type.cc: Likewise.
596         * testsuite/std/ranges/subrange/96042.cc: Likewise.
598 2020-10-05  Jonathan Wakely  <jwakely@redhat.com>
600         * include/std/numeric: Move all #include directives to the top
601         of the header.
602         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
603         numbers.
604         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
606 2020-10-05  Jonathan Wakely  <jwakely@redhat.com>
608         * config/abi/pre/gnu.ver: Add new symbol.
609         * include/bits/functexcept.h (__throw_bad_array_new_length):
610         Declare new function.
611         * include/ext/malloc_allocator.h (malloc_allocator::allocate):
612         Throw bad_array_new_length for impossible sizes (LWG 3190).
613         * include/ext/new_allocator.h (new_allocator::allocate):
614         Likewise.
615         * include/std/memory_resource (polymorphic_allocator::allocate)
616         (polymorphic_allocator::allocate_object): Use new function,
617         __throw_bad_array_new_length.
618         * src/c++11/functexcept.cc (__throw_bad_array_new_length):
619         Define.
620         * testsuite/20_util/allocator/lwg3190.cc: New test.
622 2020-10-05  Mike Crowe  <mac@mcrowe.com>
624         PR libstdc++/91486
625         * include/bits/atomic_futex.h:
626         (__atomic_futex_unsigned::_M_load_when_equal_until): Use target
627         clock duration type when rounding.
628         * testsuite/30_threads/async/async.cc (test_pr91486_wait_for):
629         Rename from test_pr91486.
630         (float_steady_clock): New class for test.
631         (test_pr91486_wait_until): New test.
633 2020-10-05  Mike Crowe  <mac@mcrowe.com>
635         * testsuite/20_util/duration_cast/rounding_c++11.cc: Copy
636         rounding.cc and alter to support compilation for C++11 and to
637         test std::chrono::__detail::ceil.
639 2020-10-02  Jonathan Wakely  <jwakely@redhat.com>
641         * testsuite/29_atomics/atomic_float/value_init.cc: Use float
642         instead of double so that __atomic_load_8 isn't needed.
644 2020-10-02  Jonathan Wakely  <jwakely@redhat.com>
646         * testsuite/18_support/96817.cc: Use terminate handler that
647         calls _Exit(0).
649 2020-10-02  Patrick Palka  <ppalka@redhat.com>
651         * include/bits/stl_iterator.h (reverse_iterator::iter_move):
652         Define for C++20 as per P0896.
653         (reverse_iterator::iter_swap): Likewise.
654         (move_iterator::operator*): Apply P0896 changes for C++20.
655         (move_iterator::operator[]): Likewise.
656         * testsuite/24_iterators/reverse_iterator/cust.cc: New test.
658 2020-10-01  Jonathan Wakely  <jwakely@redhat.com>
660         * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
661         Do not try to dereference return value of __atomic_load_n.
663 2020-09-30  Jonathan Wakely  <jwakely@redhat.com>
665         * config/cpu/arm/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST_AND_ACQUIRE):
666         (_GLIBCXX_GUARD_SET_AND_RELEASE): Define for EABI.
668 2020-09-30  Jonathan Wakely  <jwakely@redhat.com>
670         * include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_SAME):
671         Define for GCC 11 or when !__is_identifier(__is_same).
672         (_GLIBCXX_BUILTIN_IS_SAME_AS): Remove.
673         * include/std/type_traits (is_same, is_same_v): Replace uses
674         of _GLIBCXX_BUILTIN_IS_SAME_AS.
676 2020-09-28  Patrick Palka  <ppalka@redhat.com>
678         * include/std/ranges (filter_view): Declare the data member
679         _M_base last instead of first, and adjust constructors' member
680         initializer lists accordingly.
681         (transform_view): Likewise.
682         (take_view): Likewise.
683         (take_while_view): Likewise.
684         (drop_view): Likewise.
685         (drop_while_view): Likewise.
686         (join_view): Likewise.
687         (split_view): Likewise (and tweak nearby formatting).
688         (reverse_view): Likewise.
689         * testsuite/std/ranges/adaptors/sizeof.cc: Update expected
690         sizes.
692 2020-09-28  Patrick Palka  <ppalka@redhat.com>
694         * testsuite/std/ranges/adaptors/sizeof.cc: New test.
696 2020-09-28  Patrick Palka  <ppalka@redhat.com>
698         * include/bits/ranges_util.h (subrange::_M_end): Give it
699         [[no_unique_address]].
700         * testsuite/std/ranges/subrange/sizeof.cc: New test.
702 2020-09-28  Patrick Palka  <ppalka@redhat.com>
704         * include/std/ranges (iota_view::_M_bound): Give it
705         [[no_unique_address]].
706         * testsuite/std/ranges/iota/iota_view.cc: Check that an
707         unbounded iota_view has minimal size.
709 2020-09-27  Clement Chigot  <clement.chigot@atos.net>
711         * config/os/aix/t-aix: Use $(AR) without -X32_64.
713 2020-09-26  Jonathan Wakely  <jwakely@redhat.com>
715         PR libstdc++/96817
716         * include/ext/atomicity.h (__gnu_cxx::__is_single_threaded()):
717         New function wrapping __libc_single_threaded if available.
718         (__exchange_and_add_dispatch, __atomic_add_dispatch): Use it.
719         * libsupc++/guard.cc (__cxa_guard_acquire, __cxa_guard_abort)
720         (__cxa_guard_release): Likewise.
721         * testsuite/18_support/96817.cc: New test.
723 2020-09-25  Jonathan Wakely  <jwakely@redhat.com>
725         * libsupc++/Makefile.am: Remove redundant -std=gnu++1z flags.
726         * libsupc++/Makefile.in: Regenerate.
728 2020-09-24  Antony Polukhin  <antoshkka@gmail.com>
730         PR libstdc++/71579
731         * include/std/type_traits (invoke_result, is_invocable)
732         (is_invocable_r, is_nothrow_invocable, is_nothrow_invocable_r):
733         Add static_asserts to make sure that the arguments of the type
734         traits are not misused with incomplete types.
735         * testsuite/20_util/invoke_result/incomplete_args_neg.cc: New test.
736         * testsuite/20_util/is_invocable/incomplete_args_neg.cc: New test.
737         * testsuite/20_util/is_invocable/incomplete_neg.cc: New test.
738         * testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc:
739         New test.
740         * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: Check
741         for error on incomplete type usage in trait.
743 2020-09-24  Patrick Palka  <ppalka@redhat.com>
745         * include/std/ranges (__detail::__boxable): Split out the
746         associated constraints of __box into here.
747         (__detail::__box): Use the __boxable concept.  Define a leaner
748         partial specialization for semiregular types.
749         (single_view::_M_value): Give it [[no_unique_address]].
750         (filter_view::_M_pred): Likewise.
751         (transform_view::_M_fun): Likewise.
752         (take_while_view::_M_pred): Likewise.
753         (drop_while_view::_M_pred):: Likewise.
754         * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: New
755         test.
757 2020-09-24  Jonathan Wakely  <jwakely@redhat.com>
759         * doc/xml/manual/configure.xml: Correct name of option.
760         * doc/html/*: Regenerate.
762 2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
764         PR libstdc++/97167
765         * src/c++17/fs_path.cc (path::_Parser::root_path()): Check
766         for empty string before inspecting the first character.
767         * testsuite/27_io/filesystem/path/append/source.cc: Append
768         empty string_view to path.
770 2020-09-22  Glen Joseph Fernandes  <glenjofe@gmail.com>
772         * include/bits/align.h (align): Fix overflow handling.
773         * testsuite/20_util/align/3.cc: New test.
775 2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
777         * include/Makefile.am: Add new headers and adjust for renamed
778         header.
779         * include/Makefile.in: Regenerate.
780         * include/bits/iterator_concepts.h: Adjust for renamed header.
781         * include/bits/range_access.h (ranges::*): Move to new
782         <bits/ranges_base.h> header.
783         * include/bits/ranges_algobase.h: Include new <bits/ranges_base.h>
784         header instead of <ranges>.
785         * include/bits/ranges_algo.h: Include new <bits/ranges_util.h>
786         header.
787         * include/bits/range_cmp.h: Moved to...
788         * include/bits/ranges_cmp.h: ...here.
789         * include/bits/ranges_base.h: New header.
790         * include/bits/ranges_util.h: New header.
791         * include/experimental/string_view: Include new
792         <bits/ranges_base.h> header.
793         * include/std/functional: Adjust for renamed header.
794         * include/std/ranges (ranges::view_base, ranges::enable_view)
795         (ranges::dangling, ranges::borrowed_iterator_t): Move to new
796         <bits/ranges_base.h> header.
797         (ranges::view_interface, ranges::subrange)
798         (ranges::borrowed_subrange_t): Move to new <bits/ranges_util.h>
799         header.
800         * include/std/span: Include new <bits/ranges_base.h> header.
801         * include/std/string_view: Likewise.
802         * testsuite/24_iterators/back_insert_iterator/pr93884.cc: Add
803         missing <ranges> header.
804         * testsuite/24_iterators/front_insert_iterator/pr93884.cc:
805         Likewise.
807 2020-09-22  Jonathan Wakely  <jwakely@redhat.com>
809         PR libstdc++/96803
810         * include/std/tuple
811         (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
812         Use correct value category in __use_alloc call.
813         * testsuite/20_util/tuple/cons/96803.cc: Check with constructors
814         that require correct value category to be used.
816 2020-09-22  Patrick Palka  <ppalka@redhat.com>
818         * include/std/span (span::front): Remove static_assert.
819         (span::back): Likewise.
820         (span::operator[]): Likewise.
821         * testsuite/23_containers/span/back_neg.cc: Rewrite to verify
822         that we check the preconditions of back() only when it's called.
823         * testsuite/23_containers/span/front_neg.cc: Likewise for
824         front().
825         * testsuite/23_containers/span/index_op_neg.cc: Likewise for
826         operator[].
828 2020-09-22  Patrick Palka  <ppalka@redhat.com>
830         * include/bits/stl_algo.h (__sample): Exit early when the
831         input range is empty.
832         * testsuite/25_algorithms/sample/3.cc: New test.
834 2020-09-22  Patrick Palka  <ppalka@redhat.com>
836         * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20.
837         (search): Likewise for the overload that takes a searcher.
838         * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr
839         std::for_each_n.
840         * testsuite/25_algorithms/search/constexpr.cc: Test constexpr
841         std::search overload that takes a searcher.
843 2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
845         * include/bits/c++config (__replacement_assert): Add noreturn
846         attribute.
847         (__glibcxx_assert_impl): Use __builtin_expect to hint that the
848         assertion is expected to pass.
850 2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
852         * include/std/ranges (drop_view::begin()): Adjust constraints
853         to match the correct condition for O(1) ranges::next (LWG 3482).
854         * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is
855         cached for non-sized_range.
857 2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
859         * include/std/ranges (transform_view, elements_view): Relax
860         constraints on operator- for iterators, as per LWG 3483.
861         * testsuite/std/ranges/adaptors/elements.cc: Check that we
862         can take the difference of two iterators from a non-random
863         access range.
864         * testsuite/std/ranges/adaptors/transform.cc: Likewise.
866 2020-09-21  Jonathan Wakely  <jwakely@redhat.com>
868         PR libstdc++/97132
869         * include/bits/align.h (align) [!_GLIBCXX_USE_C99_STDINT_TR1]:
870         Remove unused code.
871         (assume_aligned): Do not use __builtin_assume_aligned during
872         constant evaluation.
873         * testsuite/20_util/assume_aligned/1.cc: Improve test.
874         * testsuite/20_util/assume_aligned/97132.cc: New test.
876 2020-09-20  Jonathan Wakely  <jwakely@redhat.com>
878         PR libstdc++/97101
879         * include/std/functional (bind_front): Fix order of parameters
880         in is_nothrow_constructible_v specialization.
881         * testsuite/20_util/function_objects/bind_front/97101.cc: New test.
883 2020-09-11  Thomas Rodgers  <trodgers@redhat.com>
885         * include/std/memory: Move #include <bits/align.h> inside C++11
886         conditional includes.
888 2020-09-11  Thomas Rodgers  <trodgers@redhat.com>
890         * include/Makefile.am (bits_headers): Add new header.
891         * include/Makefile.in: Regenerate.
892         * include/bits/align.h: New file.
893         * include/std/memory (align): Move definition to bits/align.h.
894         (assume_aligned): Likewise.
896 2020-09-11  Jonathan Wakely  <jwakely@redhat.com>
898         * include/std/chrono [C++17] (chrono::__detail::ceil): Add
899         using declaration to make chrono::ceil available for internal
900         use with a consistent name.
901         (chrono::__detail::__ceil_impl): New function template.
902         (chrono::__detail::ceil): Use __ceil_impl to compare and
903         increment the value. Remove SFINAE constraint.
905 2020-09-11  Jonathan Wakely  <jwakely@redhat.com>
907         * include/bits/regex_error.h (__throw_regex_error): Fix
908         parameter declaration and use reserved attribute names.
910 2020-09-11  Mike Crowe  <mac@mcrowe.com>
912         * include/std/condition_variable (condition_variable::wait_until):
913         Convert delta to steady_clock duration before adding to current
914         steady_clock time to avoid rounding errors described in PR68519.
915         (condition_variable::wait_for): Simplify calculation of absolute
916         time by using chrono::__detail::ceil in both overloads.
917         * testsuite/30_threads/condition_variable/members/68519.cc:
918         (test_wait_for): Renamed from test01. Replace unassigned val
919         variable with constant false. Reduce scope of mx and cv
920         variables to just test_wait_for function.
921         (test_wait_until): Add new test case.
923 2020-09-11  Mike Crowe  <mac@mcrowe.com>
925         PR libstdc++/91486
926         * include/bits/atomic_futex.h
927         (__atomic_futex_unsigned::_M_load_when_equal_for)
928         (__atomic_futex_unsigned::_M_load_when_equal_until): Use
929         __detail::ceil to convert delta to the reference clock
930         duration type to avoid resolution problems.
931         * include/std/chrono (__detail::ceil): Move implementation
932         of std::chrono::ceil into private namespace so that it's
933         available to pre-C++17 code.
934         * testsuite/30_threads/async/async.cc (test_pr91486):
935         Test __atomic_futex_unsigned::_M_load_when_equal_for.
937 2020-09-11  Mike Crowe  <mac@mcrowe.com>
939         * include/bits/atomic_futex.h
940         (__atomic_futex_unsigned::_M_load_when_equal_until): Add
941         loop on generic _Clock to check the timeout against _Clock
942         again after _M_load_when_equal_until returns indicating a
943         timeout.
944         * testsuite/30_threads/async/async.cc: Invent slow_clock
945         that runs at an eleventh of steady_clock's speed. Use it
946         to test the user-supplied-clock variant of
947         __atomic_futex_unsigned::_M_load_when_equal_until works
948         generally with test03 and loops correctly when the timeout
949         time hasn't been reached in test04.
951 2020-09-11  Mike Crowe  <mac@mcrowe.com>
953         PR libstdc++/93542
954         * include/bits/atomic_futex.h (__atomic_futex_unsigned): Change
955         __clock_t typedef to use steady_clock so that unknown clocks are
956         synced to it rather than system_clock. Change existing __clock_t
957         overloads of _M_load_and_text_until_impl and
958         _M_load_when_equal_until to use system_clock explicitly. Remove
959         comment about DR 887 since these changes address that problem as
960         best as we currently able.
962 2020-09-11  Mike Crowe  <mac@mcrowe.com>
964         PR libstdc++/93542
965         * config/abi/pre/gnu.ver: Update for addition of
966         __atomic_futex_unsigned_base::_M_futex_wait_until_steady.
967         * include/bits/atomic_futex.h (__atomic_futex_unsigned_base):
968         Add comments to clarify that _M_futex_wait_until and
969         _M_load_and_test_until use CLOCK_REALTIME.
970         (__atomic_futex_unsigned_base::_M_futex_wait_until_steady)
971         (__atomic_futex_unsigned_base::_M_load_and_text_until_steady):
972         New member functions that use CLOCK_MONOTONIC.
973         (__atomic_futex_unsigned_base::_M_load_and_test_until_impl)
974         (__atomic_futex_unsigned_base::_M_load_when_equal_until): Add
975         overloads that accept a steady_clock time_point and use the
976         new member functions.
977         * src/c++11/futex.cc: Include headers required for
978         clock_gettime.
979         (futex_clock_monotonic_flag): New constant to tell futex to
980         use CLOCK_MONOTONIC to match existing futex_clock_realtime_flag.
981         (futex_clock_monotonic_unavailable): New global to store the
982         result of trying to use CLOCK_MONOTONIC.
983         (__atomic_futex_unsigned_base::_M_futex_wait_until_steady): Add
984         new variant of _M_futex_wait_until that uses CLOCK_MONOTONIC to
985         support waiting using steady_clock.
987 2020-09-11  Mike Crowe  <mac@mcrowe.com>
989         * src/c++11/futex.cc: Add new constants for required futex
990         flags.  Add futex_clock_realtime_unavailable flag to store
991         result of trying to use FUTEX_CLOCK_REALTIME.
992         (__atomic_futex_unsigned_base::_M_futex_wait_until): Try to
993         use FUTEX_WAIT_BITSET with FUTEX_CLOCK_REALTIME and only
994         fall back to using gettimeofday and FUTEX_WAIT if that's not
995         supported.
997 2020-09-11  Mike Crowe  <mac@mcrowe.com>
999         * testsuite/30_threads/async/async.cc (test02): Test steady_clock
1000         with std::future::wait_until.
1001         (test03): Add new test templated on clock type waiting for future
1002         associated with async to resolve.
1003         (main): Call test03 to test both system_clock and steady_clock.
1005 2020-09-11  Torbjörn SVENSSON  <torbjorn.svensson@st.com>
1006             Christophe Lyon  <christophe.lyon@linaro.org>
1008         * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
1010 2020-09-11  Torbjörn SVENSSON  <torbjorn.svensson@st.com>
1011             Christophe Lyon  <christophe.lyon@linaro.org>
1013         * libsupc++/eh_call.cc: Avoid warning with -fno-exceptions.
1015 2020-09-11  Christophe Lyon  <christophe.lyon@linaro.org>
1017         * include/bits/regex_error.h: Avoid warning with -fno-exceptions.
1019 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1021         * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all):
1022         Add casts to compare types of the same signedness.
1024 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1026         * include/bits/ranges_algobase.h (__equal_fn): Remove unused
1027         typedef.
1029 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1031         * include/std/version (__cpp_lib_array_constexpr):
1032         (__cpp_lib_constexpr_char_traits): Only define C++17 value when
1033         compiling C++17.
1035 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1037         * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&))
1038         (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress
1039         warnings for uses of std::auto_ptr.
1040         * include/experimental/type_traits (is_literal_type_v):
1041         Likewise, for use of std::is_literal_type.
1042         * include/std/condition_variable (condition_variable_any::_Unlock):
1043         Likewise, for use of std::uncaught_exception.
1045 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1047         * include/bits/fs_path.h (path::_List::type()): Avoid narrowing
1048         conversion.
1049         * include/std/chrono (operator+(const year&, const years&)):
1050         Likewise.
1052 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1054         * include/bits/codecvt.h (codecvt_byname): Remove names of
1055         unused parameters.
1057 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1059         * include/bits/locale_facets_nonio.tcc: Adjust whitespace.
1061 2020-09-10  Krystian Kuźniarek  <krystian.kuzniarek@gmail.com>
1063         * include/c_global/cmath (__lerp): Avoid -Wparentheses warnings.
1065 2020-09-10  Krystian Kuźniarek  <krystian.kuzniarek@gmail.com>
1067         * include/bits/atomic_base.h: Fix -Wunused-variable
1068         warnings.
1069         * include/ext/new_allocator.h: Fix -Wunused-parameter
1070         warnings.
1072 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1074         * include/bits/stl_iterator.h (counted_iterator): Add assertions
1075         to check preconditions added by LWG 3472.
1077 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1079         PR libstdc++/94160
1080         * src/c++17/memory_resource.cc (munge_options): Round
1081         max_blocks_per_chunk to a multiple of four.
1082         (__pool_resource::_M_alloc_pools()): Simplify slightly.
1083         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
1084         Check that valid pointers are returned when small values are
1085         used for max_blocks_per_chunk.
1087 2020-09-10  Jonathan Wakely  <jwakely@redhat.com>
1089         PR libstdc++/96942
1090         * include/std/memory_resource (monotonic_buffer_resource::do_allocate):
1091         Use __builtin_expect when checking if a new buffer needs to be
1092         allocated from the upstream resource, and for checks for edge
1093         cases like zero sized buffers and allocations.
1094         * src/c++17/memory_resource.cc (aligned_size): New class template.
1095         (aligned_ceil): New helper function to round up to a given
1096         alignment.
1097         (monotonic_buffer_resource::chunk): Replace _M_size and _M_align
1098         with an aligned_size member. Remove _M_canary member. Change _M_next
1099         to pointer instead of unaligned buffer.
1100         (monotonic_buffer_resource::chunk::allocate): Round up to multiple
1101         of 64 instead of to power of two. Check for size overflow. Remove
1102         redundant check for minimum required alignment.
1103         (monotonic_buffer_resource::chunk::release): Adjust for changes
1104         to data members.
1105         (monotonic_buffer_resource::_M_new_buffer): Use aligned_ceil.
1106         (big_block): Replace _M_size and _M_align with aligned_size
1107         member.
1108         (big_block::big_block): Check for size overflow.
1109         (big_block::size, big_block::align): Adjust to use aligned_size.
1110         (big_block::alloc_size): Use aligned_ceil.
1111         (munge_options): Use aligned_ceil.
1112         (__pool_resource::allocate): Use big_block::align for alignment.
1113         * testsuite/20_util/monotonic_buffer_resource/allocate.cc: Check
1114         upstream resource gets expected values for impossible sizes.
1115         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
1116         Likewise. Adjust checks for expected alignment in existing test.
1118 2020-09-07  Jonathan Wakely  <jwakely@redhat.com>
1120         * include/std/chrono (duration::_S_gcd): Use invariant that
1121         neither value is zero initially.
1123 2020-09-07  Jonathan Wakely  <jwakely@redhat.com>
1125         * include/std/ranges (__box): Simplify constraints as per LWG 3477.
1127 2020-09-03  Jonathan Wakely  <jwakely@redhat.com>
1129         PR libstdc++/96592
1130         * include/std/tuple (_TupleConstraints<true, T...>): Use
1131         alternative is_constructible instead of std::is_constructible.
1132         * testsuite/20_util/tuple/cons/96592.cc: New test.
1134 2020-09-03  Jonathan Wakely  <jwakely@redhat.com>
1136         * include/std/chrono (duration::_S_gcd): Use iterative algorithm
1137         for C++14 and later.
1138         * include/std/numeric (__detail::__gcd): Replace recursive
1139         Euclidean algorithm with iterative version of binary GCD algorithm.
1140         * testsuite/26_numerics/gcd/1.cc: Test additional inputs.
1141         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error lines.
1142         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1143         * testsuite/experimental/numeric/gcd.cc: Test additional inputs.
1144         * testsuite/26_numerics/gcd/2.cc: New test.
1146 2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1148         PR libstdc++/92978
1149         * testsuite/experimental/numeric/92978.cc: Use experimental::lcm
1150         not std::lcm.
1152 2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1154         PR libstdc++/96851
1155         * include/bits/cpp_type_traits.h (__is_memcmp_ordered):
1156         New trait that says if memcmp can be used for ordering.
1157         (__is_memcmp_ordered_with): Likewise, for two types.
1158         * include/bits/deque.tcc (__lex_cmp_dit): Use new traits
1159         instead of __is_byte and __numeric_traits.
1160         (__lexicographical_compare_aux1): Likewise.
1161         * include/bits/ranges_algo.h (__lexicographical_compare_fn):
1162         Likewise.
1163         * include/bits/stl_algobase.h (__lexicographical_compare_aux1)
1164         (__is_byte_iter): Likewise.
1165         * include/std/array (operator<=>): Likewise. Only use memcmp
1166         when std::is_constant_evaluated() is false.
1167         * testsuite/23_containers/array/comparison_operators/96851.cc:
1168         New test.
1169         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
1170         Adjust dg-error line numbers.
1172 2020-09-02  Jonathan Wakely  <jwakely@redhat.com>
1174         * include/bits/stl_iterator.h: Include <bits/exception_defines.h>
1175         for definitions of __try, __catch and __throw_exception_again.
1176         (counted_iterator::operator++(int)): Use __throw_exception_again
1177         instead of throw.
1178         * libsupc++/new: Include <bits/exception.h> not <exception>.
1179         * libsupc++/new_opvnt.cc: Include <bits/exception_defines.h>.
1180         * testsuite/18_support/destroying_delete.cc: Include
1181         <type_traits> for std::is_same_v definition.
1182         * testsuite/20_util/variant/index_type.cc: Qualify size_t.
1184 2020-09-01  Jonathan Wakely  <jwakely@redhat.com>
1186         PR libstdc++/71960
1187         * include/bits/c++config (__glibcxx_assert_impl): Remove
1188         do-while so that uses of the macro need to add it.
1189         (__glibcxx_assert): Rename macro for runtime assertions
1190         to __glibcxx_assert_2.
1191         (__glibcxx_assert_1): Define macro for constexpr assertions.
1192         (__glibcxx_assert): Define macro for constexpr and runtime
1193         assertions.
1194         * include/bits/range_access.h (ranges::advance): Remove
1195         redundant precondition checks during constant evaluation.
1196         * include/parallel/base.h (_GLIBCXX_PARALLEL_ASSERT): Always
1197         use do-while in macro expansion.
1198         * include/std/ranges (iota_view::iota_view(W, B)): Remove
1199         redundant braces.
1201 2020-09-01  Jonathan Wakely  <jwakely@redhat.com>
1203         * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)):
1204         New helper function for finding GCD of two positive intmax_t
1205         values.
1206         (duration::__divide): New helper alias for dividing one period
1207         by another.
1208         (duration::__is_harmonic): Use __divide not ratio_divide.
1209         (duration(const duration<R2, P2>&)): Require the duration rep
1210         types to be convertible.
1211         * testsuite/20_util/duration/cons/dr2094.cc: New test.
1212         * testsuite/20_util/duration/requirements/reduced_period.cc:
1213         Fix definition of unused member functions in test type.
1214         * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1215         Adjust expected errors.
1217 2020-08-29  Jonathan Wakely  <jwakely@redhat.com>
1219         * include/std/numeric (__detail::__absu(bool)): Make deleted
1220         function a function template, so it will be chosen for calls
1221         with an explicit template argument list.
1222         * testsuite/26_numerics/gcd/gcd_neg.cc: Add dg-prune-output.
1223         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1225 2020-08-28  Jonathan Wakely  <jwakely@redhat.com>
1227         * include/std/chrono (common_type): Fix partial specializations
1228         for a single duration type to use the common_type of the rep.
1229         (duration::operator+, duration::operator-): Fix return types
1230         to also use the common_type of the rep.
1231         * testsuite/20_util/duration/requirements/reduced_period.cc:
1232         Check duration using a rep that has common_type specialized.
1234 2020-08-28  Jonathan Wakely  <jwakely@redhat.com>
1236         PR libstdc++/92978
1237         * include/std/numeric (__abs_integral): Replace with ...
1238         (__detail::__absu): New function template that returns an
1239         unsigned type, guaranteeing it can represent the most
1240         negative signed value.
1241         (__detail::__gcd, __detail::__lcm): Require arguments to
1242         be unsigned and therefore already non-negative.
1243         (gcd, lcm): Convert arguments to absolute value as unsigned
1244         type before calling __detail::__gcd or __detail::__lcm.
1245         * include/experimental/numeric (gcd, lcm): Likewise.
1246         * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected
1247         errors.
1248         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
1249         * testsuite/26_numerics/gcd/92978.cc: New test.
1250         * testsuite/26_numerics/lcm/92978.cc: New test.
1251         * testsuite/experimental/numeric/92978.cc: New test.
1253 2020-08-27  Jonathan Wakely  <jwakely@redhat.com>
1255         * include/std/chrono (__duration_common_type): Ensure the
1256         reduced ratio is used. Remove unused partial specialization
1257         using __failure_type.
1258         (common_type): Pass reduced ratios to __duration_common_type.
1259         Add partial specializations for simple cases involving a single
1260         duration or time_point type.
1261         (duration::period): Use reduced ratio.
1262         (duration::operator+(), duration::operator-()): Return duration
1263         type using the reduced ratio.
1264         * testsuite/20_util/duration/requirements/typedefs_neg2.cc:
1265         Adjust expected errors.
1266         * testsuite/20_util/duration/requirements/reduced_period.cc: New test.
1268 2020-08-27  Patrick Palka  <ppalka@redhat.com>
1270         * include/std/chrono (year_month::operator+): Properly handle a
1271         month value of 0 by casting the month value to int before
1272         subtracting 1 from it so that the difference is sign-extended in
1273         the subsequent addition.
1274         * testsuite/std/time/year_month/1.cc: Test adding months to a
1275         year_month whose month component is below or above the
1276         normalized range of [1,12].
1278 2020-08-27  Patrick Palka  <ppalka@redhat.com>
1280         * include/std/chrono
1281         (__detail::__months_years_conversion_disambiguator): Define.
1282         (year_month::operator+=): Templatize the 'months'-based overload
1283         so that the 'years'-based overload is selected in case of
1284         equally-ranked implicit conversion sequences to both 'months'
1285         and 'years' from the supplied argument.
1286         (year_month::operator-=): Likewise.
1287         (year_month::operator+): Likewise.
1288         (year_month::operator-): Likewise.
1289         (year_month_day::operator+=): Likewise.
1290         (year_month_day::operator-=): Likewise.
1291         (year_month_day::operator+): Likewise.
1292         (year_month_day::operator-): Likewise.
1293         (year_month_day_last::operator+=): Likewise.
1294         (year_month_day_last::operator-=): Likewise.
1295         (year_month_day_last::operator+): Likewise
1296         (year_month_day_last::operator-): Likewise.
1297         (year_month_day_weekday::operator+=): Likewise
1298         (year_month_day_weekday::operator-=): Likewise.
1299         (year_month_day_weekday::operator+): Likewise.
1300         (year_month_day_weekday::operator-): Likewise.
1301         (year_month_day_weekday_last::operator+=): Likewise
1302         (year_month_day_weekday_last::operator-=): Likewise.
1303         (year_month_day_weekday_last::operator+): Likewise.
1304         (year_month_day_weekday_last::operator-): Likewise.
1305         (testsuite/std/time/year_month/2.cc): New test.
1306         (testsuite/std/time/year_month_day/2.cc): New test.
1307         (testsuite/std/time/year_month_day_last/2.cc): New test.
1308         (testsuite/std/time/year_month_weekday/2.cc): New test.
1309         (testsuite/std/time/year_month_weekday_last/2.cc): New test.
1310         * testsuite/std/time/year_month/2.cc: New file.
1311         * testsuite/std/time/year_month_day/2.cc: New file.
1312         * testsuite/std/time/year_month_day_last/2.cc: New file.
1313         * testsuite/std/time/year_month_weekday/2.cc: New file.
1314         * testsuite/std/time/year_month_weekday_last/2.cc: New file.
1316 2020-08-27  Patrick Palka  <ppalka@redhat.com>
1318         PR libstdc++/95322
1319         * include/std/ranges (transform_view::sentinel::__distance_from):
1320         Give this a deduced return type.
1321         (transform_view::sentinel::operator-): Adjust the return type so
1322         that it's based on the constness of the iterator rather than
1323         that of the sentinel.
1324         * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488.
1326 2020-08-27  Patrick Palka  <ppalka@redhat.com>
1328         * include/std/ranges (elements_view::begin): Adjust constraints.
1329         (elements_view::end): Likewise.
1330         (elements_view::_Sentinel::operator==): Templatize to take both
1331         _Iterator<true> and _Iterator<false>.
1332         (elements_view::_Sentinel::operator-): Likewise.
1333         * testsuite/std/ranges/adaptors/elements.cc: Add testcase for
1334         the example from P1994R1.
1335         * testsuite/std/ranges/adaptors/lwg3406.cc: New test.
1337 2020-08-27  Patrick Palka  <ppalka@redhat.com>
1339         * include/std/ranges (elements_view::end): Replace these two
1340         overloads with four new overloads.
1341         (elements_view::_Iterator::operator==): Remove.
1342         (elements_view::_Iterator::operator-): Likewise.
1343         (elements_view::_Sentinel): Define.
1345 2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1347         * include/std/tuple (_Tuple_impl): Whitespaces changes for
1348         consistent indentation. Also use __enable_if_t alias template.
1350 2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1352         PR libstdc++/96803
1353         * include/std/tuple
1354         (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)):
1355         Replace parameter pack with a type parameter and a pack and pass
1356         the first type to __use_alloc.
1357         * testsuite/20_util/tuple/cons/96803.cc: New test.
1359 2020-08-26  Patrick Palka  <ppalka@redhat.com>
1361         * include/std/chrono (year_month_weekday::operator==): Compare
1362         weekday_indexed instead of weekday.
1363         * testsuite/std/time/year_month_weekday/1.cc: Augment testcase.
1365 2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1367         * include/bits/hashtable_policy.h (_Hash_code_base): Change
1368         index of _Hashtable_ebo_helper base class.
1369         * testsuite/23_containers/unordered_map/dup_types.cc: New test.
1371 2020-08-26  Jonathan Wakely  <jwakely@redhat.com>
1373         PR libstdc++/71960
1374         * include/experimental/string_view (basic_string_view):
1375         Enable debug assertions.
1376         * include/std/string_view (basic_string_view):
1377         Likewise.
1379 2020-08-26  François Dumont  <fdumont@gcc.gnu.org>
1381         * include/bits/hashtable_policy.h (_Hashtable<>): Rename _H1 into _Hash
1382         _H2 into _RangeHash and _Hash into _Unused.
1383         (_Hastable_base<>): Likewise.
1384         (_Map_base<>): Likewise.
1385         (_Insert_base<>): Likewise.
1386         (_Insert<>): Likewise.
1387         (_Rehash_base<>): Likewise.
1388         (_Local_iterator_base<>): Likewise.
1389         (_Hash_code_base<>): Likewise.
1390         (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false>):
1391         Remove.
1392         (_Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>):
1393         Remove.
1394         (_Hash_code_base<_Key, _Value, _ExtractKey, _Hash, _RangeHas, _Unused,
1395         bool>): Remove _Hashtable_ebo_helper<2, _RangeHash> base type..
1396         (_Hash_code_base<>::_M_bucket_index(const _Key&, __hash_code, size_t)):
1397         Replace by...
1398         (_Hash_code_base<>::_M_bucket_index(__hash_code, size_t)): ...this.
1399         (_Local_iterator<>): Remove _H1 and _H2 template parameters.
1400         (_Local_const_iterator<>): Likewise.
1401         (_Equality<>): Likewise.
1402         (_Map_base<>::operator[](const key_type&): Adapt.
1403         (_Map_base<>::operator[](key_type&&): Adapt.
1404         (_Identity::operator()): Add noexcept.
1405         (_Select1st::operator()): Likewise.
1406         (_Hash_code_base<>): Remove _Hashtable_ebo_helper<0, _ExtractKey> base
1407         type.
1408         (_Hash_code_base::_M_extract): Remove.
1409         * include/bits/hashtable.h (_Hashtable<>): Remove _H1 and _H2 template
1410         parameters. Remove _ExtractKey from constructors.
1411         (_Hashtable<>::_M_insert_unique_node(const key_type&, size_t,
1412         __hash_code, __node_type*, size_t)): Replace by...
1413         (_Hashtable<>::_M_insert_unique_node(size_t, __hash_code,
1414          __node_type*, size_t)): ...this.
1415         (_Hashtable<>::_M_insert_muti_node(__node_type*, const key_type&,
1416         __hash_code, __node_type*)): Replace by...
1417         (_Hashtable<>::_M_insert_multi_node(__node_type*, __hash_code,
1418         __node_type*)): ...this.
1419         (_Hashtable<>::__key_extract): Remove.
1420         * include/bits/node_handle.h: Adapt.
1422 2020-08-25  Jonathan Wakely  <jwakely@redhat.com>
1424         * testsuite/21_strings/debug/iterator_self_move_assign_neg.cc: Removed.
1425         * testsuite/21_strings/debug/self_move_assign_neg.cc: Removed.
1426         * testsuite/23_containers/deque/debug/iterator_self_move_assign_neg.cc: Removed.
1427         * testsuite/23_containers/deque/debug/self_move_assign_neg.cc: Removed.
1428         * testsuite/23_containers/forward_list/debug/iterator_self_move_assign_neg.cc: Removed.
1429         * testsuite/23_containers/forward_list/debug/self_move_assign_neg.cc: Removed.
1430         * testsuite/23_containers/list/debug/iterator_self_move_assign_neg.cc: Removed.
1431         * testsuite/23_containers/list/debug/self_move_assign_neg.cc: Removed.
1432         * testsuite/23_containers/map/debug/iterator_self_move_assign_neg.cc: Removed.
1433         * testsuite/23_containers/map/debug/self_move_assign_neg.cc: Removed.
1434         * testsuite/23_containers/multimap/debug/iterator_self_move_assign_neg.cc: Removed.
1435         * testsuite/23_containers/multimap/debug/self_move_assign_neg.cc: Removed.
1436         * testsuite/23_containers/multiset/debug/iterator_self_move_assign_neg.cc: Removed.
1437         * testsuite/23_containers/multiset/debug/self_move_assign_neg.cc: Removed.
1438         * testsuite/23_containers/set/debug/iterator_self_move_assign_neg.cc: Removed.
1439         * testsuite/23_containers/set/debug/self_move_assign_neg.cc: Removed.
1440         * testsuite/23_containers/unordered_map/debug/iterator_self_move_assign_neg.cc: Removed.
1441         * testsuite/23_containers/unordered_map/debug/self_move_assign_neg.cc: Removed.
1442         * testsuite/23_containers/unordered_multimap/debug/iterator_self_move_assign_neg.cc:
1443         Removed.
1444         * testsuite/23_containers/unordered_multimap/debug/self_move_assign_neg.cc: Removed.
1445         * testsuite/23_containers/unordered_multiset/debug/iterator_self_move_assign_neg.cc:
1446         Removed.
1447         * testsuite/23_containers/unordered_multiset/debug/self_move_assign_neg.cc: Removed.
1448         * testsuite/23_containers/unordered_set/debug/iterator_self_move_assign_neg.cc: Removed.
1449         * testsuite/23_containers/unordered_set/debug/self_move_assign_neg.cc: Removed.
1450         * testsuite/23_containers/vector/debug/iterator_self_move_assign_neg.cc: Removed.
1451         * testsuite/23_containers/vector/debug/self_move_assign_neg.cc: Removed.
1453 2020-08-25  Patrick Palka  <ppalka@redhat.com>
1455         * include/std/chrono (year_month_weekday::ok): Fix assert.
1457 2020-08-25  Jonathan Wakely  <jwakely@redhat.com>
1459         * include/std/future (future, shared_future. promise): Add
1460         is_destructible assertion (LWG 3466). Adjust string-literal for
1461         !is_array and !is_function assertions.
1462         * testsuite/30_threads/future/requirements/lwg3458.cc: Check
1463         types with no accessible destructor. Adjust expected errors.
1464         * testsuite/30_threads/promise/requirements/lwg3466.cc:
1465         Likewise.
1466         * testsuite/30_threads/shared_future/requirements/lwg3458.cc:
1467         Likewise.
1469 2020-08-25  Patrick Palka  <ppalka@redhat.com>
1470             Ed Smith-Rowland  <3dw4rd@verizon.net>
1471             Jonathan Wakely  <jwakely@redhat.com>
1473         * include/std/chrono (time_point::operator++)
1474         (time_point::operator--): Define.
1475         (utc_clock, tai_clock, gps_clock): Forward declare.
1476         (utc_time, utc_seconds, tai_time, tai_seconds, gps_time)
1477         (gps_seconds): Define.
1478         (is_clock<utc_clock>, is_clock<tai_clock>, is_clock<gps_clock>)
1479         (is_clock_v<utc_clock>, is_clock_v<tai_clock>)
1480         (is_clock_v<gps_clock>): Define these specializations.
1481         (leap_second_info): Define.
1482         (day, month, year, weekday, weekday_indexed)
1483         (weekday_last, month_day, month_day_last, month_weekday)
1484         (month_weekday_last, year_month, year_month_day)
1485         (year_month_day_last, year_month_weekday, year_month_weekday_last):
1486         Declare and later define.
1487         (last_spec, last, __detail::__days_per_month)
1488         (__detail::__days_per_month, __detail::__last_day): Define.
1489         (January, February, March, April, May, June, July, August)
1490         (September, October, November, December, Sunday, Monday, Tuesday)
1491         (Wednesday, Thursday, Friday, Saturday): Define.
1492         (weekday::operator[]): Define out-of-line.
1493         (year_month_day::_S_from_days, year_month_day::M_days_since_epoch):
1494         Likewise.
1495         (year_month_day::year_month_day, year_month_day::ok): Likewise.
1496         (__detail::__pow10, hh_mm_ss): Define.
1497         (literals::chrono_literals::operator""d)
1498         (literals::chrono_literals::operator""y): Define.
1499         (is_am, is_pm, make12, make24): Define.
1500         * testsuite/20_util/time_point/4.cc: New test.
1501         * testsuite/std/time/day/1.cc: New test.
1502         * testsuite/std/time/hh_mm_ss/1.cc: New test.
1503         * testsuite/std/time/is_am/1.cc: New test.
1504         * testsuite/std/time/is_pm/1.cc: New test.
1505         * testsuite/std/time/make12/1.cc: New test.
1506         * testsuite/std/time/make24/1.cc: New test.
1507         * testsuite/std/time/month/1.cc: New test.
1508         * testsuite/std/time/month_day/1.cc: New test.
1509         * testsuite/std/time/month_day_last/1.cc: New test.
1510         * testsuite/std/time/month_weekday/1.cc: New test.
1511         * testsuite/std/time/month_weekday_last/1.cc: New test.
1512         * testsuite/std/time/weekday/1.cc: New test.
1513         * testsuite/std/time/weekday_indexed/1.cc: New test.
1514         * testsuite/std/time/weekday_last/1.cc: New test.
1515         * testsuite/std/time/year/1.cc: New test.
1516         * testsuite/std/time/year_month/1.cc: New test.
1517         * testsuite/std/time/year_month_day/1.cc: New test.
1518         * testsuite/std/time/year_month_day_last/1.cc: New test.
1519         * testsuite/std/time/year_month_weekday/1.cc: New test.
1520         * testsuite/std/time/year_month_weekday_last/1.cc: New test.
1522 2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1524         * include/std/ranges (join_view): Add deduction guide (LWG 3474).
1525         * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test.
1527 2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1529         * include/bits/iterator_concepts.h (indirectly_readable): Add
1530         partial specializations to resolve ambiguities (LWG 3446).
1531         * testsuite/24_iterators/associated_types/readable.traits.cc:
1532         Check types with both value_type and element_type.
1534 2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1536         * include/std/ranges (ranges::iota_view::size()): Perform all
1537         calculations in the right unsigned types.
1538         * testsuite/std/ranges/iota/size.cc: New test.
1540 2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1542         PR libstdc++/96766
1543         * include/std/variant (_Variant_storage): Replace implicit
1544         conversions from size_t to __index_type with explicit casts.
1546 2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
1548         * testsuite/30_threads/packaged_task/cons/alloc.cc: Run for
1549         C++11 and skip for C++17 or later.
1551 2020-08-24  Corentin Gay  <gay@adacore.com>
1553         * testsuite/20_util/shared_ptr/atomic/3.cc: Do not require POSIX
1554         threads and add -pthread only on targets supporting them.
1555         * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
1556         Likewise.
1557         * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc:
1558         Likewise.
1559         * testsuite/30_threads/async/42819.cc: Likewise.
1560         * testsuite/30_threads/async/49668.cc: Likewise.
1561         * testsuite/30_threads/async/54297.cc: Likewise.
1562         * testsuite/30_threads/async/any.cc: Likewise.
1563         * testsuite/30_threads/async/async.cc: Likewise.
1564         * testsuite/30_threads/async/except.cc: Likewise.
1565         * testsuite/30_threads/async/launch.cc: Likewise.
1566         * testsuite/30_threads/async/lwg2021.cc: Likewise.
1567         * testsuite/30_threads/async/sync.cc: Likewise. : Likewise.
1568         * testsuite/30_threads/call_once/39909.cc: Likewise.
1569         * testsuite/30_threads/call_once/49668.cc: Likewise.
1570         * testsuite/30_threads/call_once/60497.cc: Likewise.
1571         * testsuite/30_threads/call_once/call_once1.cc: Likewise.
1572         * testsuite/30_threads/call_once/dr2442.cc: Likewise.
1573         * testsuite/30_threads/condition_variable/54185.cc: Likewise.
1574         * testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
1575         * testsuite/30_threads/condition_variable/members/1.cc: Likewise.
1576         * testsuite/30_threads/condition_variable/members/2.cc: Likewise.
1577         * testsuite/30_threads/condition_variable/members/3.cc: Likewise.
1578         * testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
1579         * testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
1580         * testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
1581         Likewise.
1582         * testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
1583         * testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
1584         * testsuite/30_threads/condition_variable_any/cond.cc: Likewise.
1585         * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
1586         * testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
1587         * testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
1588         * testsuite/30_threads/future/cons/move.cc: Likewise.
1589         * testsuite/30_threads/future/members/45133.cc: Likewise.
1590         * testsuite/30_threads/future/members/get.cc: Likewise.
1591         * testsuite/30_threads/future/members/get2.cc: Likewise.
1592         * testsuite/30_threads/future/members/share.cc: Likewise.
1593         * testsuite/30_threads/future/members/valid.cc: Likewise.
1594         * testsuite/30_threads/future/members/wait.cc: Likewise.
1595         * testsuite/30_threads/future/members/wait_for.cc: Likewise.
1596         * testsuite/30_threads/future/members/wait_until.cc: Likewise.
1597         * testsuite/30_threads/lock/1.cc: Likewise.
1598         * testsuite/30_threads/lock/2.cc: Likewise.
1599         * testsuite/30_threads/lock/3.cc: Likewise.
1600         * testsuite/30_threads/lock/4.cc: Likewise.
1601         * testsuite/30_threads/mutex/cons/1.cc: Likewise.
1602         * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
1603         * testsuite/30_threads/mutex/lock/1.cc: Likewise.
1604         * testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
1605         * testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
1606         * testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
1607         * testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
1608         * testsuite/30_threads/mutex/unlock/1.cc: Likewise.
1609         * testsuite/30_threads/mutex/unlock/2.cc: Likewise.
1610         * testsuite/30_threads/packaged_task/49668.cc: Likewise.
1611         * testsuite/30_threads/packaged_task/60564.cc: Likewise.
1612         * testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
1613         * testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
1614         * testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
1615         * testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
1616         * testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
1617         * testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
1618         * testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
1619         * testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
1620         Likewise.
1621         * testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
1622         * testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
1623         * testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
1624         * testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
1625         * testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
1626         * testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
1627         * testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
1628         * testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
1629         * testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
1630         * testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
1631         * testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
1632         * testsuite/30_threads/promise/60966.cc: Likewise.
1633         * testsuite/30_threads/promise/cons/1.cc: Likewise.
1634         * testsuite/30_threads/promise/cons/alloc.cc: Likewise.
1635         * testsuite/30_threads/promise/cons/move.cc: Likewise.
1636         * testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
1637         * testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
1638         * testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
1639         * testsuite/30_threads/promise/members/get_future.cc: Likewise.
1640         * testsuite/30_threads/promise/members/get_future2.cc: Likewise.
1641         * testsuite/30_threads/promise/members/set_exception.cc: Likewise.
1642         * testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
1643         * testsuite/30_threads/promise/members/set_value.cc: Likewise.
1644         * testsuite/30_threads/promise/members/set_value2.cc: Likewise.
1645         * testsuite/30_threads/promise/members/set_value3.cc: Likewise.
1646         * testsuite/30_threads/promise/members/swap.cc: Likewise.
1647         * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
1648         * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
1649         Likewise.
1650         * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
1651         * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
1652         * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
1653         Likewise.
1654         * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
1655         * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
1656         * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
1657         * testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
1658         * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
1659         * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
1660         Likewise.
1661         * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
1662         * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
1663         * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
1664         Likewise.
1665         * testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
1666         Likewise.
1667         * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
1668         * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
1669         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
1670         Likewise.
1671         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
1672         Likewise.
1673         * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
1674         Likewise.
1675         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
1676         Likewise.
1677         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
1678         Likewise.
1679         * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
1680         * testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
1681         * testsuite/30_threads/shared_future/cons/move.cc: Likewise.
1682         * testsuite/30_threads/shared_future/members/45133.cc: Likewise.
1683         * testsuite/30_threads/shared_future/members/get.cc: Likewise.
1684         * testsuite/30_threads/shared_future/members/get2.cc: Likewise.
1685         * testsuite/30_threads/shared_future/members/valid.cc: Likewise.
1686         * testsuite/30_threads/shared_future/members/wait.cc: Likewise.
1687         * testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
1688         * testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
1689         * testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
1690         * testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
1691         * testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
1692         * testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
1693         * testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
1694         * testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
1695         * testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
1696         * testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
1697         * testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
1698         * testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
1699         * testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
1700         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
1701         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
1702         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
1703         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
1704         * testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
1705         * testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
1706         * testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
1707         * testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
1708         * testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
1709         * testsuite/30_threads/this_thread/1.cc: Likewise.
1710         * testsuite/30_threads/this_thread/sleep_for-mt.cc: Likewise.
1711         * testsuite/30_threads/this_thread/sleep_until-mt.cc: Likewise.
1712         * testsuite/30_threads/thread/cons/1.cc: Likewise.
1713         * testsuite/30_threads/thread/cons/2.cc: Likewise.
1714         * testsuite/30_threads/thread/cons/3.cc: Likewise.
1715         * testsuite/30_threads/thread/cons/4.cc: Likewise.
1716         * testsuite/30_threads/thread/cons/49668.cc: Likewise.
1717         * testsuite/30_threads/thread/cons/5.cc: Likewise.
1718         * testsuite/30_threads/thread/cons/6.cc: Likewise.
1719         * testsuite/30_threads/thread/cons/7.cc: Likewise.
1720         * testsuite/30_threads/thread/cons/8.cc: Likewise.
1721         * testsuite/30_threads/thread/cons/9.cc: Likewise.
1722         * testsuite/30_threads/thread/cons/moveable.cc: Likewise.
1723         * testsuite/30_threads/thread/cons/terminate.cc: Likewise.
1724         * testsuite/30_threads/thread/members/1.cc: Likewise.
1725         * testsuite/30_threads/thread/members/2.cc: Likewise.
1726         * testsuite/30_threads/thread/members/3.cc: Likewise.
1727         * testsuite/30_threads/thread/members/4.cc: Likewise.
1728         * testsuite/30_threads/thread/members/5.cc: Likewise.
1729         * testsuite/30_threads/thread/members/hardware_concurrency.cc:
1730         Likewise.
1731         * testsuite/30_threads/thread/native_handle/typesizes.cc: Likewise.
1732         * testsuite/30_threads/thread/swap/1.cc: Likewise.
1733         * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
1734         * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc:
1735         Likewise.
1736         * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
1737         * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
1738         * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
1739         Likewise.
1740         * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
1741         * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
1742         * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
1743         * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
1744         * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
1745         * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
1746         * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
1747         * testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
1748         * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
1749         * testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
1750         * testsuite/30_threads/try_lock/1.cc: Likewise.
1751         * testsuite/30_threads/try_lock/2.cc: Likewise.
1752         * testsuite/30_threads/try_lock/3.cc: Likewise.
1753         * testsuite/30_threads/try_lock/4.cc: Likewise.
1754         * testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
1755         * testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
1756         * testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
1757         * testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
1758         * testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
1759         * testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
1760         * testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
1761         * testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
1762         * testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
1763         * testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
1764         * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
1766 2020-08-21  Jonathan Wakely  <jwakely@redhat.com>
1768         PR libstdc++/96736
1769         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Do not
1770         test "cold" on darwin.
1771         * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1772         Likewise.
1773         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1774         Likewise.
1775         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1776         Likewise.
1777         * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1778         Likewise.
1780 2020-08-21  Jonathan Wakely  <jwakely@redhat.com>
1782         PR libstdc++/96718
1783         * testsuite/25_algorithms/pstl/feature_test-2.cc: Require
1784         tbb-backend effective target.
1785         * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
1786         * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
1787         * testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
1789 2020-08-20  Jonathan Wakely  <jwakely@redhat.com>
1791         * include/bits/iterator_concepts.h [__STRICT_ANSI__]
1792         (incrementable_traits<__int128>): Define specialization.
1793         (incrementable_traits<unsigned __int128>): Likewise.
1794         * testsuite/std/ranges/iota/96042.cc: Test iota_view with
1795         __int128.
1797 2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1798             Patrick Palka  <ppalka@redhat.com>
1800         PR libstdc++/96042
1801         * include/bits/range_access.h (__detail::__to_unsigned_like):
1802         Do not use make_unsigned_t<T> in the return type, as it can
1803         result in an error before the integral<T> constraint is checked.
1804         [__STRICT_ANSI__]: Add overloads for 128-bit integer types.
1805         (__detail::__make_unsigned_like_t): Define as the return type
1806         of __to_unsigned_like.
1807         * testsuite/std/ranges/subrange/96042.cc: New test.
1809 2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1811         * include/bits/stl_tree.h (operator!=, operator>, operator<=)
1812         (operator>=): Remove deprecated functions.
1814 2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1816         PR libstdc++/96042
1817         * include/ext/numeric_traits.h (__is_integer_nonstrict): New
1818         trait which is true for 128-bit integers even in strict modes.
1819         (__numeric_traits_integer, __numeric_traits): Use
1820         __is_integer_nonstrict instead of __is_integer.
1821         * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__]
1822         (numeric_limits<__int128>, (numeric_limits<unsigned __int128>):
1823         Define.
1824         * testsuite/std/ranges/iota/96042.cc: New test.
1826 2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1828         * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST)
1829         (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST)
1830         (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
1831         Add new macros to comment.
1833 2020-08-19  Patrick Palka  <ppalka@redhat.com>
1835         * include/Makefile.am (bits_headers): Add new header
1836         <bits/max_size_type.h>.
1837         * include/Makefile.in: Regenerate.
1838         * include/bits/iterator_concepts.h
1839         (ranges::__detail::__max_diff_type): Remove definition, replace
1840         with forward declaration of class __max_diff_type.
1841         (__detail::__max_size_type): Remove definition, replace with
1842         forward declaration of class __max_size_type.
1843         (__detail::__is_unsigned_int128, __is_signed_int128)
1844         (__is_int128): New concepts.
1845         (__detail::__is_integer_like): Accept __int128 and unsigned
1846         __int128.
1847         (__detail::__is_signed_integer_like): Accept __int128.
1848         * include/bits/max_size_type.h: New header.
1849         * include/bits/range_access.h: Include <bits/max_size_type.h>.
1850         (__detail::__to_unsigned_like): Two new overloads.
1851         * testsuite/std/ranges/iota/difference_type.cc: New test.
1852         * testsuite/std/ranges/iota/max_size_type.cc: New test.
1854 2020-08-19  Jonathan Wakely  <jwakely@redhat.com>
1856         * include/bits/c++config (_GLIBCXX_DEPRECATED): Define for all
1857         standard modes.
1858         (_GLIBCXX_DEPRECATED_SUGGEST): New macro for "use 'foo' instead"
1859         message in deprecated warnings.
1860         (_GLIBCXX11_DEPRECATED, _GLIBCXX11_DEPRECATED_SUGGEST): New
1861         macros for marking features deprecated in C++11.
1862         (_GLIBCXX17_DEPRECATED_SUGGEST, _GLIBCXX20_DEPRECATED_SUGGEST):
1863         New macros.
1864         * include/backward/auto_ptr.h (auto_ptr_ref, auto_ptr<void>):
1865         Use _GLIBCXX11_DEPRECATED instead of _GLIBCXX_DEPRECATED.
1866         (auto_ptr): Use _GLIBCXX11_DEPRECATED_SUGGEST.
1867         * include/backward/binders.h (binder1st, binder2nd): Likewise.
1868         * include/bits/ios_base.h (io_state, open_mode, seek_dir)
1869         (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST.
1870         * include/std/streambuf (stossc): Replace C++11 attribute
1871         with _GLIBCXX_DEPRECATED_SUGGEST.
1872         * include/std/type_traits (__is_nullptr_t): Use
1873         _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED.
1874         * testsuite/27_io/types/1.cc: Check for deprecated warnings.
1875         Also check for io_state, open_mode and seek_dir typedefs.
1877 2020-08-19  Antony Polukhin  <antoshkka@gmail.com>
1879         PR libstdc++/71579
1880         * include/std/type_traits (invoke_result, is_nothrow_invocable_r)
1881         Add static_asserts to make sure that the argument of the type
1882         trait is not misused with incomplete types.
1883         (is_swappable_with, is_nothrow_swappable_with): Add static_asserts
1884         to make sure that the first and second arguments of the type trait
1885         are not misused with incomplete types.
1886         * testsuite/20_util/invoke_result/incomplete_neg.cc: New test.
1887         * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: New test.
1888         * testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc: New test.
1889         * testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc: New
1890         test.
1891         * testsuite/20_util/is_swappable_with/incomplete_neg.cc: New test.
1893 2020-08-18  David Edelsohn  <dje.gcc@gmail.com>
1894             Clement Chigot  <clement.chigot@atos.net>
1896         * config/os/aix/t-aix: Add complementary mode object files to
1897         libsupc++.a
1899 2020-08-18  Jonathan Wakely  <jwakely@redhat.com>
1901         * testsuite/17_intro/headers/c++1998/all_attributes.cc: Check
1902         "cold" isn't used in the library. Also check <cxxabi.h>.
1903         * testsuite/17_intro/headers/c++2011/all_attributes.cc:
1904         Likewise.
1905         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
1906         Likewise.
1907         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
1908         Likewise.
1909         * testsuite/17_intro/headers/c++2020/all_attributes.cc:
1910         Likewise.
1912 2020-08-18  Jonathan Wakely  <jwakely@redhat.com>
1914         PR libstdc++/69724
1915         * include/std/future (__future_base::_S_make_deferred_state)
1916         (__future_base::_S_make_async_state): Remove.
1917         (__future_base::_Deferred_state): Change constructor to accept a
1918         parameter pack of arguments and forward them to the call
1919         wrapper.
1920         (__future_base::_Async_state_impl): Likewise. Replace lambda
1921         expression with a named member function.
1922         (async): Construct state object directly from the arguments,
1923         instead of using thread::__make_invoker, _S_make_deferred_state
1924         and _S_make_async_state. Move shared state into the returned
1925         future.
1926         * include/std/thread (thread::_Call_wrapper): New alias
1927         template for use by constructor and std::async.
1928         (thread::thread(Callable&&, Args&&...)): Create state object
1929         directly instead of using _S_make_state.
1930         (thread::__make_invoker, thread::__decayed_tuple)
1931         (thread::_S_make_state): Remove.
1932         * testsuite/30_threads/async/69724.cc: New test.
1934 2020-08-17  Jonathan Wakely  <jwakely@redhat.com>
1936         PR libstdc++/55713
1937         PR libstdc++/71096
1938         PR libstdc++/93147
1939         * include/std/tuple [__has_cpp_attribute(no_unique_address)]
1940         (_Head_base<Idx, Head, true>): New definition of the partial
1941         specialization, using [[no_unique_address]] instead of
1942         inheritance.
1943         * testsuite/libstdc++-prettyprinters/48362.cc: Adjust expected
1944         output.
1945         * testsuite/20_util/tuple/comparison_operators/93147.cc: New test.
1946         * testsuite/20_util/tuple/creation_functions/55713.cc: New test.
1947         * testsuite/20_util/tuple/element_access/71096.cc: New test.
1949 2020-08-14  Lewis Hyatt  <lhyatt@gmail.com>
1951         * testsuite/lib/libstdc++.exp: Use the new option
1952         -fdiagnostics-plain-output.
1954 2020-08-13  Jonathan Wakely  <jwakely@redhat.com>
1956         * acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Warn if the c_std
1957         option is used and fail unless --enable-cheaders-obsolete is
1958         also used.
1959         * configure: Regenerate.
1961 2020-08-12  Jonathan Wakely  <jwakely@redhat.com>
1963         PR libstdc++/85828
1964         * include/bits/basic_string.h (operator=(basic_string&&)): Check
1965         for self-move before copying with char_traits::copy.
1966         * include/bits/hashtable.h (operator=(_Hashtable&&)): Check for
1967         self-move.
1968         * include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)):
1969         Check for equal allocators.
1970         * include/bits/stl_list.h (_M_move_assign(list&&, true_type)):
1971         Call clear() instead of _M_clear().
1972         * include/debug/formatter.h (__msg_self_move_assign): Change
1973         comment.
1974         * include/debug/macros.h (__glibcxx_check_self_move_assign):
1975         (_GLIBCXX_DEBUG_VERIFY): Remove.
1976         * include/debug/safe_container.h (operator=(_Safe_container&&)):
1977         Remove assertion check for safe move and make it well-defined.
1978         * include/debug/safe_iterator.h (operator=(_Safe_iterator&&)):
1979         Remove assertion check for self-move.
1980         * include/debug/safe_local_iterator.h
1981         (operator=(_Safe_local_iterator&&)): Likewise.
1982         * testsuite/21_strings/basic_string/cons/char/self_move.cc: New test.
1983         * testsuite/23_containers/deque/cons/self_move.cc: New test.
1984         * testsuite/23_containers/forward_list/cons/self_move.cc: New test.
1985         * testsuite/23_containers/list/cons/self_move.cc: New test.
1986         * testsuite/23_containers/set/cons/self_move.cc: New test.
1987         * testsuite/23_containers/unordered_set/cons/self_move.cc: New test.
1988         * testsuite/23_containers/vector/cons/self_move.cc: New test.
1990 2020-08-11  François Dumont  <fdumont@gcc.gnu.org>
1992         PR libstdc++/91620
1993         * include/bits/forward_list.tcc (forward_list<>::remove): Collect nodes
1994         to destroy in an intermediate forward_list.
1995         (forward_list<>::remove_if, forward_list<>::unique): Likewise.
1996         * include/bits/list.tcc (list<>::remove, list<>::unique): Likewise.
1997         (list<>::remove_if): Likewise.
1998         * include/debug/forward_list (forward_list<>::_M_erase_after): Remove.
1999         (forward_list<>::erase_after): Adapt.
2000         (forward_list<>::remove, forward_list<>::remove_if): Collect nodes to
2001         destroy in an intermediate forward_list.
2002         (forward_list<>::unique): Likewise.
2003         * include/debug/list (list<>::remove, list<>::unique): Likewise.
2004         (list<>::remove_if): Likewise.
2005         * testsuite/23_containers/forward_list/operations/91620.cc: New test.
2006         * testsuite/23_containers/list/operations/91620.cc: New test.
2008 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2010         * testsuite/30_threads/thread/cons/84535.cc: Use a custom
2011         namespace.
2012         * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
2014 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2016         PR libstdc++/89760
2017         * include/experimental/executor [!_GLIBCXX_HAS_GTHREADS]:
2018         (execution_context::mutex_type): Define dummy mutex type.
2019         (system_context): Use execution_context::mutex_type.
2020         (system_context) [!_GLIBCXX_HAS_GTHREADS]: Define dummy
2021         thread and condition variable types.
2022         [!_GLIBCXX_HAS_GTHREADS] (system_context::_M_run()): Do not
2023         define.
2024         (system_context::_M_post) [!_GLIBCXX_HAS_GTHREADS]: Throw
2025         an exception when threads aren't available.
2026         (strand::running_in_this_thread()): Defer to _M_state.
2027         (strand::_State::running_in_this_thread()): New function.
2028         (use_future_t): Do not depend on _GLIBCXX_USE_C99_STDINT_TR1.
2029         * include/experimental/io_context (io_context): Use the
2030         execution_context::mutex_type alias. Replace stack of thread
2031         IDs with counter.
2032         * testsuite/experimental/net/execution_context/use_service.cc:
2033         Enable test for non-pthread targets.
2035 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2037         * include/experimental/executor (system_context::a__tag): Make
2038         default constructor explicit.
2040 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2042         * include/experimental/executor (system_context::_M_run()):
2043         Fix predicate.
2044         * testsuite/experimental/net/system_context/1.cc: New test.
2046 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2048         * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using
2049         #ifdef instead of #if.
2050         (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before
2051         using __gthread_yield.
2053 2020-08-11  Jonathan Wakely  <jwakely@redhat.com>
2055         * include/std/thread [!_GLIBCXX_HAS_GTHREADS] (this_thread::yield)
2056         (this_thread::sleep_until): Define.
2057         [!_GLIBCXX_HAS_GTHREADS] (this_thread::sleep_for): Define. Replace
2058         use of __gthread_time_t typedef with timespec.
2059         * src/c++11/thread.cc [!_GLIBCXX_HAS_GTHREADS] (__sleep_for):
2060         Likewise.
2061         * testsuite/30_threads/this_thread/2.cc: Moved to...
2062         * testsuite/30_threads/this_thread/yield.cc: ...here.
2063         * testsuite/30_threads/this_thread/3.cc: Moved to...
2064         * testsuite/30_threads/this_thread/sleep_for-mt.cc: ...here.
2065         * testsuite/30_threads/this_thread/4.cc: Moved to...
2066         * testsuite/30_threads/this_thread/sleep_until-mt.cc: ...here.
2067         * testsuite/30_threads/this_thread/58038.cc: Add
2068         dg-require-sleep.
2069         * testsuite/30_threads/this_thread/60421.cc: Likewise.
2070         * testsuite/30_threads/this_thread/sleep_for.cc: New test.
2071         * testsuite/30_threads/this_thread/sleep_until.cc: New test.
2073 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2075         PR libstdc++/94681
2076         * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead
2077         of calling ::lstat directly.
2078         * src/filesystem/ops.cc (read_symlink): Likewise.
2080 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2082         * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
2083         Use gdb.Type.strip_typedefs().
2084         * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in
2085         the emulated old type.
2087 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2089         PR libstdc++/94681
2090         * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on
2091         $enable_libstdcxx_filesystem_ts.
2092         * configure: Regenerate.
2094 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2096         PR libstdc++/93904
2097         * include/bits/stl_iterator.h (inserter): Do not deduce
2098         iterator type (LWG 561).
2099         * testsuite/24_iterators/insert_iterator/dr561.cc: New test.
2101 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2103         * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI=0]
2104         (basic_string::reserve()): Do nothing if exceptions are not
2105         enabled.
2107 2020-08-10  Jonathan Wakely  <jwakely@redhat.com>
2109         PR libstdc++/95749
2110         * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
2111         (stat_type): Change to __stat64.
2112         (stat): Use _wstat64.
2114 2020-08-07  Jonathan Wakely  <jwakely@redhat.com>
2116         PR libstdc++/96303
2117         * include/debug/bitset (bitset::operator==): Call _M_base() on
2118         right operand.
2119         (bitset::operator!=): Likewise, but don't define it at all when
2120         default comparisons are supported by the compiler.
2121         * testsuite/23_containers/bitset/operations/96303.cc: New test.
2123 2020-08-07  Jonathan Wakely  <jwakely@redhat.com>
2125         * testsuite/18_support/comparisons/algorithms/partial_order.cc:
2126         Replace VERIFY with static_assert where the compiler now
2127         allows it.
2128         * testsuite/18_support/comparisons/algorithms/weak_order.cc:
2129         Likewise.
2131 2020-08-07  Jonathan Wakely  <jwakely@redhat.com>
2133         * config/abi/pre/gnu.ver: Fix wildcards for wstring symbols.
2135 2020-08-06  Andrew Luo  <andrewluotechnologies@outlook.com>
2136             Jonathan Wakely  <jwakely@redhat.com>
2138         * config/abi/pre/gnu.ver (GLIBCXX_3.4): Use less greedy
2139         patterns for basic_string members.
2140         (GLIBCXX_3.4.29): Export new basic_string::reserve symbols.
2141         * doc/xml/manual/status_cxx2020.xml: Update P0966 status.
2142         * include/bits/basic_string.h (shrink_to_fit()): Call reserve().
2143         (reserve(size_type)): Remove default argument.
2144         (reserve()): Declare new overload.
2145         [!_GLIBCXX_USE_CXX11_ABI] (shrink_to_fit, reserve): Likewise.
2146         * include/bits/basic_string.tcc (reserve(size_type)): Remove
2147         support for shrinking capacity.
2148         (reserve()): Perform shrink-to-fit operation.
2149         [!_GLIBCXX_USE_CXX11_ABI] (reserve): Likewise.
2150         * testsuite/21_strings/basic_string/capacity/1.cc: Adjust to
2151         reflect new behavior.
2152         * testsuite/21_strings/basic_string/capacity/char/1.cc:
2153         Likewise.
2154         * testsuite/21_strings/basic_string/capacity/char/18654.cc:
2155         Likewise.
2156         * testsuite/21_strings/basic_string/capacity/char/2.cc:
2157         Likewise.
2158         * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc:
2159         Likewise.
2160         * testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc:
2161         Likewise.
2162         * testsuite/21_strings/basic_string/capacity/wchar_t/2.cc:
2163         Likewise.
2165 2020-08-06  Jonathan Wakely  <jwakely@redhat.com>
2167         * include/bits/basic_string.tcc
2168         (operator>>(basic_istream&, basic_string&)): Do not set eofbit
2169         if extraction stopped after in.width() characters.
2170         * src/c++98/istream-string.cc (operator>>(istream&, string&)):
2171         Likewise.
2172         * include/bits/istream.tcc (__istream_extract): Do not set
2173         eofbit if extraction stopped after n-1 characters.
2174         * src/c++98/istream.cc (__istream_extract): Likewise.
2175         * testsuite/21_strings/basic_string/inserters_extractors/char/13.cc: New test.
2176         * testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc: New test.
2177         * testsuite/27_io/basic_istream/extractors_character/char/5.cc: New test.
2178         * testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc: New test.
2180 2020-08-06  Jonathan Wakely  <jwakely@redhat.com>
2182         PR libstdc++/96484
2183         * src/c++17/fs_ops.cc (fs::read_symlink): Return an error
2184         immediately for non-symlinks.
2185         * src/filesystem/ops.cc (fs::read_symlink): Likewise.
2187 2020-08-06  Jonathan Wakely  <jwakely@redhat.com>
2189         * include/std/istream (operator>>(istream&, char*)): Add
2190         attributes to get warnings for pointers that are null or known
2191         to point to the end of a buffer. Request upper bound from
2192         __builtin_object_size check and handle zero-sized buffer case.
2193         (operator>>(istream&, signed char))
2194         (operator>>(istream&, unsigned char*)): Add attributes.
2195         * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
2196         Check extracting into the middle of a buffer.
2197         * testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc: New test.
2199 2020-08-05  Jonathan Wakely  <jwakely@redhat.com>
2201         * include/std/atomic (atomic<T>::store): Reformat.
2203 2020-08-05  Jonathan Wakely  <jwakely@redhat.com>
2205         * doc/xml/manual/status_cxx2017.xml: Replace oneAPI DPC++ link
2206         with LLVM repo for PSTL.
2207         * doc/html/manual/status.html: Regenerate.
2209 2020-08-05  Jonathan Wakely  <jwakely@redhat.com>
2211         * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Export new symbols.
2212         * include/bits/istream.tcc (__istream_extract): New function
2213         template implementing both of operator>>(istream&, char*) and
2214         operator>>(istream&, char(&)[N]). Add explicit instantiation
2215         declaration for it. Remove explicit instantiation declarations
2216         for old function templates.
2217         * include/std/istream (__istream_extract): Declare.
2218         (operator>>(basic_istream<C,T>&, C*)): Define inline and simply
2219         call __istream_extract.
2220         (operator>>(basic_istream<char,T>&, signed char*)): Likewise.
2221         (operator>>(basic_istream<char,T>&, unsigned char*)): Likewise.
2222         (operator>>(basic_istream<C,T>&, C(7)[N])): Define for LWG 2499.
2223         (operator>>(basic_istream<char,T>&, signed char(&)[N])):
2224         Likewise.
2225         (operator>>(basic_istream<char,T>&, unsigned char(&)[N])):
2226         Likewise.
2227         * include/std/streambuf (basic_streambuf): Declare char overload
2228         of __istream_extract as a friend.
2229         * src/c++11/istream-inst.cc: Add explicit instantiation
2230         definition for wchar_t overload of __istream_extract. Remove
2231         explicit instantiation definitions of old operator>> overloads
2232         for versioned-namespace build.
2233         * src/c++98/istream.cc (operator>>(istream&, char*)): Replace
2234         with __istream_extract(istream&, char*, streamsize).
2235         * testsuite/27_io/basic_istream/extractors_character/char/3.cc:
2236         Do not use variable-length array.
2237         * testsuite/27_io/basic_istream/extractors_character/char/4.cc:
2238         Do not run test for C++20.
2239         * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc:
2240         Do not test writing to pointers for C++20.
2241         * testsuite/27_io/basic_istream/extractors_character/char/9826.cc:
2242         Use array instead of pointer.
2243         * testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc:
2244         Do not use variable-length array.
2245         * testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc:
2246         Do not run test for C++20.
2247         * testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc:
2248         Do not test writing to pointers for C++20.
2249         * testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc:
2250         New test.
2251         * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc:
2252         New test.
2253         * testsuite/27_io/basic_istream/extractors_character/char/overflow.cc:
2254         New test.
2255         * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc:
2256         New test.
2257         * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc:
2258         New test.
2260 2020-08-01  Gerald Pfeifer  <gerald@pfeifer.com>
2262         * doc/xml/manual/using_exceptions.xml: Move www.stroustrup.com to
2263         https.
2264         * doc/html/manual/using_exceptions.html: Regenerate.
2266 2020-07-31  Gerald Pfeifer  <gerald@pfeifer.com>
2268         * doc/xml/manual/status_cxx2017.xml: ParallelSTL is now part
2269         of oneAPI DPC++ Library on Github.
2270         * doc/html/manual/status.html: Regenerate.
2272 2020-07-31  François Dumont  <fdumont@gcc.gnu.org>
2274         * include/bits/stl_bvector.h
2275         [_GLIBCXX_INLINE_VERSION](_Bvector_impl_data::_M_start): Define as
2276         _Bit_type*.
2277         (_Bvector_impl_data(const _Bvector_impl_data&)): Default.
2278         (_Bvector_impl_data(_Bvector_impl_data&&)): Delegate to latter.
2279         (_Bvector_impl_data::operator=(const _Bvector_impl_data&)): Default.
2280         (_Bvector_impl_data::_M_move_data(_Bvector_impl_data&&)): Use latter.
2281         (_Bvector_impl_data::_M_reset()): Likewise.
2282         (_Bvector_impl_data::_M_swap_data): New.
2283         (_Bvector_impl::_Bvector_impl(_Bvector_impl&&)): Implement explicitely.
2284         (_Bvector_impl::_Bvector_impl(_Bit_alloc_type&&, _Bvector_impl&&)): New.
2285         (_Bvector_base::_Bvector_base(_Bvector_base&&, const allocator_type&)):
2286         New, use latter.
2287         (vector::vector(vector&&, const allocator_type&, true_type)): New, use
2288         latter.
2289         (vector::vector(vector&&, const allocator_type&, false_type)): New.
2290         (vector::vector(vector&&, const allocator_type&)): Use latters.
2291         (vector::vector(const vector&, const allocator_type&)): Adapt.
2292         [__cplusplus >= 201103](vector::vector(_InputIt, _InputIt,
2293         const allocator_type&)): Use _M_initialize_range.
2294         (vector::operator[](size_type)): Use iterator operator[].
2295         (vector::operator[](size_type) const): Use const_iterator operator[].
2296         (vector::swap(vector&)): Add assertions on allocators. Use _M_swap_data.
2297         [__cplusplus >= 201103](vector::insert(const_iterator, _InputIt,
2298         _InputIt)): Use _M_insert_range.
2299         (vector::_M_initialize(size_type)): Adapt.
2300         [__cplusplus >= 201103](vector::_M_initialize_dispatch): Remove.
2301         [__cplusplus >= 201103](vector::_M_insert_dispatch): Remove.
2302         * python/libstdcxx/v6/printers.py (StdVectorPrinter._iterator): Stop
2303         using start _M_offset.
2304         (StdVectorPrinter.to_string): Likewise.
2305         * testsuite/23_containers/vector/bool/allocator/swap.cc: Adapt.
2306         * testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc:
2307         Add check.
2309 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2311         * testsuite/27_io/basic_istream/ignore/char/94749.cc: Use 0
2312         instead of nullptr.
2313         * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
2314         Likewise.
2316 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2318         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
2319         Move struct to namespace scope.
2321 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2323         * testsuite/26_numerics/numbers/float128.cc: Check
2324         __STRICT_ANSI__ before using __float128.
2325         * testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc:
2326         Likewise.
2328 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2330         * testsuite/18_support/set_terminate.cc: Require C++11 or
2331         higher.
2332         * testsuite/28_regex/simple_c++11.cc: Likewise.
2333         * testsuite/tr1/headers/c++200x/complex.cc: Likewise.
2334         * testsuite/24_iterators/headers/iterator/synopsis.cc:
2335         Require C++14 or lower.
2337 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2339         * testsuite/23_containers/span/back_assert_neg.cc: Split c++2a
2340         effective-target from xfail selector.
2341         * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
2342         * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
2343         * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
2344         * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
2345         * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
2346         * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
2347         * testsuite/23_containers/span/subspan_2_assert_neg.cc:
2348         Likewise.
2349         * testsuite/23_containers/span/subspan_3_assert_neg.cc:
2350         Likewise.
2351         * testsuite/23_containers/span/subspan_4_assert_neg.cc:
2352         Likewise.
2353         * testsuite/23_containers/span/subspan_5_assert_neg.cc:
2354         Likewise.
2355         * testsuite/23_containers/span/subspan_6_assert_neg.cc:
2356         Likewise.
2357         * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
2359 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2361         * testsuite/20_util/reference_wrapper/83427.cc: Adjust
2362         effective-target to specific language mode only.
2363         * testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
2364         Likewise.
2365         * testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
2366         Likewise.
2367         * testsuite/24_iterators/headers/iterator/synopsis_c++11.cc:
2368         Likewise.
2369         * testsuite/24_iterators/headers/iterator/synopsis_c++14.cc:
2370         Likewise.
2371         * testsuite/26_numerics/valarray/69116.cc:
2372         Likewise.
2373         * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
2374         Remove whitespace at end of file.
2375         * testsuite/30_threads/headers/future/std_c++0x_neg.cc:
2376         Likewise.
2378 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2380         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
2381         c++17 effective-target.
2382         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc:
2383         Likewise.
2384         * testsuite/17_intro/headers/c++2017/all_no_rtti.cc: Likewise.
2385         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
2386         Likewise.
2387         * testsuite/17_intro/headers/c++2017/operator_names.cc:
2388         Likewise.
2389         * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise.
2390         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
2391         Likewise.
2392         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
2393         Likewise.
2394         * testsuite/19_diagnostics/error_code/is_error_code_v.cc:
2395         Likewise.
2396         * testsuite/20_util/any/assign/1.cc: Likewise.
2397         * testsuite/20_util/any/assign/2.cc: Likewise.
2398         * testsuite/20_util/any/assign/emplace.cc: Likewise.
2399         * testsuite/20_util/any/assign/exception.cc: Likewise.
2400         * testsuite/20_util/any/assign/self.cc: Likewise.
2401         * testsuite/20_util/any/cons/1.cc: Likewise.
2402         * testsuite/20_util/any/cons/2.cc: Likewise.
2403         * testsuite/20_util/any/cons/aligned.cc: Likewise.
2404         * testsuite/20_util/any/cons/explicit.cc: Likewise.
2405         * testsuite/20_util/any/cons/in_place.cc: Likewise.
2406         * testsuite/20_util/any/cons/nontrivial.cc: Likewise.
2407         * testsuite/20_util/any/make_any.cc: Likewise.
2408         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
2409         * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
2410         * testsuite/20_util/any/misc/swap.cc: Likewise.
2411         * testsuite/20_util/any/modifiers/1.cc: Likewise.
2412         * testsuite/20_util/any/observers/type.cc: Likewise.
2413         * testsuite/20_util/any/requirements.cc: Likewise.
2414         * testsuite/20_util/any/typedefs.cc: Likewise.
2415         * testsuite/20_util/as_const/1.cc: Likewise.
2416         * testsuite/20_util/as_const/rvalue_neg.cc: Likewise.
2417         * testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
2418         * testsuite/20_util/bool_constant/requirements.cc: Likewise.
2419         * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
2420         Likewise.
2421         * testsuite/20_util/duration_cast/rounding.cc: Likewise.
2422         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
2423         Likewise.
2424         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
2425         * testsuite/20_util/function_objects/not_fn/1.cc: Likewise.
2426         * testsuite/20_util/function_objects/searchers.cc: Likewise.
2427         * testsuite/20_util/in_place/requirements.cc: Likewise.
2428         * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc:
2429         Likewise.
2430         * testsuite/20_util/is_invocable/requirements/typedefs.cc:
2431         Likewise.
2432         * testsuite/20_util/is_invocable/value.cc: Likewise.
2433         * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc:
2434         Likewise.
2435         * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc:
2436         Likewise.
2437         * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
2438         Likewise.
2439         * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
2440         Likewise.
2441         * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
2442         * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
2443         Likewise.
2444         * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
2445         Likewise.
2446         * testsuite/20_util/is_nothrow_swappable_with/value.cc:
2447         Likewise.
2448         * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
2449         Likewise.
2450         * testsuite/20_util/is_swappable/requirements/typedefs.cc:
2451         Likewise.
2452         * testsuite/20_util/is_swappable/value.cc: Likewise.
2453         * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
2454         Likewise.
2455         * testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
2456         Likewise.
2457         * testsuite/20_util/is_swappable_with/value.cc: Likewise.
2458         * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc:
2459         Likewise.
2460         * testsuite/20_util/logical_traits/requirements/typedefs.cc:
2461         Likewise.
2462         * testsuite/20_util/logical_traits/value.cc: Likewise.
2463         * testsuite/20_util/optional/constexpr/make_optional.cc: Likewise.
2464         * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
2465         * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
2466         * testsuite/20_util/optional/hash.cc: Likewise.
2467         * testsuite/20_util/pair/swap_cxx17.cc: Likewise.
2468         * testsuite/20_util/ratio/requirements/ratio_equal_v.cc: Likewise.
2469         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
2470         Likewise.
2471         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
2472         Likewise.
2473         * testsuite/20_util/tuple/apply/1.cc: Likewise.
2474         * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
2475         * testsuite/20_util/tuple/swap_cxx17.cc: Likewise.
2476         * testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
2477         * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
2478         Likewise.
2479         * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
2480         Likewise.
2481         * testsuite/20_util/variant/any.cc: Likewise.
2482         * testsuite/20_util/variant/compile.cc: Likewise.
2483         * testsuite/20_util/variant/hash.cc: Likewise.
2484         * testsuite/20_util/variant/index_type.cc: Likewise.
2485         * testsuite/20_util/variant/run.cc: Likewise.
2486         * testsuite/20_util/void_t/1.cc: Likewise.
2487         * testsuite/21_strings/basic_string/79162.cc: Likewise.
2488         * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
2489         * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
2490         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
2491         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
2492         * testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
2493         Likewise.
2494         * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
2495         Likewise.
2496         * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
2497         Likewise.
2498         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
2499         Likewise.
2500         * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
2501         Likewise.
2502         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
2503         Likewise.
2504         * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
2505         Likewise.
2506         * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
2507         Likewise.
2508         * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
2509         Likewise.
2510         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
2511         Likewise.
2512         * testsuite/21_strings/basic_string/operations/data/char/2.cc:
2513         Likewise.
2514         * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
2515         Likewise.
2516         * testsuite/21_strings/basic_string/operations/find/char/5.cc:
2517         Likewise.
2518         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
2519         Likewise.
2520         * testsuite/21_strings/basic_string/operators/char/5.cc: Likewise.
2521         * testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
2522         Likewise.
2523         * testsuite/21_strings/basic_string_view/capacity/1.cc: Likewise.
2524         * testsuite/21_strings/basic_string_view/cons/char/1.cc: Likewise.
2525         * testsuite/21_strings/basic_string_view/cons/char/2.cc: Likewise.
2526         * testsuite/21_strings/basic_string_view/cons/char/3.cc: Likewise.
2527         * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
2528         Likewise.
2529         * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
2530         Likewise.
2531         * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
2532         Likewise.
2533         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
2534         Likewise.
2535         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
2536         Likewise.
2537         * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
2538         Likewise.
2539         * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
2540         Likewise.
2541         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
2542         Likewise.
2543         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
2544         Likewise.
2545         * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
2546         Likewise.
2547         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
2548         Likewise.
2549         * testsuite/21_strings/basic_string_view/include.cc: Likewise.
2550         * testsuite/21_strings/basic_string_view/inserters/char/1.cc:
2551         Likewise.
2552         * testsuite/21_strings/basic_string_view/inserters/char/2.cc:
2553         Likewise.
2554         * testsuite/21_strings/basic_string_view/inserters/char/3.cc:
2555         Likewise.
2556         * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
2557         Likewise.
2558         * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
2559         Likewise.
2560         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
2561         Likewise.
2562         * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
2563         Likewise.
2564         * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
2565         Likewise.
2566         * testsuite/21_strings/basic_string_view/literals/types.cc:
2567         Likewise.
2568         * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
2569         Likewise.
2570         * testsuite/21_strings/basic_string_view/literals/values.cc:
2571         Likewise.
2572         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
2573         Likewise.
2574         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
2575         Likewise.
2576         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
2577         Likewise.
2578         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
2579         Likewise.
2580         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
2581         Likewise.
2582         * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
2583         Likewise.
2584         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
2585         Likewise.
2586         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
2587         Likewise.
2588         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
2589         Likewise.
2590         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
2591         Likewise.
2592         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
2593         Likewise.
2594         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
2595         Likewise.
2596         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
2597         Likewise.
2598         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
2599         Likewise.
2600         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
2601         Likewise.
2602         * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
2603         Likewise.
2604         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
2605         Likewise.
2606         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
2607         Likewise.
2608         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
2609         Likewise.
2610         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
2611         Likewise.
2612         * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
2613         Likewise.
2614         * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
2615         Likewise.
2616         * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
2617         Likewise.
2618         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
2619         Likewise.
2620         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
2621         Likewise.
2622         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
2623         Likewise.
2624         * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
2625         Likewise.
2626         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
2627         Likewise.
2628         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
2629         Likewise.
2630         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
2631         Likewise.
2632         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
2633         Likewise.
2634         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
2635         Likewise.
2636         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
2637         Likewise.
2638         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
2639         Likewise.
2640         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
2641         Likewise.
2642         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
2643         Likewise.
2644         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
2645         Likewise.
2646         * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
2647         Likewise.
2648         * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
2649         * testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
2650         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
2651         Likewise.
2652         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
2653         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
2654         Likewise.
2655         * testsuite/23_containers/map/modifiers/merge.cc: Likewise.
2656         * testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
2657         * testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
2658         * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise.
2659         * testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
2660         * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise.
2661         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
2662         * testsuite/23_containers/set/modifiers/merge.cc: Likewise.
2663         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
2664         Likewise.
2665         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
2666         Likewise.
2667         * testsuite/23_containers/unordered_map/modifiers/merge.cc:
2668         Likewise.
2669         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
2670         Likewise.
2671         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
2672         Likewise.
2673         * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
2674         Likewise.
2675         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
2676         Likewise.
2677         * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
2678         Likewise.
2679         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
2680         Likewise.
2681         * testsuite/23_containers/unordered_set/modifiers/merge.cc:
2682         Likewise.
2683         * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
2684         Likewise.
2685         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
2686         Likewise.
2687         * testsuite/25_algorithms/clamp/1.cc: Likewise.
2688         * testsuite/25_algorithms/clamp/2.cc: Likewise.
2689         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
2690         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
2691         Likewise.
2692         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
2693         Likewise.
2694         * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
2695         Likewise.
2696         * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
2697         Likewise.
2698         * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc:
2699         Likewise.
2700         * testsuite/29_atomics/atomic/is_always_lock_free.cc: Likewise.
2701         * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
2702         Likewise.
2703         * testsuite/30_threads/shared_lock/70766.cc: Likewise.
2704         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
2705         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc:
2706         Likewise.
2707         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc:
2708         Likewise.
2709         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
2710         Likewise.
2711         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
2712         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
2713         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
2715 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2717         PR libstdc++/96382
2718         * include/bits/stl_iterator.h (reverse_iterator): Friend
2719         declaration should not depend on __cplusplus.
2721 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2723         * testsuite/experimental/filesystem/filesystem_error/cons.cc:
2724         Remove -std=gnu++17 option.
2726 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2728         * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to
2729         definition of aggregates in C++20.
2730         * testsuite/20_util/optional/requirements.cc: Adjust for
2731         defaulted comparisons in C++20.
2733 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2735         * testsuite/20_util/tuple/78939.cc: Suppress warnings about
2736         deprecation of volatile-qualified structured bindings in C++20.
2737         * testsuite/20_util/variable_templates_for_traits.cc: Likewise
2738         for deprecation of is_pod in C++20
2740 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2742         * testsuite/20_util/time_point_cast/rounding.cc: Remove
2743         duplicate dg-do directive and add c++17 effective target.
2745 2020-07-31  Jonathan Wakely  <jwakely@redhat.com>
2747         * src/c++17/floating_from_chars.cc (from_chars_impl): Use
2748         LC_ALL_MASK not LC_ALL.
2750 2020-07-31  Richard Biener  <rguenther@suse.de>
2752         PR debug/96383
2753         * testsuite/20_util/assume_aligned/3.cc: Use -g0.
2755 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2757         * include/bits/basic_string.h (size_type, difference_type):
2758         Use allocator_traits to obtain the allocator's size_type and
2759         difference_type.
2761 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2763         PR libstdc++/96279
2764         * src/c++17/floating_from_chars.cc (from_chars_impl): Use
2765         isinf unqualified.
2766         [!_GLIBCXX_USE_C99_STDLIB]: Use strtod for float and long
2767         double.
2769 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2771         * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2772         Use allocator with the correct value type.
2773         * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2774         Likewise.
2776 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2778         * testsuite/20_util/from_chars/4.cc: Pass non-const iterator
2779         to string::insert.
2781 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2783         * include/bits/iterator_concepts.h (__detail::__cv_bool): New
2784         helper concept.
2785         (__detail::__integral_nonbool): Likewise.
2786         (__detail::__is_integer_like): Use __integral_nonbool.
2787         * testsuite/std/ranges/access/lwg3467.cc: New test.
2789 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2791         * testsuite/20_util/from_chars/4.cc: Use dg-add-options ieee.
2792         * testsuite/29_atomics/atomic_float/1.cc: Likewise.
2794 2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
2796         * testsuite/23_containers/vector/bool/72847.cc: Use the
2797         exceptions_enabled effective-target keyword instead of
2798         checking for an explicit -fno-exceptions option.
2799         * testsuite/util/testsuite_abi.cc (examine_symbol): Remove
2800         redundant try-catch.
2801         * testsuite/util/testsuite_allocator.h [!__cpp_exceptions]:
2802         Do not define check_allocate_max_size and memory_resource.
2803         * testsuite/util/testsuite_containers.h: Replace comment with
2804         #error if wrong standard dialect used.
2805         * testsuite/util/testsuite_shared.cc: Likewise.
2807 2020-07-29  François Dumont  <fdumont@gcc.gnu.org>
2809         * include/bits/hashtable_policy.h (_Node_iterator_base()): New.
2810         (operator==(const _Node_iterator_base&, const _Node_iterator_base&)):
2811         Make hidden friend.
2812         (operator!=(const _Node_iterator_base&, const _Node_iterator_base&)):
2813         Make hidden friend.
2814         (_Local_iterator_base<>): Inherits _Node_iterator_base.
2815         (_Local_iterator_base<>::_M_cur): Remove.
2816         (_Local_iterator_base<>::_M_curr()): Remove.
2817         (operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
2818         Remove.
2819         (operator!=(const _Local_iterator_base&, const _Local_iterator_base&)):
2820         Remove.
2821         * include/debug/unordered_map (unordered_map<>::_M_invalidate): Adapt.
2822         (unordered_multimap<>::_M_invalidate): Adapt.
2823         * include/debug/unordered_set (unordered_set<>::_M_invalidate): Adapt.
2824         (unordered_multiset<>::_M_invalidate): Adapt.
2826 2020-07-29  David Edelsohn  <dje.gcc@gmail.com>
2827             Jonathan Wakely  <jwakely@redhat.com>
2828             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2830         * testsuite/lib/dg-options.exp (add_options_for_libatomic): Add
2831         target powerpc-ibm-aix* and powerpc*-*-darwin*.
2832         * testsuite/29_atomics/atomic_float/value_init.cc: Add options
2833         for libatomic.
2835 2020-07-29  François Dumont  <fdumont@gcc.gnu.org>
2837         * include/bits/hashtable.h
2838         (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
2839         Add noexcept qualification.
2840         (_Hashtable(_Hashtable&&)): Fix noexcept qualification.
2841         (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
2842         qualification.
2843         * include/bits/unordered_map.h
2844         (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
2845         qualification.
2846         (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2847         Likewise.
2848         * include/bits/unordered_set.h
2849         (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2850         (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2851         Likewise.
2852         * include/debug/unordered_map
2853         (unordered_map(unordered_map&&, const allocator_type&)): Likewise.
2854         (unordered_multimap(unordered_multimap&&, const allocator_type&)):
2855         Likewise.
2856         * include/debug/unordered_set
2857         (unordered_set(unordered_set&&, const allocator_type&)): Likewise.
2858         (unordered_multiset(unordered_multiset&&, const allocator_type&)):
2859         Likewise.
2860         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
2861         New test.
2862         * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
2863         New test.
2864         * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
2865         New test.
2866         * testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
2867         New test.
2868         * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
2869         New test.
2870         * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
2871         New test.
2872         * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
2873         New test.
2874         * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
2875         New test.
2876         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
2877         New test.
2878         * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
2879         New test.
2880         * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
2881         New test.
2883 2020-07-28  François Dumont  <fdumont@gcc.gnu.org>
2885         * include/bits/hashtable.h
2886         (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2887         const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2888         const allocator_type&, true_type)): New.
2889         (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2890         const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2891         const allocator_type&, false_type)): New.
2892         (_Hashtable<>(_InputIterator, _InputIterator, size_t, const _H1&,
2893         const _H2&, const _Hash&, const _Equal&, const _ExtractKey&,
2894         const allocator_type&)): Delegate to latters.
2895         (operator=(initializer_list<value_type>)): Rehash if too small.
2896         (_M_insert(_Arg&&, const _NodeGenerator&, true_type)): Remove
2897         size_t len parameter.
2898         * include/bits/hashtable_policy.h (_Insert_base<>::_M_insert_range):
2899         Do not try to get input range distance.
2900         * testsuite/23_containers/unordered_set/cons/bucket_hint.cc: New test.
2901         * testsuite/23_containers/unordered_set/modifiers/insert.cc: New test.
2903 2020-07-27  François Dumont  <fdumont@gcc.gnu.org>
2905         * include/bits/hashtable_policy.h (_Map_base<>::at): Use
2906         _Hashtable<>::find.
2907         (_Hashtable_base<>::_Equal_hash_code<>::_S_node_equals):New.
2908         (_Hashtable_base<>::_M_node_equals): New, use latter.
2909         (_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash,
2910         _RehashPolicy, false>::_M_equal): Adapt to use latter.
2911         * include/bits/hashtable.h (_Hashtable<>::_M_update_bbegin): New.
2912         (_Hashtable<>::_M_assign): Use latter.
2913         (_Hashtable<>::_M_move_assign): Likewise.
2914         (_Hashtable<>(_Hashtable<>&&)): Likewise.
2915         (_Hashtable<>(_Hashtable<>&&, const allocator_type&)): Likewise.
2916         (_Hashtable<>::swap): Likewise.
2917         (_Hashtable<>::find): Build iterator directly from _M_find_node result.
2918         (_Hashtable<>::count): Use _Hashtable<>::find.
2919         (_Hashtable<>::equal_range): Likewise.
2920         (_Hashtable<>::_M_erase(false_type, const key_type&)): Use
2921         _M_node_equals.
2923 2020-07-27  Jonathan Wakely  <jwakely@redhat.com>
2925         * src/c++17/floating_from_chars.cc (from_chars_impl): Ensure
2926         that FE_NEAREST is used.
2927         * testsuite/20_util/from_chars/4.cc: Do not use if constexpr in
2928         a { target c++14 } test.
2929         [!_GLIBCXX_HAVE_USELOCALE]: Disable all tests.
2930         * testsuite/20_util/from_chars/5.cc [!_GLIBCXX_HAVE_USELOCALE]:
2931         Likewise.
2932         * testsuite/20_util/from_chars/6.cc: New test.
2934 2020-07-22  Jonathan Wakely  <jwakely@redhat.com>
2936         * include/std/future (future, shared_future, promise): Add
2937         static assertions to the primary template to reject array and
2938         function types.
2939         * testsuite/30_threads/future/requirements/lwg3458.cc: New test.
2940         * testsuite/30_threads/promise/requirements/lwg3466.cc: New test.
2941         * testsuite/30_threads/shared_future/requirements/lwg3458.cc: New test.
2943 2020-07-22  Jonathan Wakely  <jwakely@redhat.com>
2945         * include/bits/stl_iterator.h (reverse_iterator): Constrain
2946         converting constructor and converting assignment operator.
2947         Access source iterator's data member directly instead of
2948         calling base().
2949         (move_iterator): Likewise.
2950         * testsuite/24_iterators/move_iterator/dr3435.cc: New test.
2951         * testsuite/24_iterators/reverse_iterator/dr3435.cc: New test.
2953 2020-07-20  Jonathan Wakely  <jwakely@redhat.com>
2955         * acinclude.m4 (libtool_VERSION): Bump version.
2956         * config.h.in: Regenerate.
2957         * config/abi/pre/gnu.ver: Add GLIBCXX_3.4.29 version and new
2958         exports.
2959         * config/os/gnu-linux/ldbl-extra.ver: Add _GLIBCXX_LDBL_3.4.29
2960         version and new export.
2961         * configure: Regenerate.
2962         * configure.ac: Check for <xlocale.h> and uselocale.
2963         * crossconfig.m4: Add macro or checks for uselocale.
2964         * include/std/charconv (from_chars): Declare overloads for
2965         float, double, and long double.
2966         * src/c++17/Makefile.am: Add new file.
2967         * src/c++17/Makefile.in: Regenerate.
2968         * src/c++17/floating_from_chars.cc: New file.
2969         (from_chars): Define for float, double, and long double.
2970         * testsuite/20_util/from_chars/1_c++20_neg.cc: Prune extra
2971         diagnostics caused by new overloads.
2972         * testsuite/20_util/from_chars/1_neg.cc: Likewise.
2973         * testsuite/20_util/from_chars/2.cc: Check leading '+'.
2974         * testsuite/20_util/from_chars/4.cc: New test.
2975         * testsuite/20_util/from_chars/5.cc: New test.
2976         * testsuite/util/testsuite_abi.cc: Add new symbol versions.
2978 2020-07-20  Jonathan Wakely  <jwakely@redhat.com>
2980         * include/bits/istream.tcc
2981         (basic_istream::get(__streambuf_type&, char_type): Use unsigned
2982         long long for counter and check if it would overflow _M_gcount.
2983         * testsuite/27_io/basic_istream/get/char/lwg3464.cc: New test.
2984         * testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc: New test.
2986 2020-07-17  Iain Sandoe  <iain@sandoe.co.uk>
2988         * include/std/coroutine: Mark the methods of the
2989         trivial awaitables as constexpr.
2991 2020-07-14  David Edelsohn  <dje.gcc@gmail.com>
2993         * config/os/aix/t-aix: Set BITS from compiler cpp macro.
2995 2020-07-13  Jonathan Wakely  <jwakely@redhat.com>
2997         PR libstdc++/94749
2998         PR libstdc++/96161
2999         * include/bits/istream.tcc (basic_istream::ignore(streamsize))
3000         [n == max]: Check overflow conditions on _M_gcount. Rely on
3001         the fact that either EOF or the delimiter was reached.
3002         [n < max]: Check _M_gcount < n before checking for EOF or
3003         delimiter.
3004         (basic_istream::ignore(streamsize, char_type): Likewise.
3005         * src/c++98/compatibility.cc (istream::ignore(streamsize))
3006         (wistream::ignore(streamsize)): Likewise.
3007         * src/c++98/istream.cc (istream::ignore(streamsize, char_type))
3008         (wistream::ignore(streamsize, char_type)): Likewise.
3009         * testsuite/27_io/basic_istream/ignore/char/94749.cc: Check that
3010         delimiter is discarded if the number of characters ignored
3011         doesn't fit in streamsize.
3012         * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc:
3013         Likewise.
3014         * testsuite/27_io/basic_istream/ignore/char/96161.cc: New test.
3015         * testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc: New test.
3017 2020-07-08  François Dumont  <fdumont@gcc.gnu.org>
3019         * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
3020         qualification based only on _Compare one.
3021         * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
3022         static asserts.
3023         * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
3024         Likewise.
3025         * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
3026         Likewise.
3027         * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
3029 2020-07-07  Jonathan Wakely  <jwakely@redhat.com>
3031         * include/std/limits: Whitespace changes.
3033 2020-07-07  Jonathan Wakely  <jwakely@redhat.com>
3035         * include/Makefile.am: Remove bits/int_limits.h.
3036         * include/Makefile.in: Regenerate.
3037         * include/bits/int_limits.h: Removed.
3038         * include/bits/parse_numbers.h (_Select_int_base): Replace
3039         __int_limits with __int_traits.
3040         * include/bits/range_access.h (_SSize::operator()): Likewise.
3041         * include/ext/numeric_traits.h (__numeric_traits_integer): Add
3042         static assertion.
3043         (__int_traits): New alias template.
3044         * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
3045         (__countr_zero, __countr_one, __popcount, __bit_ceil)
3046         (__bit_floor, __bit_width) Replace __int_limits with
3047         __int_traits.
3048         * include/std/charconv (__to_chars_8, __from_chars_binary)
3049         (__from_chars_alpha_to_num, from_chars): Likewise.
3050         * include/std/memory_resource (polymorphic_allocator::allocate)
3051         (polymorphic_allocator::allocate_object): Likewise.
3052         * include/std/string_view (basic_string_view::_S_compare):
3053         Likewise.
3054         * include/std/utility (cmp_equal, cmp_less, in_range): Likewise.
3056 2020-07-07  Jonathan Wakely  <jwakely@redhat.com>
3058         * include/std/limits: Whitespace changes.
3060 2020-07-06  Jonathan Wakely  <jwakely@redhat.com>
3062         * include/std/optional (_Optional_payload_base, _Optional_base)
3063         (optional, __optional_hash_call_base): Adjust whitespace and
3064         other formatting. Remove redundant && tokens on template
3065         arguments to type traits.
3067 2020-07-06  Jonathan Wakely  <jwakely@redhat.com>
3069         * include/std/optional (make_optional): Add enable_if
3070         constraints and noexcept-specifier to each overload.
3071         * testsuite/20_util/optional/make_optional-2.cc: New test.
3073 2020-07-06  Jonathan Wakely  <jwakely@redhat.com>
3075         PR libstdc++/96036
3076         * include/std/optional (optional): Add noexcept-specifier to
3077         every constructor, assignment operator, emplace function and
3078         dereference operator.
3079         * testsuite/20_util/optional/assignment/noexcept.cc: New test.
3080         * testsuite/20_util/optional/cons/noexcept.cc: New test.
3082 2020-07-06  Jonathan Wakely  <jwakely@redhat.com>
3084         PR libstdc++/96063
3085         * include/bits/fs_dir.h: Use consistent tag in class-head.
3086         * include/bits/localefwd.h: Likewise.
3087         * include/bits/regex.h: Likewise.
3088         * include/bits/stl_map.h: Likewise.
3089         * include/bits/stl_multimap.h: Likewise.
3090         * include/bits/stl_multiset.h: Likewise.
3091         * include/bits/stl_set.h: Likewise.
3092         * include/std/complex: Likewise.
3093         * include/std/functional: Likewise.
3094         * include/std/future: Likewise.
3095         * include/std/system_error: Likewise.
3096         * include/std/thread: Likewise.
3097         * include/std/tuple: Likewise.
3098         * include/std/type_traits: Likewise.
3099         * include/std/valarray: Likewise.
3101 2020-07-02  Jonathan Wakely  <jwakely@redhat.com>
3103         * testsuite/27_io/basic_ios/conv/voidptr.cc: Add c++98_only
3104         target selector.
3106 2020-07-02  Jonathan Wakely  <jwakely@redhat.com>
3108         * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: Add
3109         c++98_only target selector.
3110         * testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc:
3111         Likewise.
3112         * testsuite/18_support/headers/cstdint/std_c++0x_neg.cc:
3113         Likewise.
3114         * testsuite/18_support/headers/new/synopsis_cxx98.cc: Likewise.
3115         * testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc:
3116         Likewise.
3117         * testsuite/20_util/headers/type_traits/std_c++0x_neg.cc:
3118         Likewise.
3119         * testsuite/23_containers/headers/array/std_c++0x_neg.cc:
3120         Likewise.
3121         * testsuite/23_containers/headers/tuple/std_c++0x_neg.cc:
3122         Likewise.
3123         * testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc:
3124         Likewise.
3125         * testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc:
3126         Likewise.
3127         * testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc:
3128         Likewise.
3129         * testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc:
3130         Likewise.
3131         * testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc:
3132         Likewise.
3133         * testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc:
3134         Likewise.
3135         * testsuite/26_numerics/headers/random/std_c++0x_neg.cc:
3136         Likewise.
3137         * testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc: Likewise.
3138         * testsuite/28_regex/headers/regex/std_c++0x_neg.cc: Likewise.
3139         * testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc:
3140         Likewise.
3141         * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc:
3142         Likewise.
3143         * testsuite/30_threads/headers/future/std_c++0x_neg.cc:
3144         Likewise.
3145         * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: Likewise.
3146         * testsuite/30_threads/headers/thread/std_c++0x_neg.cc:
3147         Likewise.
3149 2020-07-02  Ville Voutilainen  <ville.voutilainen@gmail.com>
3151         PR libstdc++/91807
3152         * include/std/variant
3153         (_Copy_assign_base::operator=(const _Copy_assign_base&):
3154         Do the move-assignment from a temporary so that the temporary
3155         is constructed with an explicit index.
3156         * testsuite/20_util/variant/91807.cc: New.
3158 2020-07-02  Jonathan Wakely  <jwakely.gcc@gmail.com>
3160         PR libstdc++/91153
3161         PR target/93224
3162         * testsuite/29_atomics/atomic_float/1.cc: Use different values
3163         for tests.
3164         * testsuite/29_atomics/atomic_ref/float.cc: Likewise.
3166 2020-07-01  Jonathan Wakely  <jwakely@redhat.com>
3168         PR libstdc++/94627
3169         * include/bits/regex.h (operator==, operator!=): Remove noexcept
3170         equality comparisons for match_results.
3171         * testsuite/28_regex/match_results/94627.cc: New test.
3173 2020-07-01  Martin Sebor  <msebor@redhat.com>
3175         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust
3176         text of expected warning.
3177         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same.
3178         * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same.
3179         * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same.
3180         * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same.
3182 2020-06-29  Ville Voutilainen  <ville.voutilainen@gmail.com>
3184         Revert:
3185         2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
3187         * include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
3188         Add a __nonnull__ attribute.
3189         * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
3190         * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
3192 2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
3194         * include/bits/basic_string.h (string(_CharT*, const _Alloc&)):
3195         Add a __nonnull__ attribute.
3196         * testsuite/21_strings/basic_string/cons/char/nonnull.cc: New.
3197         * testsuite/21_strings/basic_string/cons/wchar_t/nonnull.cc: Likewise.
3199 2020-06-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
3201         PR libstdc++/95915
3202         * include/std/type_traits (is_literal_type, is_literal_type_v):
3203         Deprecate in C++17.
3204         * include/std/variant (_Uninitialized):
3205         Adjust the condition and the comment.
3206         * testsuite/20_util/is_literal_type/deprecated-1z.cc: New.
3207         * testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc:
3208         Adjust.
3209         * testsuite/20_util/is_literal_type/requirements/typedefs.cc: Likewise.
3210         * testsuite/20_util/is_literal_type/value.cc: Likewise.
3211         * testsuite/20_util/optional/constexpr/nullopt.cc:
3212         Use __is_literal_type directly.
3213         * testsuite/20_util/optional/nullopt.cc: Likewise.
3214         * testsuite/20_util/variable_templates_for_traits.cc: Adjust.
3215         * testsuite/20_util/variant/95915.cc: New.
3216         * testsuite/20_util/variant/compile.cc: Add new test.
3217         * testsuite/experimental/optional/constexpr/nullopt.cc:
3218         Use __is_literal_type directly.
3219         * testsuite/experimental/optional/nullopt.cc: Likewise.
3220         * testsuite/experimental/type_traits/value.cc: Adjust.
3221         * testsuite/util/testsuite_common_types.h:
3222         Use __is_literal_type directly.
3224 2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
3226         * include/std/charconv (__from_chars_binary): Ignore leading zeros.
3227         * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
3228         not just 10 and 16.
3229         * testsuite/20_util/from_chars/3.cc: New test.
3231 2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
3233         * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
3234         * include/std/charconv (__detail::__to_chars): Avoid
3235         -Wsign-compare warning.
3237 2020-06-24  Jonathan Wakely  <jwakely@redhat.com>
3239         PR libstdc++/95851
3240         * include/std/charconv (__to_chars_i): Check for zero-sized
3241         buffer unconditionally.
3242         * testsuite/20_util/to_chars/95851.cc: New test.
3244 2020-06-23  Jonathan Wakely  <jwakely@redhat.com>
3246         * testsuite/20_util/from_chars/1_c++20_neg.cc: Check enumeration
3247         type.
3248         * testsuite/20_util/from_chars/1_neg.cc: Likewise. Move dg-error
3249         directives outside preprocessor condition.
3251 2020-06-23  Jonathan Wakely  <jwakely@redhat.com>
3253         PR libstdc++/95832
3254         * include/std/variant (__detail::__variant::_Build_FUN): Remove
3255         partial specialization to prevent narrowing conversions to bool.
3256         * testsuite/20_util/variant/compile.cc: Test non-narrowing
3257         conversions to bool.
3258         * testsuite/20_util/variant/run.cc: Likewise.
3260 2020-06-23  Jonathan Wakely  <jwakely@redhat.com>
3262         * doc/Makefile.in: Regenerate.
3263         * include/Makefile.in: Regenerate.
3264         * libsupc++/Makefile.in: Regenerate.
3265         * po/Makefile.in: Regenerate.
3266         * python/Makefile.in: Regenerate.
3267         * src/Makefile.in: Regenerate.
3268         * src/c++11/Makefile.in: Regenerate.
3269         * src/c++17/Makefile.in: Regenerate.
3270         * src/c++98/Makefile.in: Regenerate.
3271         * src/filesystem/Makefile.in: Regenerate.
3272         * testsuite/Makefile.in: Regenerate.
3274 2020-06-22  David Edelsohn  <dje.gcc@gmail.com>
3276         * Makefile.am: Use -include.
3277         * Makefile.in: Regenerate.
3279 2020-06-21  David Edelsohn  <dje.gcc@gmail.com>
3281         * Makefile.am (tmake_file): Build and install AIX-style FAT libraries.
3282         * Makefile.in: Regenerate.
3283         * configure.ac (tmake_file): Substitute.
3284         * configure: Regenerate.
3285         * configure.host (aix*): Define tmake_file.
3286         * config/os/aix/t-aix: New file.
3288 2020-06-20  Jason Merrill  <jason@redhat.com>
3290         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc:
3291         Remove greedy_ops tests.
3292         * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc:
3293         Remove greedy_ops tests.
3295 2020-06-19  Jonathan Wakely  <jwakely@redhat.com>
3297         PR libstdc++/95765
3298         * include/bits/stl_algobase.h (__size_to_integer(float))
3299         (__size_to_integer(double), __size_to_integer(long double))
3300         (__size_to_integer(__float128)): Cast return type explicitly.
3301         * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
3302         Remove unused typedef.
3304 2020-06-19  Jonathan Wakely  <jwakely@redhat.com>
3306         * include/bits/stl_pair.h (_Index_tuple): Remove redundant
3307         namespace qualification.
3308         (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
3309         Likewise.
3310         * include/std/tuple (_Head_base, _Tuple_impl, tuple_size)
3311         (tuple_element, __get_helper, get, __make_tuple_impl)
3312         (__make_1st_indices, __tuple_concater)
3313         (pair::pair(tuple<>&, tuple<>&, _Index_tuple, _Index_tuple)):
3314         Likewise.
3315         * include/std/utility (tuple_element, __is_tuple_like_impl)
3316         (tuple_size, __pair_get, get): Likewise.
3318 2020-06-19  Jonathan Wakely  <jwakely@redhat.com>
3320         * include/bits/std_function.h (function): Define all member
3321         functions inline.
3323 2020-06-19  Marc Glisse  <marc.glisse@inria.fr>
3325         * include/bits/stl_algo.h (__includes): Simplify the code.
3327 2020-06-19  Marc Glisse  <marc.glisse@inria.fr>
3329         * include/std/optional (optional()): Explicitly define it.
3331 2020-06-17  Jonathan Wakely  <jwakely@redhat.com>
3333         PR libstdc++/94540
3334         * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>):
3335         Construct the first value at *__first instead of on the stack.
3336         (__uninitialized_default_n_1<true>): Likewise.
3337         Improve comments on several of the non-standard algorithms.
3338         * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc:
3339         New test.
3340         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc:
3341         New test.
3342         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
3343         New test.
3344         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
3345         New test.
3346         * testsuite/23_containers/vector/cons/94540.cc: New test.
3348 2020-06-17  Jonathan Wakely  <jwakely@redhat.com>
3350         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
3351         Replace Value type with int so trivial code path is used.
3352         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
3353         Likewise.
3355 2020-06-17  Jonathan Wakely  <jwakely@redhat.com>
3357         * include/bits/stl_uninitialized.h (uninitialized_fill_n): Only
3358         use std::fill_n when the size is an integral type.
3359         (__uninitialized_default_n): Likewise.
3360         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
3361         New test.
3362         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc:
3363         New test.
3364         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
3365         New test.
3367 2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
3369         PR libstdc++/95282
3370         * include/bits/atomic_base.h (__atomic_impl::load): Use the _Val
3371         alias instead of deducing _Tp as an unqualified type.
3372         (__atomic_impl::exchange): Use the _Val alias to remove volatile
3373         from the reinterpret_cast result type.
3375 2020-06-16  Jonathan Wakely  <jwakely@redhat.com>
3377         * include/std/atomic (atomic): Add static assertions.
3378         * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
3380 2020-06-16  Patrick Palka  <ppalka@redhat.com>
3382         PR libstdc++/94003
3383         * testsuite/20_util/is_constructible/94003.cc: New test.
3385 2020-06-15  Jonathan Wakely  <jwakely@redhat.com>
3387         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
3388         Update value for C++20.
3389         * include/std/version (__cpp_lib_constexpr_char_traits): Likewise.
3390         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
3391         Update expected value.
3392         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
3393         Likewise.
3395 2020-06-15  Paul Keir  <paul.keir@uws.ac.uk>
3397         * include/bits/char_traits.h (char_traits::move): constexpr move with
3398         overlap was using copy_backward incorrectly.
3399         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
3400         New test.
3402 2020-06-12  Jonathan Wakely  <jwakely@redhat.com>
3404         * testsuite/29_atomics/atomic_flag/clear/1.cc: Also test clear()
3405         when the value is currently set.
3406         * testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc:
3407         Actually check the return value.
3408         * testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc:
3409         Likewise.
3411 2020-06-12  Jonathan Wakely  <jwakely@redhat.com>
3413         * include/bits/atomic_base.h (atomic_flag::test): Add missing
3414         const qualifiers.
3415         * testsuite/29_atomics/atomic_flag/test/explicit.cc: Add
3416         dg-options and verify results of test function.
3417         * testsuite/29_atomics/atomic_flag/test/implicit.cc: Likewise.
3419 2020-06-11  Jonathan Wakely  <jwakely@redhat.com>
3421         PR libstdc++/94749
3422         * include/bits/istream.tcc (basic_istream::ignore(streamsize, CharT)):
3423         Only discard an extra character if we didn't already reach the
3424         maximum number.
3425         * src/c++98/istream.cc (istream::ignore(streamsiz, char))
3426         (wistream::ignore(streamsize, wchar_t)): Likewise.
3427         * testsuite/27_io/basic_istream/ignore/char/94749.cc: New test.
3428         * testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc: New test.
3430 2020-06-10  Patrick Palka  <ppalka@redhat.com>
3432         PR libstdc++/95578
3433         * include/bits/ranges_algo.h (__lexicographical_compare_fn):
3434         Also check that the iterator and sentinel have the same type before
3435         applying the unwrapping optimization for __normal_iterator.
3436         Split the check into two, one for the first iterator/sentinel
3437         pair and another for second iterator/sentinel pair.  Remove uses
3438         of __niter_base, and remove uses of std::move on a
3439         __normal_iterator.
3440         * include/bits/ranges_algobase.h (__equal_fn): Likewise.
3441         (__copy_or_move): Likewise.  Perform similar adjustments for
3442         the reverse_iterator and move_iterator optimizations.  Inline
3443         the checks into the if-constexprs, and use using-declarations to
3444         make them less visually noisy.  Remove uses of __niter_wrap.
3445         (__copy_or_move_backward): Likewise.
3446         * testsuite/25_algorithms/copy/95578.cc: New test.
3447         * testsuite/25_algorithms/copy_backward/95578.cc: New test.
3448         * testsuite/25_algorithms/equal/95578.cc: New test.
3449         * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
3450         * testsuite/25_algorithms/move/95578.cc: New test.
3451         * testsuite/25_algorithms/move_backward/95578.cc: New test.
3453 2020-06-10  François Dumont  <fdumont@gcc.gnu.org>
3454             Jonathan Wakely  <jwakely@redhat.com>
3456         * include/bits/deque.tcc (__lex_cmp_dit): New.
3457         (__lexicographical_compare_aux1): Define overloads for deque
3458         iterators.
3459         * include/bits/stl_algobase.h (__lexicographical_compare::__3way):
3460         New static member function.
3461         (__lexicographical_compare<true>::__3way): Likewise.
3462         (__lexicographical_compare<true>::__lc): Use __3way.
3463         (__lexicographical_compare_aux): Rename to
3464         __lexicographical_compare_aux1 and declare overloads for deque
3465         iterators.
3466         (__lexicographical_compare_aux): Define new forwarding function
3467         that calls __lexicographical_compare_aux1 and declare new overloads
3468         for safe iterators.
3469         (lexicographical_compare): Do not use __niter_base on
3470         parameters.
3471         * include/debug/safe_iterator.tcc
3472         (__lexicographical_compare_aux): Define overloads for safe
3473         iterators.
3474         * testsuite/25_algorithms/lexicographical_compare/1.cc: Add
3475         checks with random access iterators.
3476         * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
3477         New test.
3479 2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
3481         * include/bits/stl_iterator.h (move_iterator::operator=): Define.
3482         * testsuite/24_iterators/move_iterator/dr3265.cc: New test.
3484 2020-06-09  Jonathan Wakely  <jwakely@redhat.com>
3486         * include/std/optional (bad_optional_access): Define default
3487         constructor and destructor as defaulted.
3488         * testsuite/20_util/optional/bad_access.cc: New test.
3490 2020-06-08  Jonathan Wakely  <jwakely@redhat.com>
3492         * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error
3493         line number.
3494         * testsuite/20_util/default_delete/void_neg.cc: Likewise.
3496 2020-06-08  Jonathan Wakely  <jwakely@redhat.com>
3498         * include/bits/unique_ptr.h (operator<<): Define for C++20.
3499         * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test.
3501 2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
3503         * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
3504         (__detail::__cat, __detail::__diff): Move to class scope in the
3505         relevant __iterator_traits specializations.
3506         (__iterator_traits<>): Use nested class templates instead of ones from
3507         namespace __detail.
3508         * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
3509         class scope in iterator_traits<common_iterator<I, S>>.
3510         (iterator_traits<common_iterator<I, S>>): Use nested class template
3511         instead of __detail::__common_iter_ptr.
3513 2020-06-04  François Dumont  <fdumont@gcc.gnu.org>
3515         * include/bits/stl_algo.h (__copy_n_a): Move to ...
3516         * include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
3517         parameter.
3518         (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
3519         Declare.
3520         (__niter_base(const _Safe_iterator<_Ite, _Seq,
3521         random_access_iterator_tag>&)): Declare.
3522         (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
3523         _Deque_iterator<>)): Declare.
3524         * include/bits/deque.tcc
3525         (__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
3526         _Deque_iterator<>)): New.
3527         (__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
3528         New.
3529         * include/bits/streambuf_iterator.h
3530         (__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
3531         * include/debug/safe_iterator.tcc (__niter_base): New.
3532         * testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
3533         (test03): New.
3534         * testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
3535         New test.
3536         * testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
3537         New test.
3538         * testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
3539         * testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
3540         New test.
3542 2020-06-04  Jonathan Wakely  <jwakely@redhat.com>
3544         * include/bits/ranges_algobase.h (__copy_n_fn): Only call
3545         ranges::copy for positive values.
3546         * include/bits/stl_algo.h (copy_n): Convert Size argument to an
3547         integral type and only call __copy_n for positive values.
3548         * testsuite/util/testsuite_iterators.h
3549         (random_access_iterator_wrapper::operator+=): Fix range check for
3550         negative values.
3551         (output_container, input_container, forward_container)
3552         (bidirectional_container, random_access_container): New alias
3553         templates.
3554         * testsuite/25_algorithms/copy_n/5.cc: New test.
3556 2020-06-02  Jonathan Wakely  <jwakely@redhat.com>
3558         PR libstdc++/90102
3559         * include/debug/deque (deque(const _Base&)): Replace parameter
3560         with a struct that wraps a const _Base&.
3561         * include/debug/forward_list (forward_list(_Base_ref)): New
3562         constructor.
3563         * include/debug/list (list(const _Base&)): Replace parameter
3564         with a struct that wraps a const _Base&.
3565         * include/debug/map.h (map(const _Base&)): Likewise.
3566         * include/debug/multimap.h (multimap(const _Base&)): Likewise.
3567         * include/debug/multiset.h (multiset(const _Base&)): Likewise.
3568         * include/debug/set.h (set(const _Base&)): Likewise.
3569         * include/debug/unordered_map (unordered_map(const _Base&))
3570         (unordered_multimap(const _Base&)): Likewise.
3571         * include/debug/unordered_set (unordered_set(const _Base&))
3572         (unordered_multiset(const _Base&)): Likewise.
3573         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
3574         Adjust dg-error line number.
3575         * include/debug/vector (vector(const _Base&)): Likewise.
3576         * testsuite/23_containers/deque/debug/90102.cc: New test.
3577         * testsuite/23_containers/forward_list/debug/90102.cc: New test.
3578         * testsuite/23_containers/list/debug/90102.cc: New test.
3579         * testsuite/23_containers/map/debug/90102.cc: New test.
3580         * testsuite/23_containers/multimap/debug/90102.cc: New test.
3581         * testsuite/23_containers/multiset/debug/90102.cc: New test.
3582         * testsuite/23_containers/set/debug/90102.cc: New test.
3583         * testsuite/23_containers/unordered_map/debug/90102.cc: New test.
3584         * testsuite/23_containers/unordered_multimap/debug/90102.cc: New test.
3585         * testsuite/23_containers/unordered_multiset/debug/90102.cc: New test.
3586         * testsuite/23_containers/unordered_set/debug/90102.cc: New test.
3587         * testsuite/23_containers/vector/debug/90102.cc: New test.
3589 2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
3591         PR libstdc++/95392
3592         * include/bits/fs_path.h (path::_S_to_string): Move to
3593         namespace-scope and rename to ...
3594         (__detail::__string_from_range): ... this.
3595         [WINDOWS] (__detail::__wstr_from_utf8): New function template to
3596         convert a char sequence containing UTF-8 to wstring.
3597         (path::_S_convert(Iter, Iter)): Adjust call to _S_to_string.
3598         (path::_S_convert_loc(Iter, Iter, const locale&)): Likewise.
3599         (u8path(InputIterator, InputIterator)) [WINDOWS]: Use
3600         __string_from_range to obtain a contiguous range and
3601         __wstr_from_utf8 to obtain a wide string.
3602         (u8path(const Source&)) [WINDOWS]: Use __effective_range to
3603         obtain a contiguous range and __wstr_from_utf8 to obtain a wide
3604         string.
3605         (path::_S_convert(const _EcharT*, const _EcharT)) [WINDOWS]:
3606         Use __wstr_from_utf8.
3608 2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
3610         * testsuite/util/testsuite_iterators.h:
3611         (input_iterator_wrapper::operator++(int)): Return proxy object.
3613 2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
3615         * doc/xml/manual/evolution.xml: Document deprecation of
3616         __is_nullptr_t and removal of std::allocator members.
3617         * doc/html/manual/api.html: Regenerate.
3619 2020-06-01  Jonathan Wakely  <jwakely@redhat.com>
3621         * doc/xml/manual/containers.xml: Replace <xref> with <link>.
3622         * doc/xml/manual/evolution.xml: Likewise.
3623         * doc/html/manual/api.html: Regenerate.
3624         * doc/html/manual/containers.html: Regenerate.
3626 2020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
3628         * doc/xml/faq.xml: Adjust Valgrind reference and remove another.
3629         * doc/html/faq.html: Regenerate.
3631 2020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
3633         * doc/xml/manual/policy_data_structures_biblio.xml: Remove
3634         stray change.
3636 2020-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
3638         * doc/xml/manual/policy_data_structures_biblio.xml: Switch
3639         www.cs.princeton.edu to https.
3640         * doc/html/manual/policy_data_structures.html: Regenerate.
3642 2020-05-31  Douglas B Rupp  <douglas.b.rupp@gmail.com>
3644         * crossconfig.m4 (<*-vxworks>): Check for more math decls.
3645         * configure: Rebuild.
3647 2020-05-29  H.J. Lu  <hjl.tools@gmail.com>
3649         PR bootstrap/95413
3650         * configure: Regenerated.
3652 2020-05-29  François Dumont  <fdumont@gcc.gnu.org>
3654         PR libstdc++/95079
3655         * include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
3656         * include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
3657         (unordered_map<>::insert_or_assign): Adapt.
3659 2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
3661         PR libstdc++/95282
3662         * include/bits/atomic_base.h (__atomic_impl::load): Add
3663         cv-qualifiers to parameter so that _Tp is deduced as the
3664         unqualified type.
3665         * testsuite/29_atomics/atomic_float/95282.cc: New test.
3667 2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
3669         PR libstdc++/95322
3670         * include/std/ranges (transform_view::_Sentinel): Allow hidden
3671         friends to work with _Iterator<true> and _Iterator<false>.
3672         (join_view::_Sentinel): Likewise.
3673         * testsuite/std/ranges/adaptors/95322.cc: New test.
3675 2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
3677         PR libstdc++/94354
3678         * include/bits/stl_iterator.h (reverse_iterator): Fix comparison
3679         operators to use the correct operations on the underlying
3680         iterators.
3681         * testsuite/24_iterators/reverse_iterator/rel_ops.cc: New test.
3683 2020-05-27  Jonathan Wakely  <jwakely@redhat.com>
3685         * testsuite/18_support/comparisons/categories/zero_neg.cc: New test.
3687 2020-05-26  Patrick Palka  <ppalka@redhat.com>
3689         PR libstdc++/95322
3690         * include/bits/stl_iterator.h (__detail::_Common_iter_proxy):
3691         Remove and instead define it ...
3692         (common_iterator::_Proxy): ... here.
3693         (common_iterator::operator->): Use it.
3694         * testsuite/24_iterators/common_iterator/2.cc: New test.
3695         * testsuite/std/ranges/adaptors/95322.cc: New test.
3697 2020-05-23  Patrick Palka  <ppalka@redhat.com>
3699         PR libstdc++/93978
3700         * testsuite/std/ranges/adaptors/93978.cc: Add -Wall to
3701         dg-additional-options.  Avoid unused-but-set-variable warning.
3703 2020-05-23  Jonathan Wakely  <jwakely@redhat.com>
3705         PR libstdc++/95289
3706         * include/debug/helper_functions.h (__get_distance): Only declare
3707         as a constexpr function for C++14 and up.
3708         * testsuite/25_algorithms/copy/debug/95289.cc: New test.
3710         * include/bits/fs_path.h (__detail::_S_range_begin)
3711         (__detail::_S_range_end, path::_S_string_from_iter): Replace with
3712         overloaded function template __detail::__effective_range.
3713         (__detail::__effective_range): New overloaded function template to
3714         create a basic_string or basic_string_view for an effective range.
3715         (__detail::__value_type_is_char): Use __detail::__effective_range.
3716         Do not use remove_const on value type.
3717         (__detail::__value_type_is_char_or_char8_t): Likewise.
3718         (path::path(const Source&, format))
3719         (path::path(const Source&, const locale&))
3720         (path::operator/=(const Source&), path::append(const Source&))
3721         (path::concat(const Source&)): Use __detail::__effective_range.
3722         (path::_S_to_string(InputIterator, InputIterator)): New function
3723         template to create a string view if possible, or string otherwise.
3724         (path::_S_convert): Add overloads that convert a string returned
3725         by __detail::__effective_range. Use if-constexpr to inline conversion
3726         logic from all overloads of _Cvt::_S_convert.
3727         (path::_S_convert_loc): Add overload that converts a string. Use
3728         _S_to_string to avoid allocation when possible.
3729         (path::_Cvt): Remove.
3730         (path::operator+=(CharT)): Remove indirection through path::concat.
3731         * include/experimental/bits/fs_path.h (path::_S_convert_loc): Add
3732         overload for non-const pointers, to avoid constructing a std::string.
3733         * src/c++17/fs_path.cc (path::_S_convert_loc): Replace conditional
3734         compilation with call to _S_convert.
3736         * include/bits/fs_path.h (__detail::_S_range_begin)
3737         (__detail::_S_range_end): Remove unintentional static specifiers.
3738         * include/experimental/bits/fs_path.h (__detail::_S_range_begin)
3739         (__detail::_S_range_end): Likewise.
3741         * include/bits/fs_path.h (filesystem::__detail::__is_encoded_char):
3742         Replace alias template with variable template. Don't remove const.
3743         (filesystem::__detail::__is_path_src): Replace overloaded function
3744         template with variable template and specializations.
3745         (filesystem::__detail::__is_path_iter_src): Replace alias template
3746         with class template.
3747         (filesystem::__detail::_Path): Use __is_path_src. Remove support for
3748         iterator pairs.
3749         (filesystem::__detail::_Path2): New alias template for checking
3750         InputIterator requirements.
3751         (filesystem::__detail::__constructible_from): Remove.
3752         (filesystem::path): Replace _Path<Iter, Iter> with _Path2<Iter>.
3753         * testsuite/27_io/filesystem/path/construct/80762.cc: Check with two
3754         constructor arguments of void and void* types.
3756 2020-05-21  Matthias Kretz  <kretz@kde.org>
3758         * testsuite/Makefile.am: Remove dup target_triplet and set tool,
3759         allowing runtest to work without arguments.
3760         * testsuite/Makefile.in: Regenerate.
3762 2020-05-21  Jonathan Wakely  <jwakely@redhat.com>
3764         PR libstdc++/93983
3765         * include/bits/iterator_concepts.h (__detail::__cpp17_iterator):
3766         Reorder constraints to avoid recursion when constructors use
3767         iterator_traits (LWG 3420).
3768         * testsuite/24_iterators/customization_points/lwg3420.cc: New test.
3770         * include/experimental/socket (basic_socket::is_open()
3771         (basic_socket_acceptor::is_open()): Use _GLIBCXX_NODISCARD macro.
3773         * include/experimental/bits/net.h (__endpoint, __protocol)
3774         (__acceptable_protocol, __inet_protocol): New concepts.
3775         (__detail::__is_endpoint): Move trait from <experimental/socket>.
3776         (__is_protocol, __is_acceptable_protocol, __is_inet_protocol): New
3777         traits.
3778         (__endpoint, __protocol, __acceptable_protocol): New variable
3779         templates.
3780         * include/experimental/socket (__is_endpoint): Move to net.h header.
3781         (basic_socket, basic_socket_acceptor): Check requirements.
3783         * include/experimental/executor (use_future_t::use_future_t()): Fix
3784         incorrect noexcept-specifier.
3785         * include/experimental/internet (basic_resolver_results): Adjust
3786         whitespace.
3787         * include/experimental/socket (__basic_socket_impl::release): Add
3788         member function.
3789         (basic_socket(io_context&, const endpoint_type&)): Fix argument to
3790         target constructor.
3791         (basic_socket::release(), basic_socket::release(error_code&)): Add
3792         missing member functions.
3793         (basic_socket::is_open()): Add nodiscard attribute.
3794         (basic_socket::close(error_code&)): Pass argument to base function.
3795         (basic_socket_acceptor::release())
3796         (basic_socket_acceptor::release(error_code&)): Add missing member
3797         functions.
3798         (basic_socket_acceptor::is_open()): Add nodiscard attribute.
3799         (basic_socket_streambuf::error()): Add noexcept.
3800         (basic_socket_iostream::error()): Likewise.
3801         * testsuite/experimental/net/socket/basic_socket.cc: New test.
3803         * include/experimental/buffer: Replace typedefs with
3804         alias-declarations.
3805         * include/experimental/executor: Likewise.
3806         * include/experimental/internet: Likewise.
3807         * include/experimental/socket: Likewise.
3808         * include/experimental/timer: Likewise.
3810 2020-05-19  Jonathan Wakely  <jwakely@redhat.com>
3812         PR libstdc++/94087
3813         * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be
3814         passed in.
3815         (__x86_rdseed_rdrand): New function that uses rdseed with rdrand
3816         fallback.
3817         (random_device::_M_init): Use __x86_rdseed_rdrand when both
3818         instructions are available.
3819         * testsuite/26_numerics/random/random_device/94087.cc: New test.
3821 2020-05-19  Patrick Palka  <ppalka@redhat.com>
3823         PR c++/66439
3824         * testsuite/20_util/pair/astuple/get_neg.cc: Prune "type/value
3825         mismatch" messages.
3826         * testsuite/20_util/tuple/element_access/get_neg.cc: Likewise.
3828 2020-05-15  H.J. Lu  <hongjiu.lu@intel.com>
3830         PR bootstrap/95147
3831         * configure: Regenerated.
3833 2020-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3835         * configure: Regenerated.
3837 2020-05-13  Alexandre Oliva <oliva@adacore.com>
3839         PR libstdc++/77691
3840         * include/experimental/memory_resource
3841         (__resource_adaptor_imp::do_allocate): Handle max_align_t on
3842         x86-vxworks as on x86-solaris.
3843         (__resource_adaptor_imp::do_deallocate): Likewise.
3844         * testsuite/experimental/memory_resource/new_delete_resource.cc:
3845         Drop xfail.
3846         (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris.
3847         (test03): Drop max-align test for char-aligned alloc.
3849 2020-05-08  Ulrich Drepper  <drepper@redhat.com>
3851         * include/bits/atomic_base.h (atomic_flag): Implement test member
3852         function.
3853         * include/std/version: Define __cpp_lib_atomic_flag_test.
3854         * testsuite/29_atomics/atomic_flag/test/explicit.cc: New file.
3855         * testsuite/29_atomics/atomic_flag/test/implicit.cc: New file.
3857 2020-05-07  Jonathan Wakely  <jwakely@redhat.com>
3859         PR libstdc++/94971 (partial)
3860         * include/bits/ranges_algo.h (ranges::__sample_fn): Qualify
3861         std::sample using macro to work in parallel mode.
3862         (__sort_fn): Likewise for std::sort.
3863         (ranges::__nth_element_fn): Likewise for std::nth_element.
3864         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
3865         Likewise for std::__min_cmp.
3866         * include/parallel/algobase.h (lexicographical_compare_three_way):
3867         Add to namespace std::__parallel.
3869         PR c/92472
3870         * include/parallel/multiway_merge.h (_GuardedIterator::operator*)
3871         (_GuardedIterator::operator _RAIter, _UnguardedIterator::operator*)
3872         (_UnguardedIterator::operator _RAIter): Add const qualifier.
3873         (operator<(_GuardedIterator&, _GuardedIterator&)
3874         (operator<=(_GuardedIterator&, _GuardedIterator&)
3875         (operator<(_UnguardedIterator&, _UnguardedIterator&)
3876         (operator<=(_UnguardedIterator&, _UnguardedIterator&): Change
3877         parameters to const references.
3879 2020-05-07  Eric Botcazou  <ebotcazou@adacore.com>
3881         * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update.
3882         * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.
3884 2020-05-06  François Dumont  <fdumont@gcc.gnu.org>
3886         * include/bits/stl_algobase.h (struct _Bit_iterator): New declaration.
3887         (std::__fill_a1(_Bit_iterator, _Bit_iterator, const bool&)): Likewise.
3888         * include/bits/stl_bvector.h (__fill_bvector): Move outside
3889         _GLIBCXX_STD_C namespace.
3890         (fill(_Bit_iterator, _Bit_iterator, const bool&)): Likewise and rename
3891         into...
3892         (__fill_a1): ...this.
3893         * testsuite/25_algorithms/fill/bvector/1.cc: New.
3895 2020-05-06  H.J. Lu  <hongjiu.lu@intel.com>
3897         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
3899 2020-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3901         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
3902         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
3903         Likewise.
3904         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
3905         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
3906         Likewise.
3908 2020-05-06  Martin Liska  <mliska@suse.cz>
3910         Revert:
3911         2020-05-05  Martin Liska  <mliska@suse.cz>
3912         PR c/92472
3913         * include/parallel/multiway_merge.h:
3914         Use const for _Compare template argument.
3916 2020-05-06  Jonathan Wakely  <jwakely@redhat.com>
3918         * doc/xml/manual/abi.xml (abi.versioning.history): Document library
3919         versions for GCC 9.[123] and 10.1 releases.
3920         * doc/html/*: Regenerate.
3922 2020-05-06  Jakub Jelinek  <jakub@redhat.com>
3924         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
3925         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
3926         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
3927         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
3928         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
3929         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
3930         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
3932 2020-05-05  Martin Liska  <mliska@suse.cz>
3934         PR c/92472
3935         * include/parallel/multiway_merge.h:
3936         Use const for _Compare template argument.
3938 2020-05-04  Fangrui Song  <maskray@google.com>
3940         * libsupc++/cxxabi.h (__cxa_finalize): Fix return type.
3942 2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
3944         * doc/xml/faq.xml: Use working link for SGI STL FAQ.
3945         * doc/html/*: Regenerate.
3947         PR libstdc++/94906
3948         * src/c++17/memory_resource.cc
3949         (monotonic_buffer_resource::_Chunk::release): Use size_t for shift
3950         operands.
3952 2020-05-04  Nathan Sidwell  <nathan@acm.org>
3954         PR libstdc++/94747
3955         * libsupc++/dyncast.cc (__dynamic_cast): Cast offsetof to
3956         ptrdiff_t before negation, to show intent more clearly.
3958 2020-05-04  Jonathan Wakely  <jwakely@redhat.com>
3960         PR libstdc++/94936
3961         * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools):
3962         Add comment about single-threaded behaviour.
3963         (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist
3964         class member access out of loop.
3965         (synchronized_pool_resource::synchronized_pool_resource())
3966         (synchronized_pool_resource::~synchronized_pool_resource())
3967         (synchronized_pool_resource::release()): Check __gthread_active_p
3968         before creating and/or deleting the thread-specific data key.
3969         (synchronized_pool_resource::_M_thread_specific_pools()): Adjust
3970         assertions.
3971         (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast
3972         path for single-threaded case.
3973         (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)):
3974         Likewise. Return if unable to find a pool that owns the allocation.
3975         * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
3976         New test.
3977         * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New
3978         test.
3979         * testsuite/20_util/synchronized_pool_resource/release_single.cc: New
3980         test.
3982 2020-05-03  Jonathan Wakely  <jwakely@redhat.com>
3984         PR libstdc++/94933
3985         * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types
3986         usable in constant expressions.
3987         * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and
3988         non-scalars.
3990 2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
3992         PR libstdc++/94901
3993         * testsuite/17_intro/badnames.cc: Test values between _E9 and _E24 too.
3995 2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
3996             Patrick Palka  <ppalka@redhat.com>
3998         PR libstdc++/92894
3999         * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove):
4000         Add trait to determine return type and an alias for it.
4001         (ranges::__cust_imove::_IMove::operator()): Use __result instead of
4002         deduced return type.
4003         (iter_rvalue_reference_t): Use _IMove::__type instead of checking
4004         the result of ranges::iter_move.
4005         (__detail::__indirectly_readable_impl): Use iter_rvalue_reference_t
4006         instead of checking the result of ranges::iter_move.
4007         * testsuite/24_iterators/customization_points/92894.cc: New test.
4008         * testsuite/24_iterators/indirect_callable/92894.cc: New test.
4010 2020-05-01  Jonathan Wakely  <jwakely@redhat.com>
4012         PR libstdc++/94901
4013         * include/std/type_traits (__is_complete_or_unbounded): Replace
4014         BADNAME _T with _Tp.
4015         * testsuite/17_intro/badnames.cc: New test.
4017 2020-04-30  Jonathan Wakely  <jwakely@redhat.com>
4019         PR libstdc++/89510
4020         * include/bits/alloc_traits.h (allocator_traits::_S_construct)
4021         (allocator_traits::_S_destroy)
4022         (allocator_traits<allocator<T>>::construct): Use traits in
4023         noexcept-specifiers.
4024         * include/bits/allocator.h (allocator<void>::construct)
4025         (allocator<void>::destroy): Likewise.
4026         * include/ext/malloc_allocator.h (malloc_allocator::construct)
4027         (malloc_allocator::destroy): Likewise.
4028         * include/ext/new_allocator.h (new_allocator::construct)
4029         (new_allocator::destroy): Likewise.
4030         * testsuite/20_util/allocator/89510.cc: New test.
4031         * testsuite/ext/malloc_allocator/89510.cc: New test.
4032         * testsuite/ext/new_allocator/89510.cc: New test.
4034 2020-04-29  Jonathan Wakely  <jwakely@redhat.com>
4036         PR libstdc++/94854
4037         * include/bits/basic_string.tcc: Update comment about explicit
4038         instantiations.
4040 2020-04-28  Jonathan Wakely  <jwakely@redhat.com>
4042         PR libstdc++/91480
4043         * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal):
4044         Remove non-standard macro.
4045         * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define
4046         to indicate P1032R1 support.
4047         * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise.
4048         * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise.
4049         * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise.
4050         * include/std/version (__cpp_lib_allocator_is_always_equal): Remove.
4051         (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view)
4052         (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define.
4053         * testsuite/20_util/function_objects/constexpr_searcher.cc: Check
4054         feature test macro.
4055         * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise.
4056         * testsuite/21_strings/basic_string_view/operations/copy/char/
4057         constexpr.cc: Likewise.
4058         * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise.
4060         PR libstdc++/94831
4061         * include/bits/alloc_traits.h (_S_construct): Restore placement
4062         new-expression for C++11/14/17 and call std::construct_at directly
4063         for C++20.
4064         * include/bits/stl_construct.h (_Construct): Revert to non-constexpr
4065         function returning void.
4066         * testsuite/20_util/specialized_algorithms/
4067         uninitialized_value_construct/94831.cc: New test.
4068         * testsuite/23_containers/vector/cons/94831.cc: New test.
4070 2020-04-28  Patrick Palka  <ppalka@redhat.com>
4072         LWG 3433 subrange::advance(n) has UB when n < 0
4073         * include/std/ranges (subrange::prev): Fix typo.
4074         (subrange::advance): Handle a negative argument as per the proposed
4075         resolution of LWG 3433.
4076         * testsuite/std/ranges/subrange/lwg3433.cc: New test.
4078 2020-04-28  Jonathan Wakely  <jwakely@redhat.com>
4079             Iain Sandoe  <iain@sandoe.co.uk>
4081         PR c++/94759
4082         * include/std/coroutine: Implement handing for non-
4083         class coroutine return types.
4085 2020-04-24  Jonathan Wakely  <jwakely@redhat.com>
4087         * include/experimental/executor (service_already_exists): Make default
4088         constructor public (LWG 3414).
4089         * testsuite/experimental/net/execution_context/make_service.cc: Check
4090         the service_already_exists can be default constructed.
4092 2020-04-24  Kamlesh Kumar  <kamleshbhalui@gmail.com>
4093             Jonathan Wakely  <jwakely@redhat.com>
4095         PR libstdc++/90415
4096         PR libstdc++/92156
4097         * include/std/any (any): Rename template parameters for consistency
4098         with the standard.
4099         (any::_Decay): Rename to _Decay_if_not_any.
4100         (any::any(T&&):: Remove is_constructible from constraints. Remove
4101         non-standard overload.
4102         (any::any(in_place_type_t<T>, Args&&...))
4103         (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...))
4104         (any::emplace(Args&&...))
4105         (any::emplace(initializer_list<U>, Args&&...)):
4106         Use decay_t instead of _Decay.
4107         * testsuite/20_util/any/cons/90415.cc: New test.
4108         * testsuite/20_util/any/cons/92156.cc: New Test.
4109         * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives
4110         more robust.
4111         * testsuite/20_util/any/modifiers/92156.cc: New test.
4113 2020-04-23  Jonathan Wakely  <jwakely@redhat.com>
4115         * doc/xml/manual/status_cxx2020.xml: Update C++20 status table.
4116         * doc/html/*: Regenerate.
4118         * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert
4119         value for C++17 to 201803L because P0858R0 is supported for C++17.
4120         * include/std/version (__cpp_lib_array_constexpr): Likewise.
4121         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4122         Check for value corresponding to P0031R0 features being tested.
4123         * testsuite/23_containers/array/requirements/constexpr_iter.cc:
4124         Check for value corresponding to P0858R0 features being tested.
4126         * include/std/version (__cpp_lib_three_way_comparison): Define for
4127         freestanding builds.
4129 2020-04-23  Thomas Rodgers  <rodgert@appliantology.com>
4131         * include/experimental/net/executor (system_context): Mark
4132         system_context::system_context() = delete.
4133         * testsuite/experimental/net/executor/1.cc: Add new
4134         test to check system_context is not default constructible.
4136 2020-04-23  Iain Sandoe  <iain@sandoe.co.uk>
4138         * include/std/coroutine: Update the inline namespace to __n4861.
4139         Add the __cpp_lib_coroutine define, set to 201902L.
4140         * include/std/version: Add __cpp_lib_coroutine, set to 201902L.
4142 2020-04-22  Jonathan Wakely  <jwakely@redhat.com>
4144         * include/std/execution (__cpp_lib_execution): Define to indicate
4145         support for P0024R2 and P1001R2.
4146         * include/std/version (__cpp_lib_execution): Define.
4147         * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro
4148         defined by <algorithm>, move other tests to new tests ...
4149         * testsuite/25_algorithms/pstl/feature_test-2.cc: New test.
4150         * testsuite/25_algorithms/pstl/feature_test-3.cc: New test.
4151         * testsuite/25_algorithms/pstl/feature_test-4.cc: New test.
4152         * testsuite/25_algorithms/pstl/feature_test-5.cc: New test.
4154         * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define
4155         different values for C++17 and C++20, to indicate different feature
4156         sets. Update value for C++20 to indicate P1032R1 support.
4157         * include/std/version (__cpp_lib_array_constexpr): Likewise.
4158         * testsuite/23_containers/array/comparison_operators/constexpr.cc:
4159         Check feature test macro.
4160         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4161         New test.
4162         * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check
4163         feature test macro.
4164         * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test
4165         in C++17 mode and check feature test macro.
4167         * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define
4168         here.
4169         * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be
4170         defined by <utility>.
4172         * include/std/functional (__cpp_lib_concepts): Update macro value to
4173         indicate P1964R2 support.
4174         * include/std/version (__cpp_lib_concepts): Likewise.
4175         * testsuite/std/concepts/1.cc: Adjust expected value.
4176         * testsuite/std/concepts/2.cc: Likewise.
4178         * include/std/functional (__cpp_lib_constexpr_invoke): Rename to
4179         __cpp_lib_constexpr_functional.
4180         * include/std/version (__cpp_lib_constexpr_invoke): Likewise.
4181         * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust.
4183         * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to
4184         indicate P1006R1 support.
4185         (__cpp_lib_to_address): Define to indicate P0653R2 support.
4186         * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate
4187         P1227R2 support.
4188         * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate
4189         P0769R2 support.
4190         * include/std/atomic (__cpp_lib_atomic_float): Define to indicate
4191         P0020R6 support.
4192         * include/std/memory (__cpp_lib_assume_aligned): Define to indicate
4193         P1007R3 support.
4194         * include/std/memory_resource (__cpp_lib_polymorphic_allocator):
4195         Define to indicate P0339R6 support.
4196         * include/std/string_view (__cpp_lib_starts_ends_with): Define to
4197         indicate P0457R2 support.
4198         * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define
4199         to indicate P0758R1 support.
4200         (__cpp_lib_remove_cvref): Define to indicate P0550R2 support.
4201         (__cpp_lib_type_identity): Define to indicate P0887R1 support.
4202         * include/std/version (__cpp_lib_atomic_float)
4203         (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref)
4204         (__cpp_lib_type_identity, __cpp_lib_assume_aligned)
4205         (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator)
4206         (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with)
4207         (__cpp_lib_to_address): Define.
4208         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
4210         * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old
4211         macro.
4212         * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion):
4213         Likewise.
4214         * include/std/version (__cpp_lib_map_insertion)
4215         (__cpp_lib_unordered_map_insertion): Remove.
4217         * include/std/condition_variable (__cpp_lib_jthread): Remove
4218         redundant definition.
4219         * include/std/stop_token (__cpp_lib_jthread): Update macro value to
4220         indicate P1869R1 support.
4221         * include/std/version (__cpp_lib_jthread): Update value.
4222         * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check
4223         for updated macro value.
4224         * testsuite/30_threads/condition_variable_any/stop_token/2.cc:
4225         Likewise.
4226         * testsuite/30_threads/jthread/1.cc: Likewise.
4227         * testsuite/30_threads/jthread/2.cc: Likewise.
4228         * testsuite/30_threads/stop_token/1.cc: Likewise.
4229         * testsuite/30_threads/stop_token/2.cc: Likewise.
4231         * testsuite/21_strings/basic_string/erasure.cc: Check for
4232         __cpp_lib_erase_if macro.
4233         * testsuite/23_containers/deque/erasure.cc: Add header name to #error
4234         messages.
4235         * testsuite/23_containers/forward_list/erasure.cc: Likewise.
4236         * testsuite/23_containers/list/erasure.cc: Likewise.
4237         * testsuite/23_containers/map/erasure.cc: Likewise.
4238         * testsuite/23_containers/set/erasure.cc: Likewise.
4239         * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
4240         * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
4241         * testsuite/23_containers/vector/erasure.cc: Likewise.
4243 2020-04-21  Jonathan Wakely  <jwakely@redhat.com>
4245         * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way
4246         to define operator<=>.
4247         * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test.
4249         * doc/Makefile.am (xml_sources_manual): Add missing XML files.
4250         * doc/Makefile.in: Regenerate.
4251         * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead
4252         of "this page".
4253         * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections
4254         to the C++11 status table.
4255         * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature
4256         proposals with table matching contents of the C++14 standard.
4257         * doc/xml/manual/status_cxx2017.xml: Add table matching contents of
4258         the C++17 standard.
4259         * doc/html/*: Regenerate.
4261         PR c++/94149
4262         * include/std/type_traits (__is_nt_constructible_impl): Add partial
4263         specializations for bounded arrays with non-empty initializers.
4264         * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test.
4266 2020-04-20  Thomas Rodgers  <trodgers@redhat.com>
4268         * testsuite/lib/libstdc++.exp: Add additional_flags=
4269         -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when
4270         compiling with a newer Thread Building Blocks.
4272 2020-04-20  Jonathan Wakely  <jwakely@redhat.com>
4274         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
4276         * testsuite/20_util/is_constructible/51185.cc: Make test class a
4277         non-aggregate so that the test verifies the same thing in all -std
4278         modes.
4279         * testsuite/20_util/is_constructible/value-2.cc: Adjust expected
4280         results for some types when paren-init for aggregates is supported.
4282         * include/std/version (__cpp_lib_three_way_comparison): Update value.
4283         * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
4284         (__detail::__synth3way): Add noexcept-specifier.
4286         * include/bits/stl_map.h (map): Define operator<=> and remove
4287         operator< for C++20.
4288         * include/bits/stl_multimap.h (multimap): Likewise.
4289         * include/bits/stl_multiset.h (multiset): Likewise.
4290         * include/bits/stl_set.h (set): Likewise.
4291         * include/bits/stl_tree.h (_Rb_tree): Likewise.
4292         (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant
4293         operator!= for C++20.
4294         * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20.
4295         * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
4296         * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
4297         * include/debug/set.h (__gnu_debug::set): Likewise.
4298         * testsuite/23_containers/map/operators/cmp_c++20.cc: New test.
4299         * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test.
4300         * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test.
4301         * testsuite/23_containers/set/operators/cmp_c++20.cc: New test.
4303 2020-04-20  Matthias Kretz  <kretz@kde.org>
4305         * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose.
4307 2020-04-19  Jonathan Wakely  <jwakely@redhat.com>
4309         * include/bits/stl_queue.h (queue): Define operator<=> for C++20.
4310         * include/bits/stl_stack.h (stack): Likewise.
4311         * testsuite/23_containers/queue/cmp_c++20.cc: New test.
4312         * testsuite/23_containers/stack/cmp_c++20.cc: New test.
4314         * include/bits/unordered_map.h (unordered_map, unordered_multimap):
4315         Remove redundant operator!= for C++20.
4316         * include/bits/unordered_set.h (unordered_set, unordered_multiset):
4317         Likewise.
4318         * include/debug/unordered_map (unordered_map, unordered_multimap):
4319         Likewise.
4320         * include/debug/unordered_set (unordered_set, unordered_multiset):
4321         Likewise.
4323         PR other/94629
4324         * include/debug/formatter.h (_Error_formatter::_Parameter): Fix
4325         redundant assignment in constructor.
4327 2020-04-18  Jonathan Wakely  <jwakely@redhat.com>
4329         * include/std/chrono (duration, time_point): Define operator<=> and
4330         remove redundant operator!= for C++20.
4331         * testsuite/20_util/duration/comparison_operators/three_way.cc: New
4332         test.
4333         * testsuite/20_util/time_point/comparison_operators/three_way.cc: New
4334         test.
4336         * testsuite/util/native_type/native_priority_queue.hpp: Use
4337         allocator_traits to rebind allocator.
4339 2020-04-17  Jonathan Wakely  <jwakely@redhat.com>
4341         * include/bits/forward_list.h (forward_list): Define operator<=> and
4342         remove redundant comparison operators for C++20.
4343         * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise.
4344         * include/bits/stl_deque.h (deque): Likewise.
4345         * include/bits/stl_iterator.h (__normal_iterator): Likewise.
4346         * include/bits/stl_list.h (list): Likewise.
4347         * include/bits/stl_vector.h (vector): Likewise.
4348         * include/debug/deque (__gnu_debug::deque): Likewise.
4349         * include/debug/forward_list (__gnu_debug::forward_list): Likewise.
4350         * include/debug/list (__gnu_debug::list): Likewise.
4351         * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator):
4352         Likewise.
4353         * include/debug/vector (__gnu_debug::vector): Likewise.
4354         * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define
4355         operator<=> for C++20.
4356         * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test.
4357         * testsuite/23_containers/forward_list/cmp_c++20.cc: New test.
4358         * testsuite/23_containers/list/cmp_c++20.cc: New test.
4359         * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test.
4360         * testsuite/23_containers/vector/cmp_c++20.cc: New test.
4362         * include/bits/basic_string.h (basic_string): Define operator<=> and
4363         remove redundant comparison operators for C++20.
4364         * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits):
4365         Add comparison_category members.
4366         (__detail::__char_traits_cmp_cat): New helper to get comparison
4367         category from char traits class.
4368         * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not
4369         define for C++20.
4370         (sub_match): Define operator<=> and remove redundant comparison
4371         operators for C++20.
4372         (match_results): Remove redundant operator!= for C++20.
4373         * include/std/string_view (basic_string_view): Define operator<=> and
4374         remove redundant comparison operators for C++20.
4375         * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New
4376         test.
4377         * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc:
4378         New test.
4379         * testsuite/21_strings/basic_string_view/operations/copy/char/
4380         constexpr.cc: Initialize variable.
4381         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
4382         constexpr.cc: Likewise.
4383         * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add
4384         dg-do directive and remove comments showing incorrect signatures.
4385         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
4386         Likewise.
4387         * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc:
4388         New test.
4389         * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc:
4390         New test.
4391         * testsuite/28_regex/sub_match/compare_c++20.cc: New test.
4393 2020-04-16  Jonathan Wakely  <jwakely@redhat.com>
4395         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove
4396         name of unused parameter.
4398 2020-04-15  Jonathan Wakely  <jwakely@redhat.com>
4400         * include/bits/fs_dir.h (file_status): Define operator== for C++20.
4401         (directory_entry): Define operator<=> and remove redundant comparison
4402         operators for C++20.
4403         * include/bits/fs_fwd.h (space_info): Define operator== for C++20.
4404         * include/bits/fs_path.h (path): Define operator<=> and remove
4405         redundant comparison operators for C++20.
4406         * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment.
4407         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
4408         * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
4409         * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
4411         * include/bits/allocator.h (operator!=): Do not define for C++20.
4412         * include/bits/locale_classes.h (operator!=): Likewise.
4413         * include/bits/std_function.h (operator==(nullptr_t, const function&))
4414         (operator!=(const function&, nullptr_t))
4415         (operator!=(nullptr_t, const function&)): Likewise.
4416         * include/ext/bitmap_allocator.h (operator!=): Likewise.
4417         * include/ext/debug_allocator.h (operator!=): Likewise.
4418         * include/ext/extptr_allocator.h (operator!=): Likewise.
4419         * include/ext/malloc_allocator.h (operator!=): Likewise.
4420         * include/ext/mt_allocator.h (operator!=): Likewise.
4421         * include/ext/new_allocator.h (operator!=): Likewise.
4422         * include/ext/pool_allocator.h (operator!=): Likewise.
4423         * include/ext/throw_allocator.h (operator!=): Likewise.
4424         * include/std/bitset (bitset::operator!=): Likewise.
4425         * include/std/memory_resource (operator!=): Likewise.
4426         * include/std/scoped_allocator (operator!=): Likewise.
4428         * include/std/typeindex (operator<=>): Define for C++20.
4429         * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test.
4431 2020-04-14  Jonathan Wakely  <jwakely@redhat.com>
4433         * libsupc++/compare (compare_three_way): Fix constraint so that
4434         BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with.
4435         * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc:
4436         New test.
4438         PR libstdc++/94562
4439         * include/bits/shared_ptr.h (operator<=>): Define for C++20.
4440         * include/bits/shared_ptr_base.h (operator<=>): Likewise.
4441         * include/bits/unique_ptr.h (operator<=>): Add inline specifier.
4442         * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test.
4443         * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect
4444         std::less<A*> to be used when comparing std::shared_ptr<A> objects in
4445         C++20.
4447         PR libstdc++/94565
4448         * libsupc++/compare (__unspec): Add noexcept-specifier to constructor.
4449         * testsuite/18_support/comparisons/categories/94565.cc: New test.
4451 2020-04-13  Iain Sandoe  <iain@sandoe.co.uk>
4453         * include/std/coroutine: Update coroutines builtin define,
4454         per n4861.
4456 2020-04-09  Jonathan Wakely  <jwakely@redhat.com>
4458         * libsupc++/compare (compare_three_way): Fix noexcept-specifier.
4459         (strong_order, weak_order, partial_order): Replace uses of <=> with
4460         compare_three_way function object (LWG 3324).
4461         * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add
4462         equality operator so that X satisfies three_way_comparable.
4463         * testsuite/18_support/comparisons/algorithms/strong_order.cc:
4464         Likewise.
4465         * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise.
4467         * include/bits/unique_ptr.h (operator<=>): Define for C++20.
4468         * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
4469         * testsuite/20_util/default_delete/void_neg.cc: Likewise.
4470         * testsuite/20_util/unique_ptr/comparison/compare.cc: New test.
4471         * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test.
4473 2020-04-08  Jonathan Wakely  <jwakely@redhat.com>
4475         * include/bits/slice_array.h (operator==(const slice&, const slice&)):
4476         Define for C++20.
4477         * include/std/complex (operator==(const T&, const complex<T>&))
4478         (operator!=(const complex<T>&, const complex<T>&))
4479         (operator!=(const complex<T>&, const T&))
4480         (operator!=(const T&, const complex<T>&)): Do not declare for C++20.
4481         * testsuite/26_numerics/slice/compare.cc: New test.
4483         * include/std/charconv (to_chars_result, from_chars_result): Add
4484         defaulted equality comparisons for C++20.
4485         * testsuite/20_util/from_chars/compare.cc: New test.
4486         * testsuite/20_util/to_chars/compare.cc: New test.
4488 2020-04-07  Jonathan Wakely  <jwakely@redhat.com>
4490         PR libstdc++/94520
4491         * include/std/charconv (__integer_to_chars_result_type)
4492         (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to
4493         allow use in C++14.
4494         * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace
4495         use of std::string_view with std::string.
4496         * testsuite/20_util/from_chars/2.cc: Likewise.
4497         * testsuite/20_util/to_chars/1.cc: Likewise.
4498         * testsuite/20_util/to_chars/2.cc: Likewise.
4500 2020-04-06  Jonathan Wakely  <jwakely@redhat.com>
4502         PR libstdc++/94498
4503         * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it
4504         usable in constant expressions for C++20.
4505         (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add
4506         _GLIBCXX20_CONSTEXPR.
4507         (std::char_traits<char>, std::char_traits<wchar_t>)
4508         (std::char_traits<char8_t>): Make move, copy and assign usable in
4509         constant expressions for C++20.
4510         (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move
4511         and copy usable in constant expressions for C++20.
4512         * include/std/string_view (basic_string_view::copy): Add
4513         _GLIBCXX20_CONSTEXPR.
4514         * testsuite/21_strings/basic_string_view/operations/copy/char/
4515         constexpr.cc: New test.
4516         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/
4517         constexpr.cc: New test.
4519 2020-04-05  Gerald Pfeifer  <gerald@pfeifer.com>
4521         * doc/xml/manual/appendix_contributing.xml: Refer to Git
4522         documentation instead of Subversion.  Switch to https.
4523         * doc/html/manual/appendix_contributing.html: Regenerate.
4525 2020-04-03  Jonathan Wakely  <jwakely@redhat.com>
4527         PR libstdc++/93960
4528         * include/bits/ptr_traits.h (__to_address): Add special case for debug
4529         iterators, to avoid dereferenceable check.
4530         * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number.
4531         * testsuite/20_util/to_address/debug.cc: New test.
4533 2020-04-01  Andrea Corallo  <andrea.corallo@arm.com>
4535         * testsuite/experimental/net/execution_context/use_service.cc:
4536         Require pthread and gthreads.
4538 2020-04-01  Gerald Pfeifer  <gerald@pfeifer.com>
4540         * doc/xml/manual/appendix_free.xml: Move "free books" list from
4541         fsf.org to gnu.org.
4542         * doc/html/manual/appendix_free.html: Regenerate.
4544 2020-03-31  Ville Voutilainen  <ville.voutilainen@gmail.com>
4546         Library-side tests for parenthesized aggregate init
4548         PR c++/92878
4549         PR c++/92947
4551         * testsuite/20_util/allocator_traits/members/92878_92947.cc: New.
4552         * testsuite/20_util/any/assign/92878_92947.cc: Likewise.
4553         * testsuite/20_util/any/cons/92878_92947.cc: Likewise.
4554         * testsuite/20_util/is_constructible/92878_92947.cc: Likewise.
4555         * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise.
4556         * testsuite/20_util/optional/cons/92878_92947.cc: Likewise.
4557         * testsuite/20_util/pair/cons/92878_92947.cc: Likewise.
4558         * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise.
4559         * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc:
4560         Likewise.
4561         * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise.
4562         * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
4563         * testsuite/20_util/variant/92878_92947.cc: Likewise.
4564         * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc:
4565         Likewise.
4566         * testsuite/23_containers/forward_list/modifiers/92878_92947.cc:
4567         Likewise.
4568         * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc:
4569         Likewise.
4570         * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc:
4571         Likewise.
4572         * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc:
4573         Likewise.
4574         * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc:
4575         Likewise.
4576         * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise.
4577         * testsuite/23_containers/queue/92878_92947.cc: Likewise.
4578         * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc:
4579         Likewise.
4580         * testsuite/23_containers/stack/92878_92947.cc: Likewise.
4581         * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc:
4582         Likewise.
4583         * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc:
4584         Likewise.
4585         * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc:
4586         Likewise.
4587         * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc:
4588         Likewise.
4589         * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc:
4590         Likewise.
4592 2020-03-28  Jonathan Wakely  <jwakely@redhat.com>
4594         * testsuite/20_util/is_constructible/value-2.cc: Fix test to account
4595         for changes due to parenthesized aggregate-initialization in C++20.
4596         * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash
4597         with std::chrono::sys_time in C++20.
4599         * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause
4600         to constrain C++20 versions of comparison operators. Fix backwards
4601         logic of relational operators.
4602         (move_iterator): Use requires-clause to constrain comparison operators
4603         in C++20. Do not declare non-standard same-type overloads for C++20.
4604         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result
4605         of comparisons and check using greedy_ops type.
4606         * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise.
4607         * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant
4608         main function from compile-only test.
4609         * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise.
4611 2020-03-27  Jonathan Wakely  <jwakely@redhat.com>
4613         * include/bits/range_cmp.h (__cpp_lib_ranges): Define.
4614         * include/bits/stl_iterator.h: Check value of __cpp_concepts so that
4615         C++20 concepts are required.
4616         * include/bits/stl_iterator_base_types.h: Likewise.
4617         * include/std/concepts: Likewise.
4618         * include/std/version: Likewise.
4619         * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test
4620         macro.
4622         * include/bits/stl_iterator.h (reverse_iterator::iterator_concept)
4623         (reverse_iterator::iterator_category): Define for C++20.
4624         (reverse_iterator): Define comparison operators correctly for C++20.
4625         (__normal_iterator): Add constraints to comparison operators for C++20.
4626         (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new
4627         overload for input iterators.
4628         (move_iterator): Add constraints to comparison operators for C++20.
4629         Define operator<=> for C++20.
4630         * testsuite/24_iterators/move_iterator/input_iterator.cc: New test.
4631         * testsuite/24_iterators/move_iterator/move_only.cc: New test.
4632         * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test.
4633         * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test.
4635         * include/bits/iterator_concepts.h (__detail::__decay_copy)
4636         (__detail::__member_begin, __detail::__adl_begin): Move here from
4637         <bits/range_access.h>.
4638         (__detail::__ranges_begin, __detail::__range_iter_t): Define.
4639         * bits/range_access.h (__cust_access::__decay_copy)
4640         (__cust_access::__member_begin, __cust_access::__adl_begin): Move to
4641         <bits/iterator_concepts.h>.
4642         (ranges::iterator_t): Use __detail::__range_iter_t.
4643         * include/bits/stl_iterator.h (back_insert_iterator): Simplify
4644         conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members.
4645         (front_insert_iterator): Likewise.
4646         (insert_iterator): Implement changes from P0896R4 for C++20.
4647         * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test.
4648         * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test.
4649         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust
4650         for inclusion in synopsis_c++20.cc which expects different signatures
4651         for some function templates.
4652         * testsuite/24_iterators/insert_iterator/constexpr.cc: New test.
4654         * include/std/type_traits (__is_array_convertible): Move definition
4655         to immediately after is_convertible.
4657 2020-03-26  Jonathan Wakely  <jwakely@redhat.com>
4659         * include/std/chrono (chrono::days, chrono::weeks, chrono::years)
4660         (chrono::months, chrono::sys_days, chrono::local_t)
4661         (chrono::local_time, chrono::local_seconds, chrono::local_days):
4662         Define for C++20.
4663         (chrono::time_point): Add missing static assert.
4664         * testsuite/20_util/time_point/requirements/duration_neg.cc: New test.
4665         * testsuite/std/time/clock/file/overview.cc: New test.
4666         * testsuite/std/time/clock/file/members.cc: New test.
4667         * testsuite/std/time/syn_c++20.cc: New test.
4669 2020-03-25  Mike Crowe  <mac@mcrowe.com>
4671         * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New
4672         test.
4673         * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New
4674         test.
4676 2020-03-25  Jonathan Wakely  <jwakely@redhat.com>
4678         * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ...
4679         * include/std/chrono (filesystem::__file_clock): Here.
4680         (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys):
4681         Define public member functions for C++20.
4682         (is_clock, is_clock_v): Define traits for C++20.
4683         * include/std/condition_variable (condition_variable::wait_until): Add
4684         check for valid clock.
4685         * include/std/future (_State_baseV2::wait_until): Likewise.
4686         * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise.
4687         * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until):
4688         Likewise.
4689         * include/std/thread (this_thread::sleep_until): Likewise.
4690         * testsuite/30_threads/condition_variable/members/2.cc: Qualify
4691         slow_clock with new namespace.
4692         * testsuite/30_threads/condition_variable/members/clock_neg.cc: New
4693         test.
4694         * testsuite/30_threads/condition_variable_any/members/clock_neg.cc:
4695         New test.
4696         * testsuite/30_threads/future/members/clock_neg.cc: New test.
4697         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc:
4698         Qualify slow_clock with new namespace.
4699         * testsuite/30_threads/recursive_timed_mutex/try_lock_until/
4700         clock_neg.cc: New test.
4701         * testsuite/30_threads/shared_future/members/clock_neg.cc: New
4702         test.
4703         * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test.
4704         * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc:
4705         New test.
4706         * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify
4707         slow_clock with new namespace.
4708         * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise.
4709         * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New
4710         test.
4711         * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test.
4712         * testsuite/std/time/traits/is_clock.cc: New test.
4713         * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test
4714         namespace.
4716 2020-03-21  Jonathan Wakely  <jwakely@redhat.com>
4718         PR libstdc++/93245
4719         * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()):
4720         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
4721         Improve test coverage.
4723         PR libstdc++/94242
4724         * include/bits/fs_path.h (path::_S_str_convert): Replace first
4725         parameter with basic_string_view so that strings with different
4726         allocators can be accepted.
4727         (path::generic_string<C,T,A>()): Use basic_string object that uses the
4728         right allocator type.
4729         * testsuite/27_io/filesystem/path/generic/94242.cc: New test.
4730         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve
4731         test coverage.
4733 2020-03-18  Jonathan Wakely  <jwakely@redhat.com>
4735         PR libstdc++/94033
4736         * include/std/type_traits (__is_nt_default_constructible_atom): Remove.
4737         (__is_nt_default_constructible_impl): Remove.
4738         (__is_nothrow_default_constructible_impl): Remove.
4739         (__is_nt_constructible_impl): Add bool template parameter. Adjust
4740         partial specializations.
4741         (__is_nothrow_constructible_impl): Replace class template with alias
4742         template.
4743         (is_nothrow_default_constructible): Derive from alias template
4744         __is_nothrow_constructible_impl instead of
4745         __is_nothrow_default_constructible_impl.
4746         * testsuite/20_util/is_nothrow_constructible/94003.cc: New test.
4748         * include/std/stop_token (stop_token::_Stop_state_ref): Define
4749         comparison operators explicitly if the compiler won't synthesize them.
4751         * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check
4752         __cpp_lib_concepts before using iter_reference_t.
4753         * include/bits/stream_iterator.h (istream_iterator): Check
4754         __cpp_lib_concepts before using default_sentinel_t.
4755         * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise.
4757         PR libstdc++/94203
4758         * include/experimental/executor (executor::executor(Executor)): Call
4759         make_shared directly instead of _M_create. Create _Tgt1 object.
4760         (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)):
4761         Call allocate_shared directly instead of _M_create. Create _Tgt2
4762         object.
4763         (executor::target_type): Add cast needed for new _Tgt interface.
4764         (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func.
4765         (executor::_Tgt): Define the same interface whether RTTI is enabled or
4766         not.
4767         (executor::_Tgt::target_type, executor::_Tgt::target): Do not use
4768         std::type_info in the interface.
4769         (executor::_Tgt::_M_func): Add data member.
4770         (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates.
4771         (executor::_Tgt1::_S_func): Define function to access target without
4772         depending on RTTI.
4773         (executor::_M_create): Remove.
4774         (operator==, operator!=): Simplify comparisons for executor.
4775         * include/experimental/socket (is_error_code_enum<socket_errc>):
4776         Define specialization before use.
4777         * testsuite/experimental/net/executor/1.cc: New test.
4779 2020-03-16  Jonathan Wakely  <jwakely@redhat.com>
4781         PR libstdc++/94199
4782         * include/experimental/executor (service_already_exists): Add default
4783         constructor. Declare make_service to be a friend.
4784         * testsuite/experimental/net/execution_context/make_service.cc: New
4785         test.
4787 2020-03-12  Jonathan Wakely  <jwakely@redhat.com>
4789         * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass
4790         a null pointer to functions with nonnull(1) attribute.
4792 2020-03-11  Patrick Palka  <ppalka@redhat.com>
4794         * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix,
4795         'address' -> 'std::__addressof'.
4796         * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of
4797         a non-forward input_range.
4798         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make
4799         default constructor protected instead of deleted, like with
4800         input_iterator_wrapper.
4801         (test_range::iterator): Add comment explaining that this type is used
4802         only when the underlying wrapper is input_iterator_wrapper or
4803         output_iterator_wrapper.  Remove delegating defaulted constructor so
4804         that the inherited default constructor is used instead.
4806         LWG 3286 ranges::size is not required to be valid after a call to
4807         ranges::begin on an input range
4808         * include/std/ranges (subrange::subrange): Split single-argument
4809         constructor into two, one constrained by _S_store_size and another by
4810         !_S_store_size.
4811         (take_view::begin): Call size() before calling ranges::begin(_M_base).
4812         * testsuite/std/ranges/adaptors/lwg3286.cc: New test.
4813         * testsuite/std/ranges/subrange/lwg3286.cc: New test.
4815 2020-03-10  Jonathan Wakely  <jwakely@redhat.com>
4817         * include/std/ranges (split_view::_OuterIter::__at_end): Use __current
4818         instead of _M_current.
4819         (split_view::_OuterIter::operator++): Likewise.
4821         * include/std/ranges (transform_view::_Iterator::__iter_move): Remove.
4822         (transform_view::_Iterator::operator*): Add noexcept-specifier.
4823         (transform_view::_Iterator::iter_move): Inline __iter_move body here.
4824         (split_view::_OuterIter::__current): Add noexcept.
4825         (split_view::_InnerIter::__iter_swap): Remove.
4826         (split_view::_InnerIter::__iter_move): Remove.
4827         (split_view::_InnerIter::_M_i_current): New accessors.
4828         (split_view::_InnerIter::__at_end): Use _M_i_current().
4829         (split_view::_InnerIter::operator*): Likewise.
4830         (split_view::_InnerIter::operator++): Likewise.
4831         (iter_move(const _InnerIter&)): Likewise.
4832         (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise.
4833         * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier
4834         for iter_move and iter_swap on split_view's inner iterator.
4836         PR c++/94117
4837         * include/std/ranges (ranges::transform_view::_Iterator::iter_move):
4838         Change expression in noexcept-specifier to match function body.
4840         * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add
4841         comment explaining multiple dg-do directives.
4842         * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive
4843         so test is run as well as compiled.
4845 2020-03-09  Jonathan Wakely  <jwakely@redhat.com>
4847         PR libstdc++/94063
4848         * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to
4849         handle concatenations that change the type of the first component.
4850         (path::operator+=(basic_string_view<value_type>)): Likewise.
4851         * testsuite/27_io/filesystem/path/concat/94063.cc: New test.
4853 2020-03-06  Patrick Palka  <ppalka@redhat.com>
4855         * include/std/ranges (join_view::_Sentinel<_Const>): Befriend
4856         join_view::_Sentinel<!_Const>.
4857         * testsuite/std/ranges/adaptors/join.cc: Augment test.
4859         PR libstdc++/93978
4860         * include/bits/range_access.h (__cust_access::_Empty::operator()):
4861         Declare return type to be bool instead of auto.
4862         * testsuite/std/ranges/adaptors/93978.cc: New test.
4864 2020-03-06  Jonathan Wakely  <jwakely@redhat.com>
4866         PR libstdc++/94069
4867         * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
4868         (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect
4869         second argument to __glibcxx_rwlock_init.
4870         * testsuite/30_threads/shared_timed_mutex/94069.cc: New test.
4872         PR libstdc++/93244
4873         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust
4874         test to not fail due to PR 94063.
4875         * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
4876         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
4878 2020-03-06  Andreas Krebbel  <krebbel@linux.ibm.com>
4880         * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it
4881         would match ENOSYS.
4883 2020-03-05  Jonathan Wakely  <jwakely@redhat.com>
4885         * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable.
4886         * testsuite/27_io/filesystem/operations/copy.cc: Fix typo.
4887         * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
4888         * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type
4889         for return value, and in comparison.
4890         * testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
4892         PR libstdc++/94051
4893         * include/std/string_view: Include <bits/ostream_insert.h>.
4894         * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test.
4896 2020-03-04  Jonathan Wakely  <jwakely@redhat.com>
4898         * include/bits/cpp_type_traits.h (__memcpyable): Fix comment.
4900 2020-03-04  Patrick Palka  <ppalka@redhat.com>
4902         PR libstdc++/94017
4903         * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine
4904         condition for when to use memset, making sure to additionally check that
4905         the output pointer's value type is a non-volatile byte type.  Instead of
4906         requiring that the fill type is a byte type, just require that it's an
4907         integral type.
4908         * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc:
4909         New test.
4910         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc:
4911         New test.
4912         * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was
4913         blocked by PR 94017.
4914         * testsuite/25_algorithms/fill/94017.cc: New test.
4915         * testsuite/25_algorithms/fill_n/94017.cc: New test.
4917         LWG 3355 The memory algorithms should support move-only input iterators
4918         introduced by P1207
4919         * include/bits/ranges_uninitialized.h
4920         (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting
4921         to copy __ifirst, which could be a move-only input iterator.  Use
4922         operator- instead of ranges::distance to compute distance from a sized
4923         sentinel.
4924         (__uninitialized_copy_n_fn::operator()): Likewise.
4925         (__uninitialized_move_fn::operator()): Likewise.
4926         (__uninitialized_move_n_fn::operator()): Likewise.
4927         (__uninitialized_destroy_fn::operator()): Use std::move to avoid
4928         attempting to copy __first.
4929         (__uninitialized_destroy_n_fn::operator()): Likewise.
4930         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
4931         Augment test.
4932         * .../specialized_algorithms/uninitialized_copy/constrained.cc:
4933         Likewise.
4934         * .../specialized_algorithms/uninitialized_move/constrained.cc:
4935         Likewise.
4937         * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make
4938         protected instead of private.
4939         (test_sized_range_sized_sent): New.
4941         * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy):
4942         New testsuite iterator.
4943         * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it.
4944         * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise.
4946         * include/bits/ranges_uninitialized.h
4947         (uninitialized_copy_fn::operator()): Pass a reference type as the first
4948         argument to is_nothrow_assignable_v.
4949         (uninitialized_copy_fn::operator()): Likewise.
4950         (uninitialized_move_fn::operator()): Likewise.  Return an in_out_result
4951         with the input iterator stripped of its move_iterator.
4952         (uninitialized_move_n_fn::operator()): Likewise.
4953         (uninitialized_fill_fn::operator()): Pass a reference type as the first
4954         argument to is_nothrow_assignable_v.
4955         (uninitialized_fill_n_fn::operator()): Likewise.
4957 2020-03-03  Jonathan Wakely  <jwakely@redhat.com>
4959         PR libstdc++/94013
4960         * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New
4961         traits to control when to use memmove and memcmp optimizations.
4962         (__is_nonvolatile_trivially_copyable): New helper trait.
4963         * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not
4964         use memcmp optimization with volatile data.
4965         * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable.
4966         (__copy_or_move, __copy_or_move_backward): Use __memcpyable.
4967         * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable.
4968         (__copy_move_backward_a2): Likewise.
4969         (__equal_aux1): Use __memcmpable.
4970         (__lexicographical_compare_aux): Do not use memcmp optimization with
4971         volatile data.
4972         * testsuite/25_algorithms/copy/94013.cc: New test.
4973         * testsuite/25_algorithms/copy_backward/94013.cc: New test.
4974         * testsuite/25_algorithms/equal/94013.cc: New test.
4975         * testsuite/25_algorithms/fill/94013.cc: New test.
4976         * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test.
4977         * testsuite/25_algorithms/move/94013.cc: New test.
4978         * testsuite/25_algorithms/move_backward/94013.cc: New test.
4980         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
4981         Avoid redundant iterator comparisons (LWG 3410).
4983 2020-03-02  Jonathan Wakely  <jwakely@redhat.com>
4985         PR libstdc++/93972
4986         * include/bits/stl_algobase.h (__memcmp): Allow pointer types to
4987         differ.
4988         * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
4990         * include/std/ranges (__detail::__maybe_empty_t): Rename to
4991         __maybe_present_t.
4992         (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
4994         * include/bits/ranges_algo.h (shift_right): Add 'typename' to
4995         dependent type.
4997 2020-03-01  H.J. Lu  <hongjiu.lu@intel.com>
4999         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.
5001 2020-02-29  John David Anglin  <danglin@gcc.gnu.org>
5003         * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*.
5004         * testsuite/17_intro/headers/c++2011/charset.cc: Likewise.
5005         * testsuite/17_intro/headers/c++2014/charset.cc: Likewise.
5006         * testsuite/17_intro/headers/c++2017/charset.cc: Likewise.
5007         * testsuite/17_intro/headers/c++2020/charset.cc: Likewise.
5009         * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
5010         Add libatomic option.
5011         * testsuite/30_threads/jthread/jthread.cc: Likewise.
5013 2020-02-29  François Dumont  <fdumont@gcc.gnu.org>
5015         * include/bits/stl_algo.h
5016         (__find_if, __count_if, __is_permutation, std::is_permutation): Move...
5017         * include/bits/stl_algobase.h: ...here.
5018         * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include.
5020 2020-02-29  John David Anglin  <danglin@gcc.gnu.org>
5022         * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic
5023         option.
5024         * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc:
5025         Likewise.
5026         * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise.
5027         * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise.
5028         * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise.
5029         * testsuite/30_threads/stop_token/stop_source.cc: Likewise.
5030         * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise.
5031         * testsuite/30_threads/stop_token/stop_token.cc: Likewise.
5032         * testsuite/30_threads/stop_token/stop_token/stop_possible.cc:
5033         Likewise.
5035         PR libstdc++/92906
5036         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
5038 2020-02-28  Patrick Palka  <ppalka@redhat.com>
5040         PR libstdc++/93972
5041         * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
5042         Fix condition for when to use memcmp, making it consistent with the
5043         corresponding condition used in std::lexicographical_compare.
5044         * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test.
5046         * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for
5047         functions introduced in C++11, C++17 and C++2a.  Add 'constexpr' to
5048         existing signatures for C++2a.
5050 2020-02-28  Jonathan Wakely  <jwakely@redhat.com>
5052         * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run
5053         test instead of just compiling it.
5055 2020-02-28  Patrick Palka  <ppalka@redhat.com>
5057         * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false
5058         whenever the underlying range models common_range.
5060         * include/std/ranges (__detail::_CachedPosition): New struct.
5061         (views::filter_view::_S_needs_cached_begin): New member variable.
5062         (views::filter_view::_M_cached_begin): New member variable.
5063         (views::filter_view::begin): Use _M_cached_begin to cache its
5064         result.
5065         (views::drop_view::_S_needs_cached_begin): New static member variable.
5066         (views::drop_view::_M_cached_begin): New member variable.
5067         (views::drop_view::begin): Use _M_cached_begin to cache its result
5068         when _S_needs_cached_begin.
5069         (views::drop_while_view::_M_cached_begin): New member variable.
5070         (views::drop_while_view::begin): Use _M_cached_begin to cache its
5071         result.
5072         (views::reverse_view::_S_needs_cached_begin): New static member
5073         variable.
5074         (views::reverse_view::_M_cached_begin): New member variable.
5075         (views::reverse_view::begin): Use _M_cached_begin to cache its result
5076         when _S_needs_cached_begin.
5077         * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that
5078         drop_view::begin caches its result.
5079         * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check
5080         that drop_while_view::begin caches its result.
5081         * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that
5082         filter_view::begin caches its result.
5083         * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that
5084         reverse_view::begin caches its result.
5086 2020-02-28  Jonathan Wakely  <jwakely@redhat.com>
5088         * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for
5089         filesystems that silently truncate timestamps.
5090         * testsuite/experimental/filesystem/operations/last_write_time.cc:
5091         Likewise.
5093         * testsuite/21_strings/basic_string/cons/char/1.cc: Disable
5094         -Wstringop-overflow warnings.
5096 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
5098         * testsuite/lib/libstdc++.exp (v3_target_compile): Add
5099         -fdiagnostics-urls=never to options.
5101 2020-02-27  Patrick Palka  <ppalka@redhat.com>
5103         * include/std/ranges (transform_view::_Iterator<_Const>): Befriend
5104         _Iterator<!_Const>.
5105         (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>.
5106         (take_view::_Sentinel<_Const>): Likewise.
5107         (take_while_view::_Sentinel<_Const>): Likewise.
5108         (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>.
5109         * testsuite/std/ranges/adaptors/split.cc: Augment test.
5110         * testsuite/std/ranges/adaptors/take.cc: Augment test.
5111         * testsuite/std/ranges/adaptors/take_while.cc: Augment test.
5112         * testsuite/std/ranges/adaptors/transform.cc: Augment test.
5114         * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the
5115         base() of a vector<>::iterator is a pointer.
5116         * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise.
5117         * testsuite/25_algorithms/move/constrained.cc: Likewise.
5118         * testsuite/25_algorithms/move_backward/constrained.cc: Likewise.
5119         * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data()
5120         instead of &foo[0].
5121         * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise.
5122         * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise.
5123         * testsuite/25_algorithms/shuffle/constrained.cc: Likewise.
5124         * testsuite/25_algorithms/sort/constrained.cc: Likewise.
5125         * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise.
5127 2020-02-27  Jonathan Wakely  <jwakely@redhat.com>
5129         * include/debug/array (operator<=>): Define for C++20.
5130         * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
5131         Adjust dg-error line numbers.
5132         * testsuite/23_containers/array/tuple_interface/
5133         tuple_element_debug_neg.cc: Likewise.
5135         * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before
5136         defining _GLIBCXX_ASSERTIONS.
5137         * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise.
5138         * testsuite/23_containers/span/first_assert_neg.cc: Likewise.
5139         * testsuite/23_containers/span/front_assert_neg.cc: Likewise.
5140         * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise.
5141         * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise.
5142         * testsuite/23_containers/span/last_assert_neg.cc: Likewise.
5143         * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise.
5144         * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise.
5145         * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise.
5146         * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise.
5147         * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise.
5148         * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise.
5150         * include/debug/string (__gnu_debug::basic_string::insert): Fix for
5151         C++98 where the member function of the base class returns void.
5153         * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add
5154         equality comparisons that support value-initialized iterators.
5156         * include/bits/boost_concept_check.h (__function_requires): Add
5157         _GLIBCXX14_CONSTEXPR.
5158         * testsuite/25_algorithms/min/concept_checks.cc: New test.
5160 2020-02-26  Patrick Palka  <ppalka@redhat.com>
5162         PR libstdc++/93936
5163         * include/std/ranges (split_view::_InnerIter::operator==): Compare
5164         the operands' _M_i rather than their _M_i.current().
5165         * testsuite/std/ranges/adaptors/split.cc: Augment test.
5167         P1645R1 constexpr for <numeric> algorithms
5168         * include/bits/stl_numeric.h (iota, accumulate, inner_product,
5169         partial_sum, adjacent_difference): Make conditionally constexpr for
5170         C++20.
5171         * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature
5172         test macro.
5173         (reduce, transform_reduce, exclusive_scan, inclusive_scan,
5174         transform_exclusive_scan, transform_inclusive_scan): Make conditionally
5175         constexpr for C++20.
5176         * include/std/version (__cpp_lib_constexpr_numeric): Define.
5177         * testsuite/26_numerics/accumulate/constexpr.cc: New test.
5178         * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise.
5179         * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise.
5180         * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise.
5181         * testsuite/26_numerics/inner_product/constexpr.cc: Likewise.
5182         * testsuite/26_numerics/iota/constexpr.cc: Likewise.
5183         * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise.
5184         * testsuite/26_numerics/reduce/constexpr.cc: Likewise.
5185         * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise.
5186         * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise.
5187         * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise.
5189 2020-02-26  Jonathan Wakely  <jwakely@redhat.com>
5191         * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare
5192         variables in smaller scope and avoid calling ranges::distance when we
5193         know they are pointers. Remove statically-unreachable use of
5194         __builtin_unreachable().
5195         * include/bits/stl_algobase.h (__lexicographical_compare::__lc):
5196         Define inline.
5198         * include/std/ranges (__detail::__maybe_empty_t): Define new helper
5199         alias.
5200         (__detail::__maybe_const_t): Likewise.
5201         (__adaptor::_RangeAdaptor): Use __maybe_empty_t.
5202         (transform_view, take_view, take_while_view, elements_view): Use
5203         __maybe_const_t.
5204         (join_view, split_view): Use both.
5206 2020-02-25  Patrick Palka  <ppalka@redhat.com>
5208         LWG 3397 basic_istream_view::iterator should not provide
5209         iterator_category
5210         * include/std/ranges (basic_istream_view:_Iterator::iterator_category):
5211         Rename to ...
5212         (basic_istream_view:_Iterator::iterator_concept): ... this.
5213         * testsuite/std/ranges/istream_view.cc: Augment test.
5215         LWG 3325 Constrain return type of transformation function for
5216         transform_view
5217         * include/std/ranges (transform_view): Constrain the return type of the
5218         transformation function as per LWG 3325.
5219         * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test.
5221         LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained
5222         * include/std/ranges (join_view::_Iterator::operator--): Require that
5223         range_reference_t<_Base> models common_range.
5224         * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test.
5226         LWG 3301 transform_view::_Iterator has incorrect iterator_category
5227         * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust
5228         determination of iterator_category as per LWG 3301.
5229         * testsuite/std/ranges/adaptors/transform.cc: Augment test.
5231         LWG 3292 iota_view is under-constrained
5232         * include/std/ranges (iota_view): Require that _Winc models semiregular
5233           as per LWG 3292.
5234         * testsuite/std/ranges/iota/lwg3292_neg.cc: New test.
5236 2020-02-25  Jonathan Wakely  <jwakely@redhat.com>
5238         * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove
5239         during constant evaluation. Call __builtin_memmove directly instead of
5240         __memmove.
5241         (__copy_or_move_backward): Likewise.
5242         * include/bits/stl_algobase.h (__memmove): Remove.
5243         (__copy_move<M, true, random_access_iterator_tag>::__copy_m)
5244         (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m):
5245         Use __builtin_memmove directly instead of __memmove.
5246         (__copy_move_a2): Do not use memmove during constant evaluation.
5247         (__copy_move_backward_a2): Use _IsMove constant to select correct
5248         __copy_move_backward specialization.
5249         * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies
5250         begin turned into moves during constant evaluation.
5252         * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of
5253         previous commit.
5255         PR libstdc++/93872
5256         * include/bits/stl_algobase.h (__memmove): Cast away const before
5257         doing move assignment.
5258         * testsuite/25_algorithms/move/93872.cc: New test.
5259         * testsuite/25_algorithms/move_backward/93872.cc: New test.
5261 2020-02-24  Patrick Palka  <ppalka@redhat.com>
5263         PR libstdc++/93884
5264         * include/bits/ranges_algobase.h (__copy_or_move,
5265         __copy_or_move_backward): Don't inspect the iter_value_t of the output
5266         iterator, instead inspect its iterator_traits directly.
5267         * include/bits/stl_iterator.h (back_insert_iterator::container):
5268         Conditionally initialize.
5269         (back_insert_iterator::difference_type): Conditionally define.
5270         (back_insert_iterator::back_insert_iterator): Conditionally define this
5271         default constructor.
5272         (front_insert_iterator::container): Conditionally initialize.
5273         (front_insert_iterator::difference_type): Conditionally define.
5274         (front_insert_iterator::front_insert_iterator): Conditionally define
5275         this default constructor.
5276         * 24_iterators/back_insert_iterator/pr93884.cc: New test.
5277         * 24_iterators/front_insert_iterator/pr93884.cc: New test.
5279         P0769R2 Add shift to <algorithm>
5280         * include/bits/ranges_algo.h (shift_left, shift_right): New.
5281         * testsuite/25_algorithms/shift_left/1.cc: New test.
5282         * testsuite/25_algorithms/shift_right/1.cc: New test.
5284 2020-02-24  Jonathan Wakely  <jwakely@redhat.com>
5286         * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5287         Make noexcept-specifier conditional.
5288         * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check
5289         noexcept-specifier.
5291         * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)):
5292         Add constructor.
5293         (operator==(istream_iterator, default_sentinel_t)): Add operator.
5294         (ostream_iterator::difference_type): Define to ptrdiff_t for C++20.
5295         * include/bits/streambuf_iterator.h
5296         (istreambuf_iterator(default_sentinel_t)): Add constructor.
5297         (operator==(istreambuf_iterator, default_sentinel_t)): Add operator.
5298         * testsuite/24_iterators/istream_iterator/cons/sentinel.cc:
5299         New test.
5300         * testsuite/24_iterators/istream_iterator/sentinel.cc: New test.
5301         * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
5302         New test.
5303         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test.
5305         * include/std/ranges (__deep_const_range, __enable_view_impl): Remove.
5306         (ranges::enable_view): Simplify (LWG 3326).
5307         * include/bits/range_access.h (ranges::enable_view): Declare.
5308         * include/bits/regex.h (__enable_view_impl): Remove partial
5309         specialization.
5310         * include/bits/stl_multiset.h (__enable_view_impl): Likewise.
5311         * include/bits/stl_set.h (__enable_view_impl): Likewise.
5312         * include/bits/unordered_set.h (__enable_view_impl): Likewise.
5313         * include/debug/multiset.h (__enable_view_impl): Likewise.
5314         * include/debug/set.h (__enable_view_impl): Likewise.
5315         * include/debug/unordered_set (__enable_view_impl): Likewise.
5316         * include/experimental/string_view (ranges::enable_view): Define
5317         partial specialization.
5318         * include/std/span (ranges::enable_view): Likewise.
5319         * include/std/string_view (ranges::enable_view): Likewise.
5320         * testsuite/std/ranges/view.cc: Check satisfaction of updated concept.
5322 2020-02-21  Jonathan Wakely  <jwakely@redhat.com>
5324         * include/std/optional (operator<=>(optional<T>, optional<U>))
5325         (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)):
5326         Define for C++20.
5327         * include/std/tuple (__tuple_cmp): New helper function for <=>.
5328         (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20.
5329         * include/std/variant (operator<=>(variant<T...>, variant<T...>))
5330         (operator<=>(monostate, monostate)): Define for C++20.
5331         * testsuite/20_util/optional/relops/three_way.cc: New test.
5332         * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test.
5333         * testsuite/20_util/variant/89851.cc: Move to ...
5334         * testsuite/20_util/variant/relops/89851.cc: ... here.
5335         * testsuite/20_util/variant/90008.cc: Move to ...
5336         * testsuite/20_util/variant/relops/90008.cc: ... here.
5337         * testsuite/20_util/variant/relops/three_way.cc: New test.
5339 2020-02-20  Patrick Palka  <ppalka@redhat.com>
5341         * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility
5342         function.
5343         (views::__adaptor::_RangeAdaptor::operator()): Add comments.  Use
5344         __maybe_refwrap to capture lvalue references by reference, and then use
5345         unwrap_reference_t to forward the by-reference captures as references.
5346         * testsuite/std/ranges/adaptors/split.cc: Augment test.
5347         * testsuite/std/ranges/adaptors/split_neg.cc: New test.
5349         * include/std/ranges (iota_view): Forward declare _Sentinel.
5350         (iota_view::_Iterator): Befriend _Sentinel.
5351         (iota_view::_Sentinel::_M_equal): New member function.
5352         (iota_view::_Sentinel::operator==): Use it.
5353         (views::_Iota::operator()): Forward __f using the correct type.
5354         * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota
5355         with integers of different signedness, to appease iota_view's deduction
5356         guide.
5357         * testsuite/std/ranges/iota/iota_view.cc: Augment test.
5359 2020-02-20  Jonathan Wakely  <jwakely@redhat.com>
5361         * include/bits/range_access.h (ranges::begin): Reject array of
5362         incomplete type.
5363         (ranges::end, ranges::size): Require arrays to be bounded.
5364         (ranges::data): Require lvalue or borrowed_range.
5365         (ranges::iterator_t): Remove constraint.
5366         * testsuite/std/ranges/access/begin.cc: Do not check array of
5367         incomplete type.
5368         * testsuite/std/ranges/access/begin_neg.cc: New test.
5369         * testsuite/std/ranges/access/end_neg.cc: Adjust expected error.
5370         * testsuite/std/ranges/access/size_neg.cc: Adjust expected error.
5371         * testsuite/std/ranges/access/ssize.cc: Do not check array of
5372         incomplete type.
5374         * include/std/system_error (error_category::operator<=>)
5375         (operator<=>(const error_code&, const error_code&))
5376         (operator<=>(const error_condition&, const error_condition&)): Define
5377         for C++20.
5378         * testsuite/19_diagnostics/error_category/operators/less.cc: New test.
5379         * testsuite/19_diagnostics/error_category/operators/three_way.cc: New
5380         test.
5381         * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove
5382         incorrect comment.
5383         * testsuite/19_diagnostics/error_code/operators/less.cc: New test.
5384         * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove
5385         incorrect comment.
5386         * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test.
5387         * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove
5388         incorrect comment.
5389         * testsuite/19_diagnostics/error_condition/operators/less.cc: New test.
5390         * testsuite/19_diagnostics/error_condition/operators/not_equal.cc:
5391         Remove incorrect comment.
5392         * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New
5393         test.
5395         * libsupc++/typeinfo (type_info::operator!=): Remove for C++20.
5397         * include/std/thread (thread::id::operator<=>): Define for C++20.
5398         * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of
5399         functions in namespace std.
5400         * testsuite/30_threads/thread/id/operators_c++20.cc: New test.
5402 2020-02-19  Patrick Palka  <ppalka@redhat.com>
5404         * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the
5405         null terminator of the underlying string as part of the test_range.
5406         (main): Call test03.
5408 2020-02-19  Jonathan Wakely  <jwakely@redhat.com>
5410         * include/bits/stl_iterator.h (common_iterator): Add copyable<I>
5411         requirement (LWG 3385).
5412         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust
5413         expected declaration.
5415         * include/std/ranges (take_while_view, drop_view, drop_while_view)
5416         (elements_view:_Iterator): Initialize data members (LWG 3364).
5418         * libsupc++/compare (three_way_comparable): Remove always-false check
5419         that should have been removed with weak_equality (P1959R0).
5420         (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360).
5422         * include/std/concepts (__detail::__partially_ordered_with): Move here
5423         from <compare>.
5424         (totally_ordered, totally_ordered_with): Use __partially_ordered_with
5425         to simplify definition (LWG 3331).
5426         * libsupc++/compare (__detail::__partially_ordered_with): Move to
5427         <concepts>.
5429         * include/std/concepts (totally_ordered_with): Remove redundant
5430         requirement (LWG 3329).
5432         * include/std/ranges (__detail::__convertible_to_non_slicing): New
5433         helper concept.
5434         (__detail::__pair_like_convertible_to): Remove.
5435         (__detail::__pair_like_convertible_from): Add requirements for
5436         non-slicing conversions.
5437         (subrange): Constrain constructors with __convertible_to_non_slicing.
5438         Remove constructors from pair-like types. Add new deduction guide.
5439         * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test.
5441         * include/bits/iterator_concepts.h (iter_move): Add declaration to
5442         prevent unqualified lookup finding a suitable declaration (LWG 3247).
5444         * include/std/memory_resource (polymorphic_allocator::allocate)
5445         (polymorphic_allocator::allocate_object): Change type of exception to
5446         bad_array_new_length (LWG 3237).
5447         * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test.
5449         * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348).
5450         * include/std/version (__cpp_lib_unwrap_ref): Likewise.
5451         * testsuite/20_util/unwrap_reference/1.cc: Check macro.
5452         * testsuite/20_util/unwrap_reference/3.cc: New test.
5454         * include/std/numeric (midpoint(T8, T*)): Do not check for complete
5455         type during overload resolution, use static assert instead (LWG 3200).
5456         * testsuite/26_numerics/midpoint/pointer.cc: Do not test with
5457         incomplete type.
5458         * testsuite/26_numerics/midpoint/pointer_neg.cc: New test.
5460         * include/std/span (span(T (&)[N])): Use non-deduced context to
5461         prevent first parameter from interfering with class template argument
5462         deduction (LWG 3369).
5463         * testsuite/23_containers/span/deduction.cc: Add missing 'const'.
5464         * testsuite/23_containers/span/lwg3255.cc: Check for construction from
5465         rvalues.
5467         * include/std/span (span::const_iterator, span::const_reverse_iterator)
5468         (span::cbegin(), span::cend(), span::crbegin(), span::crend()):
5469         Remove (LWG 3320).
5470         * testsuite/23_containers/span/everything.cc: Replace uses of cbegin
5471         and cend.
5472         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc:
5473         Likewise.
5474         * testsuite/20_util/specialized_algorithms/uninitialized_copy/
5475         constrained.cc: Likewise.
5476         * testsuite/20_util/specialized_algorithms/
5477         uninitialized_default_construct/constrained.cc: Likewise.
5478         * testsuite/20_util/specialized_algorithms/uninitialized_fill/
5479         constrained.cc: Likewise.
5480         * testsuite/20_util/specialized_algorithms/uninitialized_move/
5481         constrained.cc: Likewise.
5482         * testsuite/20_util/specialized_algorithms/
5483         uninitialized_value_construct/constrained.cc: Likewise.
5485         * include/bits/range_access.h (range_size_t): Define alias template.
5486         * include/std/ranges (all_view): Rename to views::all_t (LWG 3335).
5487         * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name.
5489         * include/std/ranges (filter_view, transform_view, take_view)
5490         (join_view, split_view, reverse_view): Remove commented-out converting
5491         constructors (LWG 3280).
5493         * include/std/memory (uninitialized_construct_using_allocator): Use
5494         std::construct_at (LWG 3321).
5496         * include/std/memory_resource (polymorphic_allocator::allocate_bytes)
5497         (polymorphic_allocator::allocate_object)
5498         (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304).
5500         LWG 3379. "safe" in several library names is misleading
5501         * include/bits/range_access.h (enable_safe_range): Rename to
5502         enable_borrowed_range.
5503         (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range.
5504         (safe_range): Rename to borrowed_range.
5505         * include/bits/ranges_algo.h: Adjust to use new names.
5506         * include/bits/ranges_algobase.h: Likewise.
5507         * include/bits/ranges_uninitialized.h: Likewise.
5508         * include/std/ranges: Likewise.
5509         (safe_iterator_t): Rename to borrowed_iterator_t.
5510         (safe_subrange_t): Rename to borrowed_subrange_t.
5511         * include/std/span: Adjust to use new names.
5512         * include/std/string_view: Likewise.
5513         * include/experimental/string_view: Likewise.
5514         * testsuite/std/ranges/access/begin.cc: Likewise.
5515         * testsuite/std/ranges/access/cbegin.cc: Likewise.
5516         * testsuite/std/ranges/access/cdata.cc: Likewise.
5517         * testsuite/std/ranges/access/cend.cc: Likewise.
5518         * testsuite/std/ranges/access/crbegin.cc: Likewise.
5519         * testsuite/std/ranges/access/crend.cc: Likewise.
5520         * testsuite/std/ranges/access/data.cc: Likewise.
5521         * testsuite/std/ranges/access/end.cc: Likewise.
5522         * testsuite/std/ranges/access/rbegin.cc: Likewise.
5523         * testsuite/std/ranges/access/rend.cc: Likewise.
5524         * testsuite/std/ranges/safe_range.cc: Likewise.
5525         * testsuite/std/ranges/safe_range_types.cc: Likewise.
5526         * testsuite/util/testsuite_iterators.h: Likewise.
5528         * include/std/ranges (tuple_element<0, const subrange<I, S, K>>)
5529         (tuple_element<1, const subrange<I, S, K>>): Add partial
5530         specializations (LWG 3398).
5531         * testsuite/std/ranges/subrange/tuple_like.cc: New test.
5533         * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
5534         (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
5535         (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
5537 2020-02-18  Patrick Palka  <ppalka@redhat.com>
5539         P1983R0 Wording for GB301, US296, US292, US291, and US283
5540         * include/std/ranges (filter_view::pred): New member function.
5541         (join_view::_Iterator::_Iterator): Remove now-redundant comment since
5542         P1983R0 fixes the highlighted issue in the same way.
5543         (join_view::_Iterator<_Const>): Add friend
5544         join_view::_Iterator<!_Const>.
5545         (join_view::_M_inner): Remove mutable specifier, effectively reverting
5546         the proposed wording changes of P3278.
5547         (join_view::begin): Refine the condition for when to return a const
5548         iterator.
5549         (split_view::_OuterIter::_OuterIter): Adjust constraints.
5550         * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred
5551         exists and works.
5553 2020-02-18  Jonathan Wakely  <jwakely@redhat.com>
5555         PR libstdc++/93818
5556         * include/std/ranges (_RangeAdaptor): Add deduction guide.
5557         (filter_view::_Iterator): Add alias _Vp_iter and use in place of
5558         iterator_t<_Vp>.
5559         (filter_view::_Iterator::_S_iter_cat()): Add 'typename'.
5560         (transform_view::_Iterator): Add alias _Base_iter and use in place of
5561         iterator_t<_Base>.
5562         (transform_view::_Iterator::_S_iter_cat()): Add 'typename'.
5563         (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases.
5564         (join_view::_Iterator::_S_iter_cat()): Add 'typename'.
5565         (split_view::_InnerIter::_S_iter_cat()): Likewise.
5567         * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid
5568         assumption that long is wider than int.
5569         * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise.
5570         * testsuite/20_util/integer_comparisons/less.cc: Likewise.
5571         * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise.
5572         * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise.
5574         P1976R2 Fixed-size span construction from dynamic range
5575         * include/std/span (__cpp_lib_span): Update value.
5576         (span(It, size_type), span(It, End)): Make conditionally explicit. Add
5577         assertion.
5578         (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax
5579         constraints.
5580         (span::first<Count>(), span::last<Count>()): Use explicit type in
5581         return statement.
5582         (as_bytes, as_writable_bytes): Likewise.
5583         * include/std/version (__cpp_lib_span): Update value.
5584         * testsuite/23_containers/span/1.cc: Check new value.
5585         * testsuite/23_containers/span/2.cc: Check new value.
5586         * testsuite/23_containers/span/explicit.cc: New test.
5588         * include/std/span (span::__is_compatible_array): Simplify alias
5589         template by using requires-clause.
5590         (span::__is_compatible_ref): New alias template for constraining
5591         constructors.
5592         (span::__is_compatible_iterator, span::__is_compatible_range): Remove.
5593         (span(It, size_type), span(It, End)): Use __is_compatible_ref.
5594         (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove
5595         redundant parentheses.
5596         (span(R&&)): Add missing constraints.
5598         * include/std/span (span): Reorder members and rename template
5599         parameters to match declarations in the C++2a working paper.
5601         P2116R0 Remove tuple-like protocol support from fixed-extent span
5602         * include/std/span (get, tuple_size, tuple_element): Remove.
5603         * testsuite/23_containers/span/everything.cc: Remove checks for
5604         tuple-like API.
5605         * testsuite/23_containers/span/get_neg.cc: Remove.
5606         * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove.
5607         * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove.
5608         * testsuite/23_containers/span/tuple_size_neg.cc: Remove.
5610 2020-02-17  Patrick Palka  <ppalka@redhat.com>
5612         P2106R0 Alternative wording for GB315 and GB316
5613         * include/bits/ranges_algo.h (in_fun_result): New.
5614         (for_each_result, for_each_n_result): Change into an alias of
5615         in_fun_result.
5616         (in_in_result): New.
5617         (mismatch_result): Change into an alias of in_in_result.
5618         (copy_if_result): Change into an alias of in_out_result.
5619         (swap_ranges_result): Change into an alias of in_in_result.
5620         (unary_transform_result): Change into an alias of in_out_result.
5621         (in_in_out_result): New.
5622         (binary_transform_result): Change into an alias of in_in_out_result.
5623         (replace_copy_result, replace_copy_if_result, remove_copy_if_result,
5624         remove_copy_result, unique_copy_result, reverse_copy_result,
5625         rotate_copy_result, partial_sort_copy_result): Change into an alias of
5626         in_out_result.
5627         (in_out_out_result): New.
5628         (partition_copy_result, merge_result): Change into an alias of
5629         in_out_out_result.
5630         (set_union_result, set_intersection_result): Change into an alias of
5631         in_in_out_result.
5632         (set_difference_result): Change into an alias of in_out_result.
5633         (set_symmetric_difference): Change into an alias of in_in_out_result.
5634         (min_max_result): New.
5635         (minmax_result, minmax_element_result): Change into an alias of
5636         min_max_result.
5637         (in_found_result): New.
5638         (next_permutation_result, prev_permutation_result): Change into an alias
5639         of in_found_result.
5640         (__next_permutation_fn::operator(), __prev_permutation_fn::operator()):
5641         Adjust following changes to next_permutation_result and
5642         prev_permutation_result.
5643         * include/bits/ranges_algobase.h (in_out_result): New.
5644         (copy_result, move_result, move_backward_result, copy_backward_result,
5645         copy_n_result): Change into an alias of in_out_result.
5646         * include/bits/ranges_uninitialized.h (uninitialized_copy_result,
5647         uninitialized_copy_n_result, uninitialized_move_result,
5648         uninitialized_move_n_result): Likewise.
5649         * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of
5650         structured bindings.
5651         * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise.
5653         P1243R4 Rangify new algorithms
5654         * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn,
5655         for_each_n, __sample_fn, sample, __clamp_fn, clamp): New.
5656         * testsuite/25_algorithms/clamp/constrained.cc: New test.
5657         * testsuite/25_algorithms/for_each/constrained.cc: Augment test.
5658         * testsuite/25_algorithms/sample/constrained.cc: New test.
5660 2020-02-17  Jonathan Wakely  <jwakely@redhat.com>
5662         P1964R2 Wording for boolean-testable
5663         * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
5664         (__adjacent_find_fn): Cast result of predicate to bool.
5665         * include/std/concepts (__boolean): Remove.
5666         (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add
5667         new helper concepts.
5668         (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with)
5669         (predicate): Use __boolean_testable instead of boolean.
5670         * libsupc++/compare (__detail::__partially_ordered, _Synth3way):
5671         Likewise.
5673         P1970R2 Consistency for size() functions: Add ranges::ssize
5674         * include/bits/range_access.h (_SSize, ssize): Define for C++20.
5675         * testsuite/std/ranges/access/ssize.cc: New test.
5677         P1956R1 On the names of low-level bit manipulation functions
5678         * include/bits/hashtable_policy.h: Update comment.
5679         * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename.
5680         (ispow2, ceil2, floor2, log2p1): Likewise.
5681         (__cpp_lib_int_pow2): Add feature test macro.
5682         * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1.
5683         * include/std/memory (assume_aligned): Adjust use of ispow2.
5684         * include/std/version (__cpp_lib_int_pow2): Add.
5685         * libsupc++/new_opa.cc: Adjust use of __ispow2.
5686         * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1.
5687         * testsuite/17_intro/freestanding.cc: Adjust use of ispow2.
5688         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ...
5689         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here.
5690         * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ...
5691         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here.
5692         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ...
5693         * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here.
5694         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ...
5695         * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here.
5696         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ...
5697         * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here.
5699         * include/std/charconv: Add comment.
5701         PR libstdc++/92546 (partial)
5702         * include/bits/random.h (uniform_random_bit_generator): Move definition
5703         to <bits/uniform_int_dist.h>.
5704         * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead
5705         of <bits/random.h>.
5706         * include/bits/ranges_algobase.h: Do not include <cmath>.
5707         * include/bits/uniform_int_dist.h (uniform_random_bit_generator):
5708         Move here.
5709         * include/std/ranges: Do not include <limits>.
5710         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5712         PR libstdc++/92546 (partial)
5713         * include/Makefile.am: Add new header.
5714         * include/Makefile.in: Regenerate.
5715         * include/bits/int_limits.h: New header.
5716         * include/bits/parse_numbers.h (__select_int::_Select_int): Replace
5717         numeric_limits with __detail::__int_limits.
5718         * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one)
5719         (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1):
5720         Likewise.
5721         * include/std/charconv (__to_chars_8, __from_chars_binary)
5722         (__from_chars_alpha_to_num, from_chars): Likewise.
5723         * include/std/memory_resource (polymorphic_allocator::allocate)
5724         (polymorphic_allocator::allocate_object): Likewise.
5725         * include/std/string_view (basic_string_view::_S_compare): Likewise.
5726         * include/std/utility (in_range): Likewise.
5727         * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for
5728         extra error about incomplete type __int_limits<bool>.
5729         * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>.
5730         * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
5731         * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
5732         * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
5733         * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
5734         * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise.
5735         * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise.
5736         * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise.
5737         * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise.
5738         * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise.
5739         * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
5740         * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise.
5742         * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update
5743         value for partial_ordering::unordered.
5745         * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add
5746         const-qualified expression variations.
5747         * include/std/concepts (copyable): Likewise.
5749         * include/std/type_traits (__is_standard_integer): New helper trait.
5750         * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater)
5751         (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20.
5752         * include/std/version (__cpp_lib_integer_comparison_functions): Define.
5753         * testsuite/20_util/integer_comparisons/1.cc: New test.
5754         * testsuite/20_util/integer_comparisons/2.cc: New test.
5755         * testsuite/20_util/integer_comparisons/equal.cc: New test.
5756         * testsuite/20_util/integer_comparisons/equal_neg.cc: New test.
5757         * testsuite/20_util/integer_comparisons/greater_equal.cc: New test.
5758         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test.
5759         * testsuite/20_util/integer_comparisons/greater_neg.cc: New test.
5760         * testsuite/20_util/integer_comparisons/in_range.cc: New test.
5761         * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test.
5762         * testsuite/20_util/integer_comparisons/less.cc: New test.
5763         * testsuite/20_util/integer_comparisons/less_equal.cc: New test.
5764         * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test.
5765         * testsuite/20_util/integer_comparisons/less_neg.cc: New test.
5766         * testsuite/20_util/integer_comparisons/not_equal.cc: New test.
5767         * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test.
5769 2020-02-16  Patrick Palka  <ppalka@redhat.com>
5771         * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()):
5772         Move code after an early exit constexpr if to under an else branch.
5773         * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise.
5775 2020-02-15  Patrick Palka  <ppalka@redhat.com>
5777         * include/bits/ranges_algo.h: Adjust whitespace and formatting.
5778         * include/bits/ranges_algobase.h: Likewise.
5779         * include/bits/ranges_uninitialized.h: Likewise.
5781         * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of,
5782         binary_search, copy_if, count, count_if, equal_range, find, find_end,
5783         find_first_of, find_if, find_if_not, for_each, generate, generate_n,
5784         includes, inplace_merge, is_heap, is_heap_until, is_partitioned,
5785         is_permutation, is_sorted, is_sorted_until, lexicographical_compare,
5786         lower_bound, make_heap, max, max_element, merge, min, min_element,
5787         minmax, minmax_element, mismatch, next_permutation, none_of,
5788         nth_element, partial_sort, partial_sort_copy, partition, partition_copy,
5789         partition_point, pop_heap, prev_permutation, push_heap, remove,
5790         remove_copy, remove_copy_if, remove_if, replace, replace_copy,
5791         replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy,
5792         search, search_n, set_difference, set_intersection,
5793         set_symmetric_difference, set_union, shuffle, sort, sort_heap,
5794         stable_partition, stable_sort, swap_ranges, transform, unique,
5795         unique_copy, upper_bound): Convert into function objects.
5796         * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n,
5797         fill, move_backward, copy_backward): Likewise.
5798         * include/bits/ranges_uninitialized.h (uninitialized_default_construct,
5799         uninitialized_default_construct_n, uninitialized_value_construct,
5800         uninitialized_value_construct_n, uninitialized_copy,
5801         uninitialized_copy_n, uninitialized_move, uninitialized_move_n,
5802         uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at,
5803         destroy, destroy_n): Likewise.
5805         * include/bits/ranges_algo.h (ranges::__find_end): Fold into ...
5806         (ranges::find_end): ... here.
5807         (ranges::__lexicographical_compare): Fold into ...
5808         (ranges::lexicographical_compare): ... here.
5809         * include/bits/ranges_algobase.h (ranges::__equal): Fold into ...
5810         (ranges::equal): ... here.
5812 2020-02-15  Jonathan Wakely  <jwakely@redhat.com>
5814         * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L.
5815         * include/std/deque: Likewise.
5816         * include/std/forward_list: Likewise.
5817         * include/std/list: Likewise.
5818         * include/std/string: Likewise.
5819         * include/std/vector: Likewise.
5820         * include/std/version: Likewise.
5821         * testsuite/23_containers/deque/erasure.cc: Test for new value.
5822         * testsuite/23_containers/forward_list/erasure.cc: Likewise.
5823         * testsuite/23_containers/list/erasure.cc: Likewise.
5824         * testsuite/23_containers/map/erasure.cc: Likewise.
5825         * testsuite/23_containers/set/erasure.cc: Likewise.
5826         * testsuite/23_containers/unordered_map/erasure.cc: Likewise.
5827         * testsuite/23_containers/unordered_set/erasure.cc: Likewise.
5828         * testsuite/23_containers/vector/erasure.cc: Likewise.
5830 2020-02-15  Jonathan Wakely  <jwakely@redhat.com>
5832         * include/bits/random.h (uniform_random_bit_generator): Require min()
5833         and max() to be constant expressions and min() to be less than max().
5834         * testsuite/26_numerics/random/concept.cc: Check additional cases.
5835         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno.
5837 2020-02-13  Patrick Palka  <ppalka@redhat.com>
5839         * include/Makefile.am: Add <bits/ranges_uninitialized.h>.
5840         * include/Makefile.in: Regenerate.
5841         * include/bits/ranges_uninitialized.h: New header.
5842         * include/std/memory: Include it.
5843         * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New
5844         test.
5845         * .../uninitialized_copy/constrained.cc: New test.
5846         * .../uninitialized_default_construct/constrained.cc: New test.
5847         * .../uninitialized_fill/constrained.cc: New test.
5848         * .../uninitialized_move/constrained.cc: New test.
5849         * .../uninitialized_value_construct/constrained.cc: New test.
5851         * include/Makefile.am: Add bits/ranges_algobase.h
5852         * include/Makefile.in: Regenerate.
5853         * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor
5854         existing #includes.
5855         (__detail::__is_normal_iterator, __detail::is_reverse_iterator,
5856         __detail::__is_move_iterator, copy_result, move_result,
5857         __equal, equal, copy_result, move_result, move_backward_result,
5858         copy_backward_result, __copy_or_move_backward, __copy_or_move, copy,
5859         move, copy_backward, move_backward, copy_n_result, copy_n, fill_n,
5860         fill): Split out into ...
5861         * bits/range_algobase.h: ... this new header.
5863 2020-02-12  Patrick Palka  <ppalka@redhat.com>
5865         LWG 3389 and LWG 3390
5866         * include/bits/stl_iterator.h (move_move_iterator): Use std::move when
5867         constructing the move_iterator with __i.
5868         (counted_iterator::counted_iterator): Use std::move when initializing
5869         M_current with __i.
5870         * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test.
5871         * testsuite/24_iterators/move_iterator/lwg3390.cc: New test.
5873 2020-02-12  Sandra Loosemore  <sandra@codesourcery.com>
5875         PR libstdc++/79193
5876         PR libstdc++/88999
5878         * configure: Regenerated.
5880 2020-02-12  François Dumont  <fdumont@gcc.gnu.org>
5882         * include/bits/hashtable.h
5883         (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add
5884         missing std namespace qualification to forward call.
5886 2020-02-09  Jonathan Wakely  <jwakely@redhat.com>
5888         * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix
5889         comment.
5890         * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise.
5892         * include/std/ranges: Fix non-ASCII characters in comment.
5894         * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require
5895         equality comparison to be valid and return bool.
5896         (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison.
5897         * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check
5898         type with ambiguous conversion to fundamental types.
5899         * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise.
5901 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
5903         * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t):
5904         Use remove_cvref_t.
5905         (readable_traits): Rename to indirectly_readable_traits.
5906         (readable): Rename to indirectly_readable.
5907         (writable): Rename to indirectly_writable.
5908         (__detail::__iter_exchange_move): Do not use remove_reference_t.
5909         (indirectly_swappable): Adjust requires expression parameter types.
5910         expression.
5911         * include/bits/ranges_algo.h (ranges::transform, ranges::replace)
5912         (ranges::replace_if, ranges::generate_n, ranges::generate)
5913         (ranges::remove): Use new name for writable.
5914         * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow):
5915         Use new name for readable.
5916         * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use
5917         new name for readable_traits.
5918         * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise.
5919         * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for
5920         new definition of indirectly_readable.
5922         * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change
5923         to take parameters of common_iterator, instead of the common_iterator
5924         type itself. Fix argument for __common_iter_has_arrow constraint.
5925         (iterator_traits<common_iterator<I, S>>::pointer): Adjust.
5927 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
5929         * include/std/ranges (iota_view): Add braces to prevent -Wempty-body
5930         warning.
5931         (basic_istream_view::_Iterator::operator++()): Add missing return.
5933 2020-02-07  Patrick Palka  <ppalka@redhat.com>
5935         * include/bits/ranges_algo.h: Remove extraneous &&.
5937         * include/std/ranges (ranges::__detail::__stream_extractable,
5938         ranges::basic_istream_view, ranges::istream_view): Define.
5939         * testsuite/std/ranges/istream_view: New test.
5941         Implement C++20 range adaptors
5942         * include/std/ranges: Include <bits/refwrap.h> and <tuple>.
5943         (subrange::_S_store_size): Mark as const instead of constexpr to
5944         avoid what seems to be a bug in GCC.
5945         (__detail::__box): Give it defaulted copy and move constructors.
5946         (ranges::views::_Single::operator()): Mark constexpr.
5947         (ranges::views::_Iota::operator()): Mark constexpr.
5948         (__detail::Empty): Define.
5949         (ranges::views::__closure::_RangeAdaptor,
5950         ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view,
5951         ranges::views::all, ranges::__detail::find_if,
5952         ranges::__detail::find_if_not, ranges::__detail::mismatch,
5953         ranges::detail::min, filter_view, ranges::views::filter, transform_view,
5954         ranges::views::transform, take_view, ranges::views::take,
5955         take_while_view, ranges::views::take_while, drop_view,
5956         ranges::views::drop, join_view, ranges::views::join,
5957         __detail::require_constant, __detail::tiny_range, split_view,
5958         ranges::views::split, ranges::views::_Counted, ranges::views::counted,
5959         common_view, ranges::views::common, reverse_view,
5960         ranges::views::reverse,
5961         ranges::views::__detail::__is_reversible_subrange,
5962         ranges::views::__detail::__is_reverse_view, reverse_view,
5963         ranges::views::reverse, __detail::__has_tuple_element, elements_view,
5964         ranges::views::elements, ranges::views::keys, ranges::views::values):
5965         Define.
5966         (views): Alias for ranges::views.
5967         (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>,
5968         tuple_element<1, ranges::subrange>): New partial specializations.
5969         * testsuite/std/ranges/adaptors/all.cc: New test.
5970         * testsuite/std/ranges/adaptors/common.cc: Likewise.
5971         * testsuite/std/ranges/adaptors/counted.cc: Likewise.
5972         * testsuite/std/ranges/adaptors/drop.cc: Likewise.
5973         * testsuite/std/ranges/adaptors/drop_while.cc: Likewise.
5974         * testsuite/std/ranges/adaptors/elements.cc: Likewise.
5975         * testsuite/std/ranges/adaptors/filter.cc: Likewise.
5976         * testsuite/std/ranges/adaptors/join.cc: Likewise.
5977         * testsuite/std/ranges/adaptors/reverse.cc: Likewise.
5978         * testsuite/std/ranges/adaptors/split.cc: Likewise.
5979         * testsuite/std/ranges/adaptors/take.cc: Likewise.
5980         * testsuite/std/ranges/adaptors/take_while.cc: Likewise.
5981         * testsuite/std/ranges/adaptors/transform.cc: Likewise.
5983 2020-02-07  Jonathan Wakely  <jwakely@redhat.com>
5985         * libsupc++/compare (__cmp_cat::type): Define typedef for underlying
5986         type of enumerations and comparison category types.
5987         (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type.
5988         (__cmp_cat::_Ncmp::unordered): Change value to 2.
5989         (partial_ordering::_M_value, weak_ordering::_M_value)
5990         (strong_ordering::_M_value): Change type to __cmp_cat::type.
5991         (partial_ordering::_M_is_ordered): Remove data member.
5992         (partial_ordering): Use second bit of _M_value for unordered. Adjust
5993         comparison operators.
5994         (weak_ordering::operator partial_ordering): Simplify to remove
5995         branches.
5996         (operator<=>(unspecified, weak_ordering)): Likewise.
5997         (strong_ordering::operator partial_ordering): Likewise.
5998         (strong_ordering::operator weak_ordering): Likewise.
5999         (operator<=>(unspecified, strong_ordering)): Likewise.
6000         * testsuite/18_support/comparisons/categories/partialord.cc: New test.
6001         * testsuite/18_support/comparisons/categories/strongord.cc: New test.
6002         * testsuite/18_support/comparisons/categories/weakord.cc: New test.
6004         * include/std/ranges (iota_view::_Iterator): Fix typo in name of
6005         __cpp_lib_three_way_comparison macro and use deduced return type for
6006         operator<=>.
6007         * testsuite/std/ranges/iota/iterator.cc: New test.
6009 2020-02-07  Patrick Palka  <ppalka@redhat.com>
6010             Jonathan Wakely  <jwakely@redhat.com>
6012         Implement C++20 constrained algorithms
6013         * include/Makefile.am: Add new header.
6014         * include/Makefile.in: Regenerate.
6015         * include/std/algorithm: Include <bits/ranges_algo.h>.
6016         * include/bits/ranges_algo.h: New file.
6017         * testsuite/25_algorithms/adjacent_find/constrained.cc: New test.
6018         * testsuite/25_algorithms/all_of/constrained.cc: New test.
6019         * testsuite/25_algorithms/any_of/constrained.cc: New test.
6020         * testsuite/25_algorithms/binary_search/constrained.cc: New test.
6021         * testsuite/25_algorithms/copy/constrained.cc: New test.
6022         * testsuite/25_algorithms/copy_backward/constrained.cc: New test.
6023         * testsuite/25_algorithms/copy_if/constrained.cc: New test.
6024         * testsuite/25_algorithms/copy_n/constrained.cc: New test.
6025         * testsuite/25_algorithms/count/constrained.cc: New test.
6026         * testsuite/25_algorithms/count_if/constrained.cc: New test.
6027         * testsuite/25_algorithms/equal/constrained.cc: New test.
6028         * testsuite/25_algorithms/equal_range/constrained.cc: New test.
6029         * testsuite/25_algorithms/fill/constrained.cc: New test.
6030         * testsuite/25_algorithms/fill_n/constrained.cc: New test.
6031         * testsuite/25_algorithms/find/constrained.cc: New test.
6032         * testsuite/25_algorithms/find_end/constrained.cc: New test.
6033         * testsuite/25_algorithms/find_first_of/constrained.cc: New test.
6034         * testsuite/25_algorithms/find_if/constrained.cc: New test.
6035         * testsuite/25_algorithms/find_if_not/constrained.cc: New test.
6036         * testsuite/25_algorithms/for_each/constrained.cc: New test.
6037         * testsuite/25_algorithms/generate/constrained.cc: New test.
6038         * testsuite/25_algorithms/generate_n/constrained.cc: New test.
6039         * testsuite/25_algorithms/heap/constrained.cc: New test.
6040         * testsuite/25_algorithms/includes/constrained.cc: New test.
6041         * testsuite/25_algorithms/inplace_merge/constrained.cc: New test.
6042         * testsuite/25_algorithms/is_partitioned/constrained.cc: New test.
6043         * testsuite/25_algorithms/is_permutation/constrained.cc: New test.
6044         * testsuite/25_algorithms/is_sorted/constrained.cc: New test.
6045         * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test.
6046         * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New
6047         test.
6048         * testsuite/25_algorithms/lower_bound/constrained.cc: New test.
6049         * testsuite/25_algorithms/max/constrained.cc: New test.
6050         * testsuite/25_algorithms/max_element/constrained.cc: New test.
6051         * testsuite/25_algorithms/merge/constrained.cc: New test.
6052         * testsuite/25_algorithms/min/constrained.cc: New test.
6053         * testsuite/25_algorithms/min_element/constrained.cc: New test.
6054         * testsuite/25_algorithms/minmax/constrained.cc: New test.
6055         * testsuite/25_algorithms/minmax_element/constrained.cc: New test.
6056         * testsuite/25_algorithms/mismatch/constrained.cc: New test.
6057         * testsuite/25_algorithms/move/constrained.cc: New test.
6058         * testsuite/25_algorithms/move_backward/constrained.cc: New test.
6059         * testsuite/25_algorithms/next_permutation/constrained.cc: New test.
6060         * testsuite/25_algorithms/none_of/constrained.cc: New test.
6061         * testsuite/25_algorithms/nth_element/constrained.cc: New test.
6062         * testsuite/25_algorithms/partial_sort/constrained.cc: New test.
6063         * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test.
6064         * testsuite/25_algorithms/partition/constrained.cc: New test.
6065         * testsuite/25_algorithms/partition_copy/constrained.cc: New test.
6066         * testsuite/25_algorithms/partition_point/constrained.cc: New test.
6067         * testsuite/25_algorithms/prev_permutation/constrained.cc: New test.
6068         * testsuite/25_algorithms/remove/constrained.cc: New test.
6069         * testsuite/25_algorithms/remove_copy/constrained.cc: New test.
6070         * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test.
6071         * testsuite/25_algorithms/remove_if/constrained.cc: New test.
6072         * testsuite/25_algorithms/replace/constrained.cc: New test.
6073         * testsuite/25_algorithms/replace_copy/constrained.cc: New test.
6074         * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test.
6075         * testsuite/25_algorithms/replace_if/constrained.cc: New test.
6076         * testsuite/25_algorithms/reverse/constrained.cc: New test.
6077         * testsuite/25_algorithms/reverse_copy/constrained.cc: New test.
6078         * testsuite/25_algorithms/rotate/constrained.cc: New test.
6079         * testsuite/25_algorithms/rotate_copy/constrained.cc: New test.
6080         * testsuite/25_algorithms/search/constrained.cc: New test.
6081         * testsuite/25_algorithms/search_n/constrained.cc: New test.
6082         * testsuite/25_algorithms/set_difference/constrained.cc: New test.
6083         * testsuite/25_algorithms/set_intersection/constrained.cc: New test.
6084         * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New
6085         test.
6086         * testsuite/25_algorithms/set_union/constrained.cc: New test.
6087         * testsuite/25_algorithms/shuffle/constrained.cc: New test.
6088         * testsuite/25_algorithms/sort/constrained.cc: New test.
6089         * testsuite/25_algorithms/stable_partition/constrained.cc: New test.
6090         * testsuite/25_algorithms/stable_sort/constrained.cc: New test.
6091         * testsuite/25_algorithms/swap_ranges/constrained.cc: New test.
6092         * testsuite/25_algorithms/transform/constrained.cc: New test.
6093         * testsuite/25_algorithms/unique/constrained.cc: New test.
6094         * testsuite/25_algorithms/unique_copy/constrained.cc: New test.
6095         * testsuite/25_algorithms/upper_bound/constrained.cc: New test.
6097 2020-02-06  Jonathan Wakely  <jwakely@redhat.com>
6099         * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR
6100         number in comment. Fix indentation.
6102         * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove
6103         redundant _GLIBCXX20_CONSTEXPR.
6105         * include/std/ranges (viewable_range): Replace decay_t with
6106         remove_cvref_t (LWG 3375).
6108 2020-02-05  Jonathan Wakely  <jwakely@redhat.com>
6110         * include/bits/iterator_concepts.h (iter_reference_t)
6111         (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t):
6112         Remove workarounds for PR c++/67704.
6113         * testsuite/24_iterators/aliases.cc: New test.
6115 2020-02-05  Patrick Palka  <ppalka@redhat.com>
6117         * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i
6118         when initializing _M_current.
6119         (move_iterator::base): Split into two overloads differing in
6120         ref-qualifiers as in P1207R4 for C++20.
6122 2020-02-04  Jonathan Wakely  <jwakely@redhat.com>
6124         * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after
6125         use.
6127         PR libstdc++/93562
6128         * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define.
6129         (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it.
6130         * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.
6132 2020-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
6134         * configure: Regenerate.
6136 2020-01-31  Patrick Palka  <ppalka@redhat.com>
6138         * testsuite/24_iterators/range_operations/distance.cc: Do not assume
6139         test_range::end() returns the same type as test_range::begin().
6140         * testsuite/24_iterators/range_operations/next.cc: Likewise.
6141         * testsuite/24_iterators/range_operations/prev.cc: Likewise.
6142         * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end):
6143         Always return a sentinel<I>.
6145 2020-01-29  Jonathan Wakely  <jwakely@redhat.com>
6147         PR libstdc++/92895
6148         * include/std/stop_token (stop_token::stop_possible()): Call new
6149         _M_stop_possible() function.
6150         (stop_token::stop_requested()): Do not use stop_possible().
6151         (stop_token::binary_semaphore): New class, as temporary stand-in for
6152         std::binary_semaphore.
6153         (stop_token::_Stop_cb::_M_callback): Add noexcept to type.
6154         (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done):
6155         New data members for symchronization with stop_callback destruction.
6156         (stop_token::_Stop_cb::_Stop_cb): Make non-template.
6157         (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute):
6158         Remove.
6159         (stop_token::_Stop_cb::_M_run): New member function.
6160         (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx):
6161         Remove.
6162         (stop_token::_Stop_state::_M_owners): New data member to track
6163         reference count for ownership.
6164         (stop_token::_Stop_state::_M_value): New data member combining a
6165         spinlock, the stop requested flag, and the reference count for
6166         associated stop_source objects.
6167         (stop_token::_Stop_state::_M_requester): New data member for
6168         synchronization with stop_callback destruction.
6169         (stop_token::_Stop_state::_M_stop_possible()): New member function.
6170         (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit
6171         of _M_value.
6172         (stop_token::_Stop_state::_M_add_owner)
6173         (stop_token::_Stop_state::_M_release_ownership)
6174         (stop_token::_Stop_state::_M_add_ssrc)
6175         (stop_token::_Stop_state::_M_sub_ssrc): New member functions for
6176         updating reference counts.
6177         (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
6178         (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock)
6179         (stop_token::_Stop_state::_M_try_lock)
6180         (stop_token::_Stop_state::_M_try_lock_and_stop)
6181         (stop_token::_Stop_state::_M_do_try_lock): New member functions for
6182         managing spinlock.
6183         (stop_token::_Stop_state::_M_request_stop): Use atomic operations to
6184         read and update state. Release lock while running callbacks. Use new
6185         data members to synchronize with callback destruction.
6186         (stop_token::_Stop_state::_M_remove_callback): Likewise.
6187         (stop_token::_Stop_state::_M_register_callback): Use atomic operations
6188         to read and update state.
6189         (stop_token::_Stop_state_ref): Handle type to manage _Stop_state,
6190         replacing shared_ptr.
6191         (stop_source::stop_source(const stop_source&)): Update reference count.
6192         (stop_source::operator=(const stop_source&)): Likewise.
6193         (stop_source::~stop_source()): Likewise.
6194         (stop_source::stop_source(stop_source&&)): Define as defaulted.
6195         (stop_source::operator=(stop_source&&)): Establish postcondition on
6196         parameter.
6197         (stop_callback): Enforce preconditions on template parameter. Replace
6198         base class with data member of new _Cb_impl type.
6199         (stop_callback::stop_callback(const stop_token&, Cb&&))
6200         (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race.
6201         (stop_callback::_Cb_impl): New type wrapping _Callback member and
6202         defining the _S_execute member function.
6203         * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New
6204         test.
6205         * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test.
6206         * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test.
6207         * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc:
6208         New test.
6209         * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New
6210         test.
6211         * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test.
6212         * testsuite/30_threads/stop_token/stop_source/assign.cc: New test.
6213         * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New
6214         test.
6216         * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use
6217         three_way_comparable_with.
6218         (__detail::__3way_cmp_with): Remove workaround for fixed bug.
6219         (compare_three_way::operator()): Remove redundant constraint from
6220         requires-clause.
6221         (__detail::_Synth3way::operator()): Use three_way_comparable_with
6222         instead of workaround.
6223         * testsuite/18_support/comparisons/object/93479.cc: Prune extra
6224         output due to simplified constraints on compare_three_way::operator().
6226         PR libstdc++/93479
6227         * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid.
6228         * testsuite/18_support/comparisons/object/93479.cc: New test.
6230         * testsuite/std/ranges/access/end.cc: Do not assume test_range::end()
6231         returns the same type as test_range::begin(). Add comments.
6232         * testsuite/std/ranges/access/rbegin.cc: Likewise.
6233         * testsuite/std/ranges/access/rend.cc: Likewise.
6234         * testsuite/std/ranges/range.cc: Do not assume the sentinel for
6235         test_range is the same as its iterator type.
6236         * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add
6237         operator- overloads to satisfy sized_sentinel_for when the iterator
6238         satisfies random_access_iterator.
6240 2020-01-28  Jonathan Wakely  <jwakely@redhat.com>
6242         PR libstdc++/93470
6243         * include/bits/refwrap.h (reference_wrapper::operator()): Restrict
6244         static assertion to object types.
6246         PR libstdc++/93325
6247         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for
6248         clock_gettime instead of explicit glibc version check.
6249         * configure: Regenerate.
6251 2020-01-28  Martin Liska  <mliska@suse.cz>
6253         PR libstdc++/93478
6254         * include/std/atomic: Fix typo.
6255         * include/std/optional: Likewise.
6257 2020-01-27  Andrew Burgess  <andrew.burgess@embecosm.com>
6259         * configure: Regenerate.
6261 2020-01-27  Jonathan Wakely  <jwakely@redhat.com>
6263         PR libstdc++/93426
6264         * include/std/span (span): Fix deduction guide.
6265         * testsuite/23_containers/span/deduction.cc: New test.
6267 2020-01-24  Jonathan Wakely  <jwakely@redhat.com>
6269         * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type.
6270         (__cmp_cat::_Ord::equivalent): Add enumerator.
6271         (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less
6272         and greater.
6273         (partial_ordering, weak_ordering, strong_ordering): Remove
6274         constructors taking __cmp_cat::_Eq parameters. Use renamed
6275         enumerators.
6277 2020-01-24  Maciej W. Rozycki  <macro@wdc.com>
6279         * acinclude.m4: Handle `--with-toolexeclibdir='.
6280         * Makefile.in: Regenerate.
6281         * aclocal.m4: Regenerate.
6282         * configure: Regenerate.
6283         * doc/Makefile.in: Regenerate.
6284         * include/Makefile.in: Regenerate.
6285         * libsupc++/Makefile.in: Regenerate.
6286         * po/Makefile.in: Regenerate.
6287         * python/Makefile.in: Regenerate.
6288         * src/Makefile.in: Regenerate.
6289         * src/c++11/Makefile.in: Regenerate.
6290         * src/c++17/Makefile.in: Regenerate.
6291         * src/c++98/Makefile.in: Regenerate.
6292         * src/filesystem/Makefile.in: Regenerate.
6293         * testsuite/Makefile.in: Regenerate.
6295 2020-01-23  Alexandre Oliva <oliva@adacore.com>
6297         * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros.
6298         * configure: Rebuild.
6300         * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t.
6302 2020-01-23  Jonathan Wakely  <jwakely@redhat.com>
6304         PR libstdc++/91947
6305         * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
6306         rule.
6307         * include/Makefile.in: Regenerate.
6309 2020-01-20  Jonathan Wakely  <jwakely@redhat.com>
6311         * doc/xml/faq.xml: Fix grammar.
6312         * doc/xml/manual/appendix_contributing.xml: Improve instructions.
6313         * doc/xml/manual/spine.xml: Update copyright years.
6314         * doc/html/*: Regenerate.
6316 2020-01-19  Eric S. Raymond <esr@thyrsus.com>
6318         * doc/xml/faq.xml: Update for SVN -> Git transition.
6319         * doc/xml/manual/appendix_contributing.xml: Likewise.
6320         * doc/xml/manual/status_cxx1998.xml: Likewise.
6321         * doc/xml/manual/status_cxx2011.xml: Likewise.
6322         * doc/xml/manual/status_cxx2014.xml: Likewise.
6323         * doc/xml/manual/status_cxx2017.xml: Likewise.
6324         * doc/xml/manual/status_cxx2020.xml: Likewise.
6325         * doc/xml/manual/status_cxxtr1.xml: Likewise.
6326         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
6328 2020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
6330         * include/Makefile.am: Add coroutine to the std set.
6331         * include/Makefile.in: Regenerated.
6332         * include/std/coroutine: New file.
6334 2020-01-17  Jonathan Wakely  <jwakely@redhat.com>
6336         PR libstdc++/92376
6337         * include/bits/c++config: Only do PSTL config when the header is
6338         present, to fix freestanding.
6339         * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation
6340         functions if they were detected by configure.
6342 2020-01-16  Kai-Uwe Eckhardt  <kuehro@gmx.de>
6343             Matthew Bauer  <mjbauer95@gmail.com>
6344             Jonathan Wakely  <jwakely@redhat.com>
6346         PR bootstrap/64271 (partial)
6347         * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type
6348         to unsigned short.
6349         (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit)
6350         (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync
6351         definitions with NetBSD upstream.
6352         (ctype_base::blank): Use _CTYPE_BL.
6353         * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove
6354         Declaration.
6355         (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_.
6356         (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char
6357         parameters to unsigned char.
6358         * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise.
6360 2020-01-16  François Dumont  <fdumont@gcc.gnu.org>
6362         PR libstdc++/91263
6363         * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend.
6364         * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>.
6365         (_Equality_base): Remove.
6366         (_Equality<>::_M_equal): Review implementation. Use
6367         std::is_permutation.
6368         * testsuite/23_containers/unordered_multiset/operators/1.cc
6369         (Hash, Equal, test02, test03): New.
6370         * testsuite/23_containers/unordered_set/operators/1.cc
6371         (Hash, Equal, test02, test03): New.
6373 2020-01-15  Jonathan Wakely  <jwakely@redhat.com>
6375         PR libstdc++/93267
6376         * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type):
6377         Move here from <bits/range_access.h> and define using __int128 when
6378         available.
6379         (__is_integer_like, __is_signed_integer_like): Move here from
6380         <bits/range_access.h>.
6381         (weakly_incrementable): Use __is_signed_integer_like.
6382         * include/bits/range_access.h (__max_diff_type, __max_size_type)
6383         (__is_integer_like, __is_signed_integer_like): Move to
6384         <bits/iterator_concepts.h>.
6385         (__make_unsigned_like_t): Move here from <ranges>.
6386         * include/std/ranges (__make_unsigned_like_t): Move to
6387         <bits/range_access.h>.
6388         (iota_view): Replace using-directive with using-declarations.
6389         * testsuite/std/ranges/iota/93267.cc: New test.
6390         * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory.
6392 2020-01-13  Jonathan Wakely  <jwakely@redhat.com>
6394         PR libstdc++/93244
6395         * include/bits/fs_path.h (path::generic_string<C,A>)
6396         [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash.
6397         * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check
6398         root-dir is converted to forward slash in generic pathname.
6399         * testsuite/27_io/filesystem/path/generic/utf.cc: New test.
6400         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test.
6402         PR libstdc++/58605
6403         * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization):
6404         Define.
6405         (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>)
6406         (__atomic_float): Add default member initializer for C++20.
6407         * include/std/atomic (atomic): Likewise.
6408         (atomic::atomic()): Remove noexcept-specifier on default constructor.
6409         * include/std/version (__cpp_lib_atomic_value_initialization): Define.
6410         * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line
6411         number.
6412         * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
6413         * testsuite/29_atomics/atomic/cons/value_init.cc: New test.
6414         * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test.
6415         * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust
6416         expected result for is_trivially_default_constructible.
6417         * testsuite/29_atomics/atomic_float/requirements.cc: Likewise.
6418         * testsuite/29_atomics/atomic_float/value_init.cc: New test.
6419         * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise.
6420         * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise.
6421         * testsuite/29_atomics/atomic_integral/cons/value_init.cc
6422         * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust
6423         expected results for is_trivially_default_constructible.
6424         * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add
6425         new test generator.
6427 2020-01-10  Jonathan Wakely  <jwakely@redhat.com>
6429         * testsuite/util/testsuite_iterators.h: Improve comment.
6431         * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11
6432         initialization syntax.
6434         PR libstdc++/92285
6435         * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type
6436         of base class independent of __cplusplus value.
6437         [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the
6438         type defined in the base class
6439         * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test.
6440         * testsuite/24_iterators/istreambuf_iterator/requirements/
6441         base_classes.cc: Adjust expected base class for C++98.
6443 2020-01-09  Olivier Hainque  <hainque@adacore.com>
6445         * doc/xml/manual/appendix_contributing.xml: Document _C2
6446         as a reserved identifier, by VxWorks.
6447         * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2.
6448         * include/bits/stl_multimap.h: Likewise.
6450 2020-01-09  Jonathan Wakely  <jwakely@redhat.com>
6452         * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==)
6453         (_ExtPtr_allocator::operator!=): Add missing const qualifiers.
6454         * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add
6455         partial specialization to disambiguate the two constrained
6456         specializations.
6458         * include/experimental/type_traits (experimental::is_pod_v): Disable
6459         -Wdeprecated-declarations warnings around reference to std::is_pod.
6460         * include/std/type_traits (is_pod_v): Likewise.
6461         * testsuite/18_support/max_align_t/requirements/2.cc: Also check
6462         is_standard_layout and is_trivial. Do not check is_pod for C++20.
6463         * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
6464         Add -Wno-deprecated for C++20.
6465         * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
6466         * testsuite/20_util/is_pod/value.cc: Likewise.
6467         * testsuite/experimental/type_traits/value.cc: Likewise.
6469 2020-01-09  JeanHeyd "ThePhD" Meneide  <phdofthehouse@gmail.com>
6471         * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro.
6472         * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20.
6473         * testuite/20_util/is_pod/deprecated-2a.cc: New test.
6475 2020-01-09  Jonathan Wakely  <jwakely@redhat.com>
6477         PR libstdc++/93205
6478         * include/bits/random.h (operator>>): Check stream operation succeeds.
6479         * include/bits/random.tcc (operator<<): Remove redundant __ostream_type
6480         typedefs.
6481         (operator>>): Remove redundant __istream_type typedefs. Check stream
6482         operations succeed.
6483         (__extract_params): New function to fill a vector from a stream.
6484         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line.
6486         PR libstdc++/93208
6487         * config/abi/pre/gnu.ver: Add new exports.
6488         * include/std/memory_resource (memory_resource::~memory_resource()):
6489         Do not define inline.
6490         (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise.
6491         * src/c++17/memory_resource.cc (memory_resource::~memory_resource()):
6492         Define.
6493         (monotonic_buffer_resource::~monotonic_buffer_resource()): Define.
6494         * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test.
6496 2020-01-09  François Dumont  <fdumont@gcc.gnu.org>
6498         PR libstdc++/92124
6499         * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New
6500         template alias.
6501         (_Hashtable<>::__fwd_value_for): New.
6502         (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template
6503         parameter.
6504         (_Hashtable<>::_M_assign<>): Add _Ht template parameter.
6505         (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt.
6506         (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept
6507         with std::move.
6508         (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt.
6509         (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)):
6510         Adapt.
6511         (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)):
6512         Adapt.
6513         * testsuite/23_containers/unordered_set/92124.cc: New.
6515 2020-01-08  Jonathan Wakely  <jwakely@redhat.com>
6517         PR libstdc++/93201
6518         * src/c++17/fs_ops.cc (do_remove_all): New function implementing more
6519         detailed error reporting for remove_all. Check result of recursive
6520         call before incrementing iterator.
6521         (remove_all(const path&), remove_all(const path&, error_code&)): Use
6522         do_remove_all.
6523         * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check
6524         result of recursive call before incrementing iterator.
6525         * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors
6526         are reported correctly.
6527         * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise.
6529 2020-01-07  Thomas Rodgers  <trodgers@redhat.com>
6531         * include/std/condition_variable
6532         (condition_variable_any::wait_on): Rename to match current draft
6533         standard.
6534         (condition_variable_any::wait_on_until): Likewise.
6535         (condition_variable_any::wait_on_for): Likewise.
6536         * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
6537         Adjust tests to account for renamed methods.
6539 2020-01-07  François Dumont  <fdumont@gcc.gnu.org>
6541         PR libstdc++/92124
6542         * include/bits/stl_tree.h
6543         (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
6544         std::move_if_noexcept by std::move.
6545         * testsuite/23_containers/map/92124.cc: New.
6546         * testsuite/23_containers/set/92124.cc: New.
6548 2020-01-06  Jonathan Wakely  <jwakely@redhat.com>
6550         * include/std/stop_token (stop_token): Remove operator!= (LWG 3254).
6551         (stop_source): Likewise (LWG 3362).
6552         * testsuite/30_threads/stop_token/stop_source.cc: Test equality
6553         comparisons.
6555         * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
6556         (lexicographical_compare_three_way): Do not depend on
6557         __cpp_lib_concepts.
6558         * include/std/version (__cpp_lib_three_way_comparison): Only define
6559         when __cpp_lib_concepts is defined.
6560         * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
6562 2020-01-03  Jonathan Wakely  <jwakely@redhat.com>
6564         * include/bits/stl_algobase.h (lexicographical_compare_three_way):
6565         Only define four-argument overload when __cpp_lib_concepts is defined.
6567 2020-01-01  John David Anglin  <danglin@gcc.gnu.org>
6569         * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
6571 2020-01-01  Jakub Jelinek  <jakub@redhat.com>
6573         Update copyright years.
6575 Copyright (C) 2020 Free Software Foundation, Inc.
6577 Copying and distribution of this file, with or without modification,
6578 are permitted in any medium without royalty provided the copyright
6579 notice and this notice are preserved.