Daily bump.
[official-gcc.git] / libstdc++-v3 / ChangeLog
blob56d90d6f7852d60884c43f92c0bcc6b6478b5014
1 2021-11-13  Jonathan Wakely  <jwakely@redhat.com>
3         * include/Makefile.am: Add spanstream header.
4         * include/Makefile.in: Regenerate.
5         * include/precompiled/stdc++.h: Add spanstream header.
6         * include/std/version (__cpp_lib_spanstream): Define.
7         * include/std/spanstream: New file.
8         * testsuite/27_io/spanstream/1.cc: New test.
9         * testsuite/27_io/spanstream/version.cc: New test.
11 2021-11-13  Hans-Peter Nilsson  <hp@axis.com>
13         PR libstdc++/103166
14         * acinclude.m4 (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
15         Use GCC_TRY_COMPILE_OR_LINK instead of AC_TRY_COMPILE.
16         * configure: Regenerate.
18 2021-11-12  Jonathan Wakely  <jwakely@redhat.com>
20         PR libstdc++/59675
21         * acinclude.m4 (libtool_VERSION): Bump version.
22         * config/abi/pre/gnu.ver (GLIBCXX_3.4.30): Add version and
23         export new symbol.
24         * configure: Regenerate.
25         * include/bits/c++config (__replacement_assert): Remove, declare
26         __glibcxx_assert_fail instead.
27         * src/c++11/debug.cc (__glibcxx_assert_fail): New function to
28         replace __replacement_assert, writing to stderr instead of
29         stdout.
30         * testsuite/util/testsuite_abi.cc: Update latest version.
32 2021-11-12  Jonathan Wakely  <jwakely@redhat.com>
33             Josh Marshall  <joshua.r.marshall.1991@gmail.com>
35         * include/bits/alloc_traits.h (_Destroy): Make constexpr for
36         C++20 mode.
37         * include/bits/allocator.h (__shrink_to_fit::_S_do_it):
38         Likewise.
39         * include/bits/stl_algobase.h (__fill_a1): Declare _Bit_iterator
40         overload constexpr for C++20.
41         * include/bits/stl_bvector.h (_Bit_type, _S_word_bit): Move out
42         of inline namespace.
43         (_Bit_reference, _Bit_iterator_base, _Bit_iterator)
44         (_Bit_const_iterator, _Bvector_impl_data, _Bvector_base)
45         (vector<bool, A>>): Add constexpr to every member function.
46         (_Bvector_base::_M_allocate): Initialize storage during constant
47         evaluation.
48         (vector<bool, A>::_M_initialize_value): Use __fill_bvector_n
49         instead of memset.
50         (__fill_bvector_n): New helper function to replace memset during
51         constant evaluation.
52         * include/bits/stl_uninitialized.h (__uninitialized_copy<false>):
53         Move logic to ...
54         (__do_uninit_copy): New function.
55         (__uninitialized_fill<false>): Move logic to ...
56         (__do_uninit_fill): New function.
57         (__uninitialized_fill_n<false>): Move logic to ...
58         (__do_uninit_fill_n): New function.
59         (__uninitialized_copy_a): Add constexpr. Use __do_uninit_copy.
60         (__uninitialized_move_a, __uninitialized_move_if_noexcept_a):
61         Add constexpr.
62         (__uninitialized_fill_a): Add constexpr. Use __do_uninit_fill.
63         (__uninitialized_fill_n_a): Add constexpr. Use
64         __do_uninit_fill_n.
65         (__uninitialized_default_n, __uninitialized_default_n_a)
66         (__relocate_a_1, __relocate_a): Add constexpr.
67         * include/bits/stl_vector.h (_Vector_impl_data, _Vector_impl)
68         (_Vector_base, vector): Add constexpr to every member function.
69         (_Vector_impl::_S_adjust): Disable ASan annotation during
70         constant evaluation.
71         (_Vector_base::_S_use_relocate): Disable bitwise-relocation
72         during constant evaluation.
73         (vector::_Temporary_value): Use a union for storage.
74         * include/bits/vector.tcc (vector, vector<bool>): Add constexpr
75         to every member function.
76         * include/std/vector (erase_if, erase): Add constexpr.
77         * testsuite/23_containers/headers/vector/synopsis.cc: Add
78         constexpr for C++20 mode.
79         * testsuite/23_containers/vector/bool/cmp_c++20.cc: Change to
80         compile-only test using constant expressions.
81         * testsuite/23_containers/vector/bool/capacity/29134.cc: Adjust
82         namespace for _S_word_bit.
83         * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
84         Likewise.
85         * testsuite/23_containers/vector/cmp_c++20.cc: Likewise.
86         * testsuite/23_containers/vector/cons/89164.cc: Adjust errors
87         for C++20 and move C++17 test to ...
88         * testsuite/23_containers/vector/cons/89164_c++17.cc: ... here.
89         * testsuite/23_containers/vector/bool/capacity/constexpr.cc: New test.
90         * testsuite/23_containers/vector/bool/cons/constexpr.cc: New test.
91         * testsuite/23_containers/vector/bool/element_access/constexpr.cc: New test.
92         * testsuite/23_containers/vector/bool/modifiers/assign/constexpr.cc: New test.
93         * testsuite/23_containers/vector/bool/modifiers/constexpr.cc: New test.
94         * testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc: New test.
95         * testsuite/23_containers/vector/capacity/constexpr.cc: New test.
96         * testsuite/23_containers/vector/cons/constexpr.cc: New test.
97         * testsuite/23_containers/vector/data_access/constexpr.cc: New test.
98         * testsuite/23_containers/vector/element_access/constexpr.cc: New test.
99         * testsuite/23_containers/vector/modifiers/assign/constexpr.cc: New test.
100         * testsuite/23_containers/vector/modifiers/constexpr.cc: New test.
101         * testsuite/23_containers/vector/modifiers/swap/constexpr.cc: New test.
103 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
105         * include/debug/deque (deque::operator=(const deque&)): Remove
106         definition.
107         * include/debug/list (list::operator=(const list&)): Likewise.
108         * include/debug/map.h (map::operator=(const map&)): Likewise.
109         * include/debug/multimap.h (multimap::operator=(const multimap&)):
110         Likewise.
111         * include/debug/multiset.h (multiset::operator=(const multiset&)):
112         Likewise.
113         * include/debug/set.h (set::operator=(const set&)): Likewise.
114         * include/debug/string (basic_string::operator=(const basic_string&)):
115         Likewise.
116         * include/debug/vector (vector::operator=(const vector&)):
117         Likewise.
118         (_Safe_vector::operator=(const _Safe_vector&)): Define for
119         C++98 as well.
121 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
123         * include/std/memory_resource (memory_resource::allocate):
124         Implicitly create objects in the returned storage.
126 2021-11-11  Jonathan Wakely  <jwakely@redhat.com>
128         * include/bits/stl_bvector.h (vector<bool>::data()): Give
129         protected access, and delete for C++11 and later.
131 2021-11-10  Jonathan Wakely  <jwakely@redhat.com>
133         PR libstdc++/100117
134         * testsuite/17_intro/headers/c++1998/49745.cc: Explicitly list
135         all C++ headers instead of including <bits/stdc++.h>
137 2021-11-10  Jonathan Wakely  <jwakely@redhat.com>
139         PR libstdc++/100748
140         PR libstdc++/103133
141         * config/os/gnu-linux/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK):
142         Define for glibc 2.34 and later.
144 2021-11-09  François Dumont  <fdumont@gcc.gnu.org>
146         * include/bits/hashtable_policy.h (__distance_fw): Replace class keyword with
147         typename.
148         * include/bits/hashtable.h (_Hashtable<>::_M_merge_unique): Remove noexcept
149         qualification. Use const_iterator for node extraction/reinsert.
150         (_Hashtable<>::_M_merge_multi): Likewise. Compute new hash code before extract.
151         * include/debug/safe_container.h (_Safe_container<>): Make all methods
152         protected.
153         * include/debug/safe_unordered_container.h
154         (_Safe_unordered_container<>::_UContInvalidatePred<_ExtractKey, _Source>): New.
155         (_Safe_unordered_container<>::_UMContInvalidatePred<_ExtractKey, _Source>): New.
156         (_Safe_unordered_container<>::_UContMergeGuard<_Source, _InvalidatePred>): New.
157         (_Safe_unordered_container<>::_S_uc_guard<_ExtractKey, _Source>): New.
158         (_Safe_unordered_container<>::_S_umc_guard<_ExtractKey, _Source>): New.
159         (_Safe_unordered_container<>::_M_invalide_all): Make public.
160         (_Safe_unordered_container<>::_M_invalide_if): Likewise.
161         (_Safe_unordered_container<>::_M_invalide_local_if): Likewise.
162         * include/debug/unordered_map
163         (unordered_map<>::mapped_type, pointer, const_pointer): New typedef.
164         (unordered_map<>::reference, const_reference, difference_type): New typedef.
165         (unordered_map<>::get_allocator, empty, size, max_size): Add usings.
166         (unordered_map<>::bucket_count, max_bucket_count, bucket): Add usings.
167         (unordered_map<>::hash_function, key_equal, count, contains): Add usings.
168         (unordered_map<>::operator[], at, rehash, reserve): Add usings.
169         (unordered_map<>::merge): New.
170         (unordered_multimap<>::mapped_type, pointer, const_pointer): New typedef.
171         (unordered_multimap<>::reference, const_reference, difference_type): New typedef.
172         (unordered_multimap<>::get_allocator, empty, size, max_size): Add usings.
173         (unordered_multimap<>::bucket_count, max_bucket_count, bucket): Add usings.
174         (unordered_multimap<>::hash_function, key_equal, count, contains): Add usings.
175         (unordered_multimap<>::rehash, reserve): Add usings.
176         (unordered_multimap<>::merge): New.
177         * include/debug/unordered_set
178         (unordered_set<>::mapped_type, pointer, const_pointer): New typedef.
179         (unordered_set<>::reference, const_reference, difference_type): New typedef.
180         (unordered_set<>::get_allocator, empty, size, max_size): Add usings.
181         (unordered_set<>::bucket_count, max_bucket_count, bucket): Add usings.
182         (unordered_set<>::hash_function, key_equal, count, contains): Add usings.
183         (unordered_set<>::rehash, reserve): Add usings.
184         (unordered_set<>::merge): New.
185         (unordered_multiset<>::mapped_type, pointer, const_pointer): New typedef.
186         (unordered_multiset<>::reference, const_reference, difference_type): New typedef.
187         (unordered_multiset<>::get_allocator, empty, size, max_size): Add usings.
188         (unordered_multiset<>::bucket_count, max_bucket_count, bucket): Add usings.
189         (unordered_multiset<>::hash_function, key_equal, count, contains): Add usings.
190         (unordered_multiset<>::rehash, reserve): Add usings.
191         (unordered_multiset<>::merge): New.
192         * testsuite/23_containers/unordered_map/debug/merge1_neg.cc: New test.
193         * testsuite/23_containers/unordered_map/debug/merge2_neg.cc: New test.
194         * testsuite/23_containers/unordered_map/debug/merge3_neg.cc: New test.
195         * testsuite/23_containers/unordered_map/debug/merge4_neg.cc: New test.
196         * testsuite/23_containers/unordered_multimap/debug/merge1_neg.cc: New test.
197         * testsuite/23_containers/unordered_multimap/debug/merge2_neg.cc: New test.
198         * testsuite/23_containers/unordered_multimap/debug/merge3_neg.cc: New test.
199         * testsuite/23_containers/unordered_multimap/debug/merge4_neg.cc: New test.
200         * testsuite/23_containers/unordered_multiset/debug/merge1_neg.cc: New test.
201         * testsuite/23_containers/unordered_multiset/debug/merge2_neg.cc: New test.
202         * testsuite/23_containers/unordered_multiset/debug/merge3_neg.cc: New test.
203         * testsuite/23_containers/unordered_multiset/debug/merge4_neg.cc: New test.
204         * testsuite/23_containers/unordered_set/debug/merge1_neg.cc: New test.
205         * testsuite/23_containers/unordered_set/debug/merge2_neg.cc: New test.
206         * testsuite/23_containers/unordered_set/debug/merge3_neg.cc: New test.
207         * testsuite/23_containers/unordered_set/debug/merge4_neg.cc: New test.
208         * testsuite/util/testsuite_abi.h: [_GLIBCXX_DEBUG] Use normal unordered
209         container implementation.
211 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
213         * testsuite/26_numerics/random/random_device/cons/token.cc:
214         Print results of random_device_available checks.
216 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
218         PR libstdc++/103146
219         * src/c++11/random.cc: Check __powerpc64__ not __powerpc__.
221 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
223         * acinclude.m4 (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
224         Define.
225         * configure.ac (GLIBCXX_CHECK_GETENTROPY, GLIBCXX_CHECK_ARC4RANDOM):
226         Use them.
227         * config.h.in: Regenerate.
228         * configure: Regenerate.
229         * src/c++11/random.cc (random_device): Add getentropy and
230         arc4random as sources.
231         * testsuite/26_numerics/random/random_device/cons/token.cc:
232         Check new tokens.
233         * testsuite/26_numerics/random/random_device/entropy.cc:
234         Likewise.
236 2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
238         * testsuite/26_numerics/random/random_device/cons/token.cc:
239         Retry if random devices produce the same value.
241 2021-11-09  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
243         * config/os/vxworks/os_defines.h (_GLIBCXX_HAVE_TLS): Only
244         define for VxWorks >= 6.6.
246 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
248         * include/bits/range_access.h (begin(valarray), end(valarray)):
249         Add noexcept.
251 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
253         * include/std/tuple (tuple_size_v): Fix pack expansion.
255 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
257         * src/c++11/random.cc (__x86_rdrand, __x86_rdseed): Add
258         [[unlikely]] attribute.
260 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
262         * src/c++11/random.cc [__powerpc__] (USE_DARN): Define.
263         (__ppc_darn): New function to use POWER9 DARN instruction.
264         (Which): Add 'darn' enumerator.
265         (which_source): Check for __ppc_darn.
266         (random_device::_M_init): Support "darn" and "hw" tokens.
267         (random_device::_M_getentropy): Add darn to switch.
268         * testsuite/26_numerics/random/random_device/cons/token.cc:
269         Check "darn" token.
270         * testsuite/26_numerics/random/random_device/entropy.cc:
271         Likewise.
273 2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
275         * testsuite/lib/gdb-test.exp: Add target selector support to the
276         dg-final directives.
277         * testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for
278         C++20.
279         * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
280         * testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak
281         comment.
283 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
285         PR libstdc++/103086
286         * python/libstdcxx/v6/printers.py (_tuple_impl_get): New helper
287         for accessing the tuple element stored in a _Tuple_impl node.
288         (tuple_get): New function for accessing a tuple element.
289         (unique_ptr_get): New function for accessing a unique_ptr.
290         (UniquePointerPrinter, StdPathPrinter): Use unique_ptr_get.
291         * python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Cast
292         tuple to its base class before accessing _M_head_impl.
294 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
296         * doc/xml/manual/evolution.xml: Document deprecations.
297         * doc/html/*: Regenerate.
298         * libsupc++/exception (unexpected_handler, unexpected)
299         (get_unexpected, set_unexpected): Add deprecated attribute.
300         Do not define without _GLIBCXX_USE_DEPRECATED for C++17 and up.
301         * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Disable
302         deprecated warnings.
303         * libsupc++/eh_ptr.cc (std::rethrow_exception): Likewise.
304         * libsupc++/eh_terminate.cc: Likewise.
305         * libsupc++/eh_throw.cc (__cxa_init_primary_exception):
306         Likewise.
307         * libsupc++/unwind-cxx.h (struct __cxa_exception): Use
308         terminate_handler instead of unexpected_handler.
309         (struct __cxa_dependent_exception): Likewise.
310         (__unexpected): Likewise.
311         * testsuite/18_support/headers/exception/synopsis.cc: Add
312         dg-warning for deprecated warning.
313         * testsuite/18_support/exception_ptr/60612-unexpected.cc:
314         Disable deprecated warnings.
315         * testsuite/18_support/set_unexpected.cc: Likewise.
316         * testsuite/18_support/unexpected_handler.cc: Likewise.
318 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
320         * include/bits/utility.h (__find_uniq_type_in_pack): Move
321         definition to here, ...
322         * include/std/tuple (__find_uniq_type_in_pack): ... from here.
323         * include/std/variant (__detail__variant::__index_of): Remove.
324         (__detail::__variant::__exactly_once): Define using
325         __find_uniq_type_in_pack instead of __index_of.
326         (get<T>, get_if<T>, variant::__index_of): Likewise.
328 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
330         * include/bits/stl_pair.h (tuple_size_v): Define partial
331         specializations for std::pair.
332         * include/bits/utility.h (_Nth_type): Move definition here
333         and define primary template.
334         (tuple_size_v): Move definition here.
335         * include/std/array (tuple_size_v): Define partial
336         specializations for std::array.
337         * include/std/tuple (tuple_size_v): Move primary template to
338         <bits/utility.h>.  Define partial specializations for
339         std::tuple.
340         (tuple_element): Change definition to use _Nth_type.
341         * include/std/variant (_Nth_type): Move to <bits/utility.h>.
342         (variant_alternative, variant): Adjust qualification of
343         _Nth_type.
344         * testsuite/20_util/tuple/element_access/get_neg.cc: Prune
345         additional errors from _Nth_type.
347 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
349         * include/std/variant (__detail::__variant::__emplace): New
350         function template.
351         (_Copy_assign_base::operator=): Reorder conditions to match
352         bulleted list of effects in the standard. Use __emplace instead
353         of _M_reset followed by _Construct.
354         (_Move_assign_base::operator=): Likewise.
355         (__construct_by_index): Remove.
356         (variant::emplace): Use __emplace instead of _M_reset followed
357         by __construct_by_index.
358         (variant::swap): Hoist valueless cases out of visitor. Use
359         __emplace to replace _M_reset followed by _Construct.
361 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
363         * include/std/variant (_Nth_type): Define partial
364         specializations to reduce number of instantiations.
365         (variant_size_v): Define partial specializations to avoid
366         instantiations.
367         (variant_alternative): Use _Nth_type. Add static assert.
368         (__tuple_count, __tuple_count_v): Replace with ...
369         (__count): New variable template.
370         (_Variant_union): Add deleted constructor.
371         (variant::__to_type): Use _Nth_type.
372         (variant::emplace): Use _Nth_type. Add deleted overloads for
373         invalid types and indices.
375 2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
377         PR libstdc++/102912
378         * include/std/variant (_Variant_storage::__index_of): Remove.
379         (__variant_construct_single): Remove.
380         (__variant_construct): Remove.
381         (_Copy_ctor_base::_Copy_ctor_base(const _Copy_ctor_base&)): Do
382         construction directly instead of using __variant_construct.
383         (_Move_ctor_base::_Move_ctor_base(_Move_ctor_base&&)): Likewise.
384         (_Move_ctor_base::_M_destructive_move()): Remove.
385         (_Move_ctor_base::_M_destructive_copy()): Remove.
386         (_Copy_assign_base::operator=(const _Copy_assign_base&)): Do
387         construction directly instead of using _M_destructive_copy.
388         (variant::swap): Do construction directly instead of using
389         _M_destructive_move.
390         * testsuite/20_util/variant/102912.cc: New test.
392 2021-11-03  Jonathan Wakely  <jwakely@redhat.com>
394         PR libstdc++/66742
395         * include/bits/list.tcc (list::sort): Use mutable iterators for
396         comparisons.
397         * include/bits/stl_list.h (_Scratch_list::_Ptr_cmp): Likewise.
398         * testsuite/23_containers/list/operations/66742.cc: Check
399         non-const comparisons.
401 2021-11-03  Jonathan Wakely  <jwakely@redhat.com>
403         * include/std/valarray (valarray::valarray()): Add noexcept.
404         (valarray::operator[]): Likewise.
406 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
408         * include/debug/stl_iterator.h (__valid_range): Add constexpr
409         for C++20. Qualify call to avoid ADL.
410         (__get_distance, __can_advance, __unsafe, __base): Likewise.
411         * testsuite/25_algorithms/move/constexpr.cc: Also check with
412         std::reverse_iterator arguments.
414 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
416         * include/std/span (span(Range&&)): Reorder constraints.
418 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
420         PR libstdc++/103022
421         * include/std/valarray (begin, end): Do not dereference an empty
422         valarray. Add noexcept and [[nodiscard]].
423         * testsuite/26_numerics/valarray/range_access.cc: Check empty
424         valarray. Check iterator properties. Run as well as compiling.
425         * testsuite/26_numerics/valarray/range_access2.cc: Likewise.
426         * testsuite/26_numerics/valarray/103022.cc: New test.
428 2021-10-29  Jonathan Wakely  <jwakely@redhat.com>
430         * testsuite/23_containers/stack/deduction.cc: Fix typo.
432 2021-10-26  Martin Sebor  <msebor@redhat.com>
434         * testsuite/21_strings/basic_string/capacity/1.cc: Also suppress
435         -Wstringop-overread.
436         * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc: Same.
438 2021-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
440         * testsuite/28_regex/basic_regex/84110.cc (test01)
441         [__cpp_exceptions]: Disambiguate extended.
443 2021-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
445         * testsuite/17_intro/names.cc [__sun__] (r, x): Undef.
447 2021-10-22  Jonathan Wakely  <jwakely@redhat.com>
449         PR libstdc++/102894
450         * include/std/any (make_any): Add SFINAE constraint.
451         * testsuite/20_util/any/102894.cc: New test.
453 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
455         * doc/doxygen/stdheader.cc: Refactor. Use C++23. Add new
456         headers.
457         * scripts/run_doxygen: Fix post-processing of #include
458         directives in man pages. Use new xg++ to compile helper program.
460 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
462         * include/bits/mofunc_impl.h: Add doxygen comments.
463         * include/std/functional: Likewise.
465 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
467         * include/bits/alloc_traits.h: Suppress doxygen documentation.
468         * include/bits/allocated_ptr.h: Likewise.
469         * include/bits/enable_special_members.h: Likewise.
470         * include/bits/hashtable.h: Likewise.
471         * include/bits/hashtable_policy.h: Likewise.
472         * include/bits/uses_allocator.h: Likewise.
473         * include/bits/node_handle.h: Document node handles and suppress
474         documentation for protected members.
475         * include/std/any: Suppress documentation for implementation
476         details.
478 2021-10-21  Patrick Palka  <ppalka@redhat.com>
480         PR libstdc++/102358
481         * include/bits/stl_iterator.h (__niter_base): Make constexpr
482         for C++20.
483         (__miter_base): Likewise.
484         * testsuite/25_algorithms/move/constexpr.cc: New test.
486 2021-10-21  Patrick Palka  <ppalka@redhat.com>
488         * include/std/ranges (istream_view): Replace this function
489         template with an alias template as per P2432R1.
490         (wistream_view): Define as per P2432R1.
491         (views::_Istream, views::istream): Likewise.
492         * testsuite/std/ranges/istream_view.cc (test07): New test.
494 2021-10-21  Patrick Palka  <ppalka@redhat.com>
496         * include/bits/ranges_util.h (views::_Drop): Forward declare.
497         (subrange): Befriend views::_Drop.
498         (subrange::_S_store_size): Declare constexpr instead of just
499         const, remove obsolete comment.
500         * include/std/ranges (views::__detail::__is_empty_view): Define.
501         (views::__detail::__is_basic_string_view): Likewise.
502         (views::__detail::__is_subrange): Likewise.
503         (views::__detail::__is_iota_view): Likewise.
504         (views::__detail::__can_take_view): Rename template parm _Tp to _Dp.
505         (views::_Take): Rename template parm _Tp to _Dp, make it non-deducible
506         and fix it to range_difference_t<_Range>.  Implement P1739R4 and
507         LWG 3407 changes.
508         (views::__detail::__can_drop_view): Rename template parm _Tp to _Dp.
509         (views::_Drop): As with views::_Take.
510         (views::_Counted): Implement P1739R4 changes.
511         * include/std/span (__detail::__is_std_span): Rename to ...
512         (__detail::__is_span): ... this and turn it into a variable
513         template.
514         (__detail::__is_std_array): Turn it into a variable template.
515         (span::span): Adjust uses of __is_std_span and __is_std_array
516         accordingly.
517         * testsuite/std/ranges/adaptors/p1739.cc: New test.
519 2021-10-21  Patrick Palka  <ppalka@redhat.com>
521         * include/bits/stl_iterator.h (common_iterator::__arrow_proxy):
522         Make fully constexpr as per LWG 3595.
523         (common_iterator::__postfix_proxy): Likewise.
525 2021-10-21  Patrick Palka  <ppalka@redhat.com>
527         * include/std/ranges (lazy_split_view::base): Add forward_range
528         constraint as per LWG 3591.
529         (lazy_split_view::begin, lazy_split_view::end): Also check
530         simpleness of _Pattern as per LWG 3592.
531         (split_view::base): Relax copyable constraint as per LWG 3590.
533 2021-10-21  Patrick Palka  <ppalka@redhat.com>
535         * include/std/ranges (join_view::__iter_cat::_S_iter_cat): Adjust
536         criteria for returning bidirectional_iterator_tag as per LWG 3535.
537         (join_view::_Iterator::_S_iter_concept): Likewise.
539 2021-10-21  Patrick Palka  <ppalka@redhat.com>
541         * include/bits/ranges_base.h (viewable_range): Adjust as per
542         LWG 3481.
543         * testsuite/std/ranges/adaptors/all.cc (test07): New test.
545 2021-10-21  Jonathan Wakely  <jwakely@redhat.com>
547         PR libstdc++/102863
548         * include/std/optional (optional::and_then, optional::transform):
549         Remove requires-clause.
550         * testsuite/20_util/optional/monadic/and_then.cc: Check
551         overload resolution doesn't cause errors.
552         * testsuite/20_util/optional/monadic/transform.cc: Likewise.
554 2021-10-20  Jonathan Wakely  <jwakely@redhat.com>
556         * testsuite/20_util/optional/monadic/transform.cc: Check that
557         an rvalue result is not materialized too soon.
559 2021-10-19  Patrick Palka  <ppalka@redhat.com>
561         * include/std/ranges (iota_view::_Iterator::operator+): Adjust
562         definition as per LWG 3580.
563         (iota_view::_Iterator::operator-): Likewise.
565 2021-10-19  Patrick Palka  <ppalka@redhat.com>
567         * include/std/ranges (basic_istream_view::_M_object): Value
568         initialize as per LWG 3568.
570 2021-10-19  Patrick Palka  <ppalka@redhat.com>
572         * include/bits/ranges_util.h
573         (__detail::__uses_nonqualification_pointer_conversion): Define
574         and use it ...
575         (__detail::__convertible_to_nonslicing): ... here, as per LWG 3470.
576         * testsuite/std/ranges/subrange/1.cc: New test.
578 2021-10-19  Patrick Palka  <ppalka@redhat.com>
580         * include/std/ranges (iota_view::_Iterator): Befriend iota_view.
581         (iota_view::_Sentinel): Likewise.
582         (iota_view::iota_view): Add three overloads, each taking an
583         iterator/sentinel pair as per LWG 3523.
584         * testsuite/std/ranges/iota/iota_view.cc (test06): New test.
586 2021-10-19  Patrick Palka  <ppalka@redhat.com>
588         * include/bits/ranges_base.h (view_interface): Forward declare.
589         (__detail::__is_derived_from_view_interface_fn): Declare.
590         (__detail::__is_derived_from_view_interface): Define as per LWG 3549.
591         (enable_view): Adjust as per LWG 3549.
592         * include/bits/ranges_util.h (view_interface): Don't derive from
593         view_base.
594         * include/std/ranges (filter_view): Revert r11-3504 change.
595         (transform_view): Likewise.
596         (take_view): Likewise.
597         (take_while_view): Likewise.
598         (drop_view): Likewise.
599         (drop_while_view): Likewise.
600         (join_view): Likewise.
601         (lazy_split_view): Likewise.
602         (split_view): Likewise.
603         (reverse_view): Likewise.
604         * testsuite/std/ranges/adaptors/sizeof.cc: Update expected sizes.
605         * testsuite/std/ranges/view.cc (test_view::test_view): Remove
606         this default ctor since views no longer need to be default initable.
607         (test01): New test.
609 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
611         * src/c++11/random.cc (which_source): New helper function.
612         (random_device::_M_getentropy()): Use which_source and return
613         suitable values for sources other than device files.
614         * testsuite/26_numerics/random/random_device/entropy.cc: New test.
616 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
618         * doc/Makefile.am (stamp-html-doxygen, stamp-html-doxygen)
619         (stamp-latex-doxygen, stamp-man-doxygen): Fix recipes for
620         relative ${top_srcdir}.
621         * doc/Makefile.in: Regenerate.
623 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
625         * include/std/variant (_Uninitialized): Use an empty struct
626         for the unused union member, instead of char.
628 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
630         * include/bits/stl_stack.h (stack(Iterator, Iterator)): Remove
631         non-deducible template parameter from deduction guide.
632         * testsuite/23_containers/stack/deduction.cc: Check new C++23
633         deduction guides.
635 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
637         * include/std/optional (_Optional_payload_base::_Storage): Add
638         constructor taking a callable function to invoke.
639         (_Optional_payload_base::_M_apply): New function.
640         (__cpp_lib_monadic_optional): Define for C++23.
641         (optional::and_then, optional::transform, optional::or_else):
642         Define for C++23.
643         * include/std/ranges (__detail::__cached): Remove.
644         (__detail::__non_propagating_cache): Remove use of __cached for
645         contained value. Use _Optional_payload_base::_M_construct and
646         _Optional_payload_base::_M_apply to set the contained value.
647         * include/std/version (__cpp_lib_monadic_optional): Define.
648         * testsuite/20_util/optional/monadic/and_then.cc: New test.
649         * testsuite/20_util/optional/monadic/or_else.cc: New test.
650         * testsuite/20_util/optional/monadic/or_else_neg.cc: New test.
651         * testsuite/20_util/optional/monadic/transform.cc: New test.
652         * testsuite/20_util/optional/monadic/version.cc: New test.
654 2021-10-19  Jonathan Wakely  <jwakely@redhat.com>
656         PR libstdc++/102825
657         * include/bits/mofunc_impl.h (move_only_function): Remove
658         invalid base initializer.
659         * testsuite/20_util/move_only_function/cons.cc: Instantiate
660         constructors to check bodies.
662 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
664         * include/bits/fs_path.h (path::_S_convert(T)): Avoid recursive
665         call to function with deduced return type.
667 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
669         * include/bits/basic_string.h (__cpp_lib_string_resize_and_overwrite):
670         Define for C++23.
671         (basic_string::resize_and_overwrite): Declare.
672         * include/bits/basic_string.tcc (basic_string::resize_and_overwrite):
673         Define.
674         * include/std/version (__cpp_lib_resize_and_overwrite): Define
675         for C++23.
676         * testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc:
677         New test.
679 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
681         PR libstdc++/101263
682         * include/std/ranges (__cached): New wrapper struct.
683         (__non_propagating_cache): Use __cached for contained value.
684         (__non_propagating_cache::_M_emplace_deref): Add constexpr. Use
685         std::construct_at instead of placement new.
686         * testsuite/std/ranges/adaptors/join.cc: Check constexpr works.
688 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
690         * include/std/variant (__cpp_lib_variant): Update value for
691         C++20.
692         (__variant_cast, __variant_construct): Add constexpr for C++20.
693         (__variant_construct_single, __construct_by_index) Likewise. Use
694         std::_Construct instead of placement new.
695         (_Uninitialized<T, false>) [__cplusplus >= 202002]: Replace
696         buffer with a union and define a destructor.
697         (_Variadic_union) [__cplusplus >= 202002]: Add a specialization
698         for non-trivial destruction.
699         (_Variant_storage::__index_of): New helper variable template.
700         (_Variant_storage::~_Variant_storage()): Add constexpr.
701         (_Variant_storage::_M_reset()): Likewise.
702         (_Copy_ctor_base, _Move_ctor_base): Likewise.
703         (_Copy_assign_base, _Move_assign_base): Likewise.
704         (variant, swap): Likewise.
705         * include/std/version (__cpp_lib_variant): Update value for
706         C++20.
707         * testsuite/20_util/optional/version.cc: Check for exact value
708         in C++17.
709         * testsuite/20_util/variant/87619.cc: Increase timeout for
710         C++20 mode.
711         * testsuite/20_util/variant/constexpr.cc: New test.
712         * testsuite/20_util/variant/version.cc: New test.
714 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
716         * include/std/variant (__detail::__variant::__get_storage):
717         Remove unused function.
718         (__variant_construct_by_index): Set index after construction is
719         complete. Rename to ...
720         (__detail::__variant::__construct_by_index): ... this.
721         (variant): Use new name for __variant_construct_by_index friend
722         declaration. Remove __get_storage friend declaration.
723         (variant::emplace): Use new name and remove try-blocks.
725 2021-10-15  Jonathan Wakely  <jwakely@redhat.com>
727         * include/std/variant (_Variant_storage::_M_storage()): Remove.
728         (__detail::__variant::__get_storage): Remove.
729         (variant): Remove friend declaration of __get_storage.
731 2021-10-15  Jason Merrill  <jason@redhat.com>
733         * testsuite/20_util/integer_comparisons/greater_equal_neg.cc:
734         * testsuite/20_util/integer_comparisons/greater_neg.cc:
735         * testsuite/20_util/integer_comparisons/less_equal_neg.cc:
736         Adjust expected message.
737         * testsuite/lib/prune.exp: Prune 'in constexpr expansion'.
739 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
741         * include/std/variant (__variant::__get(in_place_index_t<N>, U&&)):
742         Rename to __get_n and remove first argument. Replace pair of
743         overloads with a single function using 'if constexpr'.
744         (__variant::__get(Variant&&)): Adjust to use __get_n.
746 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
748         * include/bits/fs_path.h (path(path&&)): Make unconditionally
749         noexcept.
750         (path::_S_convert(T)): Add condtional noexcept.
752 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
754         PR libstdc++/102743
755         * include/bits/fs_path.h (path::_S_convert(T)): Fix condition
756         for returning the same string unchanged.
758 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
760         * include/bits/regex.h: Check __cpp_inline_variables instead of
761         __cplusplus.
763 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
765         * testsuite/20_util/is_layout_compatible/version.cc: Check
766         correct macro.
768 2021-10-14  Jonathan Wakely  <jwakely@redhat.com>
770         * include/bits/stl_construct.h (_Construct): Use
771         std::construct_at when constant evaluated.
772         * include/std/optional (_Storage, _Optional_payload, optional):
773         Add constexpr as specified by P2231R1.
774         * include/std/version (__cpp_lib_optional): Update value for
775         C++20.
776         * testsuite/20_util/optional/requirements.cc: Check feature test
777         macro.
778         * testsuite/20_util/optional/constexpr/assign.cc: New test.
779         * testsuite/20_util/optional/constexpr/cons/conv.cc: New test.
780         * testsuite/20_util/optional/constexpr/modifiers.cc: New test.
781         * testsuite/20_util/optional/constexpr/swap.cc: New test.
782         * testsuite/20_util/optional/version.cc: New test.
784 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
786         * include/bits/fs_path.h (__detail::__is_contiguous): Add
787         partial specializations for pointers and __normal_iterator.
789 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
791         * testsuite/27_io/filesystem/path/construct/102592.C: Moved to...
792         * testsuite/27_io/filesystem/path/construct/102592.cc: ...here.
793         * testsuite/28_regex/match_results/102667.C: Moved to...
794         * testsuite/28_regex/match_results/102667.cc: ...here.
796 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
798         * include/bits/fs_path.h (__detail::__is_contiguous): New
799         variable template to identify contiguous iterators.
800         (__detail::__unified_char8_t): New alias template to decide when
801         to treat char8_t as char without encoding conversion.
802         (__detail::__effective_range(const basic_string<C,T>&)): Use
803         std::char_traits<C> for returned string view.
804         (__detail::__effective_range(const basic_string_view<C,T>&)):
805         Likewise.
806         (__detail::__effective_range(const Source&)): Use
807         __is_contiguous to detect mode cases of contiguous iterators.
808         Use __unified_char8_t to return a std::string instead of
809         std::u8string.
811 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
813         PR libstdc++/102592
814         * include/bits/fs_path.h (path::path(Iter, Iter, format))
815         (path::append(Iter, Iter), path::concat(Iter, Iter)): Call
816         __string_from_range directly, instead of two-argument overload
817         of _S_convert.
818         (path::_S_convert(Iter, Iter)): Remove.
819         * testsuite/27_io/filesystem/path/construct/102592.C: New test.
821 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
823         * include/bits/c++config (__terminate): Add extern "C++".
825 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
827         * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
828         Restore test for operator<.
829         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
830         Adjust expected errors for C++20.
832 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
834         PR libstdc++/101960
835         * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Define as
836         defauled.
837         * testsuite/20_util/tuple/cons/101960.cc: Check tuples with
838         array elements before the last element.
840 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
842         * include/bits/stl_iterator_base_funcs.h (__advance): Add
843         deleted overload to improve diagnostics.
844         (__distance): Likewise.
846 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
848         * include/bits/atomic_timed_wait.h: Remove unused header.
849         * include/bits/c++config (std:__terminate): Define.
850         * include/bits/semaphore_base.h: Remove <exception> and use
851         __terminate instead of terminate.
852         * include/bits/std_thread.h: Likewise.
853         * libsupc++/eh_terminate.cc (std::terminate): Use qualified-id
854         to call __cxxabiv1::__terminate.
856 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
858         * include/bits/regex.h (basic_regex::assign(Iter, Iter)): Avoid
859         std::__to_address by using poitner directly or using base()
860         member of __normal_iterator.
862 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
864         * testsuite/18_support/numeric_limits/lowest.cc: Use
865         numeric_limits<T>::is_integer instead of is_integral<T>::value.
867 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
869         PR libstdc++/89927
870         * include/bits/regex.h (basic_regex(const _Ch_type*, size_t)):
871         Add __glibcxx_requires_string_len assertion.
872         (basic_regex::assign(InputIterator, InputIterator)): Add
873         __glibcxx_requires_valid_range assertion.
874         * include/bits/regex_scanner.tcc (_Scanner::_M_advance())
875         (_Scanner::_M_scan_normal()): Use string literal in assertions.
877 2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
879         PR libstdc++/102667
880         * include/bits/regex.h (match_result::empty()): Optimize by
881         calling the base function directly.
882         (match_results::end()): Check _Base_type::empty() not empty().
883         * testsuite/28_regex/match_results/102667.C: New test.
885 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
887         PR libstdc++/98725
888         * testsuite/18_support/numeric_limits/lowest.cc: Remove use of
889         _GLIBCXX_USE_WCHAR_T.
890         * testsuite/18_support/numeric_limits/min_max.cc: Replace use of
891         _GLIBCXX_USE_WCHAR_T with checks for WCHAR_MIN and WCHAR_MAX.
892         * testsuite/20_util/from_chars/1_neg.cc: Remove use of
893         _GLIBCXX_USE_WCHAR_T.
894         * testsuite/20_util/function_objects/searchers.cc: Likewise. Use
895         char_traits<wchar_t>::length instead of wcslen.
896         * testsuite/20_util/hash/requirements/explicit_instantiation.cc:
897         Likewise.
898         * testsuite/20_util/is_arithmetic/value.cc: Likewise.
899         * testsuite/20_util/is_compound/value.cc: Likewise.
900         * testsuite/20_util/is_floating_point/value.cc: Likewise.
901         * testsuite/20_util/is_fundamental/value.cc: Likewise.
902         * testsuite/20_util/is_integral/value.cc: Likewise.
903         * testsuite/20_util/is_signed/value.cc: Likewise.
904         * testsuite/20_util/is_unsigned/value.cc: Likewise.
905         * testsuite/20_util/is_void/value.cc: Likewise.
906         * testsuite/20_util/make_signed/requirements/typedefs-1.cc:
907         Likewise.
908         * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
909         Likewise.
910         * testsuite/20_util/make_signed/requirements/typedefs-3.cc:
911         Likewise.
912         * testsuite/20_util/make_signed/requirements/typedefs-4.cc:
913         Likewise.
914         * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
915         Likewise.
916         * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
917         Likewise.
918         * testsuite/20_util/make_unsigned/requirements/typedefs-3.cc:
919         Likewise.
920         * testsuite/20_util/to_chars/3.cc: Likewise.
921         * testsuite/20_util/type_identity/requirements/typedefs.cc:
922         Likewise.
923         * testsuite/21_strings/basic_string/hash/debug.cc: Likewise.
924         * testsuite/21_strings/basic_string/hash/hash.cc: Likewise.
925         * testsuite/21_strings/basic_string/literals/types-char8_t.cc:
926         Likewise.
927         * testsuite/21_strings/basic_string/literals/types.cc: Likewise.
928         * testsuite/21_strings/basic_string/literals/values-char8_t.cc:
929         Likewise.
930         * testsuite/21_strings/basic_string/literals/values.cc:
931         Likewise.
932         * testsuite/21_strings/basic_string/modifiers/64422.cc:
933         Likewise.
934         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
935         Likewise.
936         * testsuite/21_strings/basic_string/requirements/citerators.cc:
937         Likewise.
938         * testsuite/21_strings/basic_string/requirements/typedefs.cc:
939         Likewise.
940         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
941         Likewise.
942         * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
943         Likewise.
944         * testsuite/21_strings/basic_string_view/literals/types.cc:
945         Likewise.
946         * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
947         Likewise.
948         * testsuite/21_strings/basic_string_view/literals/values.cc:
949         Likewise.
950         * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
951         Likewise.
952         * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
953         * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc:
954         Likewise.
955         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
956         Likewise.
957         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
958         Likewise.
959         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Likewise.
960         * testsuite/25_algorithms/fill/4.cc: Likewise.
961         * testsuite/25_algorithms/fill_n/1.cc: Likewise.
962         * testsuite/experimental/functional/searchers.cc: Likewise. Use
963         char_traits<wchar_t>::length instead of wcslen.
964         * testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc:
965         Likewise.
966         * testsuite/experimental/string_view/literals/types-char8_t.cc:
967         Likewise.
968         * testsuite/experimental/string_view/literals/types.cc:
969         Likewise.
970         * testsuite/experimental/string_view/literals/values-char8_t.cc:
971         Likewise.
972         * testsuite/experimental/string_view/literals/values.cc:
973         Likewise.
974         * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
975         Likewise.
976         * testsuite/experimental/string_view/requirements/typedefs.cc:
977         Likewise.
978         * testsuite/experimental/string_view/typedefs.cc: Likewise.
979         * testsuite/ext/vstring/range_access.cc: Likewise.
980         * testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc:
981         Likewise.
982         * testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc:
983         Likewise.
984         * testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc:
985         Likewise.
986         * testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc:
987         Likewise.
988         * testsuite/tr1/4_metaprogramming/is_compound/value.cc:
989         Likewise.
990         * testsuite/tr1/4_metaprogramming/is_floating_point/value.cc:
991         Likewise.
992         * testsuite/tr1/4_metaprogramming/is_fundamental/value.cc:
993         Likewise.
994         * testsuite/tr1/4_metaprogramming/is_integral/value.cc:
995         Likewise.
996         * testsuite/tr1/4_metaprogramming/is_signed/value.cc: Likewise.
997         * testsuite/tr1/4_metaprogramming/is_unsigned/value.cc:
998         Likewise.
999         * testsuite/tr1/4_metaprogramming/is_void/value.cc: Likewise.
1000         * testsuite/tr1/6_containers/hash/24799.cc: Likewise.
1002 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1004         PR libstdc++/98725
1005         * include/std/ostream (operator<<(basic_ostream<char, Tr>&, wchar_t))
1006         (operator<<(basic_ostream<char, Tr>&, const wchar_t*)): Always
1007         define as deleted. Do not check _GLIBCXX_USE_WCHAR_T.
1009 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1011         PR libstdc++/98725
1012         * include/bits/locale_conv.h (wstring_convert, wbuffer_convert):
1013         Define unconditionally. Do not check _GLIBCXX_USE_WCHAR_T.
1015 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1017         PR libstdc++/98725
1018         * include/c_global/cstddef [!_GLIBCXX_USE_WCHAR_T]
1019         (__byte_operand<wchar_t>): Define specialization.
1020         * include/std/type_traits (__make_signed<wchar_t>)
1021         (__make_unsigned<wchar_t>): Remove redundant check for
1022         __WCHAR_TYPE__ being defined.
1023         * include/tr1/type_traits [!_GLIBCXX_USE_WCHAR_T]
1024         (__is_integral_helper<wchar_t>): Likewise.
1026 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1028         PR libstdc++/98725
1029         * include/ext/rc_string_base.h [!_GLIBCXX_USE_WCHAR_T]
1030         (__rc_string_base<wchar_t>): Define member function.
1031         * include/ext/vstring.h [!_GLIBCXX_USE_WCHAR_T]
1032         (hash<__gnu_cxx::__wvstring>): Define specialization.
1033         * include/ext/vstring_fwd.h [!_GLIBCXX_USE_WCHAR_T] (__wvstring)
1034         (__wsso_string, __wrc_string): Declare typedefs.
1036 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1038         PR libstdc++/98725
1039         * include/bits/char_traits.h (char_traits<wchar_t>): Define
1040         explicit specialization unconditionally.
1041         * include/bits/basic_string.h (hash<wstring>): Define
1042         unconditionally. Do not check _GLIBCXX_USE_WCHAR_T.
1043         * include/bits/stringfwd.h (wstring): Likewise.
1044         * include/debug/string (wstring): Likewise.
1045         * include/experimental/string_view (experimental::wstring_view)
1046         (hash<experimental::wstring_view>): Likewise.
1047         * include/std/string (pmr::wstring, hash<pmr::wstring>):
1048         Likewise.
1049         * include/std/string_view (wstring_view, hash<wstring_view>):
1050         Likewise.
1052 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1054         * testsuite/27_io/basic_filebuf/close/81256.cc: Moved to...
1055         * testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc: ...here.
1057 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1059         * testsuite/22_locale/conversions/buffer/1.cc: Check
1060         _GLIBCXX_USE_WCHAR_T.
1061         * testsuite/22_locale/conversions/buffer/3.cc: Likewise. Add
1062         test using char16_t.
1063         * testsuite/22_locale/conversions/string/1.cc: Check
1064         _GLIBCXX_USE_WCHAR_T.
1065         * testsuite/27_io/filesystem/path/generic/generic_string.cc:
1066         Likewise.
1067         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
1068         Likewise.
1069         * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise.
1070         * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
1071         Likewise.
1072         * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
1073         * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
1074         Likewise.
1075         * testsuite/experimental/filesystem/path/generic/generic_string.cc:
1076         Likewise.
1077         * testsuite/experimental/filesystem/path/native/alloc.cc:
1078         Likewise.
1079         * testsuite/experimental/filesystem/path/native/string-char8_t.cc:
1080         Likewise.
1081         * testsuite/experimental/filesystem/path/native/string.cc:
1082         Likewise.
1084 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1086         * testsuite/26_numerics/bit/bit.rotate/rotr.cc:
1087         * testsuite/util/testsuite_common_types.h:
1089 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1091         * testsuite/18_support/numeric_limits/40856.cc: Replace use of
1092         _GLIBCXX_USE_INT128.
1093         * testsuite/18_support/numeric_limits/dr559.cc: Likewise.
1094         * testsuite/18_support/numeric_limits/lowest.cc: Likewise.
1095         * testsuite/18_support/numeric_limits/max_digits10.cc: Likewise.
1096         * testsuite/20_util/is_floating_point/value.cc: Likewise.
1097         * testsuite/20_util/is_integral/value.cc: Likewise.
1098         * testsuite/20_util/is_signed/value.cc: Likewise.
1099         * testsuite/20_util/is_unsigned/value.cc: Likewise.
1100         * testsuite/20_util/make_signed/requirements/typedefs-1.cc:
1101         Likewise.
1102         * testsuite/20_util/make_signed/requirements/typedefs-2.cc:
1103         Likewise.
1104         * testsuite/20_util/make_unsigned/requirements/typedefs-1.cc:
1105         Likewise.
1106         * testsuite/20_util/make_unsigned/requirements/typedefs-2.cc:
1107         Likewise.
1108         * testsuite/20_util/type_identity/requirements/typedefs.cc:
1109         Likewise.
1110         * testsuite/26_numerics/bit/bit.count/countl_one.cc: Likewise.
1111         * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise.
1112         * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise.
1113         * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise.
1114         * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise.
1115         * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: Likewise.
1116         * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: Likewise.
1117         * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: Likewise.
1118         * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc:
1119         Likewise.
1120         * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise.
1122 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1124         * include/bits/hashtable_policy.h (_Select1st): Replace use of
1125         std::get.
1126         (_Select2nd): Remove.
1127         (_NodeBuilder::_S_build): Use _NodeGenerator::__node_type
1128         typedef instead of deducing it. Remove unnecessary piecewise
1129         construction.
1130         (_ReuseOrAllocNode): Make __node_type public.
1131         (_Map_base): Adjust partial specialization to be able to extract
1132         the mapped_type without using tuple_element.
1133         (_Map_base::at): Define inline
1134         * testsuite/23_containers/unordered_map/requirements/53339.cc:
1135         Remove XFAIL.
1136         * testsuite/23_containers/unordered_multimap/requirements/53339.cc:
1137         Likewise.
1139 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1141         * include/bits/hashtable.h: Move static assertion to destructor.
1142         * include/bits/hashtable_policy.h: Deduce value type from node
1143         type without instantiating it.
1145 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1147         * src/c++11/limits.cc: Fail if __cpp_inline_variables is
1148         defined.
1150 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1152         PR libstdc++/92546
1153         * include/bits/ranges_algobase.h: Replace <iterator> with a
1154         subset of the headers it includes.
1156 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1158         * include/experimental/deque (erase, erase_if): Revert changes
1159         to avoid debug mode overhead.
1160         * include/experimental/map (erase, erase_if): Likewise.
1161         * include/experimental/set (erase, erase_if): Likewise.
1162         * include/experimental/unordered_map (erase, erase_if):
1163         Likewise.
1164         * include/experimental/unordered_set (erase, erase_if):
1165         Likewise.
1166         * include/experimental/vector (erase, erase_if): Likewise.
1167         * include/std/deque (erase, erase_if): Likewise.
1168         * include/std/map (erase, erase_if): Likewise.
1169         * include/std/set (erase, erase_if): Likewise.
1170         * include/std/unordered_map (erase, erase_if): Likewise.
1171         * include/std/unordered_set (erase, erase_if): Likewise.
1172         * include/std/vector (erase, erase_if): Likewise.
1174 2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
1176         * include/std/chrono (__detail::__units_suffix_misc): New
1177         helper function.
1178         (__detail::__units_suffix): Likewise.
1179         (chrono::operator<<(basic_ostream&, const duration&)): Define.
1180         * testsuite/20_util/duration/io.cc: New test.
1182 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
1184         * include/Makefile.am: Add new header.
1185         * include/Makefile.in: Regenerate.
1186         * include/std/chrono (duration, time_point, system_clock)
1187         (steady_clock, high_resolution_clock, chrono_literals, sys_time)
1188         (file_clock, file_time): Move to ...
1189         * include/bits/chrono.h: New file.
1190         * include/bits/atomic_futex.h: Include new header instead of
1191         <chrono>.
1192         * include/bits/atomic_timed_wait.h: Likewise.
1193         * include/bits/fs_fwd.h: Likewise.
1194         * include/bits/semaphore_base.h: Likewise.
1195         * include/bits/this_thread_sleep.h: Likewise.
1196         * include/bits/unique_lock.h: Likewise.
1197         * include/experimental/bits/fs_fwd.h: Likewise.
1198         * include/experimental/chrono: Likewise.
1199         * include/experimental/io_context: Likewise.
1200         * include/experimental/netfwd: Likewise.
1201         * include/experimental/timer: Likewise.
1202         * include/std/condition_variable: Likewise.
1203         * include/std/mutex: Likewise.
1204         * include/std/shared_mutex: Likewise.
1206 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
1208         PR libstdc++/102377
1209         * include/bits/atomic_wait.h (__waiter_pool_base:_S_align):
1210         Hardcode to 64 instead of using non-constant constant.
1212 2021-10-07  Jonathan Wakely  <jwakely@redhat.com>
1214         * include/bits/erase_if.h (__erase_nodes_if): Remove redundant
1215         __niter_base calls.
1216         * include/std/string (erase, erase_if): Likewise.
1217         * include/std/deque (erase, erase_if): Access non-debug
1218         container directly.
1219         * include/std/map (erase, erase_if): Likewise.
1220         * include/std/set (erase, erase_if): Likewise.
1221         * include/std/unordered_map (erase, erase_if): Likewise.
1222         * include/std/unordered_set (erase, erase_if): Likewise.
1223         * include/std/vector (erase, erase_if): Likewise.
1224         * include/experimental/deque (erase, erase_if): Likewise.
1225         * include/experimental/map (erase, erase_if): Likewise.
1226         * include/experimental/set (erase, erase_if): Likewise.
1227         * include/experimental/unordered_map (erase, erase_if):
1228         Likewise.
1229         * include/experimental/unordered_set (erase, erase_if):
1230         Likewise.
1231         * include/experimental/vector (erase, erase_if): Likewise.
1233 2021-10-06  Jonathan Wakely  <jwakely@redhat.com>
1235         * include/Makefile.am: Add new headers.
1236         * include/Makefile.in: Regenerate.
1237         * include/std/functional: Include <bits/move_only_function.h>.
1238         * include/std/version (__cpp_lib_move_only_function): Define.
1239         * include/bits/mofunc_impl.h: New file.
1240         * include/bits/move_only_function.h: New file.
1241         * testsuite/20_util/move_only_function/call.cc: New test.
1242         * testsuite/20_util/move_only_function/cons.cc: New test.
1243         * testsuite/20_util/move_only_function/move.cc: New test.
1244         * testsuite/20_util/move_only_function/version.cc: New test.
1246 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1248         * testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
1249         New test.
1250         * testsuite/23_containers/span/trivially_copyable.cc: New test.
1252 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1254         * include/bits/utility.h (__is_in_place_type_v): Define
1255         variable template to detect in_place_type_t specializations.
1256         (__is_in_place_type): Replace class template with alias
1257         template using __is_in_place_type_v.
1258         * include/std/any (any(T&&)): Check __is_in_place_type first and
1259         avoid instantiating is_copy_constructible unnecessarily.
1261 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1263         * testsuite/20_util/integer_comparisons/greater.cc: New test.
1265 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1267         * testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc:
1268         Check result matches non-volatile pointer.
1270 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1272         PR c++/102535
1273         * testsuite/20_util/is_trivially_constructible/value.cc: Adjust
1274         expected value for C++20.
1276 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1278         * include/bits/std_function.h (_Any_data::_M_access): Add
1279         noexcept.
1280         (_Function_base::_Base_manager::_M_get_pointer): Likewise.
1281         (_Function_base::_Base_manager::_M_not_empty_function):
1282         Likewise.
1284 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1286         * include/std/ostream (operator<<(const volatile void*)):
1287         Add new overload, as per P1147R1.
1288         * testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc:
1289         New test.
1291 2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
1293         * include/bits/stl_queue.h
1294         (__cpp_lib_adaptor_iterator_pair_constructor): Set to correct
1295         value.
1296         * include/bits/stl_stack.h
1297         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
1298         * include/std/version
1299         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
1300         * testsuite/23_containers/queue/cons_from_iters.cc: Update
1301         expected value.
1302         * testsuite/23_containers/stack/cons_from_iters.cc: Likewise.
1304 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
1306         * include/bits/forward_list.h (forward_list): Use non-deduced
1307         context for allocator parameter of allocator-extended copy and
1308         move constructors.
1309         * include/bits/stl_bvector.h (vector<bool>): Likewise.
1310         * include/bits/stl_deque.h (deque): Likewise.
1311         * include/bits/stl_list.h (list): Likewise.
1312         * include/bits/stl_map.h (map): Likewise.
1313         * include/bits/stl_multimap.h (multimap): Likewise.
1314         * include/bits/stl_multiset.h (multiset): Likewise.
1315         * include/bits/stl_set.h (set): Likewise.
1316         * include/bits/stl_vector.h (vector): Likewise.
1317         * include/bits/stl_queue.h (queue, priority_queue): Do not
1318         constrain Allocator template parameter of deduction guides that
1319         have a Container parameter.
1320         * include/bits/stl_stack.h (stack): Likewise.
1321         * include/debug/deque (__gnu_debug::deque): Use non-deduced
1322         context for allocator parameter of allocator-extended copy and
1323         move constructors.
1324         * include/debug/list (__gnu_debug::list): Likewise.
1325         * include/debug/map.h (__gnu_debug::map): Likewise.
1326         * include/debug/multimap.h (__gnu_debug::multimap): Likewise.
1327         * include/debug/multiset.h (__gnu_debug::multiset): Likewise.
1328         * include/debug/set.h (__gnu_debug::set): Likewise.
1329         * include/debug/vector (__gnu_debug::vector): Likewise.
1330         * testsuite/23_containers/deque/cons/deduction.cc: Test class
1331         template argument deduction with non-deduced allocator
1332         arguments.
1333         * testsuite/23_containers/forward_list/cons/deduction.cc:
1334         Likewise.
1335         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
1336         * testsuite/23_containers/map/cons/deduction.cc: Likewise.
1337         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
1338         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
1339         * testsuite/23_containers/priority_queue/deduction.cc: Likewise.
1340         * testsuite/23_containers/queue/deduction.cc: Likewise.
1341         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
1342         * testsuite/23_containers/stack/deduction.cc: Likewise.
1343         * testsuite/23_containers/unordered_map/cons/deduction.cc:
1344         Likewise.
1345         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
1346         Likewise.
1347         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
1348         Likewise.
1349         * testsuite/23_containers/unordered_set/cons/deduction.cc:
1350         Likewise.
1351         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
1353 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
1355         * include/std/variant (__detail::__variant::__as): Add missing
1356         noexcept to first overload.
1358 2021-10-04  Jonathan Wakely  <jwakely@redhat.com>
1360         * include/bits/basic_string.h (basic_string(nullptr_t)): Define
1361         as deleted.
1362         (operator=(nullptr_t)): Likewise.
1363         * include/bits/cow_string.h (basic_string(nullptr_t)): Likewise.
1364         (operator=(nullptr_t)): Likewise.
1365         * include/std/string_view (basic_string_view(nullptr_t)):
1366         Likewise.
1367         * testsuite/21_strings/basic_string/cons/char/nullptr.cc: New test.
1368         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
1369         Change dg-warning to dg-error.
1370         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
1371         Likewise.
1373 2021-10-02  Jonathan Wakely  <jwakely@redhat.com>
1375         * src/c++17/fs_ops.cc (create_directory): Fix typo in enum name.
1376         * src/filesystem/ops-common.h (__last_system_error): Add
1377         explicit cast to avoid narrowing conversion.
1378         (do_space): Fix type in function name.
1380 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1382         PR libstdc++/102100
1383         * include/Makefile.am (c++config.h): Define
1384         _GLIBCXX_VERBOSE_ASSERT based on configure output.
1385         * include/Makefile.in: Regenerate.
1386         * include/bits/c++config: Fix condition for verbose assertions.
1388 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1390         PR libstdc++/92546
1391         * include/bits/erase_if.h (__erase_nodes_if): Use __niter_base to
1392         unwrap debug iterators.
1393         * include/bits/refwrap.h: Do not error if included in C++03.
1394         * include/bits/stl_algo.h (__remove_if): Move to ...
1395         * include/bits/stl_algobase.h (__remove_if): ... here.
1396         * include/std/deque (erase, erase_if): Use __remove_if instead of
1397         remove and remove_if.
1398         * include/std/string (erase, erase_if): Likewise.
1399         * include/std/vector (erase, erase_if): Likewise.
1401 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1403         PR libstdc++/66742
1404         * include/bits/list.tcc (list::sort()): Use _Scratch_list
1405         objects for splicing and merging.
1406         (list::sort(StrictWeakOrdering)): Likewise.
1407         * include/bits/stl_list.h (__detail::_Scratch_list): New type.
1408         * src/c++98/list.cc (_List_node_base::_M_transfer): Add
1409         assertion for --enable-libstdcxx-debug library.
1410         * testsuite/23_containers/list/operations/66742.cc: New test.
1412 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1414         PR libstdc++/100612
1415         * include/std/thread (__pmf_expects_stop_token): New variable
1416         template to detect a pointer to member function that needs a
1417         stop_token to be added to the arguments.
1418         (jthread::__S_create): Use __pmf_expects_stop_token.
1419         (jthread::__S_create_pmf): New function.
1420         * testsuite/30_threads/jthread/100612.cc: New test.
1422 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1424         * include/bits/stl_queue.h
1425         (__cpp_lib_adaptor_iterator_pair_constructor): Define for C++23, as
1426         per P1425R4.
1427         (queue(InputIterator, InputIterator)): Likewise.
1428         (queue(InputIterator, InputIterator, const Alloc&)): Likewise.
1429         * include/bits/stl_stack.h
1430         (__cpp_lib_adaptor_iterator_pair_constructor): Likewise.
1431         (stack(InputIterator, InputIterator)): Likewise.
1432         (stack(InputIterator, InputIterator, const Alloc&)): Likewise.
1433         * include/std/version (__cpp_lib_adaptor_iterator_pair_constructor):
1434         Define.
1435         * testsuite/23_containers/queue/cons_from_iters.cc: New test.
1436         * testsuite/23_containers/stack/cons_from_iters.cc: New test.
1438 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1440         * include/bits/stl_queue.h (priority_queue): Add
1441         allocator-extended overloads for constructors taking iterator.
1442         * testsuite/23_containers/priority_queue/lwg3506.cc: New test.
1444 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1446         * include/bits/stl_queue.h (priority_queue): Construct sequence
1447         from iterators when no sequence argument is present (LWG 3529).
1448         * testsuite/23_containers/priority_queue/lwg3529.cc: New test.
1450 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1452         * include/bits/stl_queue.h (priority_queue): Constrain
1453         constructors with InputIterator parameters (LWG 3522).
1454         * testsuite/23_containers/priority_queue/lwg3522.cc: New test.
1456 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1458         * include/bits/ranges_base.h (ranges::distance): Split overload
1459         into two (LWG 3392).
1460         * testsuite/24_iterators/range_operations/lwg3392.cc: New test.
1462 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1464         * testsuite/30_threads/thread/cons/3.cc: Remove derivation from
1465         std::unary_function.
1466         * testsuite/30_threads/thread/cons/4.cc: Likewise.
1467         * testsuite/30_threads/thread/cons/5.cc: Likewise.
1469 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1471         * testsuite/ext/pb_ds/example/basic_multimap.cc: Remove
1472         unnecesary derivation from std::unary_function.
1473         * testsuite/ext/pb_ds/example/erase_if.cc: Likewise.
1474         * testsuite/ext/pb_ds/example/hash_illegal_resize.cc: Likewise.
1475         * testsuite/ext/pb_ds/example/hash_initial_size.cc: Likewise.
1476         * testsuite/ext/pb_ds/example/hash_load_set_change.cc: Likewise.
1477         * testsuite/ext/pb_ds/example/hash_mod.cc: Likewise.
1478         * testsuite/ext/pb_ds/example/hash_resize.cc: Likewise.
1479         * testsuite/ext/pb_ds/example/hash_shift_mask.cc: Likewise.
1480         * testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc:
1481         Likewise.
1482         * testsuite/ext/pb_ds/example/ranged_hash.cc: Likewise.
1483         * testsuite/ext/pb_ds/example/store_hash.cc: Likewise.
1485 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1487         * src/c++11/functexcept.cc (__throw_out_of_range_fmt): Do not
1488         expand the format string for freestanding, or non-vebose, or if
1489         we're just going to abort anyway.
1490         * src/c++11/snprintf_lite.cc: Remove unused header and
1491         declaration.
1493 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1495         * include/std/variant (__do_visit): Use variant_npos instead of
1496         literal -1 that requires a narrowing conversion.
1498 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1500         PR libstdc++/99327
1501         * src/filesystem/ops-common.h (__unsupported): New function to
1502         return a suitable error code for missing functionality.
1503         (posix::off_t): New typedef.
1504         (posix::*): Set errno to ENOSYS instead of ENOTSUP for no-op
1505         fallback implementations.
1506         (do_copy_file): Replace uses of errc::not_supported.
1507         * src/c++17/fs_ops.cc (fs::copy, fs::copy_file, create_dir)
1508         (fs::create_directory, fs::create_directory_symlink)
1509         (fs::create_hard_link, fs::create_symlink, fs::current_path)
1510         (fs::equivalent, do_stat, fs::file_size, fs::hard_link_count)
1511         (fs::last_write_time, fs::permissions, fs::read_symlink):
1512         Replace uses of errc::not_supported.
1513         (fs::resize_file): Qualify off_t.
1514         * src/filesystem/ops.cc (fs::copy, fs::copy_file, create_dir)
1515         (fs::create_directory, fs::create_directory_symlink)
1516         (fs::create_hard_link, fs::create_symlink, fs::current_path)
1517         (fs::equivalent, do_stat, fs::file_size, fs::last_write_time)
1518         (fs::permissions, fs::read_symlink, fs::system_complete):
1519         Replace uses of errc::not_supported.
1520         (fs::resize_file): Qualify off_t and enable unconditionally.
1521         * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.
1523 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1525         * src/filesystem/ops-common.h (last_error): New helper function.
1526         (filesystem::do_space): Use last_error().
1527         * src/c++17/fs_ops.cc (fs::absolute, fs::create_hard_link)
1528         (fs::equivalent, fs::remove, fs::temp_directory_path): Use
1529         last_error().
1530         * src/filesystem/ops.cc (fs::create_hard_link)
1531         (fs::remove, fs::temp_directory_path): Likewise.
1533 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1535         * include/std/type_traits (__conditional): New class template
1536         for internal uses of std::conditional.
1537         (__conditional_t): New alias template to replace conditional_t.
1538         (__and_, __or_, __result_of_memfun, __result_of_memobj): Use
1539         __conditional_t instead of conditional::type.
1540         * include/bits/atomic_base.h (__atomic_impl::_Diff): Likewise.
1541         * include/bits/hashtable.h (_Hashtable): Likewise.
1542         * include/bits/hashtable_policy.h (_Node_iterator, _Insert_base)
1543         (_Local_iterator): Likewise. Replace typedefs with
1544         using-declarations.
1545         * include/bits/move.h (move_if_noexcept): Use __conditional_t.
1546         * include/bits/parse_numbers.h (_Select_int_base): Likewise.
1547         * include/bits/ptr_traits.h (__make_not_void): Likewise.
1548         * include/bits/ranges_algobase.h (__copy_or_move_backward)
1549         (__copy_or_move): Likewise.
1550         * include/bits/ranges_base.h (borrowed_iterator_t): Likewise.
1551         * include/bits/ranges_util.h (borrowed_subrange_t): Likewise.
1552         * include/bits/regex_compiler.h (_BracketMatcher): Use
1553         __conditional_t. Replace typedefs with using-declarations.
1554         * include/bits/shared_ptr_base.h (__shared_count): Use
1555         __conditional_t.
1556         * include/bits/stl_algobase.h (__copy_move, __copy_move_backward):
1557         Likewise.
1558         * include/bits/stl_iterator.h (__detail::__clamp_iter_cat)
1559         (reverse_iterator::iterator_concept)
1560         (__make_move_if_noexcept_iterator)
1561         (iterator_traits<common_iterator<_It, _Sent>>)
1562         (iterator_traits<counted_iterator<_It>>): Likewise.
1563         * include/bits/stl_pair.h (_PCC, pair::operator=): Likewise.
1564         * include/bits/stl_tree.h (_Rb_tree::insert_return_type)
1565         (_Rb_tree::_M_clone_node): Likewise.
1566         * include/bits/unique_ptr.h (unique_ptr(unique_ptr<U,E>&&)):
1567         Likewise.
1568         * include/bits/uses_allocator.h (__uses_alloc): Likewise.
1569         (__is_uses_allocator_predicate): Likewise.
1570         * include/debug/functions.h (__foreign_iterator_aux2): Likewise.
1571         * include/experimental/any (any::_Manager, __any_caster):
1572         Likewise.
1573         * include/experimental/executor (async_completion): Likewise.
1574         * include/experimental/functional (__boyer_moore_base_t):
1575         Likewise.
1576         * include/std/any (any::_Manager): Likewise.
1577         * include/std/functional (__boyer_moore_base_t): Likewise.
1578         * include/std/ranges (borrowed_iterator_t)
1579         (borrowed_subrange_t, __detail::__maybe_present_t)
1580         (__detail::__maybe_const_t, split_view): Likewise.
1581         * include/std/tuple (__empty_not_final, tuple::operator=):
1582         Likewise.
1583         * include/std/variant (__detail::__variant::__get_t): Likewise.
1585 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1587         PR libstdc++/78113
1588         * include/std/variant (__do_visit): Use a switch when we have a
1589         single variant with a small number of alternatives.
1591 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1593         PR libstdc++/90943
1594         * include/std/variant (__cpp_lib_variant): Update value.
1595         (__detail::__variant::__as): New helpers implementing the
1596         as-variant exposition-only function templates.
1597         (visit, visit<R>): Use __as to upcast the variant parameters.
1598         * include/std/version (__cpp_lib_variant): Update value.
1599         * testsuite/20_util/variant/visit_inherited.cc: New test.
1601 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1603         * include/bits/stl_iterator.h (__normal_iterator): Simplify
1604         converting constructor and do not require _Container::pointer.
1606 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1608         * include/bits/cow_string.h [_GLIBCXX_FULLY_DYNAMIC_STRING]
1609         (basic_string(basic_string&&)): Add noexcept and avoid
1610         allocation, by sharing rep with the rvalue string.
1612 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1614         * include/bits/stl_iterator.h (common_iterator::__arrow_proxy)
1615         (common_iterator::__postfix_proxy): Add noexcept.
1617 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1619         PR libstdc++/94418
1620         * include/bits/stl_iterator.h (reverse_iterator): Use
1621         conditional noexcept on constructors and assignment operators.
1622         * testsuite/24_iterators/reverse_iterator/noexcept.cc: New test.
1624 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1626         PR libstdc++/100153
1627         * include/bits/vector.tcc (vector<bool>::_M_shrink_to_fit()):
1628         When size() is zero just deallocate and reset.
1630 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1632         PR libstdc++/96733
1633         * include/bits/stl_algo.h (clamp): Use std::min and std::max.
1635 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1637         * include/bits/regex.h (basic_regex::multiline): Define for
1638         non-strict C++11 and C++14 modes.
1639         * include/bits/regex_constants.h (regex_constants::multiline):
1640         Add _GLIBCXX_RESOLVE_LIB_DEFECTS comment.
1642 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1644         * testsuite/25_algorithms/is_permutation/2.cc: Include <iterator>.
1646 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1648         * include/bits/stream_iterator.h (istream_iterator): Add
1649         noexcept to constructors and non-throwing member functions and
1650         friend functions.
1651         (ostream_iterator): Likewise.
1653 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1655         * include/bits/boost_concept_check.h (_Is_vector_bool_iterator):
1656         New trait to identify vector<bool> iterators, including debug
1657         ones.
1658         (_ForwardIteratorReferenceConcept): Add default template
1659         argument using _Is_vector_bool_iterator and use it in partial
1660         specialization for the vector<bool> cases.
1661         (_Mutable_ForwardIteratorReferenceConcept): Likewise.
1662         * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error
1663         line number.
1665 2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
1667         * include/bits/list.tcc (list::merge): Remove call to size() and
1668         try-catch block. Use _Finalize_merge instead.
1669         * include/bits/stl_list.h (list::_Finalize_merge): New
1670         scope guard type to update _M_size members after a merge.
1672 2021-09-30  Jonathan Wakely  <jwakely@redhat.com>
1674         * include/bits/regex.h (basic_regex::multiline): Fix #if
1675         condition.
1677 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
1679         * include/bits/regex.h (basic_regex::multiline): Define constant
1680         for C++17.
1681         * include/bits/regex_constants.h (regex_constants::multiline):
1682         Define constant for C++17.
1683         (regex_constants::__multiline): Define duplicate constant for
1684         internal use in C++11 and C++14.
1685         * include/bits/regex_executor.h (_Executor::_M_match_multiline()):
1686         New member function.
1687         (_Executor::_M_is_line_terminator(_CharT)): New member function.
1688         (_Executor::_M_at_begin(), _Executor::_M_at_end()): Use new
1689         member functions to support multiline matches.
1690         * testsuite/28_regex/algorithms/regex_match/multiline.cc: New test.
1692 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
1694         * include/bits/regex_compiler.h (_Compiler::_S_validate): New
1695         function.
1696         * include/bits/regex_compiler.tcc (_Compiler::_Compiler): Use
1697         _S_validate to check flags.
1698         * include/bits/regex_error.h (_S_grammar): New error code for
1699         internal use.
1700         * testsuite/28_regex/basic_regex/ctors/grammar.cc: New test.
1702 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
1704         PR libstdc++/84110
1705         * include/bits/regex_error.h (regex_constants::_S_null): New
1706         error code for internal use.
1707         * include/bits/regex_scanner.tcc (_Scanner::_M_scan_normal()):
1708         Check for null character.
1709         * testsuite/28_regex/basic_regex/84110.cc: New test.
1711 2021-09-29  Jonathan Wakely  <jwakely@redhat.com>
1713         * include/bits/regex.h (__detail::__is_contiguous_iter): Move
1714         here from <bits/regex_compiler.h>.
1715         (basic_regex::_M_compile): New function to compile an NFA from
1716         a regular expression string.
1717         (basic_regex::basic_regex): Use _M_compile instead of delegating
1718         to other constructors.
1719         (basic_regex::operator=(const basic_regex&)): Define as
1720         defaulted.
1721         (basic_regex::operator=(initializer_list<C>)): Use _M_compile.
1722         (basic_regex::assign(const basic_regex&)): Use copy assignment.
1723         (basic_regex::assign(basic_regex&&)): Use move assignment.
1724         (basic_regex::assign(const C*, flag_type)): Use _M_compile
1725         instead of constructing a temporary string.
1726         (basic_regex::assign(const C*, size_t, flag_type)): Likewise.
1727         (basic_regex::assign(const basic_string<C,T,A>&, flag_type)):
1728         Use _M_compile instead of constructing a temporary basic_regex.
1729         (basic_regex::assign(InputIter, InputIter, flag_type)): Avoid
1730         constructing a temporary string for contiguous iterators of the
1731         right value type.
1732         * include/bits/regex_compiler.h (__is_contiguous_iter): Move to
1733         <bits/regex.h>.
1734         (__enable_if_contiguous_iter, __disable_if_contiguous_iter)
1735         (__compile_nfa): Remove.
1736         * testsuite/28_regex/basic_regex/assign/exception_safety.cc: New
1737         test.
1738         * testsuite/28_regex/basic_regex/ctors/char/other.cc: New test.
1740 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1742         * include/bits/atomic_timed_wait.h (__platform_wait_until_impl):
1743         Return false for ETIMEDOUT and true otherwise.
1745 2021-09-28  François Dumont  <fdumont@gcc.gnu.org>
1747         * testsuite/20_util/default_delete/48631_neg.cc: Adapt dg-prune-output message
1748         to also match message with '__8' in it.
1750 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1752         * include/bits/regex_automaton.h (_NFA_base::_SizeT): Remove.
1753         * include/bits/regex_compiler.h (_Compiler::_IterT): Remove.
1754         * include/bits/regex_compiler.tcc: Likewise.
1755         * include/bits/regex_scanner.h (_Scanner::_IterT): Remove.
1756         * include/bits/regex_scanner.tcc: Likewise.
1758 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1760         * include/bits/regex_compiler.tcc: Add line break in empty while
1761         statement.
1762         * include/bits/regex_executor.tcc: Avoid unused parameter
1763         warning.
1765 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1767         * include/bits/regex.h (basic_regex, swap): Add noexcept to
1768         non-throwing functions.
1769         * include/bits/regex_automaton.h (_State_base, _State)
1770         (_NFA_base): Likewise.
1771         * include/bits/regex_compiler.h (_Compiler): Likewise.
1772         * include/bits/regex_error.h (regex_error::code()): Likewise.
1773         * include/bits/regex_scanner.h (_Scanner): Likewise.
1775 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1777         * include/bits/atomic_wait.h (_GLIBCXX_HAVE_PLATFORM_WAIT):
1778         Define before first attempt to check it.
1780 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1782         * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc:
1783         Do not check non-default constructible sequences when
1784         _GLIBCXX_CONCEPT_CHECKS is defined.
1785         * testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc:
1786         Likewise.
1787         * testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc:
1788         Likewise.
1789         * testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc:
1790         Likewise.
1791         * testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc:
1792         Likewise.
1793         * testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc:
1794         Likewise.
1796 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1798         * testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc:
1799         Do not test implicit allocator rebinding when _GLIBCXX_CONCEPT_CHECKS
1800         is defined.
1801         * testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc:
1802         Likewise.
1803         * testsuite/23_containers/list/requirements/explicit_instantiation/3.cc:
1804         Likewise.
1805         * testsuite/23_containers/list/requirements/explicit_instantiation/5.cc:
1806         Likewise.
1807         * testsuite/23_containers/map/requirements/explicit_instantiation/3.cc:
1808         Likewise.
1809         * testsuite/23_containers/map/requirements/explicit_instantiation/5.cc:
1810         Likewise.
1811         * testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc:
1812         Likewise.
1813         * testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc:
1814         Likewise.
1815         * testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc:
1816         Likewise.
1817         * testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc:
1818         Likewise.
1819         * testsuite/23_containers/set/requirements/explicit_instantiation/3.cc:
1820         Likewise.
1821         * testsuite/23_containers/set/requirements/explicit_instantiation/5.cc:
1822         Likewise.
1823         * testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc:
1824         Likewise.
1825         * testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc:
1826         Likewise.
1827         * testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc:
1828         Likewise.
1829         * testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc:
1830         Likewise.
1831         * testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc:
1832         Likewise.
1833         * testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc:
1834         Likewise.
1836 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1838         * include/bits/boost_concept_check.h (_ForwardIteratorConcept)
1839         (_BidirectionalIteratorConcept, _RandomAccessIteratorConcept):
1840         Check result types of iterator operations.
1841         (_Mutable_ForwardIteratorConcept): Check that iterator's
1842         reference type is a reference to its value type.
1843         (_Mutable_BidirectionalIteratorConcept): Do not require the
1844         value type to be assignable.
1845         (_Mutable_RandomAccessIteratorConcept): Likewise.
1846         * testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error
1847         line number.
1849 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1851         * testsuite/25_algorithms/copy/34595.cc: Add missing operation
1852         for type used as an iterator.
1853         * testsuite/25_algorithms/unique_copy/check_type.cc: Likewise.
1855 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1857         * testsuite/20_util/is_nothrow_swappable/value.h: Use custom
1858         comparison function for priority_queue of type with no
1859         relational operators.
1860         * testsuite/20_util/is_swappable/value.h: Likewise.
1861         * testsuite/24_iterators/output/concept.cc: Add operator< to
1862         type used in set.
1864 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1866         * include/bits/boost_concept_check.h (_OutputIteratorConcept):
1867         Use a function to preserve value category of the type.
1868         * include/bits/stl_algobase.h (copy, move, fill_n): Use a
1869         reference as the second argument for _OutputIteratorConcept.
1870         (copy_backward, move_backward): Use _OutputIteratorConcept
1871         instead of _ConvertibleConcept.
1873 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1875         * include/bits/stl_iterator.h (pointer_traits): Define partial
1876         specialization for __normal_iterator.
1877         * testsuite/24_iterators/normal_iterator/to_address.cc: New test.
1879 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1881         * include/bits/move.h (forward(remove_reference_t<T>&&)):
1882         Improve text of static_assert.
1883         * testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
1884         * testsuite/20_util/forward/f_neg.cc: Likewise.
1886 2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
1888         PR libstdc++/102499
1889         * include/bits/fs_path.h (path::begin, path::end): Add noexcept
1890         to declarations, to match definitions.
1892 2021-09-24  Jonathan Wakely  <jwakely@redhat.com>
1894         * include/bits/range_access.h (cbegin, cend): Remove redundant
1895         'inline' specifier.
1897 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
1899         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
1900         Remove dg-error lines for C++20-only errors.
1902 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
1904         * testsuite/19_diagnostics/headers/system_error/93151.cc:
1905         Disable PCH.
1907 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
1909         * src/c++11/system_error.cc (system_error_category) [_WIN32]:
1910         Map Windows error codes to generic POSIX error numbers. Use
1911         FormatMessage instead of strerror.
1912         * testsuite/19_diagnostics/error_category/system_category.cc:
1913         Adjust for new behaviour on Windows.
1915 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
1917         * src/c++11/system_error.cc (generic_error_category): Define
1918         class and virtual functions as 'final'.
1919         (generic_error_category::equivalent(int, const error_condition&)):
1920         Override.
1921         (system_error_category): Define class and virtual functions as
1922         'final'.
1923         (system_error_category::equivalent(int, const error_condition&)):
1924         Override.
1925         (generic_category_instance, system_category_instance): Use
1926         constinit union to make the objects immortal.
1928 2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
1930         PR libstdc++/102425
1931         * src/c++11/system_error.cc
1932         (system_error_category::default_error_condition): Add 0 to
1933         switch.
1934         * testsuite/19_diagnostics/error_category/102425.cc: New test.
1936 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
1938         * include/bits/fs_path.h (path::iterator): Add noexcept to all
1939         member functions and friend functions.
1940         (distance): Add noexcept.
1941         (advance): Add noexcept and inline.
1942         * include/experimental/bits/fs_path.h (path::iterator):
1943         Add noexcept to all member functions.
1945 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
1947         PR libstdc++/102270
1948         * include/std/tuple (_Tuple_impl): Add constexpr to constructor
1949         missed in previous patch.
1950         * testsuite/20_util/tuple/cons/102270.C: Moved to...
1951         * testsuite/20_util/tuple/cons/102270.cc: ...here.
1952         * testsuite/util/testsuite_allocator.h (SimpleAllocator): Add
1953         constexpr to constructor so it can be used for C++20 tests.
1955 2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
1957         * testsuite/26_numerics/valarray/dr630-3.C: Moved to...
1958         * testsuite/26_numerics/valarray/dr630-3.cc: ...here.
1959         * testsuite/27_io/basic_iostream/cons/16251.C: Moved to...
1960         * testsuite/27_io/basic_iostream/cons/16251.cc: ...here.
1962 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1964         * src/Makefile.am (stamp-debug): Add all Makefiles as
1965         prerequisites.
1966         * src/Makefile.in: Regenerate.
1968 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1970         * testsuite/ext/pb_ds/regression/tree_map_rand.cc: Increase
1971         timeout factor to 3.
1972         * testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
1974 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1976         * doc/xml/manual/using.xml: Generalize to apply to more than
1977         just -std=c++11.
1978         * doc/html/manual/using_macros.html: Regenerate.
1980 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1982         * include/std/optional (nullptr_t): Make constructor noexcept.
1984 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1986         * include/bits/fs_path.h (advance): Remove non-deducible
1987         template parameter.
1989 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1991         PR libstdc++/102270
1992         * include/std/tuple (_Head_base, _Tuple_impl): Add
1993         _GLIBCXX20_CONSTEXPR to allocator-extended constructors.
1994         (tuple<>::swap(tuple&)): Add _GLIBCXX20_CONSTEXPR.
1995         * testsuite/20_util/tuple/cons/102270.C: New test.
1997 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
1999         PR libstdc++/102280
2000         * include/std/span (span(Range&&)): Add constraint to deduction
2001         guide.
2003 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2005         * src/c++98/Makefile.am: Use CXXCOMPILE not LTCXXCOMPILE.
2006         * src/c++98/Makefile.in: Regenerate.
2008 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2010         * include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
2011         (to_string): Add noexcept if the type width is 32 bits or less.
2013 2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
2015         * include/bits/unique_ptr.h (__uniq_ptr_impl::_M_ptr)
2016         (__uniq_ptr_impl::_M_deleter): Add noexcept.
2018 2021-09-16  Thomas Rodgers  <rodgert@twrodgers.com>
2020         PR libstdc++/101761
2021         * testsuite/29_atomics/atomic_ref/wait_notify.cc (test): Use
2022         va and vb as arguments to wait/notify, remove unused bb local.
2024 2021-09-15  Hugo Beauzée-Luyssen  <hugo@beauzee.fr>
2026         * crossconfig.m4: Check for TLS support on mingw.
2027         * configure: Regenerate.
2029 2021-09-13  Jason Merrill  <jason@redhat.com>
2031         * include/std/version: Define __cpp_lib_hardware_interference_size.
2032         * libsupc++/new: Define hardware interference size variables.
2034 2021-09-10  Jonathan Wakely  <jwakely@redhat.com>
2036         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2037         Fix invalid hostname to only match the .invalid TLD.
2039 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2041         * include/bits/atomic_base.h (__atomic_base<P*>::compare_exchange_weak):
2042         Add new functions.
2043         * include/std/atomic (atomic<T*>::compare_exchange_weak): Use
2044         it.
2046 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2048         * include/std/atomic: Tweak whitespace.
2050 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2052         PR c++/102177
2053         * include/bits/atomic_base.h (__is_valid_cmpexch_failure_order):
2054         New function to check if a memory order is valid for the failure
2055         case of compare exchange operations.
2056         (__atomic_base<I>::compare_exchange_weak): Simplify assertions
2057         by using __is_valid_cmpexch_failure_order.
2058         (__atomic_base<I>::compare_exchange_strong): Likewise.
2059         (__atomic_base<P*>::compare_exchange_weak): Likewise.
2060         (__atomic_base<P*>::compare_exchange_strong): Likewise.
2061         (__atomic_impl::compare_exchange_weak): Add assertion.
2062         (__atomic_impl::compare_exchange_strong): Likewise.
2063         * include/std/atomic (atomic::compare_exchange_weak): Likewise.
2064         (atomic::compare_exchange_strong): Likewise.
2066 2021-09-02  Jonathan Wakely  <jwakely@redhat.com>
2068         * include/std/functional (invoke_r): Define.
2069         * include/std/version (__cpp_lib_invoke_r): Define.
2070         * testsuite/20_util/function_objects/invoke/version.cc: Check
2071         for __cpp_lib_invoke_r as well as __cpp_lib_invoke.
2072         * testsuite/20_util/function_objects/invoke/4.cc: New test.
2074 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2076         PR libstdc++/98421
2077         * include/std/span (span(Iter, size_type), span(Iter, Iter)):
2078         Add valid range checks.
2079         * testsuite/23_containers/span/cons_1_assert_neg.cc: New test.
2080         * testsuite/23_containers/span/cons_2_assert_neg.cc: New test.
2082 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2084         * configure.ac: Fix checks for F_GETFL, F_SETFL and O_NONBLOCK.
2085         * configure: Regenerate.
2087 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2089         * src/c++11/system_error.cc (error_category::~error_category()):
2090         Remove noexcept-specifier.
2091         (system_error::~system_error()): Likewise.
2092         * testsuite/19_diagnostics/error_category/noexcept.cc: New test.
2093         * testsuite/19_diagnostics/system_error/noexcept.cc: New test.
2095 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2097         PR libstdc++/102074
2098         * include/bits/atomic_timed_wait.h (__timed_waiter_pool)
2099         [!_GLIBCXX_HAVE_PLATFORM_TIMED_WAIT]: Add missing return.
2101 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2103         * include/experimental/internet (__make_resolver_error_code):
2104         Handle EAI_SYSTEM errors.
2105         (basic_resolver_results): Use __make_resolver_error_code. Use
2106         Glibc NI_MAXHOST and NI_MAXSERV values for buffer sizes.
2108 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2110         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
2111         Try other service if "http" fails.
2113 2021-08-31  Jonathan Wakely  <jwakely@redhat.com>
2115         * testsuite/17_intro/names.cc: Undefine some more names used
2116         by Solaris system headers.
2118 2021-08-30  Jason Merrill  <jason@redhat.com>
2120         PR c++/96286
2121         * testsuite/30_threads/promise/requirements/lwg3466.cc:
2122         Remove dg-prune-outputs.
2124 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
2126         * include/bits/alloc_traits.h (allocator_traits): Add explicit
2127         specialization for allocator<void>. Improve doxygen comments.
2128         * include/bits/allocator.h (allocator<void>): Restore for the
2129         versioned namespace.
2130         (allocator<void>::construct, allocator<void>::destroy): Remove.
2131         * include/ext/extptr_allocator.h (_Extptr_allocator<void>):
2132         Add default constructor and converting constructor.
2134 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
2136         * include/bits/stl_uninitialized.h: Fix typo in comment.
2138 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
2140         PR libstdc++/99876
2141         * src/c++17/fs_ops.cc (fs::absolute): Call non-throwing form,
2142         to avoid unnecessary current_path() call.
2144 2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
2146         * include/bits/std_function.h (function::function(F&&)): Give
2147         name to defaulted template parameter, to improve diagnostics.
2148         Use markdown for more doxygen comments.
2150 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
2152         * include/bits/std_function.h (function): Adjust doxygen
2153         comments.
2154         * include/bits/unique_ptr.h (make_unique_for_overwrite):
2155         Change parameter name to match doxygen comment.
2157 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
2159         * include/bits/std_function.h (_function_base::_Base_manager):
2160         Replace _M_init_functor with a function template using a
2161         forwarding reference, and a pair of _M_create function
2162         templates. Reuse _M_create for the clone operation.
2163         (function::_Decay_t): New alias template.
2164         (function::_Callable): Simplify by using _Decay.
2165         (function::function(F)): Change parameter to forwarding
2166         reference, as per LWG 2447. Add noexcept-specifier. Simplify
2167         constraints.
2168         (function::operator=(F&&)): Add noexcept-specifier.
2169         * testsuite/20_util/function/cons/lwg2774.cc: New test.
2170         * testsuite/20_util/function/cons/noexcept.cc: New test.
2172 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
2174         * include/bits/std_function.h (function::function(F)): Add
2175         static assertions to check constructibility requirements.
2177 2021-08-26  Jonathan Wakely  <jwakely@redhat.com>
2179         PR libstdc++/100285
2180         * configure.ac: Check for O_NONBLOCK.
2181         * configure: Regenerate.
2182         * include/experimental/internet: Include <ws2tcpip.h> for
2183         Windows.  Use preprocessor conditions around more constants.
2184         * include/experimental/socket: Use preprocessor conditions
2185         around more constants.
2186         * testsuite/experimental/net/internet/resolver/base.cc: Only use
2187         constants when the corresponding C macro is defined.
2188         * testsuite/experimental/net/socket/basic_socket.cc: Likewise.
2189         * testsuite/experimental/net/socket/socket_base.cc: Likewise.
2190         Make preprocessor checks more fine-grained.
2192 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
2194         * testsuite/17_intro/names.cc: Check 'sz'.
2196 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
2198         * testsuite/17_intro/names.cc: Adjust for Windows.
2200 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
2202         * include/std/valarray: Uglify 'func' parameters.
2203         * testsuite/17_intro/names.cc: Add 'func' to checks.
2205 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
2207         PR libstdc++/102064
2208         * include/bits/stl_uninitialized.h (_GLIBCXX_USE_ASSIGN_FOR_INIT):
2209         Define macro to check conditions for optimizing trivial cases.
2210         (__check_constructible): New function to do static assert.
2211         (uninitialized_copy, uninitialized_fill, uninitialized_fill_n):
2212         Use new macro.
2213         * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc:
2214         Adjust dg-error pattern.
2215         * testsuite/23_containers/vector/cons/89164.cc: Likewise. Add
2216         C++17-specific checks from 89164_c++17.cc.
2217         * testsuite/23_containers/vector/cons/89164_c++17.cc: Removed.
2218         * testsuite/20_util/specialized_algorithms/uninitialized_copy/102064.cc:
2219         New test.
2220         * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc:
2221         New test.
2222         * testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc:
2223         New test.
2224         * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc:
2225         New test.
2227 2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
2229         PR libstdc++/102048
2230         * include/ext/rope (rope::erase(size_type)): Remove broken
2231         function.
2233 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
2235         * doc/xml/manual/status_cxx2020.xml: Update table.
2236         * doc/html/manual/status.html: Regenerate.
2238 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
2240         * include/std/type_traits (is_layout_compatible): Define.
2241         (is_corresponding_member): Define.
2242         * include/std/version (__cpp_lib_is_layout_compatible): Define.
2243         * testsuite/20_util/is_layout_compatible/is_corresponding_member.cc:
2244         New test.
2245         * testsuite/20_util/is_layout_compatible/value.cc: New test.
2246         * testsuite/20_util/is_layout_compatible/version.cc: New test.
2247         * testsuite/20_util/is_pointer_interconvertible/with_class.cc:
2248         New test.
2249         * testsuite/23_containers/span/layout_compat.cc: Do not use real
2250         std::is_layout_compatible trait if available.
2252 2021-08-24  Jonathan Wakely  <jwakely@redhat.com>
2254         * src/c++11/cxx11-shim_facets.cc: Fix mismatched class-key in
2255         explicit instantiation definitions.
2257 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
2259         * include/std/ranges (basic_istream_view): Add default template
2260         argument.
2261         * testsuite/std/ranges/istream_view.cc: Check it.
2263 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
2265         * libsupc++/dyncast.cc (__dynamic_cast): Add __builtin_expect to
2266         precondition check.
2268 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
2270         PR libstdc++/90787
2271         * testsuite/util/testsuite_fs.h (permissions_are_testable):
2272         Define as inline.
2274 2021-08-20  Jonathan Wakely  <jwakely@redhat.com>
2276         PR libstdc++/90787
2277         * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
2278         Use new __gnu_test::permissions_are_testable() function.
2279         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
2280         Likewise.
2281         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
2282         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
2283         * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
2284         * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
2285         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
2286         * testsuite/27_io/filesystem/operations/symlink_status.cc:
2287         Likewise.
2288         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2289         Likewise.
2290         * testsuite/experimental/filesystem/iterators/directory_iterator.cc:
2291         Likewise.
2292         * testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
2293         Likewise.
2294         * testsuite/experimental/filesystem/operations/exists.cc:
2295         Likewise.
2296         * testsuite/experimental/filesystem/operations/is_empty.cc:
2297         Likewise.
2298         * testsuite/experimental/filesystem/operations/remove.cc:
2299         Likewise.
2300         * testsuite/experimental/filesystem/operations/remove_all.cc:
2301         Likewise.
2302         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2303         Likewise.
2304         * testsuite/util/testsuite_fs.h (__gnu_test::permissions_are_testable):
2305         New function to guess whether testing permissions will work.
2307 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2309         * doc/xml/manual/status_cxx2020.xml: Move row  earlier in table.
2310         * doc/html/manual/status.html: Regenerate.
2312 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2314         * doc/doxygen/user.cfg.in: Update to Doxygen 1.9.2
2316 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2318         PR libstdc++/101965
2319         * include/std/charconv (__to_chars_i): Remove redundant check.
2321 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2323         PR libstdc++/101960
2324         * include/std/tuple (_Tuple_impl(_Tuple_impl&&)): Use base
2325         class' move constructor. Define as defaulted for versioned
2326         namespace.
2327         * testsuite/20_util/tuple/cons/101960.cc: New test.
2329 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2331         PR libstdc++/100139
2332         * doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table.
2333         * doc/html/manual/status.html: Regenerate.
2335 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2337         * include/bits/shared_ptr.h: Add @since and @headerfile tags.
2338         * include/bits/unique_ptr.h: Add @headerfile tags.
2340 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2342         * src/filesystem/ops-common.h (filesystem::file_time): Improve
2343         overflow check by using system_clock::duration::max().
2345 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
2347         * include/bits/stl_tree.h: Tweak whitespace.
2349 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2351         * include/bits/unique_ptr.h (default_delete): Add @since tag.
2352         (unique_ptr, unique_ptr<T[]>): Likewise. Improve @brief.
2353         (make_unique, make_unique_for_overwrite): Likewise. Add @tparam,
2354         @param, and @returns.
2355         (_MakeUniq): Move to __detail namespace. Add alias template
2356         helpers.
2358 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2360         * include/bits/stl_function.h: Improve doxygen comments.
2362 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2364         * doc/doxygen/user.cfg.in (PREDEFINED): Enable doxygen
2365         processing for C++20 components and components that depend on
2366         compiler features.
2367         * include/bits/stl_algo.h (random_shuffle): Use @deprecated.
2368         * include/std/type_traits: Improve doxygen comments for C++20
2369         traits.
2371 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2373         * include/ext/type_traits.h (__promote_2, __promote_3)
2374         (__promote_4): Redfine as alias templates using __promoted_t.
2375         * include/std/complex (__promote_2): Remove partial
2376         specializations for std::complex.
2378 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2380         * include/bits/stl_algo.h (min(initializer_list<T>))
2381         (min(initializer_list<T>, Compare)): Call __min_element directly to
2382         avoid redundant debug checks for valid ranges.
2383         (max(initializer_list<T>), max(initializer_list<T>, Compare)):
2384         Likewise, for __max_element.
2385         (minmax(initializer_list<T>), minmax(initializer_list<T>, Compare)):
2386         Likewise, for __minmax_element.
2388 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2390         * include/debug/deque (deque(size_type, const T&, const A&)):
2391         Prevent class template argument deduction and replace with a
2392         deduction guide.
2393         * include/debug/forward_list (forward_list(size_type, const T&, const A&)):
2394         Likewise.
2395         * include/debug/list (list(size_type, const T&, const A&)):
2396         Likewise.
2397         * include/debug/vector (vector(size_type, const T&, const A&)):
2398         Likewise.
2400 2021-08-18  Jonathan Wakely  <jwakely@redhat.com>
2402         * python/libstdcxx/v6/printers.py (StdBitReferencePrinter): Use
2403         'std::vector<bool>::reference' as type name, not _Bit_reference.
2404         (build_libstdcxx_dictionary): Register printers for vector<bool>
2405         types in debug mode too.
2406         * testsuite/libstdc++-prettyprinters/simple.cc: Adjust expected
2407         output for invalid _Bit_reference. Use vector<bool>::reference
2408         instead of _Bit_reference.
2409         * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
2411 2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
2413         * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose,
2414         continued.
2416 2021-08-17  Luc Michel  <lmichel@kalray.eu>
2417             Marc Poulhies  <mpoulhies@kalrayinc.com>
2419         * testsuite/lib/gdb-test.exp (gdb_version_check)
2420         (gdb_version_check_xmethods): Only check the GDB version for
2421         local native targets.
2423 2021-08-17  Antony Polukhin  <antoshkka@gmail.com>
2424             Jonathan Wakely  <jwakely@redhat.com>
2426         * include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity
2427         if distance is O(1).
2428         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
2429         line number.
2431 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2433         * testsuite/26_numerics/random/seed_seq/cons/range.cc: Check
2434         construction from input iterators.
2436 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2438         * python/libstdcxx/v6/printers.py (StdErrorCatPrinter): Remove.
2440 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2442         PR libstdc++/101923
2443         * include/bits/std_function.h (function(function&&)): Check for
2444         non-empty parameter before doing any work.
2446 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2448         * include/bits/cow_string.h (basic_string::contains): Do not
2449         define for -std=gnu++20.
2451 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2453         * include/bits/ranges_util.h (__not_same_as): Rename to
2454         __different_from.
2455         * include/std/ranges (__not_same_as): Likewise.
2457 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2459         * include/std/utility (exchange): Add noexcept-specifier.
2460         * testsuite/20_util/exchange/noexcept.cc: New test.
2462 2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
2464         * python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Define.
2465         (build_libstdcxx_dictionary): Register printer for
2466         std::error_code and std::error_condition.
2467         * testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
2469 2021-08-16  Jonathan Wakely  <jwakely@redhat.com>
2471         PR libstdc++/101937
2472         * src/c++11/debug.cc (PrintContext::_M_indent): Replace with a
2473         static data member.
2474         (print_word): Use qualified-id to access it.
2476 2021-08-16  Jonathan Wakely  <jwakely@redhat.com>
2478         * python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local):
2479         Install another copy of the GDB hook.
2480         * python/Makefile.in: Regenerate.
2482 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
2484         PR libstdc++/101870
2485         * include/c_global/cmath (hypot): Use __promoted_t.
2486         (lerp): Add new overload accepting any arithmetic types.
2487         * include/ext/type_traits.h (__promoted_t): New alias template.
2488         * testsuite/26_numerics/lerp.cc: Moved to...
2489         * testsuite/26_numerics/lerp/1.cc: ...here.
2490         * testsuite/26_numerics/lerp/constexpr.cc: New test.
2491         * testsuite/26_numerics/lerp/version.cc: New test.
2493 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
2495         * testsuite/26_numerics/lerp.cc: Add header name to #error.
2496         * testsuite/26_numerics/midpoint/integral.cc: Likewise.
2497         * testsuite/26_numerics/midpoint/version.cc: New test.
2499 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
2501         * include/experimental/random (experimental::randint): Add
2502         nodiscard attribute.
2504 2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
2506         * src/c++98/locale_init.cc: Require C++11.
2507         * src/c++98/localename.cc: Likewise.
2508         * src/c++98/misc-inst.cc: Require C++98.
2510 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
2512         PR libstdc++/101866
2513         * testsuite/experimental/random/randint.cc: Loop and retry if
2514         reseed() produces the same sequence.
2516 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
2518         * include/std/type_traits (__cpp_lib_is_pointer_interconvertible)
2519         (is_pointer_interconvertible_base_of_v)
2520         (is_pointer_interconvertible_base_of): Define for C++20.
2521         * include/std/version (__cpp_lib_is_pointer_interconvertible):
2522         Define.
2523         * testsuite/23_containers/span/layout_compat.cc: Use correct
2524         feature test macro for std::is_layout_compatible_v.
2525         * testsuite/20_util/is_pointer_interconvertible/value.cc: New test.
2526         * testsuite/20_util/is_pointer_interconvertible/version.cc: New test.
2528 2021-08-09  Jonathan Wakely  <jwakely@redhat.com>
2530         * include/bits/regex.h (basic_regex::transform_primary): Use
2531         _GLIBCXX_STD_C::vector for local variable.
2532         * include/bits/regex.tcc (__regex_algo_impl): Use reference to
2533         _GLIBCXX_STD_C::vector base class of match_results.
2534         * include/bits/regex_automaton.tcc (_StateSeq:_M_clone): Use
2535         _GLIBCXX_STD_C::map and _GLIBCXX_STD_C::deque for local
2536         variables.
2537         * include/bits/regex_compiler.h (_BracketMatcher): Use
2538         _GLIBCXX_STD_C::vector for data members.
2539         * include/bits/regex_executor.h (_Executor): Likewise.
2540         * include/std/regex [_GLIBCXX_DEBUG]: Include <debug/vector>.
2542 2021-08-09  François Dumont  <fdumont@gcc.gnu.org>
2544         * include/debug/safe_container.h
2545         (_Safe_container(_Safe_container&&, const _Alloc&, std::true_type)): New.
2546         (_Safe_container(_Safe_container&&, const _Alloc&, std::false_type)): New.
2547         (_Safe_container(_Safe_container&&, const _Alloc&)): Use latters.
2549 2021-08-09  Jonathan Wakely  <jwakely@redhat.com>
2551         * testsuite/23_containers/unordered_map/cons/default.cc: Add
2552         equality comparison operators to allocator.
2553         * testsuite/23_containers/unordered_set/cons/default.cc:
2554         Likewise.
2556 2021-08-08  François Dumont  <fdumont@gcc.gnu.org>
2558         * testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Replace 'failed_assertion'
2559         dg-prune-output reason with 'builtin_unreachable'.
2560         * testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc: Likewise.
2561         * testsuite/25_algorithms/equal/debug/constexpr_neg.cc: Likewise.
2562         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc: Likewise.
2563         * testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise.
2564         * testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc: Likewise.
2565         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc: Likewise.
2566         * testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc: Likewise.
2567         * testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc: Likewise.
2569 2021-08-08  Hans-Peter Nilsson  <hp@bitrange.com>
2571         * testsuite/std/ranges/iota/max_size_type.cc: Set
2572         dg-timeout-factor to 4.
2574 2021-08-06  Jonathan Wakely  <jwakely@redhat.com>
2576         * libsupc++/compare (compare_three_way, strong_order)
2577         (weak_order, partial_order, compare_strong_order_fallback)
2578         (compare_weak_order_fallback, compare_partial_order_fallback):
2579         Move nodiscard attributes to correct location.
2581 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
2583         PR libstdc++/101782
2584         * include/bits/ranges_base.h (ranges::begin, ranges::end)
2585         (ranges::rbegin, ranges::rend, ranges::size, ranges::ssize)
2586         (ranges::empty, ranges::data): Move attribute after the
2587         declarator-id instead of at the end of the declarator.
2588         * include/bits/stl_iterator.h (__gnu_cxx::__normal_iterator):
2589         Move attributes back to the start of the function declarator,
2590         but move the requires-clause to the end.
2591         (common_iterator): Move attribute after the declarator-id.
2592         * include/bits/stl_queue.h (queue): Remove ill-formed attributes
2593         from friend declaration that are not definitions.
2594         * include/std/ranges (views::all, views::filter)
2595         (views::transform, views::take, views::take_while,
2596         views::drop) (views::drop_while, views::join,
2597         views::lazy_split) (views::split, views::counted,
2598         views::common, views::reverse) (views::elements): Move
2599         attributes after the declarator-id.
2601 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
2603         * libsupc++/compare (partial_ordering, weak_ordering)
2604         (strong_ordering, is_eq, is_neq, is_lt, is_lteq, is_gt, is_gteq)
2605         (compare_three_way, strong_order, weak_order, partial_order)
2606         (compare_strong_order_fallback, compare_weak_order_fallback)
2607         (compare_partial_order_fallback, __detail::__synth3way): Add
2608         nodiscard attribute.
2609         * testsuite/18_support/comparisons/categories/zero_neg.cc: Add
2610         -Wno-unused-result to options.
2612 2021-08-05  Jonathan Wakely  <jwakely@redhat.com>
2614         PR libstdc++/101782
2615         * include/bits/ranges_base.h (ranges::begin, ranges::end)
2616         (ranges::rbegin, ranges::rend, ranges::size, ranges::ssize)
2617         (ranges::empty, ranges::data): Move attribute to the end of
2618         the declarator.
2619         * include/bits/stl_iterator.h (__gnu_cxx::__normal_iterator)
2620         (common_iterator): Likewise for non-member operator functions.
2621         * include/std/ranges (views::all, views::filter)
2622         (views::transform, views::take, views::take_while, views::drop)
2623         (views::drop_while, views::join, views::lazy_split)
2624         (views::split, views::counted, views::common, views::reverse)
2625         (views::elements): Likewise.
2626         * testsuite/std/ranges/access/101782.cc: New test.
2628 2021-08-04  Jonathan Wakely  <jwakely@redhat.com>
2630         * include/bits/forward_list.h: Add [[nodiscard]] to functions
2631         with no side-effects.
2632         * include/bits/stl_bvector.h: Likewise.
2633         * include/bits/stl_deque.h: Likewise.
2634         * include/bits/stl_list.h: Likewise.
2635         * include/bits/stl_queue.h: Likewise.
2636         * include/bits/stl_stack.h: Likewise.
2637         * include/bits/stl_vector.h: Likewise.
2638         * include/debug/deque: Likewise.
2639         * include/debug/forward_list: Likewise.
2640         * include/debug/list: Likewise.
2641         * include/debug/safe_iterator.h: Likewise.
2642         * include/debug/vector: Likewise.
2643         * include/std/array: Likewise.
2644         * testsuite/23_containers/array/creation/3_neg.cc: Use
2645         -Wno-unused-result.
2646         * testsuite/23_containers/array/debug/back1_neg.cc: Cast result
2647         to void.
2648         * testsuite/23_containers/array/debug/back2_neg.cc: Likewise.
2649         * testsuite/23_containers/array/debug/front1_neg.cc: Likewise.
2650         * testsuite/23_containers/array/debug/front2_neg.cc: Likewise.
2651         * testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc:
2652         Likewise.
2653         * testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc:
2654         Likewise.
2655         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
2656         Adjust dg-error line numbers.
2657         * testsuite/23_containers/deque/cons/clear_allocator.cc: Cast
2658         result to void.
2659         * testsuite/23_containers/deque/debug/invalidation/4.cc:
2660         Likewise.
2661         * testsuite/23_containers/deque/types/1.cc: Use
2662         -Wno-unused-result.
2663         * testsuite/23_containers/list/types/1.cc: Cast result to void.
2664         * testsuite/23_containers/priority_queue/members/7161.cc:
2665         Likewise.
2666         * testsuite/23_containers/queue/members/7157.cc: Likewise.
2667         * testsuite/23_containers/vector/59829.cc: Likewise.
2668         * testsuite/23_containers/vector/ext_pointer/types/1.cc:
2669         Likewise.
2670         * testsuite/23_containers/vector/ext_pointer/types/2.cc:
2671         Likewise.
2672         * testsuite/23_containers/vector/types/1.cc: Use
2673         -Wno-unused-result.
2675 2021-08-04  Jonathan Wakely  <jwakely@redhat.com>
2677         * include/bits/iterator_concepts.h (iter_move): Add
2678         [[nodiscard]].
2679         * include/bits/range_access.h (begin, end, cbegin, cend)
2680         (rbegin, rend, crbegin, crend, size, data, ssize): Likewise.
2681         * include/bits/ranges_base.h (ranges::begin, ranges::end)
2682         (ranges::cbegin, ranges::cend, ranges::rbegin, ranges::rend)
2683         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
2684         (ranges::empty, ranges::data, ranges::cdata): Likewise.
2685         * include/bits/stl_iterator.h (reverse_iterator, __normal_iterator)
2686         (back_insert_iterator, front_insert_iterator, insert_iterator)
2687         (move_iterator, move_sentinel, common_iterator)
2688         (counted_iterator): Likewise.
2689         * include/bits/stl_iterator_base_funcs.h (distance, next, prev):
2690         Likewise.
2691         * include/bits/stream_iterator.h (istream_iterator)
2692         (ostream_iterartor): Likewise.
2693         * include/bits/streambuf_iterator.h (istreambuf_iterator)
2694         (ostreambuf_iterator): Likewise.
2695         * include/std/ranges (views::single, views::iota, views::all)
2696         (views::filter, views::transform, views::take, views::take_while)
2697         (views::drop, views::drop_while, views::join, views::lazy_split)
2698         (views::split, views::counted, views::common, views::reverse)
2699         (views::elements): Likewise.
2700         * testsuite/20_util/rel_ops.cc: Use -Wno-unused-result.
2701         * testsuite/24_iterators/move_iterator/greedy_ops.cc: Likewise.
2702         * testsuite/24_iterators/normal_iterator/greedy_ops.cc:
2703         Likewise.
2704         * testsuite/24_iterators/reverse_iterator/2.cc: Likewise.
2705         * testsuite/24_iterators/reverse_iterator/greedy_ops.cc:
2706         Likewise.
2707         * testsuite/21_strings/basic_string/range_access/char/1.cc:
2708         Cast result to void.
2709         * testsuite/21_strings/basic_string/range_access/wchar_t/1.cc:
2710         Likewise.
2711         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
2712         Likewise.
2713         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
2714         Likewise.
2715         * testsuite/23_containers/array/range_access.cc: Likewise.
2716         * testsuite/23_containers/deque/range_access.cc: Likewise.
2717         * testsuite/23_containers/forward_list/range_access.cc:
2718         Likewise.
2719         * testsuite/23_containers/list/range_access.cc: Likewise.
2720         * testsuite/23_containers/map/range_access.cc: Likewise.
2721         * testsuite/23_containers/multimap/range_access.cc: Likewise.
2722         * testsuite/23_containers/multiset/range_access.cc: Likewise.
2723         * testsuite/23_containers/set/range_access.cc: Likewise.
2724         * testsuite/23_containers/unordered_map/range_access.cc:
2725         Likewise.
2726         * testsuite/23_containers/unordered_multimap/range_access.cc:
2727         Likewise.
2728         * testsuite/23_containers/unordered_multiset/range_access.cc:
2729         Likewise.
2730         * testsuite/23_containers/unordered_set/range_access.cc:
2731         Likewise.
2732         * testsuite/23_containers/vector/range_access.cc: Likewise.
2733         * testsuite/24_iterators/customization_points/iter_move.cc:
2734         Likewise.
2735         * testsuite/24_iterators/istream_iterator/sentinel.cc:
2736         Likewise.
2737         * testsuite/24_iterators/istreambuf_iterator/sentinel.cc:
2738         Likewise.
2739         * testsuite/24_iterators/move_iterator/dr2061.cc: Likewise.
2740         * testsuite/24_iterators/operations/prev_neg.cc: Likewise.
2741         * testsuite/24_iterators/ostreambuf_iterator/2.cc: Likewise.
2742         * testsuite/24_iterators/range_access/range_access.cc:
2743         Likewise.
2744         * testsuite/24_iterators/range_operations/100768.cc: Likewise.
2745         * testsuite/26_numerics/valarray/range_access2.cc: Likewise.
2746         * testsuite/28_regex/range_access.cc: Likewise.
2747         * testsuite/experimental/string_view/range_access/char/1.cc:
2748         Likewise.
2749         * testsuite/experimental/string_view/range_access/wchar_t/1.cc:
2750         Likewise.
2751         * testsuite/ext/vstring/range_access.cc: Likewise.
2752         * testsuite/std/ranges/adaptors/take.cc: Likewise.
2753         * testsuite/std/ranges/p2259.cc: Likewise.
2755 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2757         * include/bits/random.tcc (linear_congruential_engine): Do not
2758         define static constexpr members when they are implicitly inline.
2759         * include/std/ratio (ratio, __ratio_multiply, __ratio_divide)
2760         (__ratio_add, __ratio_subtract): Likewise.
2761         * include/std/type_traits (integral_constant): Likewise.
2762         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
2763         line number.
2765 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2767         * testsuite/util/testsuite_common_types.h: Replace uses of
2768         tr1::unordered_map and tr1::unordered_set with their C++11
2769         equivalents.
2770         * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust
2771         dg-error line number.
2772         * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise.
2773         * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc:
2774         Likewise.
2775         * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc:
2776         Likewise.
2777         * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc:
2778         Likewise.
2779         * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc:
2780         Likewise.
2781         * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc:
2782         Likewise.
2784 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2786         * include/std/memory_resource (polymorphic_allocator::delete_object):
2787         Call destructor directly instead of using destroy.
2788         (allocator_traits<polymorphic_allocator<T>>): Define partial
2789         specialization.
2791 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2793         * testsuite/20_util/function_objects/binders/3113.cc: Remove
2794         trailing whitespace.
2795         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
2796         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
2797         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
2798         Likewise.
2799         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
2800         * testsuite/25_algorithms/headers/algorithm/synopsis.cc:
2801         Likewise.
2802         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
2803         Likewise.
2804         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
2805         Likewise.
2807 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2809         * doc/xml/manual/evolution.xml: Document deprecation.
2810         * doc/html/*: Regenerate.
2811         * include/bits/c++config (_GLIBCXX14_DEPRECATED): Define.
2812         (_GLIBCXX14_DEPRECATED_SUGGEST): Define.
2813         * include/bits/stl_algo.h (random_shuffle): Deprecate for C++14
2814         and later.
2815         * testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust
2816         for C++11 and C++14 changes to std::random_shuffle and
2817         std::shuffle.
2818         * testsuite/25_algorithms/random_shuffle/1.cc: Add options to
2819         use deprecated algorithms.
2820         * testsuite/25_algorithms/random_shuffle/59603.cc: Likewise.
2821         * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
2822         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
2823         Likewise.
2824         * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc:
2825         Likewise.
2827 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2829         * testsuite/23_containers/forward_list/operations/3.cc:
2830         Use lambda instead of std::bind2nd.
2831         * testsuite/20_util/function_objects/binders/3113.cc: Add
2832         options for testing deprecated features.
2833         * testsuite/20_util/pair/cons/99957.cc: Likewise.
2834         * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
2835         * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
2836         * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
2837         Likewise.
2838         * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
2839         * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
2840         * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
2841         * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
2842         * testsuite/20_util/unique_ptr/cons/auto_ptr.cc: Likewise.
2843         * testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
2844         * testsuite/ext/pb_ds/example/priority_queue_erase_if.cc:
2845         Likewise.
2846         * testsuite/ext/pb_ds/example/priority_queue_split_join.cc:
2847         Likewise.
2848         * testsuite/lib/dg-options.exp (dg_add_options_using-deprecated):
2849         New proc.
2851 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2853         * include/bits/regex_executor.h (_State_info): Replace
2854         unique_ptr<bool[]> with array of bool.
2855         * include/bits/regex_executor.tcc: Likewise.
2856         * include/bits/regex_scanner.tcc: Replace std::strchr with
2857         __builtin_strchr.
2858         * include/std/regex: Replace standard headers with smaller
2859         internal ones.
2860         * testsuite/28_regex/traits/char/lookup_classname.cc: Include
2861         <string.h> for strlen.
2862         * testsuite/28_regex/traits/char/lookup_collatename.cc:
2863         Likewise.
2865 2021-08-03  Jonathan Wakely  <jwakely@redhat.com>
2867         * include/bits/locale_conv.h (__detail::_Scoped_ptr): Define new
2868         RAII class template.
2869         (wstring_convert, wbuffer_convert): Use __detail::_Scoped_ptr
2870         instead of unique_ptr.
2872 2021-08-02  Patrick Palka  <ppalka@redhat.com>
2874         PR libstdc++/101599
2875         * include/bits/ranges_algo.h (__reverse_copy_fn::operator()):
2876         Add missing std::move in return statement.
2877         (__partition_copy_fn::operator()): Rename templtae parameter
2878         _O2 to _Out2.  Uglify function parameters out_true and out_false.
2879         * include/bits/ranges_algobase.h (__copy_or_move): Add missing
2880         std::move to recursive call that unwraps a __normal_iterator
2881         output iterator.
2882         * testsuite/25_algorithms/copy/constrained.cc (test06): New test.
2883         * testsuite/25_algorithms/move/constrained.cc (test05): New test.
2885 2021-08-02  Patrick Palka  <ppalka@redhat.com>
2887         PR libstdc++/101589
2888         * include/std/ranges (lazy_split_view::_InnerIter::base): Make
2889         the const& overload unconstrained and return a const reference
2890         as per LWG 3533.  Make unconditionally noexcept.
2891         (elements_view::base): Revert accidental r12-569 change.
2892         (elements_view::_Iterator::base): Make the const& overload
2893         unconstrained and return a const reference as per LWG 3533.
2894         Make unconditionally noexcept.
2896 2021-08-02  Patrick Palka  <ppalka@redhat.com>
2898         PR libstdc++/101483
2899         * include/std/ranges (join_view::_Iterator::_Iterator): Add
2900         missing std::move.
2902 2021-08-02  Jonathan Wakely  <jwakely@redhat.com>
2904         PR libstdc++/101709
2905         * src/filesystem/ops-common.h (get_temp_directory_from_env):
2906         Add error_code parameter.
2907         * src/c++17/fs_ops.cc (fs::temp_directory_path): Pass error_code
2908         argument to get_temp_directory_from_env and check it.
2909         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
2911 2021-08-02  Jonathan Wakely  <jwakely@redhat.com>
2913         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
2914         Add dg-error for c++11_only target.
2916 2021-07-30  Jonathan Wakely  <jwakely@redhat.com>
2918         PR libstdc++/65018
2919         * configure.ac: Check for secure_getenv.
2920         * config.h.in: Regenerate.
2921         * configure: Regenerate.
2922         * src/filesystem/ops-common.h (get_temp_directory_from_env): New
2923         helper function to obtain path from the environment.
2924         * src/c++17/fs_ops.cc (fs::temp_directory_path): Use new helper.
2925         * src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
2926         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
2927         Print messages if test cannot be run.
2928         * testsuite/experimental/filesystem/operations/temp_directory_path.cc:
2929         Likewise. Fix incorrect condition. Use "TMP" to work with
2930         Windows as well as POSIX.
2932 2021-07-29  Hans-Peter Nilsson  <hp@bitrange.com>
2934         * src/c++17/memory_resource.cc: Use __exchange instead
2935         of std::exchange.
2937 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
2939         * include/experimental/optional (__throw_bad_optional_access):
2940         Replace GNU attribute with C++11 attribute.
2941         (optional::value, optional::value_or): Use if statements
2942         instead of conditional expressions.
2943         * include/std/optional (__throw_bad_optional_access)
2944         (optional::value, optional::value_or): Likewise.
2946 2021-07-27  Marek Polacek  <polacek@redhat.com>
2948         DR 1512
2949         PR c++/99701
2950         * testsuite/20_util/tuple/comparison_operators/overloaded.cc:
2951         Move a line...
2952         * testsuite/20_util/tuple/comparison_operators/overloaded2.cc:
2953         ...here.  New test.
2955 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
2957         * include/bits/cow_string.h: Consistently use tab for
2958         indentation.
2960 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
2962         * include/Makefile.am: Add new header.
2963         * include/Makefile.in: Regenerate.
2964         * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
2965         (basic_string): Move definition of Copy-on-Write string to
2966         new file.
2967         * include/bits/basic_string.tcc: Likewise.
2968         * include/bits/cow_string.h: New file.
2970 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
2972         * include/std/algorithm: Do not include <utility>.
2973         * include/std/functional: Likewise.
2974         * include/std/regex: Include <bits/stl_pair.h> instead of
2975         <utility>.
2976         * include/debug/map.h: Likewise.
2977         * include/debug/multimap.h: Likewise.
2978         * include/debug/multiset.h: Likewise.
2979         * include/debug/set.h: Likewise.
2980         * include/debug/vector: Likewise.
2981         * include/bits/fs_path.h: Likewise.
2982         * include/bits/unique_ptr.h: Do not include <utility>.
2983         * include/experimental/any: Likewise.
2984         * include/experimental/executor: Likewise.
2985         * include/experimental/memory: Likewise.
2986         * include/experimental/optional: Likewise.
2987         * include/experimental/socket: Use __exchange instead
2988         of std::exchange.
2989         * src/filesystem/ops-common.h: Likewise.
2990         * testsuite/20_util/default_delete/48631_neg.cc: Adjust expected
2991         errors to not use a hardcoded line number.
2992         * testsuite/20_util/default_delete/void_neg.cc: Likewise.
2993         * testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc:
2994         Include <utility> for std::as_const.
2995         * testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc:
2996         Likewise.
2997         * testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc:
2998         Likewise.
2999         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc:
3000         Likewise.
3001         * testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
3002         Adjust dg-error line number.
3004 2021-07-27  Jonathan Wakely  <jwakely@redhat.com>
3006         * include/Makefile.am: Add bits/utility.h header.
3007         * include/Makefile.in: Regenerate.
3008         * include/bits/utility.h: New file.
3009         * include/std/utility (tuple_size, tuple_element): Move
3010         to new header.
3011         * include/std/type_traits (__is_tuple_like_impl<tuple<T...>>):
3012         Move to <tuple>.
3013         (_Index_tuple, _Build_index_tuple, integer_sequence): Likewise.
3014         (in_place_t, in_place_index_t, in_place_type_t): Likewise.
3015         * include/bits/ranges_util.h: Include new header instead of
3016         <utility>.
3017         * include/bits/stl_pair.h (tuple_size, tuple_element): Move
3018         partial specializations for std::pair here.
3019         (get): Move overloads for std::pair here.
3020         * include/std/any: Include new header instead of <utility>.
3021         * include/std/array: Likewise.
3022         * include/std/memory_resource: Likewise.
3023         * include/std/optional: Likewise.
3024         * include/std/variant: Likewise.
3025         * include/std/tuple: Likewise.
3026         (__is_tuple_like_impl<tuple<T...>>): Move here.
3027         (get) Declare overloads for std::array.
3028         * include/std/version (__cpp_lib_tuples_by_type): Change type
3029         to long.
3030         * testsuite/20_util/optional/84601.cc: Include <utility>.
3031         * testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc:
3032         Likewise.
3033         * testsuite/23_containers/array/tuple_interface/get_neg.cc:
3034         Adjust dg-error line numbers.
3035         * testsuite/std/ranges/access/cbegin.cc: Include <utility>.
3036         * testsuite/std/ranges/access/cend.cc: Likewise.
3037         * testsuite/std/ranges/access/end.cc: Likewise.
3038         * testsuite/std/ranges/single_view.cc: Likewise.
3040 2021-07-23  Jonathan Wakely  <jwakely@redhat.com>
3042         * include/std/future: Include <bits/atomic_base.h> instead of
3043         <atomic>.
3045 2021-07-23  Jonathan Wakely  <jwakely@redhat.com>
3047         * include/bits/stl_relops.h: Update documentation comments.
3049 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3051         PR libstdc++/101583
3052         * include/bits/hashtable.h (_Hashtable): Replace mixin with
3053         _Enable_default_ctor. Construct it explicitly in all
3054         non-forwarding, non-defaulted constructors.
3055         * testsuite/23_containers/unordered_map/cons/default.cc: Check
3056         non-default constructors can be used.
3057         * testsuite/23_containers/unordered_set/cons/default.cc:
3058         Likewise.
3060 2021-07-22  David Edelsohn  <dje.gcc@gmail.com>
3062         * config/os/aix/os_defines.h (__LIBC_NO_CPP_MATH_OVERLOADS__): Define.
3064 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3066         PR libstdc++/94295
3067         * include/ext/new_allocator.h (_GLIBCXX_OPERATOR_NEW)
3068         (_GLIBCXX_OPERATOR_DELETE, _GLIBCXX_SIZED_DEALLOC): Define.
3069         (allocator::allocate, allocator::deallocate): Use new macros.
3071 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3073         PR libstdc++/101571
3074         * include/bits/ranges_uninitialized.h (_DestroyGuard): Change
3075         constructor parameter to reference and use addressof.
3076         * testsuite/util/testsuite_iterators.h: Define deleted operator&
3077         overloads for test iterators.
3079 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3081         * include/bits/std_function.h (_Function_base): Add
3082         default member initializers and define constructor as defaulted.
3083         (function::_M_invoker): Add default member initializer.
3085 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
3087         PR libstdc++/100682
3088         * doc/xml/manual/debug_mode.xml: Update documentation about
3089         debug capability of std::array.
3090         * doc/html/*: Regenerate.
3091         * include/debug/array: New file.
3093 2021-07-21  Jonathan Wakely  <jwakely@redhat.com>
3095         PR libstdc++/101542
3096         * include/ext/rope (sequence_buffer): Add move constructor and
3097         move assignment operator.
3098         * testsuite/ext/rope/101542.cc: New test.
3100 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3102         PR libstdc++/101510
3103         * src/c++17/fs_ops.cc (fs::create_directories): Use status
3104         instead of symlink_status.
3105         * src/filesystem/ops.cc (fs::create_directories): Likewise.
3106         * testsuite/27_io/filesystem/operations/create_directories.cc:
3107         Check symlink to existing directory.
3108         * testsuite/27_io/filesystem/operations/create_directory.cc: Do
3109         not test with symlinks on Windows.
3110         * testsuite/experimental/filesystem/operations/create_directories.cc:
3111         Check symlink to existing directory.
3112         * testsuite/experimental/filesystem/operations/create_directory.cc:
3113         Do not test with symlinks on Windows.
3115 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3117         PR libstdc++/100863
3118         * include/bits/hashtable.h (_Hashtable): Conditionally delete
3119         default constructor by deriving from _Enable_special_members.
3120         * testsuite/23_containers/unordered_map/cons/default.cc: New test.
3121         * testsuite/23_containers/unordered_set/cons/default.cc: New test.
3123 2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
3125         PR libstdc++/101510
3126         * src/c++17/fs_ops.cc (create_dir): Adjust whitespace.
3127         * testsuite/27_io/filesystem/operations/create_directory.cc:
3128         Test creating directory with name of existing symlink to
3129         directory.
3130         * testsuite/experimental/filesystem/operations/create_directory.cc:
3131         Likewise.
3133 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3135         * include/std/tuple (get<I>): Add deleted overload for bad
3136         index.
3137         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
3138         expected errors.
3140 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3142         * include/bits/max_size_type.h (numeric_limits<__max_size_type>):
3143         Use __int_traits unconditionally.
3145 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3147         * include/bits/random.h (_Shift::__value): Use constexpr.
3148         (_Select_uint_least_t::type): Use using-declaration.
3149         (_Mod): Likewise.
3150         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3151         line number.
3153 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3155         * include/bits/cpp_type_traits.h (__INT_N): Use __extension__
3156         instead of diagnostic pragmas.
3157         * include/bits/functional_hash.h: Likewise.
3158         * include/bits/iterator_concepts.h (__is_signed_int128)
3159         (__is_unsigned_int128): Likewise.
3160         * include/bits/max_size_type.h (__max_size_type): Likewise.
3161         (numeric_limits<__max_size_type>): Likewise.
3162         * include/bits/std_abs.h (abs): Likewise.
3163         * include/bits/stl_algobase.h (__size_to_integer): Likewise.
3164         * include/bits/uniform_int_dist.h (uniform_int_distribution):
3165         Likewise.
3166         * include/ext/numeric_traits.h (_GLIBCXX_INT_N_TRAITS):
3167         Likewise.
3168         * include/std/type_traits (__is_integral_helper<INT_N>)
3169         (__is_signed_integer, __is_unsigned_integer)
3170         (__make_unsigned<INT_N>, __make_signed<INT_N>): Likewise.
3171         * include/std/limits (__INT_N): Add __extension__ keyword.
3172         * include/bits/random.h (_Select_uint_least_t)
3173         (random_device): Likewise.
3175 2021-07-16  Patrick Palka  <ppalka@redhat.com>
3177         PR libstdc++/101231
3178         * include/std/ranges (_CachedPosition::_M_get): For non-forward
3179         ranges, just call __builtin_unreachable.
3180         * testsuite/std/ranges/istream_view.cc (test05): New test.
3182 2021-07-16  Patrick Palka  <ppalka@redhat.com>
3184         PR libstdc++/101214
3185         * include/std/ranges (split_view::split_view): Use std::move.
3186         (split_view::_Iterator::_Iterator): Remove redundant
3187         default_initializable constraint.
3188         (split_view::_Sentinel::_Sentinel): Declare.
3189         * testsuite/std/ranges/adaptors/split.cc (test02): New test.
3191 2021-07-16  Marek Polacek  <polacek@redhat.com>
3193         * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Add
3194         dg-error.
3196 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3198         * include/bits/unique_ptr.h: Adjust doxygen markup.
3200 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3202         PR libstdc++/101307
3203         * include/std/type_traits: Adjust doxygen markup.
3205 2021-07-16  Jonathan Wakely  <jwakely@redhat.com>
3207         * include/bits/cpp_type_traits.h: Add diagnostic pragmas around
3208         uses of non-standard integer types.
3209         * include/bits/functional_hash.h: Likewise.
3210         * include/bits/iterator_concepts.h: Likewise.
3211         * include/bits/max_size_type.h: Likewise.
3212         * include/bits/std_abs.h: Likewise.
3213         * include/bits/stl_algobase.h: Likewise.
3214         * include/bits/uniform_int_dist.h: Likewise.
3215         * include/ext/numeric_traits.h: Likewise.
3216         * include/std/type_traits: Likewise.
3218 2021-07-15  Jonathan Wakely  <jwakely@redhat.com>
3220         PR libstdc++/101427
3221         * include/std/tuple (tuple_element): Improve static_assert text.
3222         (__get_helper): Add deleted overload.
3223         (get<i>(tuple<T...>&&), get<i>(const tuple<T...>&&)): Use
3224         __get_helper directly.
3225         (__get_helper2): Remove.
3226         (__find_uniq_type_in_pack): New constexpr helper function.
3227         (get<T>): Use __find_uniq_type_in_pack and __get_helper instead
3228         of __get_helper2.
3229         * testsuite/20_util/tuple/element_access/get_neg.cc: Adjust
3230         expected errors.
3231         * testsuite/20_util/tuple/element_access/101427.cc: New test.
3233 2021-07-15  Jonathan Wakely  <jwakely@redhat.com>
3235         PR libstdc++/101429
3236         * include/bits/c++config (__replacement_assert): Add noexcept.
3237         [!_GLIBCXX_VERBOSE] (__glibcxx_assert_impl): Use __builtin_abort
3238         instead of __replacement_assert.
3240 2021-07-14  Jonathan Wakely  <jwakely@redhat.com>
3242         * include/std/string_view (basic_string_view(It, End)): Add
3243         noexcept-specifier.
3244         * testsuite/21_strings/basic_string_view/cons/char/range.cc:
3245         Check noexcept-specifier. Also check construction without CTAD.
3247 2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
3249         PR c++/101361
3250         * include/std/string_view (ends_with): Use traits_type::compare
3251         directly.
3253 2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
3255         * include/std/string_view: Only include <bits/ranges_base.h>
3256         once, and only for C++20 and later.
3258 2021-07-12  Jonathan Wakely  <jwakely@redhat.com>
3260         PR libstdc++/101411
3261         * include/std/span (as_writable_bytes): Add requires-clause.
3262         * testsuite/23_containers/span/101411.cc: New test.
3264 2021-07-09  Matheus Castanho  <msc@linux.ibm.com>
3266         * include/std/mutex (__lock_impl): Check
3267         _GLIBCXX_HAS_GTHREADS before using __gthread_yield.
3269 2021-07-02  Jonathan Wakely  <jwakely@redhat.com>
3271         PR libstdc++/101271
3272         * include/bits/unique_ptr.h (unique_ptr<T[],D>::operator[]):
3273         Remove noexcept-specifier.
3274         (unique_ptr<T[],D>::_S_nothrow_deref): Remove.
3275         * testsuite/20_util/unique_ptr/lwg2762.cc: Remove checks for
3276         operator[].
3278 2021-07-01  Jonathan Wakely  <jwakely@redhat.com>
3280         * doc/doxygen/doxygroups.cc: Fix docs for std::literals.
3281         * doc/doxygen/user.cfg.in: Exclude the Networking TS header.
3282         Add some more predefined macros.
3283         * include/bits/fs_fwd.h: Move @addtogroup commands inside
3284         namespaces. Add better documentation.
3285         * include/bits/fs_path.h: Likewise.
3286         * include/experimental/bits/fs_fwd.h: Likewise.
3287         * include/experimental/bits/fs_path.h: Likewise.
3288         * include/ext/throw_allocator.h: Fix typo and improve docs.
3289         * include/std/chrono: Move @addtogroup commands.
3290         * include/std/system_error: Move @addtogroup commands.
3291         * libsupc++/exception: Improve documentation.
3292         * libsupc++/exception.h: Add @since documentation.
3294 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
3296         PR libstdc++/101258
3297         * doc/doxygen/user.cfg.in (INPUT): Add <experimental/simd>.
3298         (COLS_IN_ALPHA_INDEX): Remove obsolete tag.
3299         (PREDEFINED): Add/fix some more macros that need to be expanded.
3300         * include/bits/random.h: Stop Doxygen from documenting internal
3301         implementation details.
3302         * include/bits/random.tcc: Likewise.
3303         * include/bits/this_thread_sleep.h: Fix @file name.
3304         * include/experimental/bits/simd.h: Add to Doxygen group. Do not
3305         document internal implementation details.
3306         * include/experimental/bits/simd_detail.h: Do not document
3307         internal implementation details.
3308         * include/experimental/simd: Define Doxygen groups.
3309         * include/experimental/type_traits: Improve documentation for
3310         the header file. Define groups. Use @since commands.
3311         * include/std/scoped_allocator (scoped_allocator_adaptor): Move
3312         declaration before undocumented region.
3313         * include/std/type_traits (true_type, false_type): Use using
3314         declaration instead of typedef.
3315         (is_invocable_v, is_nothrow_invocable_v, is_invocable_r_v)
3316         (is_nothrow_invocable_r_v): Move definitions next to other C++17
3317         variable templates.
3318         Do not document internal implementation details. Move misplaced
3319         group-end command. Define group for variable templates.
3320         * include/std/variant: Do not document internal implementation
3321         details.
3322         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3323         line number.
3325 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
3327         * include/experimental/simd: Do not define anything pre-C++17.
3329 2021-06-30  Jonathan Wakely  <jwakely@redhat.com>
3331         * include/bits/random.tcc [__cpp_inline_variables]: Remove
3332         redundant definitions of static constexpr member variables.
3333         * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
3334         line number.
3336 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
3338         * include/bits/streambuf.tcc (__copy_streambufs_eof): Remove
3339         explicit instantiation declarations.
3340         * src/c++11/streambuf-inst.cc (__copy_streambufs_eof): Remove
3341         explicit instantiation definitions.
3343 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
3345         PR libstdc++/97088
3346         * testsuite/17_intro/names.cc: Fix #if condition for names used
3347         by newlib headers.
3349 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
3351         PR libstdc++/101236
3352         * include/bits/unique_ptr.h (unique_ptr<T[], D>::operator[]):
3353         Fail gracefully if element_type is incomplete.
3354         * testsuite/20_util/unique_ptr/cons/incomplete.cc: Clarify that
3355         the standard doesn't require this test to work for array types.
3356         * testsuite/20_util/unique_ptr/lwg2762.cc: Check that incomplete
3357         types can be used with array specialization.
3358         * testsuite/20_util/unique_ptr/101236.cc: New test.
3360 2021-06-28  Jonathan Wakely  <jwakely@redhat.com>
3362         * doc/xml/manual/intro.xml: Document LWG 415 change.
3363         * doc/html/manual/bugs.html: Regenerate.
3364         * include/bits/istream.tcc (ws): Create sentry and catch
3365         exceptions.
3366         * testsuite/27_io/basic_istream/ws/char/lwg415.cc: New test.
3367         * testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc: New test.
3369 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
3371         * include/bits/ostream.tcc (basic_ostream::write): Call sputn
3372         directly instead of using _M_write. Do setstate(__err) all
3373         outside the try-catch block.
3374         * include/std/ostream (basic_ostream::_M_write): Declare
3375         private. Use __ostream_insert. Do not define for the versioned
3376         namespace.
3378 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
3380         * doc/xml/manual/intro.xml: Document LWG 581 change.
3381         * doc/html/manual/bugs.html: Regenerate.
3382         * include/bits/basic_ios.tcc: Whitespace.
3383         * include/bits/ostream.tcc (basic_ostream::flush()): Construct
3384         sentry.
3385         * testsuite/27_io/basic_ostream/flush/char/2.cc: Check
3386         additional cases.
3387         * testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
3388         Likewise.
3389         * testsuite/27_io/basic_ostream/flush/wchar_t/2.cc: Likewise.
3390         * testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc:
3391         Likewise.
3393 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
3395         * include/bits/ostream.tcc (sentry): Only set failbit if badbit
3396         is set, not if eofbit is set.
3397         (tellp, seekp, seekp): Create sentry object. Do not set badbit
3398         on exceptions.
3399         * testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
3400         Adjust expected behaviour.
3401         * testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc:
3402         Likewise.
3403         * testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
3404         Likewise.
3405         * testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc:
3406         Likewise.
3407         * testsuite/27_io/basic_ostream/seekp/char/n3168.cc: New test.
3408         * testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc: New test.
3409         * testsuite/27_io/basic_ostream/tellp/char/n3168.cc: New test.
3410         * testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc: New test.
3412 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
3414         * include/std/syncstream (basic_syncbuf::swap()): Remove
3415         noexcept, as per LWG 3498.
3417 2021-06-25  Jonathan Wakely  <jwakely@redhat.com>
3419         PR libstdc++/97088
3420         * testsuite/17_intro/names.cc: Undef more names for newlib and
3421         also for arm-none-linux-gnueabi.
3422         * testsuite/experimental/names.cc: Disable PCH.
3424 2021-06-25  Matthias Kretz  <m.kretz@gsi.de>
3426         * include/experimental/bits/simd.h (__bit_cast): Implement via
3427         __builtin_bit_cast #if available.
3428         (__proposed::simd_bit_cast): Add overloads for simd and
3429         simd_mask, which use __builtin_bit_cast (or __bit_cast #if not
3430         available), which return an object of the requested type with
3431         the same bits as the argument.
3432         * include/experimental/bits/simd_math.h: Use simd_bit_cast
3433         instead of __bit_cast to allow casts to fixed_size_simd.
3434         (copysign): Remove branch that was only required if __bit_cast
3435         cannot be constexpr.
3436         * testsuite/experimental/simd/tests/bits/test_values.h: Switch
3437         from __bit_cast to __proposed::simd_bit_cast since the former
3438         will not cast fixed_size objects anymore.
3440 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3442         * include/experimental/bits/simd_math.h
3443         (_GLIBCXX_SIMD_MATH_CALL2_): Rename arg2_ to __arg2.
3444         (_GLIBCXX_SIMD_MATH_CALL3_): Rename arg2_ to __arg2 and arg3_ to
3445         __arg3.
3447 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3449         * include/experimental/bits/simd.h (__execute_on_index_sequence)
3450         (__execute_on_index_sequence_with_return)
3451         (__call_with_n_evaluations, __call_with_subscripts): Add flatten
3452         attribute.
3454 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3456         * include/experimental/bits/simd_x86.h (_S_trunc, _S_floor)
3457         (_S_ceil): Set bit 8 (_MM_FROUND_NO_EXC) on AVX and SSE4.1
3458         roundp[sd] calls.
3460 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3462         * include/experimental/bits/simd_x86.h (_S_ldexp): The AVX512F
3463         implementation doesn't require a _VecBltnBtmsk ABI tag, it
3464         requires either a 64-Byte input (in which case AVX512F must be
3465         available) or AVX512VL.
3467 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3469         * include/experimental/bits/simd_math.h: Undefine internal
3470         macros after use.
3471         (frexp): Move #if to a more sensible position and reformat
3472         preceding code.
3473         (logb): Call _SimdImpl::_S_logb for fixed_size instead of
3474         duplicating the code here.
3475         (modf): Simplify condition.
3477 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3479         * include/experimental/bits/simd_math.h (fabs): Remove
3480         fabs(simd<integral>) overload.
3482 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3484         * include/experimental/bits/simd_converter.h
3485         (_SimdConverter::operator()): Pass _SimdTuple by const-ref.
3486         * include/experimental/bits/simd_fixed_size.h
3487         (_GLIBCXX_SIMD_FIXED_OP): Pass binary operator _SimdTuple
3488         arguments by const-ref.
3489         (_S_masked_unary): Pass _SimdTuple by const-ref.
3491 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3493         * include/experimental/bits/simd_fixed_size.h
3494         (_AbisInSimdTuple): Removed.
3496 2021-06-24  Matthias Kretz  <m.kretz@gsi.de>
3498         * include/experimental/bits/simd.h: Add missing operator~
3499         overload for simd<floating-point> to __float_bitwise_operators.
3500         * include/experimental/bits/simd_builtin.h
3501         (_SimdImplBuiltin::_S_complement): Bitcast to int (and back) to
3502         implement complement for floating-point vectors.
3503         * include/experimental/bits/simd_fixed_size.h
3504         (_SimdImplFixedSize::_S_copysign): New function, forwarding to
3505         copysign implementation of _SimdTuple members.
3506         * include/experimental/bits/simd_math.h (copysign): Call
3507         _SimdImpl::_S_copysign for fixed_size arguments. Simplify
3508         generic copysign implementation using the new ~ operator.
3510 2021-06-24  Jonathan Wakely  <jwakely@redhat.com>
3512         * testsuite/experimental/simd/README.md: Fix typos.
3514 2021-06-24  Jonathan Wakely  <jwakely@redhat.com>
3516         * include/bits/shared_ptr_base.h (__shared_ptr_access::operator[]):
3517         Add noexcept.
3518         * include/bits/unique_ptr.h (unique_ptr::operator*): Add
3519         conditional noexcept as per LWG 2762.
3520         * testsuite/20_util/shared_ptr/observers/array.cc: Check that
3521         dereferencing cannot throw.
3522         * testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
3523         * testsuite/20_util/optional/observers/lwg2762.cc: New test.
3524         * testsuite/20_util/unique_ptr/lwg2762.cc: New test.
3526 2021-06-23  Patrick Palka  <ppalka@redhat.com>
3528         PR c++/101174
3529         * testsuite/23_containers/multiset/cons/deduction.cc:
3530         Uncomment CTAD example that was rejected by this bug.
3531         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
3533 2021-06-23  Jonathan Wakely  <jwakely@redhat.com>
3535         * include/std/chrono (chrono::year::is_leap()): Fix incorrect
3536         logic in comment.
3538 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
3540         * testsuite/experimental/simd/README.md: New file.
3542 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
3544         * testsuite/experimental/simd/driver.sh: Rewrite output
3545         verbosity logic. Add -p/--percentage option. Allow -v/--verbose
3546         to be used twice. Add -x and -o short options. Parse long
3547         options with = instead of separating space generically. Parce
3548         contracted short options. Make unrecognized options an error.
3549         If same-line output is active, trap on EXIT to increment the
3550         progress (only with --percentage), erase the line and print the
3551         current status.
3552         * testsuite/experimental/simd/generate_makefile.sh: Initialize
3553         helper files for progress account keeping. Update help target
3554         for changes to DRIVEROPTS.
3556 2021-06-23  Matthias Kretz  <m.kretz@gsi.de>
3558         * testsuite/Makefile.am (check-simd): Remove -fno-tree-vrp flag
3559         and associated warning.
3560         * testsuite/Makefile.in: Regenerate.
3562 2021-06-23  Cassio Neri  <cassio.neri@gmail.com>
3563             Jonathan Wakely  <jwakely@redhat.com>
3564             Ulrich Drepper  <drepper@redhat.com>
3566         * include/std/chrono (chrono::year::is_leap()): Optimize.
3568 2021-06-23  Patrick Palka  <ppalka@redhat.com>
3570         PR c++/86439
3571         * testsuite/23_containers/map/cons/deduction.cc: Replace ambiguous
3572         CTAD examples.
3573         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
3574         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
3575         Mention one of the replaced examples is broken due to PR101174.
3576         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
3577         * testsuite/23_containers/unordered_map/cons/deduction.cc: Replace
3578         ambiguous CTAD examples.
3579         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
3580         Likewise.
3581         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
3582         Likewise.
3583         * testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.
3585 2021-06-23  Jonathan Wakely  <jwakely@redhat.com>
3587         * include/std/mutex (__detail::__try_lock_impl): Rename
3588         parameter to avoid clashing with newlib's __lockable macro.
3589         (try_lock): Add 'inline' specifier.
3590         * testsuite/17_intro/names.cc: Add check for __lockable.
3591         * testsuite/30_threads/try_lock/5.cc: Add options for pthreads.
3593 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
3594             Matthias Kretz  <m.kretz@gsi.de>
3596         * include/std/mutex (lock): Replace recursion with iteration
3597         when lockables all have the same type.
3598         (__detail::__try_lock_impl): Likewise. Pass lockables as
3599         parameters, instead of a tuple. Always lock the first one, and
3600         recurse for the rest.
3601         (__detail::__lock_impl): Adjust call to __try_lock_impl.
3602         (__detail::__try_to_lock): Remove.
3603         * testsuite/30_threads/lock/3.cc: Check that mutexes are locked.
3604         * testsuite/30_threads/lock/4.cc: Also test non-heterogeneous
3605         arguments.
3606         * testsuite/30_threads/unique_lock/cons/60497.cc: Also check
3607         std::try_lock.
3608         * testsuite/30_threads/try_lock/5.cc: New test.
3610 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
3612         * include/std/memory (declare_reachable, undeclare_reachable)
3613         (declare_no_pointers, undeclare_no_pointers, get_pointer_safety)
3614         (pointer_safety): Only define for C++11 to C++20 inclusive.
3615         * testsuite/20_util/pointer_safety/1.cc: Do not run for C++23.
3617 2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
3619         * include/bits/random.h (seed_seq): Constrain initializer-list
3620         constructor.
3621         * include/bits/random.tcc (seed_seq): Add template parameter.
3622         * testsuite/26_numerics/random/seed_seq/cons/default.cc: Check
3623         for noexcept.
3624         * testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check
3625         constraints.
3627 2021-06-22  Thomas Rodgers  <rodgert@appliantology.com>
3629         PR libstdc++/100806
3630         * include/bits/semaphore_base.h (__atomic_semaphore::_M_release):
3631         Force _M_release() to wake all waiting threads.
3632         * testsuite/30_threads/semaphore/100806.cc: New test.
3634 2021-06-21  Jonathan Wakely  <jwakely@redhat.com>
3636         * include/std/mutex (__try_to_lock): Move to __detail namespace.
3637         (struct __try_lock_impl): Replace with ...
3638         (__detail::__try_lock_impl<Idx>(tuple<Lockables...>&)): New
3639         function templates to implement std::try_lock.
3640         (try_lock): Use new __try_lock_impl.
3641         (__detail::__lock_impl(int, int&, L0&, L1&...)): New function
3642         template to implement std::lock.
3643         (lock): Use __lock_impl.
3645 2021-06-21  Patrick Palka  <ppalka@redhat.com>
3647         * include/bits/ranges_cmp.h (__cpp_lib_ranges): Adjust value.
3649 2021-06-20  Patrick Palka  <ppalka@redhat.com>
3651         * include/std/ranges (__non_propagating_cache::operator bool):
3652         Define for split_view::begin().
3653         (split_view): Define as per P2210.
3654         (views::__detail::__can_split_view): Define.
3655         (views::_Split, views::split): Define.
3656         * testsuite/std/ranges/adaptors/100577.cc (test01, test02):
3657         Test views::split.
3658         * testsuite/std/ranges/adaptors/split.cc: New test.
3659         * testsuite/std/ranges/p2325.cc (test08a): New test.
3660         * testsuite/std/ranges/p2367.cc (test01): Test views::split.
3662 2021-06-20  Patrick Palka  <ppalka@redhat.com>
3664         * include/std/ranges: Rename views::split to views::lazy_split,
3665         split_view to lazy_split_view, etc. throughout.
3666         * testsuite/std/ranges/*: Likewise.
3667         * testsuite/std/ranges/adaptors/lazy_split.cc: New file.
3668         * testsuite/std/ranges/adaptors/lazy_split_neg.cc: New file.
3670 2021-06-20  Patrick Palka  <ppalka@redhat.com>
3672         * include/std/ranges (split_view::_OuterIter::__at_end):
3673         Check _M_trailing_empty.
3674         (split_view::_OuterIter::_M_trailing_empty): Define this
3675         data member.
3676         (split_view::_OuterIter::operator++): Set _M_trailing_empty
3677         appropriately.
3678         (split_view::_OuterIter::operator==): Compare
3679         _M_trailing_empty.
3680         * testsuite/std/ranges/adaptors/100479.cc (test03): Expect two
3681         split parts instead of one.
3682         * testsuite/std/ranges/adaptors/split.cc (test11): New test.
3684 2021-06-20  Patrick Palka  <ppalka@redhat.com>
3686         * include/std/ranges (split_view::_InnerIter::base): Define as
3687         per P2210.
3689 2021-06-19  Patrick Palka  <ppalka@redhat.com>
3691         * include/std/ranges (transform_view::_Iterator::_S_iter_concept):
3692         Consider _Base instead of _Vp as per LWG 3555.
3693         (elements_view::_Iterator::_S_iter_concept): Likewise.
3695 2021-06-19  Patrick Palka  <ppalka@redhat.com>
3697         * include/std/ranges (split_view::_OuterIter::value_type::begin):
3698         Remove the non-const overload, and remove the copyable constraint
3699         on the const overload as per LWG 3553.
3701 2021-06-19  Patrick Palka  <ppalka@redhat.com>
3703         * include/bits/stl_iterator.h
3704         (__detail::__common_iter_use_postfix_proxy): Add
3705         move_constructible constraint as per LWG 3546.
3706         (common_iterator::__postfix_proxy): Adjust initializer of
3707         _M_keep as per LWG 3546.
3709 2021-06-18  Patrick Palka  <ppalka@redhat.com>
3711         PR libstdc++/100387
3712         * include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite
3713         to limit comparison complexity to 3*N/2.
3714         (__minmax_element_fn::operator()): Likewise.
3715         (shift_right): Avoid premature std::move of __result.
3716         * testsuite/25_algorithms/minmax/constrained.cc (test04, test05):
3717         New tests.
3718         * testsuite/25_algorithms/minmax_element/constrained.cc (test02):
3719         Likewise.
3721 2021-06-18  Patrick Palka  <ppalka@redhat.com>
3723         * include/std/concepts (convertible_to): Just use declval as per
3724         LWG 3557.
3726 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
3728         PR libstdc++/95833
3729         * include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace
3730         incorrect static_assert with ones matching the 'Mandates'
3731         conditions in the standard.
3732         * testsuite/26_numerics/reduce/95833.cc: New test.
3734 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
3736         * testsuite/21_strings/basic_string/cons/char/1.cc: Use
3737         diagnostic pragma to suppress -Wstringop-overread error.
3739 2021-06-18  Patrick Palka  <ppalka@redhat.com>
3741         * include/bits/ranges_algo.h (__find_fn, find, __find_if_fn)
3742         (find_if, __find_if_not_fn, find_if_not, _in_in_result)
3743         (__mismatch_fn, mismatch, __search_fn, search): Move to ...
3744         * include/bits/ranges_util.h: ... here.
3745         * include/std/ranges (__detail::find, __detail::find_if)
3746         (__detail::find_if_not, __detail::mismatch): Remove.
3747         (filter_view): Use ranges::find_if instead.
3748         (drop_while_view): Use ranges::find_if_not instead.
3749         (split_view): Use ranges::find and ranges::mismatch instead.
3751 2021-06-18  Patrick Palka  <ppalka@redhat.com>
3753         * include/bits/iterator_concepts.h (weakly_incrementable): Remove
3754         default_initializable requirement.
3755         * include/bits/ranges_base.h (ranges::view): Likewise.
3756         * include/bits/ranges_util.h (subrange): Constrain the default
3757         ctor.
3758         * include/bits/stl_iterator.h (back_insert_iterator): Remove the
3759         default ctor.
3760         (front_insert_iterator): Likewise.
3761         (insert_iterator): Likewise.  Remove NSDMIs.
3762         (common_iterator): Constrain the default ctor.
3763         (counted_iterator): Likewise.
3764         * include/bits/stream_iterator.h (ostream_iterator): Remove the
3765         default ctor.
3766         * include/std/ranges (__detail::__box::operator=): Handle
3767         self-assignment in the primary template.
3768         (__detail::__box): In the partial specialization: adjust
3769         constraints as per P2325.  Add specialized operator= for the
3770         case when the wrapped type is not copyable.  Constrain the
3771         default ctor.  Avoid list-initialization.
3772         (single_view): Constraint the default ctor.
3773         (iota_view): Relax semiregular constraint to copyable.
3774         Constrain the default ctor.
3775         (iota_view::_Iterator): Constraint the default ctor.
3776         (basic_istream_view): Remove the default ctor.  Remove NSDMIs.
3777         Remove redundant checks for empty _M_stream.
3778         (basic_istream_view::_Iterator): Likewise.
3779         (ref_view): Remove the default ctor.  Remove NSDMIs.
3780         (ref_view::_Iterator): Constrain the default ctor.
3781         (__detail::__non_propagating_cache::operator=): Define overload
3782         for assigning from a value of the underlying type.
3783         (filter_view): Likewise.
3784         (filter_view::_Iterator): Likewise.
3785         (transform_view): Likewise.
3786         (transform_view::_Iterator): Likewise.
3787         (take_view): Likewise.
3788         (take_view::_Iterator): Likewise.
3789         (take_while_view): Likewise.
3790         (take_while_view::_Iterator): Likewise.
3791         (drop_while_view): Likewise.
3792         (drop_while_view::_Iterator): Likewise.
3793         (join_view): Likewise.
3794         (split_view::_OuterIter::__current): Adjust after changing the
3795         type of _M_current.
3796         (split_view::_M_current): Wrap it in a __non_propagating_cache.
3797         (split_view::split_view): Constrain the default ctor.
3798         (common_view): Constrain the default ctor.
3799         (reverse_view): Likewise.
3800         (elements_view): Likewise.
3801         * include/std/span (enable_view<span<_ElementType, _Extent>>):
3802         Define this partial specialization to true unconditionally.
3803         * include/std/version (__cpp_lib_ranges): Adjust value.
3804         * testsuite/24_iterators/back_insert_iterator/constexpr.cc:
3805         Don't attempt to default construct a back_insert_iterator.
3806         * testsuite/24_iterators/front_insert_iterator/constexpr.cc:
3807         Don't attempt to default construct a front_insert_iterator.
3808         * testsuite/24_iterators/insert_iterator/constexpr.cc:
3809         Don't attempt to default construct an insert_iterator.
3810         * testsuite/24_iterators/ostream_iterator/requirements/constexpr.cc:
3811         Remove this test for default constructibility of ostream_iterator.
3812         * testsuite/std/ranges/97600.cc: Don't attempt to default
3813         construct a basic_istream_view.
3814         * testsuite/std/ranges/adaptors/detail/semiregular_box.cc:
3815         Rename to ...
3816         * testsuite/std/ranges/adaptors/detail/copyable_box.cc: ... this.
3817         (test02): Adjust now that __box is copyable-box not
3818         semiregular-box.
3819         (test03): New test.
3820         * testsuite/std/ranges/p2325.cc: New test.
3821         * testsuite/std/ranges/single_view.cc (test06): New test.
3822         * testsuite/std/ranges/view.cc: Adjust now that view doesn't
3823         require default_initializable.
3825 2021-06-17  Jonathan Wakely  <jwakely@redhat.com>
3827         PR libstdc++/91488
3828         * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only
3829         define when is_constant_evaluated is available.
3830         * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
3831         Likewise.
3832         (__constant_string_p, __constant_array_p): Remove.
3833         (char_traits): Use is_constant_evaluated directly.
3834         * include/std/version (__cpp_lib_constexpr_char_traits)
3835         (__cpp_lib_constexpr_string): Only define when
3836         is_constant_evaluated is available.
3838 2021-06-17  Patrick Palka  <ppalka@redhat.com>
3840         PR libstdc++/100940
3841         * include/std/ranges (__adaptor::_Partial): For the "simple"
3842         forwarding partial specializations, also require that
3843         the extra arguments are trivially copyable.
3844         * testsuite/std/ranges/adaptors/100577.cc (test04): New test.
3846 2021-06-17  Patrick Palka  <ppalka@redhat.com>
3848         PR libstdc++/100940
3849         * include/std/ranges (__adaptor::_RangeAdaptor): Document the
3850         template form of _S_has_simple_extra_args.
3851         (__adaptor::__adaptor_has_simple_extra_args): Add _Args template
3852         parameter pack.  Try to treat _S_has_simple_extra_args as a
3853         variable template parameterized by _Args.
3854         (__adaptor::_Partial): Pass _Arg/_Args to the constraint
3855         __adaptor_has_simple_extra_args.
3856         (views::_Take::_S_has_simple_extra_args): Templatize according
3857         to the type of the extra argument.
3858         (views::_Drop::_S_has_simple_extra_args): Likewise.
3859         (views::_Split::_S_has_simple_extra_args): Define.
3860         * testsuite/std/ranges/adaptors/100577.cc (test01, test02):
3861         Adjust after changes to _S_has_simple_extra_args mechanism.
3862         (test03): Define.
3864 2021-06-16  Jonathan Wakely  <jwakely@redhat.com>
3866         * include/bits/iterator_concepts.h (__decay_copy): Name type.
3868 2021-06-16  Jonathan Wakely  <jwakely@redhat.com>
3870         * include/bits/ranges_base.h (ranges::begin, ranges::end)
3871         (ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
3872         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
3873         (ranges::empty, ranges::data, ranges::cdata): Remove final
3874         keywords and deleted operator& overloads.
3875         * testsuite/24_iterators/customization_points/iter_move.cc: Use
3876         new is_customization_point_object function.
3877         * testsuite/24_iterators/customization_points/iter_swap.cc:
3878         Likewise.
3879         * testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc:
3880         Likewise.
3881         * testsuite/std/ranges/access/begin.cc: Likewise.
3882         * testsuite/std/ranges/access/cbegin.cc: Likewise.
3883         * testsuite/std/ranges/access/cdata.cc: Likewise.
3884         * testsuite/std/ranges/access/cend.cc: Likewise.
3885         * testsuite/std/ranges/access/crbegin.cc: Likewise.
3886         * testsuite/std/ranges/access/crend.cc: Likewise.
3887         * testsuite/std/ranges/access/data.cc: Likewise.
3888         * testsuite/std/ranges/access/empty.cc: Likewise.
3889         * testsuite/std/ranges/access/end.cc: Likewise.
3890         * testsuite/std/ranges/access/rbegin.cc: Likewise.
3891         * testsuite/std/ranges/access/rend.cc: Likewise.
3892         * testsuite/std/ranges/access/size.cc: Likewise.
3893         * testsuite/std/ranges/access/ssize.cc: Likewise.
3894         * testsuite/util/testsuite_iterators.h
3895         (is_customization_point_object): New function.
3897 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
3899         * include/bits/ranges_base.h (ranges::begin, ranges::end)
3900         (ranges::cbegin, ranges::cend, ranges::rbeing, ranges::rend)
3901         (ranges::crbegin, ranges::crend, ranges::size, ranges::ssize)
3902         (ranges::empty, ranges::data, ranges::cdata): Make types final.
3903         Add deleted operator& overloads.
3904         (ranges::advance, ranges::distance, ranges::next, ranges::prev):
3905         Likewise.
3906         * testsuite/std/ranges/headers/ranges/synopsis.cc: Replace
3907         ill-formed & expressions with using-declarations. Add checks for
3908         other function objects.
3910 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
3912         * include/bits/ranges_util.h (view_interface): Add noexcept to
3913         empty, operator bool, data and size members.
3914         (subrange): Add noexcept to constructors.
3915         * include/std/ranges (single_view, ref_view): Add noexcept to
3916         constructors.
3917         (views::single, views::all): Add noexcept.
3918         * testsuite/std/ranges/adaptors/all.cc: Check noexcept.
3919         * testsuite/std/ranges/single_view.cc: Likewise.
3921 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
3923         * include/bits/ranges_util.h (subrange): Add __size_type typedef
3924         and use it to simplify declarations.
3925         (subrange(i, s, n)): Remove assertion.
3926         * testsuite/std/ranges/subrange/constexpr.cc: New test.
3928 2021-06-15  Jonathan Wakely  <jwakely@redhat.com>
3930         * include/bits/iterator_concepts.h (__cust_access::__decay_copy):
3931         Replace with function object.
3932         (__cust_access::__member_begin, ___cust_access::_adl_begin): Use
3933         __decay_copy unqualified.
3934         * include/bits/ranges_base.h (__member_end, __adl_end):
3935         Likewise. Use __range_iter_t for type of ranges::begin.
3936         (__member_rend): Use correct value category for rbegin argument.
3937         (__member_data): Use __decay_copy unqualified.
3938         (__begin_data): Use __range_iter_t for type of ranges::begin.
3940 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3942         * include/bits/ranges_base.h (ranges::empty): Check whether
3943         conversion to bool can throw.
3944         * testsuite/std/ranges/access/empty.cc: Check for correct
3945         noexcept-specifier.
3947 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3949         PR libstdc++/100894
3950         * include/std/type_traits (__common_ref_impl<X&, Y&>): Only
3951         use the type if it's a reference.
3952         * testsuite/20_util/common_reference/100894.cc: New test.
3954 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3956         * testsuite/experimental/filesystem/path/native/conv_c++23.cc:
3957         Add dg-require-filesystem-ts directive.
3959 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3961         PR libstdc++/101034
3962         * include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
3963         (any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
3964         to use lvalue.
3965         * testsuite/20_util/any/cons/101034.cc: New test.
3967 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3969         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
3970         -std=gnu++17 option.
3972 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3974         PR libstdc++/101056
3975         * libsupc++/compare (compare_partial_order_fallback): Add
3976         constraint using reversed parameter order, as per LWG 3465.
3977         * testsuite/18_support/comparisons/algorithms/fallback.cc:
3978         Adjust expected result.
3980 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3982         * libsupc++/compare (__decayed_same_as): New helper concept.
3983         (strong_order, weak_order, partial_order): Constrain with new
3984         concept instead of using static_assert.
3985         (compare_strong_order_fallback, compare_weak_order_fallback)
3986         (compare_partial_order_fallback): Likewise. Do not deduce return
3987         types. Remove redundant if-constexpr checks.
3988         * testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
3990 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
3992         PR libstdc++/101055
3993         * include/std/tuple: Use reserved form of attribute name.
3994         * testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
3995         check for no_unique_address.
3996         * testsuite/17_intro/headers/c++2014/all_attributes.cc:
3997         Likewise.
3998         * testsuite/17_intro/headers/c++2017/all_attributes.cc:
3999         Likewise.
4001 2021-06-11  Jonathan Wakely  <jwakely@redhat.com>
4003         * include/bits/fs_path.h (operator==, operator<=>): Use new
4004         _S_compare function.
4005         (path::_S_compare): New function to call path::compare in a
4006         context where path::iterator is complete.
4007         * include/experimental/bits/fs_path.h (operator<, operator==):
4008         Define after path::iterator is complete.
4009         * testsuite/27_io/filesystem/path/native/conv_c++23.cc: New
4010         test.
4011         * testsuite/experimental/filesystem/path/native/conv_c++23.cc:
4012         New test.
4014 2021-06-09  Thomas Rodgers  <rodgert@appliantology.com>
4016         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Guard
4017         test logic with constexpr check for is_always_lock_free.
4019 2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
4021         PR libstdc++/100982
4022         * include/std/optional (optional::operator=(const optional<U>&)):
4023         Fix value category used in is_assignable check.
4024         * testsuite/20_util/optional/assignment/100982.cc: New test.
4026 2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
4028         * include/bits/allocator.h (allocator::is_always_equal): Deprecate.
4029         * include/bits/iterator_concepts.h (indirectly_readable_traits):
4030         Add LWG issue number to comment.
4031         * include/std/memory_resource (polymorphic_allocator::release):
4032         Deprecate.
4033         * testsuite/20_util/allocator/requirements/typedefs.cc: Add
4034         dg-warning for deprecation. Also check std::allocator<void>.
4036 2021-06-08  Thomas Rodgers  <rodgert@appliantology.com>
4038         PR libstdc++/100889
4039         * include/bits/atomic_base.h (atomic_ref<_Tp*>::wait):
4040         Change parameter type from _Tp to _Tp*.
4041         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Extend
4042         coverage of types tested.
4044 2021-06-08  Thomas Rodgers  <rodgert@appliantology.com>
4046         * include/std/barrier (__tree_barrier::_M_arrive): Remove
4047         unnecessary hasher instantiation.
4049 2021-06-08  Jonathan Wakely  <jwakely@redhat.com>
4051         * include/experimental/propagate_const (swap): Constrain.
4052         * testsuite/experimental/propagate_const/swap/lwg3413.cc: New test.
4054 2021-06-07  Avi Kivity  <avi@scylladb.com>
4056         PR libstdc++/100900
4057         * include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
4058         Add missing typename.
4060 2021-06-07  Jonathan Wakely  <jwakely@redhat.com>
4062         PR libstdc++/98842
4063         * include/std/optional (operator<=>(const optional<T>& const U&)):
4064         Add missing constraint and add workaround for template
4065         recursion.
4066         * testsuite/20_util/optional/relops/three_way.cc: Check that
4067         type without equality comparison cannot be compared when wrapped
4068         in std::optional.
4070 2021-06-05  Jonathan Wakely  <jwakely@redhat.com>
4072         PR libstdc++/100824
4073         * include/bits/ranges_base.h (_SSize): Return signed type.
4074         * testsuite/std/ranges/access/ssize.cc: Check with __int128.
4076 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4078         * include/bits/ranges_base.h (_SSize): Return the result of
4079         ranges::size converted to the wider of make-signed-like-t<S> and
4080         ptrdiff_t, rather than the ranges different type.
4081         * testsuite/std/ranges/access/ssize.cc: Adjust expected result
4082         for an iota_view that uses an integer class type for its
4083         difference_type.
4085 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4087         PR libstdc++/100824
4088         * include/bits/ranges_base.h (__member_data): Use __decay_copy.
4089         * testsuite/std/ranges/access/data.cc: Add testcase from PR.
4091 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4093         PR libstdc++/100824
4094         * include/bits/iterator_concepts.h (__detail::__decay_copy)
4095         (__detail::__member_begin, __detail::__adl_begin): Move to
4096         namespace ranges::__cust_access.
4097         (__detail::__ranges_begin): Likewise, and rename to __begin.
4098         Remove redundant static assertion.
4099         * include/bits/ranges_base.h (_Begin, _End, _RBegin, _REnd):
4100         Use lvalue in noexcept specifier.
4101         (__as_const): Add non-deduced parameter for value category.
4102         (_CBegin, _CEnd, _CRBegin, _CREnd, _CData): Adjust uses of
4103         __as_const.
4104         (__member_size, __adl_size, __member_empty, __size0_empty):
4105         (__eq_iter_empty, __adl_data): Use lvalue objects in
4106         requirements.
4107         (__sentinel_size): Likewise. Add check for conversion to
4108         unsigned-like.
4109         (__member_data): Allow non-lvalue types to satisfy the concept,
4110         but use lvalue object in requirements.
4111         (_Size, _SSize): Remove forwarding to always use an lvalue.
4112         (_Data): Likewise. Add static assertion for arrays.
4113         * testsuite/std/ranges/access/cdata.cc: Adjust expected
4114         behaviour for rvalues. Add negative tests for ill-formed
4115         expressions.
4116         * testsuite/std/ranges/access/data.cc: Likewise.
4117         * testsuite/std/ranges/access/empty.cc: Adjust expected
4118         behaviour for rvalues.
4119         * testsuite/std/ranges/access/size.cc: Likewise.
4121 2021-06-04  Tim Adye  <Tim.Adye@cern.ch>
4123         * include/std/any (any::_Manager::_S_access): New static
4124         function to access the contained value.
4125         (any::emplace, __any_caster): Use _S_access member of the
4126         manager type.
4128 2021-06-04  Jonathan Wakely  <jwakely@redhat.com>
4130         * doc/xml/manual/status_cxx2020.xml:
4131         * doc/html/*: Regenerate.
4132         * include/bits/hashtable.h (__cpp_lib_generic_unordered_lookup):
4133         Define.
4134         * include/std/version (__cpp_lib_generic_unordered_lookup):
4135         Define.
4136         * testsuite/23_containers/unordered_map/operations/1.cc: Check
4137         feature test macro.
4138         * testsuite/23_containers/unordered_set/operations/1.cc:
4139         Likewise.
4141 2021-06-03  Patrick Palka  <ppalka@redhat.com>
4143         * include/bits/ranges_algo.h (__detail::__can_reread_output):
4144         Factor out this concept from ...
4145         (__unique_copy_fn::operator()): ... here.  Use the concept
4146         throughout.
4147         * testsuite/std/ranges/range.cc: Remove now ill-formed use
4148         of range_value_t on an output_range.
4149         * testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
4150         Define value_type, pointer and reference member types to void.
4152 2021-06-03  Patrick Palka  <ppalka@redhat.com>
4154         PR libstdc++/100577
4155         * include/std/ranges (_RangeAdaptorClosure): Document
4156         _S_has_simple_call_op mechanism.
4157         (_RangeAdaptor): Document _S_has_simple_extra_args mechanism.
4158         (__closure_has_simple_call_op): New concept.
4159         (__adaptor_has_simple_extra_args): Likewise.
4160         (_Partial<_Adaptor, _Args...>): New partial specialization.
4161         (_Partial<_Adaptor, _Arg>): Likewise.
4162         (_Pipe<_Lhs, _Rhs>): Likewise.
4163         (views::_All::_S_has_simple_call_op): Define to true.
4164         (views::_Filter::_S_has_simple_extra_args): Likewise.
4165         (views::_Transform::_S_has_simple_extra_args): Likewise.
4166         (views::_Take::_S_has_simple_extra_args): Likewise.
4167         (views::_TakeWhile::_S_has_simple_extra_args): Likewise.
4168         (views::_Drop::_S_has_simple_extra_args): Likewise.
4169         (views::_DropWhile::_S_has_simple_extra_args): Likewise.
4170         (views::_Join::_S_has_simple_call_op): Likewise.
4171         (views::_Split): Document why we don't define
4172         _S_has_simple_extra_args to true for this adaptor.
4173         (views::_Common::_S_has_simple_call_op): Define to true.
4174         (views::_Reverse::_S_has_simple_call_op): Likewise.
4175         (views::_Elements::_S_has_simple_call_op): Likewise.
4176         * testsuite/std/ranges/adaptors/100577.cc: New test.
4178 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
4180         PR libstdc++/100863
4181         PR libstdc++/65816
4182         * include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
4183         Value-initialize subobject.
4184         * testsuite/23_containers/unordered_map/allocator/default_init.cc:
4185         Remove XFAIL.
4186         * testsuite/23_containers/unordered_set/allocator/default_init.cc:
4187         Remove XFAIL.
4189 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
4191         PR libstdc++/96088
4192         * testsuite/23_containers/unordered_map/96088.cc: Adjust
4193         expected number of allocations.
4194         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
4196 2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
4198         * doc/xml/manual/status_cxxis29124.xml: Improve punctuation.
4199         * doc/xml/manual/status_cxxtr1.xml: Likewise.
4200         * doc/xml/manual/status_cxxtr24733.xml: Likewise.
4201         * doc/html/*: Regenerate.
4203 2021-06-01  Patrick Palka  <ppalka@redhat.com>
4205         PR c++/65816
4206         * testsuite/23_containers/deque/allocator/default_init.cc,
4207         testsuite/23_containers/forward_list/allocator/default_init.cc,
4208         testsuite/23_containers/list/allocator/default_init.cc,
4209         testsuite/23_containers/map/allocator/default_init.cc,
4210         testsuite/23_containers/set/allocator/default_init.cc,
4211         testsuite/23_containers/vector/allocator/default_init.cc,
4212         testsuite/23_containers/vector/bool/allocator/default_init.cc:
4213         Remove xfail.
4215 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
4217         * testsuite/23_containers/unordered_map/96088.cc: Change
4218         effective target to c++17.
4219         * testsuite/23_containers/unordered_set/96088.cc: Likewise.
4221 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
4223         * testsuite/22_locale/ctype/is/string/89728_neg.cc: Only test
4224         isblank for C++11 and later.
4226 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
4228         PR libstdc++/100833
4229         * include/bits/ranges_base.h (ranges::advance(iter, n, sentinel)):
4230         Fix return value for no-op case.
4231         * testsuite/24_iterators/range_operations/advance.cc: Test
4232         return values of three-argument overload.
4234 2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
4236         PR libstdc++/99453
4237         * python/Makefile.am: Use archive name for printer hook if no
4238         dynamic library name is available.
4239         * python/Makefile.in: Regenerate.
4241 2021-05-30  Gerald Pfeifer  <gerald@pfeifer.com>
4243         * doc/xml/manual/abi.xml: Remove dead reference to "Intel
4244         Compilers for Linux: Compatibility with GNU Compilers" article.
4245         * doc/html/manual/abi.html: Regenerate.
4247 2021-05-26  François Dumont  <fdumont@gcc.gnu.org>
4249         * include/debug/formatter.h
4250         (_Error_formatter::_Parameter::_Named): New.
4251         (_Error_formatter::_Parameter::_Type): Inherit latter.
4252         (_Error_formatter::_Parameter::_M_integer): Likewise.
4253         (_Error_formatter::_Parameter::_M_string): Likewise.
4254         * src/c++11/debug.cc: Include <cstring>.
4255         (_Print_func_t): New.
4256         (print_raw(PrintContext&, const char*, ptrdiff_t)): New.
4257         (print_word): Use '%.*s' format in fprintf to render only expected number of chars.
4258         (pretty_print(PrintContext&, const char*, _Print_func_t)): New.
4259         (print_type): Rename in...
4260         (print_type_info): ...this. Use pretty_print.
4261         (print_address, print_integer): New.
4262         (print_named_name, print_iterator_constness, print_iterator_state): New.
4263         (print_iterator_seq_type): New.
4264         (print_named_field, print_type_field, print_instance_field, print_iterator_field): New.
4265         (print_field): Use latters.
4266         (print_quoted_named_name, print_type_type, print_type, print_instance): New.
4267         (print_string(PrintContext&, const char*, const _Parameter*, size_t)):
4268         Change signature to...
4269         (print_string(PrintContext&, const char*, ptrdiff_t, const _Parameter*, size_t)):
4270         ...this and adapt. Remove intermediate buffer to render input string.
4271         (print_string(PrintContext&, const char*, ptrdiff_t)): New.
4273 2021-05-26  Jonathan Wakely  <jwakely@redhat.com>
4275         PR libstdc++/100768
4276         * include/bits/ranges_base.h (advance, distance, next, prev):
4277         Replace function templates with function objects.
4278         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
4279         Adjust for changes to function objects.
4280         * testsuite/std/ranges/adaptors/elements.cc: Add using
4281         declarations for names from namespace ranges.
4282         * testsuite/std/ranges/adaptors/transform.cc: Likewise.
4283         * testsuite/24_iterators/range_operations/100768.cc: New test.
4285 2021-05-24  François Dumont  <fdumont@gcc.gnu.org>
4287         PR libstdc++/96088
4288         * include/bits/hashtable_policy.h (_Select2nd): New.
4289         (_NodeBuilder<>): New.
4290         (_ReuseOrAllocNode<>::operator()): Use variadic template args.
4291         (_AllocNode<>::operator()): Likewise.
4292         * include/bits/hashtable.h
4293         (_Hashtable<>::__node_builder_t): New.
4294         (_Hashtable<>::_M_insert_unique<>(_Kt&&, _Arg&&, const _NodeGenerator&)):
4295          New.
4296         (_Hashtable<>::_S_forward_key): New.
4297         (_Hashtable<>::_M_insert): Use latter.
4298         (_Hashtable<>::_M_insert(const_iterator, _Arg&&, const _NodeGenerator&, false_type)):
4299         Instantiate node first, compute hash code second.
4300         * testsuite/23_containers/unordered_map/96088.cc: New test.
4301         * testsuite/23_containers/unordered_multimap/96088.cc: New test.
4302         * testsuite/23_containers/unordered_multiset/96088.cc: New test.
4303         * testsuite/23_containers/unordered_set/96088.cc: New test.
4304         * testsuite/util/replacement_memory_operators.h
4305         (counter::_M_increment): New.
4306         (counter::_M_decrement): New.
4307         (counter::reset()): New.
4309 2021-05-24  Patrick Palka  <ppalka@redhat.com>
4311         PR libstdc++/100479
4312         * include/std/ranges (__detail::__non_propagating_cache): Move
4313         definition up to before that of _CachedPosition.  Make base
4314         class _Optional_base protected instead of private.  Add const
4315         overload for operator*.
4316         (__detail::_CachedPosition): Rewrite the partial specialization
4317         for forward ranges as a derived class of __non_propagating_cache.
4318         Remove the size constraint on the partial specialization for
4319         random access ranges.  Add copy/move/copy-assignment/move-assignment
4320         members to the offset partial specialization for random
4321         access ranges that propagate the cached value but additionally
4322         invalidate it in the source object on move.
4323         * testsuite/std/ranges/adaptors/100479.cc: New test.
4325 2021-05-24  Jonathan Wakely  <jwakely@redhat.com>
4327         * testsuite/25_algorithms/inplace_merge/constrained.cc: Qualify
4328         call to ranges::next.
4329         * testsuite/25_algorithms/is_sorted/constrained.cc: Likewise.
4330         * testsuite/25_algorithms/is_sorted_until/constrained.cc:
4331         Likewise.
4332         * testsuite/25_algorithms/swap_ranges/1.cc: Qualify call to
4333         swap_ranges.
4335 2021-05-21  Patrick Palka  <ppalka@redhat.com>
4337         PR libstdc++/100606
4338         * include/std/ranges (drop_while_view::begin): Assert the
4339         precondition added by LWG 3490.
4341 2021-05-21  Patrick Palka  <ppalka@redhat.com>
4343         PR libstdc++/100690
4344         * include/std/ranges (iota_view::_Sentinel::_M_distance_from):
4345         Split out this member function from ...
4346         (iota_view::_Sentinel::operator-): ... here, for sake of access
4347         control.
4348         * testsuite/std/ranges/iota/iota_view.cc (test05): New test.
4350 2021-05-20  Jonathan Wakely  <jwakely@redhat.com>
4352         * include/bits/random.tcc (__representable_as_double)
4353         (__p1_representable_as_double): Add "" to static asserts.
4355 2021-05-20  Jonathan Wakely  <jwakely@redhat.com>
4357         PR libstdc++/100676
4358         * include/bits/c++config (__glibcxx_assert_1): Rename to ...
4359         (__glibcxx_constexpr_assert): ... this.
4360         (__glibcxx_assert_impl): Use __glibcxx_constexpr_assert.
4361         (__glibcxx_assert): Define as either __glibcxx_constexpr_assert
4362         or __glibcxx_assert_impl.
4363         (__glibcxx_assert_2): Remove
4364         * include/debug/macros.h (_GLIBCXX_DEBUG_VERIFY_AT_F): Use
4365         __glibcxx_constexpr_assert instead of __glibcxx_assert_1.
4366         * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
4367         Adjust expected error.
4368         * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
4369         Likewise.
4370         * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
4371         Likewise.
4372         Likewise.
4373         * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
4374         Likewise.
4375         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
4376         Likewise.
4377         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
4378         Likewise.
4379         * testsuite/23_containers/span/back_neg.cc: Likewise.
4380         * testsuite/23_containers/span/front_neg.cc: Likewise.
4381         * testsuite/23_containers/span/index_op_neg.cc: Likewise.
4383 2021-05-20  Patrick Palka  <ppalka@redhat.com>
4385         PR libstdc++/100639
4386         * include/bits/stl_iterator.h (reverse_iterator::difference_type):
4387         In C++20 mode, define in terms of iter_difference_t as per P0896R4.
4388         (reverse_iterator::reference): Likewise, but with iter_reference_t.
4389         (reverse_iterator::value_type): Likewise, but with iter_value_t.
4390         * testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
4391         * testsuite/24_iterators/reverse_iterator/100639.cc: New test.
4393 2021-05-20  Joern Rennecke  <joern.rennecke@riscy-ip.com>
4395         PR libstdc++/100361
4396         * include/std/charconv (to_chars): Hide the overloads for
4397         floating-point types for 16 bit targets.
4398         * src/c++17/floating_to_chars.cc: Don't compile for 16 bit targets.
4399         * testsuite/20_util/to_chars/double.cc: Run this test only on
4400         size32plus targets.
4401         * testsuite/20_util/to_chars/float.cc: Likewise.
4402         * testsuite/20_util/to_chars/long_double.cc: Likewise.
4404 2021-05-18  Patrick Palka  <ppalka@redhat.com>
4406         PR libstdc++/100631
4407         * include/std/ranges (elements_view::_Sentinel::operator-): Use
4408         _M_distance_from in the other operator- overload too.
4409         * testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
4411 2021-05-18  Thomas Schwinge  <thomas@codesourcery.com>
4413         * testsuite/lib/prune.exp: Add note about 'dg-note'.
4415 2021-05-18  Patrick Palka  <ppalka@redhat.com>
4417         PR libstdc++/100475
4418         * include/std/ranges (__box::__box): Use non-list-initialization
4419         in member initializer list of in-place constructor of the
4420         partial specialization for semiregular types.
4421         (__box::operator->): Use std::__addressof.
4422         * testsuite/std/ranges/adaptors/detail/semiregular_box.cc
4423         (test02): New test.
4424         * testsuite/std/ranges/single_view.cc (test04): New test.
4426 2021-05-18  Patrick Palka  <ppalka@redhat.com>
4428         PR libstdc++/100621
4429         * include/std/ranges (reverse_view::_S_needs_cached_begin):
4430         Set to true if the underlying non-common random-access range
4431         doesn't have a sized sentinel.
4433 2021-05-18  Patrick Palka  <ppalka@redhat.com>
4435         PR libstdc++/100631
4436         * include/std/ranges (elements_view::_Iterator): Also befriend
4437         _Sentinel<!_Const>.
4438         (elements_view::_Sentinel::_M_equal): Templatize.
4439         (elements_view::_Sentinel::_M_distance_from): Split out from ...
4440         (elements_view::_Sentinel::operator-): ... here.  Depend on
4441         _Base2 instead of _Base in the return type.
4442         * testsuite/std/ranges/adaptors/elements.cc (test06, test07):
4443         New tests.
4445 2021-05-17  Thomas Rodgers  <rodgert@twrodgers.com>
4447         * include/bits/atomic_wait.h (__waiter::_M_do_wait_v): loop
4448         until value change observed.
4449         (__waiter_base::_M_laundered): New member.
4450         (__waiter_base::_M_notify): Check _M_laundered to determine
4451         whether to wake one or all.
4452         (__detail::__atomic_compare): Return true if call to
4453         __builtin_memcmp() == 0.
4454         (__waiter_base::_S_do_spin_v): Adjust predicate.
4455         * testsuite/29_atomics/atomic/wait_notify/100334.cc: New
4456         test.
4458 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
4460         PR libstdc++/100630
4461         * include/experimental/bits/fs_path.h (__is_constructible_from):
4462         Test construction from a const lvalue, not an rvalue.
4463         * testsuite/27_io/filesystem/path/construct/100630.cc: New test.
4464         * testsuite/experimental/filesystem/path/construct/100630.cc:
4465         New test.
4467 2021-05-17  Antony Polukhin  <antoshkka@gmail.com>
4469         PR libstdc++/89728
4470         * include/bits/locale_facets.h (ctype<basic_string<C,T,A>>):
4471         Declare (but do not define) partial specialization.
4472         * testsuite/22_locale/ctype/is/string/89728_neg.cc: New test.
4474 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
4476         * include/std/thread (jthread::_S_create): Fix static assert
4477         message.
4478         * testsuite/30_threads/jthread/95989.cc: Re-enable test.
4479         * testsuite/30_threads/jthread/jthread.cc: Do not require
4480         pthread effective target.
4481         * testsuite/30_threads/jthread/2.cc: Moved to...
4482         * testsuite/30_threads/jthread/version.cc: ...here.
4484 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
4486         * doc/Makefile.am: Simplify doxygen recipes and use --latex_cmd.
4487         * doc/Makefile.in: Regenerate.
4488         * doc/doxygen/user.cfg.in (LATEX_CMD_NAME): Add placeholder
4489         value.
4490         * scripts/run_doxygen (print_usage): Always print to stdout and
4491         do not exit.
4492         (fail): New function for exiting on error.
4493         (parse_options): Handle --latex_cmd. Do not treat --help the
4494         same as errors. Simplify handling of required arguments.
4496 2021-05-12  Jonathan Wakely  <jwakely@redhat.com>
4498         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
4499         Increase dg-timeout-factor to 4. Fix -Wunused-parameter
4500         warnings. Replace bitwise AND with logical AND in loop
4501         condition.
4502         * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
4503         Replace bitwise AND with logical AND in loop condition.
4504         * testsuite/util/pstl/test_utils.h: Remove unused parameter
4505         names.
4507 2021-05-11  Patrick Palka  <ppalka@redhat.com>
4509         * src/c++17/ryu/LOCAL_PATCHES: Update.
4510         * src/c++17/ryu/ryu_generic_128.h: Remove extern "C".
4511         Remove declarations for never-defined functions.
4512         * testsuite/20_util/to_chars/4.cc: New test.
4514 2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
4516         * testsuite/20_util/headers/memory/synopsis.cc: Define C++98
4517         alternative for macro.
4518         * testsuite/20_util/shared_ptr/creation/99006.cc: Add effective
4519         target keyword.
4520         * testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11
4521         syntax.
4523 2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
4525         * include/bits/allocator.h (allocator<void>) [C++20]: Add
4526         missing noexcept to constructor. Restore missing POCMA and
4527         is_always_equal_traits.
4528         [C++17]: Make construct and destroy members private and
4529         declare allocator_traits as a friend.
4530         * include/bits/memoryfwd.h (allocator_traits): Declare.
4531         * include/ext/malloc_allocator.h (malloc_allocator::allocate):
4532         Add nodiscard attribute. Add static assertion for LWG 3307.
4533         * include/ext/new_allocator.h (new_allocator::allocate): Add
4534         static assertion for LWG 3307.
4535         * testsuite/20_util/allocator/void.cc: Check that converting
4536         constructor is noexcept. Check for propagation traits and
4537         size_type and difference_type. Check that pointer and
4538         const_pointer are gone in C++20.
4540 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4542         * include/std/stop_token: Remove TODO comment.
4544 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4546         * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)):
4547         Initialize a non-reference deleter from an rvalue, as per LWG
4548         3548.
4549         (__shared_ptr::_UniqCompatible): Add missing constraint.
4550         * testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test.
4551         * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check
4552         constraints.
4554 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4556         * testsuite/17_intro/headers/c++2017/all_attributes.cc: Remove
4557         -std=gnu++17 from dg-options directive.
4558         * testsuite/17_intro/headers/c++2017/all_no_exceptions.cc:
4559         Likewise.
4560         * testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc:
4561         Likewise.
4562         * testsuite/17_intro/headers/c++2017/operator_names.cc:
4563         Likewise.
4564         * testsuite/17_intro/headers/c++2017/parallel_mode.cc: Likewise.
4565         * testsuite/17_intro/headers/c++2017/stdc++.cc: Likewise.
4566         * testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc:
4567         Likewise.
4568         * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
4569         * testsuite/18_support/byte/81076.cc: Likewise.
4570         * testsuite/18_support/byte/global_neg.cc: Likewise.
4571         * testsuite/18_support/byte/ops.cc: Likewise.
4572         * testsuite/18_support/byte/requirements.cc: Likewise.
4573         * testsuite/18_support/headers/cfloat/values_c++17.cc: Likewise.
4574         * testsuite/18_support/launder/1.cc: Likewise.
4575         * testsuite/18_support/launder/nodiscard.cc: Likewise.
4576         * testsuite/18_support/launder/requirements.cc: Likewise.
4577         * testsuite/18_support/launder/requirements_neg.cc: Likewise.
4578         * testsuite/18_support/new_aligned.cc: Likewise.
4579         * testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
4580         Likewise.
4581         * testsuite/19_diagnostics/error_code/is_error_code_v.cc:
4582         Likewise.
4583         * testsuite/19_diagnostics/error_condition/hash.cc: Likewise.
4584         * testsuite/20_util/addressof/requirements/constexpr.cc:
4585         Likewise.
4586         * testsuite/20_util/as_const/1.cc: Likewise.
4587         * testsuite/20_util/as_const/rvalue_neg.cc: Likewise.
4588         * testsuite/20_util/bind/83427.cc: Likewise.
4589         * testsuite/20_util/bind/is_placeholder_v.cc: Likewise.
4590         * testsuite/20_util/bool_constant/requirements.cc: Likewise.
4591         * testsuite/20_util/duration/arithmetic/constexpr_c++17.cc:
4592         Likewise.
4593         * testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc:
4594         Likewise.
4595         * testsuite/20_util/duration_cast/rounding.cc: Likewise.
4596         * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
4597         Likewise.
4598         * testsuite/20_util/from_chars/1_neg.cc: Likewise.
4599         * testsuite/20_util/from_chars/requirements.cc: Likewise.
4600         * testsuite/20_util/function/91456.cc: Likewise.
4601         * testsuite/20_util/function/cons/deduction.cc: Likewise.
4602         * testsuite/20_util/function_objects/83607.cc: Likewise.
4603         * testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
4604         * testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
4605         * testsuite/20_util/function_objects/not_fn/1.cc: Likewise.
4606         * testsuite/20_util/function_objects/not_fn/87538.cc: Likewise.
4607         * testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
4608         Likewise.
4609         * testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
4610         Likewise.
4611         * testsuite/20_util/has_unique_object_representations/value.cc:
4612         Likewise.
4613         * testsuite/20_util/hash/nullptr.cc: Likewise.
4614         * testsuite/20_util/in_place/requirements.cc: Likewise.
4615         * testsuite/20_util/is_aggregate/incomplete_neg.cc: Likewise.
4616         * testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
4617         Likewise.
4618         * testsuite/20_util/is_aggregate/requirements/typedefs.cc:
4619         Likewise.
4620         * testsuite/20_util/is_aggregate/value.cc: Likewise.
4621         * testsuite/20_util/is_invocable/83395.cc: Likewise.
4622         * testsuite/20_util/is_invocable/91456.cc: Likewise.
4623         * testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc:
4624         Likewise.
4625         * testsuite/20_util/is_invocable/requirements/typedefs.cc:
4626         Likewise.
4627         * testsuite/20_util/is_invocable/value.cc: Likewise.
4628         * testsuite/20_util/is_literal_type/deprecated-1z.cc: Likewise.
4629         * testsuite/20_util/is_nothrow_constructible/94003.cc: Likewise.
4630         * testsuite/20_util/is_nothrow_invocable/83395.cc: Likewise.
4631         * testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc:
4632         Likewise.
4633         * testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc: Likewise.
4634         * testsuite/20_util/is_nothrow_invocable/value.cc: Likewise.
4635         * testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc:
4636         Likewise.
4637         * testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
4638         Likewise.
4639         * testsuite/20_util/is_nothrow_swappable/value.cc: Likewise.
4640         * testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc:
4641         Likewise.
4642         * testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc:
4643         Likewise.
4644         * testsuite/20_util/is_nothrow_swappable_with/value.cc:
4645         Likewise.
4646         * testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc:
4647         Likewise.
4648         * testsuite/20_util/is_swappable/requirements/typedefs.cc:
4649         Likewise.
4650         * testsuite/20_util/is_swappable/value.cc: Likewise.
4651         * testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc:
4652         Likewise.
4653         * testsuite/20_util/is_swappable_with/requirements/typedefs.cc:
4654         Likewise.
4655         * testsuite/20_util/is_swappable_with/value.cc: Likewise.
4656         * testsuite/20_util/logical_traits/83134.cc: Likewise.
4657         * testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc:
4658         Likewise.
4659         * testsuite/20_util/logical_traits/requirements/typedefs.cc:
4660         Likewise.
4661         * testsuite/20_util/logical_traits/value.cc: Likewise.
4662         * testsuite/20_util/pair/cons/deduction.cc: Likewise.
4663         * testsuite/20_util/pair/swap_cxx17.cc: Likewise.
4664         * testsuite/20_util/ratio/requirements/ratio_equal_v.cc:
4665         Likewise.
4666         * testsuite/20_util/reference_wrapper/83427.cc: Likewise.
4667         * testsuite/20_util/reference_wrapper/deduction.cc: Likewise.
4668         * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
4669         * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
4670         * testsuite/20_util/shared_ptr/requirements/weak_type.cc:
4671         Likewise.
4672         * testsuite/20_util/time_point/arithmetic/constexpr.cc:
4673         Likewise.
4674         * testsuite/20_util/time_point_cast/rounding.cc: Likewise.
4675         * testsuite/20_util/to_chars/3.cc: Likewise.
4676         * testsuite/20_util/to_chars/chars_format.cc: Likewise.
4677         * testsuite/20_util/to_chars/lwg3266.cc: Likewise.
4678         * testsuite/20_util/to_chars/requirements.cc: Likewise.
4679         * testsuite/20_util/tuple/78939.cc: Likewise.
4680         * testsuite/20_util/tuple/apply/1.cc: Likewise.
4681         * testsuite/20_util/tuple/apply/2.cc: Likewise.
4682         * testsuite/20_util/tuple/cons/deduction.cc: Likewise.
4683         * testsuite/20_util/tuple/make_from_tuple/1.cc: Likewise.
4684         * testsuite/20_util/tuple/make_from_tuple/2.cc: Likewise.
4685         * testsuite/20_util/tuple/swap_cxx17.cc: Likewise.
4686         * testsuite/20_util/tuple/tuple_size_v.cc: Likewise.
4687         * testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
4688         * testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc:
4689         Likewise.
4690         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.
4691         * testsuite/20_util/void_t/1.cc: Likewise.
4692         * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
4693         * testsuite/24_iterators/container_access.cc: Likewise.
4694         * testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
4695         Likewise.
4696         * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc:
4697         Likewise.
4698         * testsuite/24_iterators/range_access/range_access_cpp17.cc:
4699         Likewise.
4700         * testsuite/24_iterators/range_access/range_access_cpp17_neg.cc:
4701         Likewise.
4702         * testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
4703         * testsuite/26_numerics/headers/cmath/functions_std_c++17.cc:
4704         Likewise.
4705         * testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
4706         * testsuite/26_numerics/headers/cmath/special_functions_global.cc:
4707         Likewise.
4708         * testsuite/26_numerics/lcm/1.cc: Likewise.
4709         * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
4710         * testsuite/26_numerics/valarray/deduction.cc: Likewise.
4711         * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc:
4712         Likewise.
4713         * testsuite/27_io/manipulators/standard/char/quoted_sv.cc:
4714         Likewise.
4715         * testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc:
4716         Likewise.
4717         * testsuite/27_io/types/4.cc: Likewise.
4718         * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
4719         * testsuite/libstdc++-prettyprinters/91997.cc: Likewise.
4720         * testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
4722 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4724         * testsuite/20_util/function_objects/searchers.cc: Remove
4725         -std=gnu++17 from dg-options directive.
4726         * testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
4727         Likewise.
4728         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
4729         Likewise.
4730         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc:
4731         Likewise.
4732         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc:
4733         Likewise.
4734         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc:
4735         Likewise.
4736         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
4737         Likewise.
4738         * testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
4739         Likewise.
4740         * testsuite/25_algorithms/clamp/1.cc: Likewise.
4741         * testsuite/25_algorithms/clamp/2.cc: Likewise.
4742         * testsuite/25_algorithms/clamp/constexpr.cc: Likewise.
4743         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc:
4744         Likewise.
4745         * testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc:
4746         Likewise.
4747         * testsuite/25_algorithms/for_each/for_each_n.cc: Likewise.
4748         * testsuite/25_algorithms/for_each/for_each_n_debug.cc:
4749         Likewise.
4750         * testsuite/25_algorithms/sample/1.cc: Likewise.
4751         * testsuite/25_algorithms/sample/2.cc: Likewise.
4752         * testsuite/25_algorithms/sample/3.cc: Likewise.
4753         * testsuite/25_algorithms/sample/81221.cc: Likewise.
4754         * testsuite/25_algorithms/search/searcher.cc: Likewise.
4755         * testsuite/26_numerics/exclusive_scan/1.cc: Likewise.
4756         * testsuite/26_numerics/inclusive_scan/1.cc: Likewise.
4757         * testsuite/26_numerics/reduce/1.cc: Likewise.
4758         * testsuite/26_numerics/reduce/2.cc: Likewise.
4759         * testsuite/26_numerics/transform_exclusive_scan/1.cc: Likewise.
4760         * testsuite/26_numerics/transform_inclusive_scan/1.cc: Likewise.
4761         * testsuite/26_numerics/transform_reduce/1.cc: Likewise.
4763 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4765         * testsuite/23_containers/array/cons/deduction.cc: Remove
4766         -std=gnu++17 from dg-options directive.
4767         * testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
4768         * testsuite/23_containers/array/element_access/constexpr_c++17.cc:
4769         Likewise.
4770         * testsuite/23_containers/array/requirements/constexpr_iter.cc:
4771         Likewise.
4772         * testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
4773         Likewise.
4774         * testsuite/23_containers/deque/cons/deduction.cc: Likewise.
4775         * testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
4776         Likewise.
4777         * testsuite/23_containers/forward_list/cons/deduction.cc:
4778         Likewise.
4779         * testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
4780         Likewise.
4781         * testsuite/23_containers/list/cons/deduction.cc: Likewise.
4782         * testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
4783         Likewise.
4784         * testsuite/23_containers/map/cons/deduction.cc: Likewise.
4785         * testsuite/23_containers/map/modifiers/extract.cc: Likewise.
4786         * testsuite/23_containers/map/modifiers/insert/83226.cc:
4787         Likewise.
4788         * testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
4789         Likewise.
4790         * testsuite/23_containers/map/modifiers/merge.cc: Likewise.
4791         * testsuite/23_containers/map/modifiers/try_emplace/1.cc:
4792         Likewise.
4793         * testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
4794         * testsuite/23_containers/multimap/modifiers/extract.cc:
4795         Likewise.
4796         * testsuite/23_containers/multimap/modifiers/merge.cc: Likewise.
4797         * testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
4798         * testsuite/23_containers/multiset/modifiers/extract.cc:
4799         Likewise.
4800         * testsuite/23_containers/multiset/modifiers/merge.cc: Likewise.
4801         * testsuite/23_containers/priority_queue/deduction.cc: Likewise.
4802         * testsuite/23_containers/queue/deduction.cc: Likewise.
4803         * testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
4804         Likewise.
4805         * testsuite/23_containers/set/cons/deduction.cc: Likewise.
4806         * testsuite/23_containers/set/modifiers/extract.cc: Likewise.
4807         * testsuite/23_containers/set/modifiers/merge.cc: Likewise.
4808         * testsuite/23_containers/set/modifiers/node_swap.cc: Likewise.
4809         * testsuite/23_containers/stack/deduction.cc: Likewise.
4810         * testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
4811         Likewise.
4812         * testsuite/23_containers/unordered_map/cons/deduction.cc:
4813         Likewise.
4814         * testsuite/23_containers/unordered_map/modifiers/extract.cc:
4815         Likewise.
4816         * testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
4817         Likewise.
4818         * testsuite/23_containers/unordered_map/modifiers/merge.cc:
4819         Likewise.
4820         * testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
4821         Likewise.
4822         * testsuite/23_containers/unordered_multimap/cons/deduction.cc:
4823         Likewise.
4824         * testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
4825         Likewise.
4826         * testsuite/23_containers/unordered_multimap/modifiers/merge.cc:
4827         Likewise.
4828         * testsuite/23_containers/unordered_multiset/cons/deduction.cc:
4829         Likewise.
4830         * testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
4831         Likewise.
4832         * testsuite/23_containers/unordered_multiset/modifiers/merge.cc:
4833         Likewise.
4834         * testsuite/23_containers/unordered_set/cons/deduction.cc:
4835         Likewise.
4836         * testsuite/23_containers/unordered_set/modifiers/extract.cc:
4837         Likewise.
4838         * testsuite/23_containers/unordered_set/modifiers/merge.cc:
4839         Likewise.
4840         * testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
4841         Likewise.
4842         * testsuite/23_containers/vector/cons/89164_c++17.cc: Likewise.
4843         * testsuite/23_containers/vector/cons/deduction.cc: Likewise.
4844         * testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
4845         Likewise.
4847 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
4849         * testsuite/21_strings/basic_string/79162.cc: Remove
4850         -std=gnu++17 from dg-options directive.
4851         * testsuite/21_strings/basic_string/cons/char/7.cc: Likewise.
4852         * testsuite/21_strings/basic_string/cons/char/79162.cc:
4853         Likewise.
4854         * testsuite/21_strings/basic_string/cons/char/86138.cc:
4855         Likewise.
4856         * testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
4857         * testsuite/21_strings/basic_string/cons/char/deduction.cc:
4858         Likewise.
4859         * testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc:
4860         Likewise.
4861         * testsuite/21_strings/basic_string/cons/wchar_t/7.cc: Likewise.
4862         * testsuite/21_strings/basic_string/cons/wchar_t/79162.cc:
4863         Likewise.
4864         * testsuite/21_strings/basic_string/cons/wchar_t/86138.cc:
4865         Likewise.
4866         * testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
4867         * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
4868         Likewise.
4869         * testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc:
4870         Likewise.
4871         * testsuite/21_strings/basic_string/hash/hash.cc: Likewise.
4872         * testsuite/21_strings/basic_string/lwg2758.cc: Likewise.
4873         * testsuite/21_strings/basic_string/lwg2946.cc: Likewise.
4874         * testsuite/21_strings/basic_string/modifiers/append/char/4.cc:
4875         Likewise.
4876         * testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc:
4877         Likewise.
4878         * testsuite/21_strings/basic_string/modifiers/assign/char/4.cc:
4879         Likewise.
4880         * testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc:
4881         Likewise.
4882         * testsuite/21_strings/basic_string/modifiers/insert/char/3.cc:
4883         Likewise.
4884         * testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc:
4885         Likewise.
4886         * testsuite/21_strings/basic_string/modifiers/replace/char/7.cc:
4887         Likewise.
4888         * testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc:
4889         Likewise.
4890         * testsuite/21_strings/basic_string/operations/compare/char/2.cc:
4891         Likewise.
4892         * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc:
4893         Likewise.
4894         * testsuite/21_strings/basic_string/operations/data/char/2.cc:
4895         Likewise.
4896         * testsuite/21_strings/basic_string/operations/data/char/86169.cc:
4897         Likewise.
4898         * testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc:
4899         Likewise.
4900         * testsuite/21_strings/basic_string/operations/find/char/5.cc:
4901         Likewise.
4902         * testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc:
4903         Likewise.
4904         * testsuite/21_strings/basic_string/operators/char/5.cc:
4905         Likewise.
4906         * testsuite/21_strings/basic_string/operators/wchar_t/5.cc:
4907         Likewise.
4908         * testsuite/21_strings/basic_string_view/capacity/1.cc:
4909         Likewise.
4910         * testsuite/21_strings/basic_string_view/capacity/empty_neg.cc:
4911         Likewise.
4912         * testsuite/21_strings/basic_string_view/cons/char/1.cc:
4913         Likewise.
4914         * testsuite/21_strings/basic_string_view/cons/char/2.cc:
4915         Likewise.
4916         * testsuite/21_strings/basic_string_view/cons/char/3.cc:
4917         Likewise.
4918         * testsuite/21_strings/basic_string_view/cons/char/nonnull.cc:
4919         Likewise.
4920         * testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc:
4921         Likewise.
4922         * testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc:
4923         Likewise.
4924         * testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc:
4925         Likewise.
4926         * testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc:
4927         Likewise.
4928         * testsuite/21_strings/basic_string_view/element_access/char/1.cc:
4929         Likewise.
4930         * testsuite/21_strings/basic_string_view/element_access/char/2.cc:
4931         Likewise.
4932         * testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc:
4933         Likewise.
4934         * testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc:
4935         Likewise.
4936         * testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc:
4937         Likewise.
4938         * testsuite/21_strings/basic_string_view/element_access/char/empty.cc:
4939         Likewise.
4940         * testsuite/21_strings/basic_string_view/element_access/char/front_back.cc:
4941         Likewise.
4942         * testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc:
4943         Likewise.
4944         * testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc:
4945         Likewise.
4946         * testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc:
4947         Likewise.
4948         * testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc:
4949         Likewise.
4950         * testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc:
4951         Likewise.
4952         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc:
4953         Likewise.
4954         * testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc:
4955         Likewise.
4956         * testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc:
4957         Likewise.
4958         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc:
4959         Likewise.
4960         * testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc:
4961         Likewise.
4962         * testsuite/21_strings/basic_string_view/include.cc: Likewise.
4963         * testsuite/21_strings/basic_string_view/inserters/94051.cc:
4964         Likewise.
4965         * testsuite/21_strings/basic_string_view/inserters/char/1.cc:
4966         Likewise.
4967         * testsuite/21_strings/basic_string_view/inserters/char/2.cc:
4968         Likewise.
4969         * testsuite/21_strings/basic_string_view/inserters/char/3.cc:
4970         Likewise.
4971         * testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc:
4972         Likewise.
4973         * testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc:
4974         Likewise.
4975         * testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc:
4976         Likewise.
4977         * testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc:
4978         Likewise.
4979         * testsuite/21_strings/basic_string_view/literals/types-char8_t.cc:
4980         Likewise.
4981         * testsuite/21_strings/basic_string_view/literals/types.cc:
4982         Likewise.
4983         * testsuite/21_strings/basic_string_view/literals/values-char8_t.cc:
4984         Likewise.
4985         * testsuite/21_strings/basic_string_view/literals/values.cc:
4986         Likewise.
4987         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc:
4988         Likewise.
4989         * testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc:
4990         Likewise.
4991         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc:
4992         Likewise.
4993         * testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc:
4994         Likewise.
4995         * testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
4996         Likewise.
4997         * testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
4998         Likewise.
4999         * testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
5000         Likewise.
5001         * testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc:
5002         Likewise.
5003         * testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
5004         Likewise.
5005         * testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
5006         Likewise.
5007         * testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc:
5008         Likewise.
5009         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc:
5010         Likewise.
5011         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc:
5012         Likewise.
5013         * testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
5014         Likewise.
5015         * testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
5016         Likewise.
5017         * testsuite/21_strings/basic_string_view/operations/copy/char/2.cc:
5018         Likewise.
5019         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
5020         Likewise.
5021         * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc:
5022         Likewise.
5023         * testsuite/21_strings/basic_string_view/operations/data/char/1.cc:
5024         Likewise.
5025         * testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc:
5026         Likewise.
5027         * testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
5028         Likewise.
5029         * testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
5030         Likewise.
5031         * testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
5032         Likewise.
5033         * testsuite/21_strings/basic_string_view/operations/find/char/4.cc:
5034         Likewise.
5035         * testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc:
5036         Likewise.
5037         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
5038         Likewise.
5039         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
5040         Likewise.
5041         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
5042         Likewise.
5043         * testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc:
5044         Likewise.
5045         * testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc:
5046         Likewise.
5047         * testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc:
5048         Likewise.
5049         * testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc:
5050         Likewise.
5051         * testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc:
5052         Likewise.
5053         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc:
5054         Likewise.
5055         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc:
5056         Likewise.
5057         * testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc:
5058         Likewise.
5059         * testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc:
5060         Likewise.
5061         * testsuite/21_strings/basic_string_view/operations/substr/char/1.cc:
5062         Likewise.
5063         * testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc:
5064         Likewise.
5065         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc:
5066         Likewise.
5067         * testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc:
5068         Likewise.
5069         * testsuite/21_strings/basic_string_view/operators/char/2.cc:
5070         Likewise.
5071         * testsuite/21_strings/basic_string_view/operators/char/89446.cc:
5072         Likewise.
5073         * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
5074         Likewise.
5075         * testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
5076         Likewise.
5077         * testsuite/21_strings/basic_string_view/range_access/char/1.cc:
5078         Likewise.
5079         * testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
5080         Likewise.
5081         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc:
5082         Likewise.
5083         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc:
5084         Likewise.
5085         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc:
5086         Likewise.
5087         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc:
5088         Likewise.
5089         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc:
5090         Likewise.
5091         * testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc:
5092         Likewise.
5093         * testsuite/21_strings/basic_string_view/requirements/traits_neg.cc:
5094         Likewise.
5095         * testsuite/21_strings/basic_string_view/requirements/typedefs.cc:
5096         Likewise.
5097         * testsuite/21_strings/basic_string_view/typedefs.cc: Likewise.
5098         * testsuite/21_strings/basic_string_view/types/1.cc: Likewise.
5099         * testsuite/21_strings/char_traits/requirements/char/99181.cc:
5100         Likewise.
5101         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
5103 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5105         * testsuite/20_util/memory_resource/1.cc: Remove -std=gnu++17
5106         from dg-options directive.
5107         * testsuite/20_util/memory_resource/2.cc: Likewise.
5108         * testsuite/20_util/monotonic_buffer_resource/1.cc: Likewise.
5109         * testsuite/20_util/monotonic_buffer_resource/93208.cc:
5110         Likewise.
5111         * testsuite/20_util/monotonic_buffer_resource/allocate.cc:
5112         Likewise.
5113         * testsuite/20_util/monotonic_buffer_resource/deallocate.cc:
5114         Likewise.
5115         * testsuite/20_util/monotonic_buffer_resource/release.cc:
5116         Likewise.
5117         * testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc:
5118         Likewise.
5119         * testsuite/20_util/polymorphic_allocator/1.cc: Likewise.
5120         * testsuite/20_util/polymorphic_allocator/construct_pair.cc:
5121         Likewise.
5122         * testsuite/20_util/polymorphic_allocator/resource.cc: Likewise.
5123         * testsuite/20_util/polymorphic_allocator/select.cc: Likewise.
5124         * testsuite/20_util/synchronized_pool_resource/allocate.cc:
5125         Likewise.
5126         * testsuite/20_util/synchronized_pool_resource/allocate_single.cc:
5127         Likewise.
5128         * testsuite/20_util/synchronized_pool_resource/cons.cc:
5129         Likewise.
5130         * testsuite/20_util/synchronized_pool_resource/cons_single.cc:
5131         Likewise.
5132         * testsuite/20_util/synchronized_pool_resource/is_equal.cc:
5133         Likewise.
5134         * testsuite/20_util/synchronized_pool_resource/multithreaded.cc:
5135         Likewise.
5136         * testsuite/20_util/synchronized_pool_resource/options.cc:
5137         Likewise.
5138         * testsuite/20_util/synchronized_pool_resource/release.cc:
5139         Likewise.
5140         * testsuite/20_util/synchronized_pool_resource/release_single.cc:
5141         Likewise.
5142         * testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
5143         Likewise.
5144         * testsuite/20_util/unsynchronized_pool_resource/allocate.cc:
5145         Likewise.
5146         * testsuite/20_util/unsynchronized_pool_resource/cons.cc:
5147         Likewise.
5148         * testsuite/20_util/unsynchronized_pool_resource/is_equal.cc:
5149         Likewise.
5150         * testsuite/20_util/unsynchronized_pool_resource/options.cc:
5151         Likewise.
5152         * testsuite/20_util/unsynchronized_pool_resource/release.cc:
5153         Likewise.
5154         * testsuite/21_strings/basic_string/types/pmr_typedefs.cc:
5155         Likewise.
5156         * testsuite/23_containers/deque/types/pmr_typedefs.cc: Likewise.
5157         * testsuite/23_containers/deque/types/pmr_typedefs_debug.cc:
5158         Likewise.
5159         * testsuite/23_containers/forward_list/pmr_typedefs.cc:
5160         Likewise.
5161         * testsuite/23_containers/forward_list/pmr_typedefs_debug.cc:
5162         Likewise.
5163         * testsuite/23_containers/list/pmr_typedefs.cc: Likewise.
5164         * testsuite/23_containers/list/pmr_typedefs_debug.cc: Likewise.
5165         * testsuite/23_containers/map/pmr_typedefs.cc: Likewise.
5166         * testsuite/23_containers/map/pmr_typedefs_debug.cc: Likewise.
5167         * testsuite/23_containers/multimap/pmr_typedefs.cc: Likewise.
5168         * testsuite/23_containers/multimap/pmr_typedefs_debug.cc:
5169         Likewise.
5170         * testsuite/23_containers/multiset/pmr_typedefs.cc: Likewise.
5171         * testsuite/23_containers/multiset/pmr_typedefs_debug.cc:
5172         Likewise.
5173         * testsuite/23_containers/set/pmr_typedefs.cc: Likewise.
5174         * testsuite/23_containers/set/pmr_typedefs_debug.cc: Likewise.
5175         * testsuite/23_containers/unordered_map/pmr_typedefs.cc:
5176         Likewise.
5177         * testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc:
5178         Likewise.
5179         * testsuite/23_containers/unordered_multimap/pmr_typedefs.cc:
5180         Likewise.
5181         * testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc:
5182         Likewise.
5183         * testsuite/23_containers/unordered_multiset/pmr_typedefs.cc:
5184         Likewise.
5185         * testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc:
5186         Likewise.
5187         * testsuite/23_containers/unordered_set/pmr_typedefs.cc:
5188         Likewise.
5189         * testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc:
5190         Likewise.
5191         * testsuite/23_containers/vector/pmr_typedefs.cc: Likewise.
5192         * testsuite/23_containers/vector/types/pmr_typedefs_debug.cc:
5193         Likewise.
5194         * testsuite/28_regex/match_results/pmr_typedefs.cc: Likewise.
5196 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5198         * testsuite/29_atomics/atomic/69769.cc: Remove -std=gnu++17 from
5199         dg-options.
5200         * testsuite/29_atomics/atomic/is_always_lock_free.cc:
5201         * testsuite/29_atomics/atomic/requirements/typedefs.cc:
5202         * testsuite/29_atomics/atomic_integral/is_always_lock_free.cc:
5203         * testsuite/29_atomics/atomic_integral/requirements/typedefs.cc:
5204         * testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
5205         * testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
5206         * testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
5207         * testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
5208         Likewise.
5209         * testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
5210         Likewise.
5211         * testsuite/30_threads/shared_lock/70766.cc: Likewise.
5212         * testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
5213         * testsuite/30_threads/shared_mutex/cons/assign_neg.cc:
5214         Likewise.
5215         * testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
5216         * testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
5217         Likewise.
5218         * testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
5219         * testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
5220         * testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
5221         * testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
5223 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5225         * testsuite/20_util/any/assign/1.cc: Remove -std=gnu++17 from
5226         dg-options directive.
5227         * testsuite/20_util/any/assign/2.cc: Likewise.
5228         * testsuite/20_util/any/assign/emplace.cc: Likewise.
5229         * testsuite/20_util/any/assign/exception.cc: Likewise.
5230         * testsuite/20_util/any/assign/self.cc: Likewise.
5231         * testsuite/20_util/any/cons/1.cc: Likewise.
5232         * testsuite/20_util/any/cons/2.cc: Likewise.
5233         * testsuite/20_util/any/cons/90415.cc: Likewise.
5234         * testsuite/20_util/any/cons/92156.cc: Likewise.
5235         * testsuite/20_util/any/cons/aligned.cc: Likewise.
5236         * testsuite/20_util/any/cons/explicit.cc: Likewise.
5237         * testsuite/20_util/any/cons/in_place.cc: Likewise.
5238         * testsuite/20_util/any/cons/nontrivial.cc: Likewise.
5239         * testsuite/20_util/any/make_any.cc: Likewise.
5240         * testsuite/20_util/any/misc/any_cast.cc: Likewise.
5241         * testsuite/20_util/any/misc/any_cast_neg.cc: Likewise.
5242         * testsuite/20_util/any/misc/any_cast_no_rtti.cc: Likewise.
5243         * testsuite/20_util/any/misc/swap.cc: Likewise.
5244         * testsuite/20_util/any/modifiers/1.cc: Likewise.
5245         * testsuite/20_util/any/modifiers/83658.cc: Likewise.
5246         * testsuite/20_util/any/modifiers/92156.cc: Likewise.
5247         * testsuite/20_util/any/observers/type.cc: Likewise.
5248         * testsuite/20_util/any/requirements.cc: Likewise.
5249         * testsuite/20_util/any/typedefs.cc: Likewise.
5250         * testsuite/20_util/optional/77288.cc: Likewise.
5251         * testsuite/20_util/optional/84601.cc: Likewise.
5252         * testsuite/20_util/optional/assignment/1.cc: Likewise.
5253         * testsuite/20_util/optional/assignment/2.cc: Likewise.
5254         * testsuite/20_util/optional/assignment/3.cc: Likewise.
5255         * testsuite/20_util/optional/assignment/4.cc: Likewise.
5256         * testsuite/20_util/optional/assignment/5.cc: Likewise.
5257         * testsuite/20_util/optional/assignment/6.cc: Likewise.
5258         * testsuite/20_util/optional/assignment/7.cc: Likewise.
5259         * testsuite/20_util/optional/assignment/8.cc: Likewise.
5260         * testsuite/20_util/optional/assignment/9.cc: Likewise.
5261         * testsuite/20_util/optional/bad_access.cc: Likewise.
5262         * testsuite/20_util/optional/cons/77727.cc: Likewise.
5263         * testsuite/20_util/optional/cons/85642.cc: Likewise.
5264         * testsuite/20_util/optional/cons/copy.cc: Likewise.
5265         * testsuite/20_util/optional/cons/deduction.cc: Likewise.
5266         * testsuite/20_util/optional/cons/default.cc: Likewise.
5267         * testsuite/20_util/optional/cons/move.cc: Likewise.
5268         * testsuite/20_util/optional/cons/trivial.cc: Likewise.
5269         * testsuite/20_util/optional/cons/value.cc: Likewise.
5270         * testsuite/20_util/optional/cons/value_neg.cc: Likewise.
5271         * testsuite/20_util/optional/constexpr/cons/default.cc:
5272         Likewise.
5273         * testsuite/20_util/optional/constexpr/cons/value.cc: Likewise.
5274         * testsuite/20_util/optional/constexpr/in_place.cc: Likewise.
5275         * testsuite/20_util/optional/constexpr/make_optional.cc:
5276         Likewise.
5277         * testsuite/20_util/optional/constexpr/nullopt.cc: Likewise.
5278         * testsuite/20_util/optional/constexpr/observers/1.cc: Likewise.
5279         * testsuite/20_util/optional/constexpr/observers/2.cc: Likewise.
5280         * testsuite/20_util/optional/constexpr/observers/3.cc: Likewise.
5281         * testsuite/20_util/optional/constexpr/observers/4.cc: Likewise.
5282         * testsuite/20_util/optional/constexpr/observers/5.cc: Likewise.
5283         * testsuite/20_util/optional/constexpr/relops/1.cc: Likewise.
5284         * testsuite/20_util/optional/constexpr/relops/2.cc: Likewise.
5285         * testsuite/20_util/optional/constexpr/relops/3.cc: Likewise.
5286         * testsuite/20_util/optional/constexpr/relops/4.cc: Likewise.
5287         * testsuite/20_util/optional/constexpr/relops/5.cc: Likewise.
5288         * testsuite/20_util/optional/constexpr/relops/6.cc: Likewise.
5289         * testsuite/20_util/optional/hash.cc: Likewise.
5290         * testsuite/20_util/optional/in_place.cc: Likewise.
5291         * testsuite/20_util/optional/make_optional.cc: Likewise.
5292         * testsuite/20_util/optional/nullopt.cc: Likewise.
5293         * testsuite/20_util/optional/observers/1.cc: Likewise.
5294         * testsuite/20_util/optional/observers/2.cc: Likewise.
5295         * testsuite/20_util/optional/observers/3.cc: Likewise.
5296         * testsuite/20_util/optional/observers/4.cc: Likewise.
5297         * testsuite/20_util/optional/observers/5.cc: Likewise.
5298         * testsuite/20_util/optional/observers/6.cc: Likewise.
5299         * testsuite/20_util/optional/relops/1.cc: Likewise.
5300         * testsuite/20_util/optional/relops/2.cc: Likewise.
5301         * testsuite/20_util/optional/relops/3.cc: Likewise.
5302         * testsuite/20_util/optional/relops/4.cc: Likewise.
5303         * testsuite/20_util/optional/relops/5.cc: Likewise.
5304         * testsuite/20_util/optional/relops/6.cc: Likewise.
5305         * testsuite/20_util/optional/relops/7.cc: Likewise.
5306         * testsuite/20_util/optional/requirements.cc: Likewise.
5307         * testsuite/20_util/optional/swap/1.cc: Likewise.
5308         * testsuite/20_util/optional/swap/2.cc: Likewise.
5309         * testsuite/20_util/optional/typedefs.cc: Likewise.
5310         * testsuite/20_util/variant/80165.cc: Likewise.
5311         * testsuite/20_util/variant/85183.cc: Likewise.
5312         * testsuite/20_util/variant/86874.cc: Likewise.
5313         * testsuite/20_util/variant/87431.cc: Likewise.
5314         * testsuite/20_util/variant/87619.cc: Likewise.
5315         * testsuite/20_util/variant/91807.cc: Likewise.
5316         * testsuite/20_util/variant/any.cc: Likewise.
5317         * testsuite/20_util/variant/compile.cc: Likewise.
5318         * testsuite/20_util/variant/deduction.cc: Likewise.
5319         * testsuite/20_util/variant/exception_safety.cc: Likewise.
5320         * testsuite/20_util/variant/hash.cc: Likewise.
5321         * testsuite/20_util/variant/index_type.cc: Likewise.
5322         * testsuite/20_util/variant/relops/89851.cc: Likewise.
5323         * testsuite/20_util/variant/relops/90008.cc: Likewise.
5324         * testsuite/20_util/variant/run.cc: Likewise.
5325         * testsuite/20_util/variant/visit.cc: Likewise.
5327 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5329         * testsuite/27_io/basic_filebuf/open/char/path.cc: Remove
5330         -std=gnu++17 from dg-options directive.
5331         * testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
5332         * testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
5333         * testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
5334         * testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
5335         * testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise.
5336         * testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise.
5337         * testsuite/27_io/filesystem/directory_entry/86597.cc: Likewise.
5338         * testsuite/27_io/filesystem/directory_entry/lwg3171.cc:
5339         Likewise.
5340         * testsuite/27_io/filesystem/file_status/1.cc: Likewise.
5341         * testsuite/27_io/filesystem/filesystem_error/cons.cc: Likewise.
5342         * testsuite/27_io/filesystem/filesystem_error/copy.cc: Likewise.
5343         * testsuite/27_io/filesystem/iterators/91067.cc: Likewise.
5344         * testsuite/27_io/filesystem/iterators/caching.cc: Likewise.
5345         * testsuite/27_io/filesystem/iterators/directory_iterator.cc:
5346         Likewise.
5347         * testsuite/27_io/filesystem/iterators/pop.cc: Likewise.
5348         * testsuite/27_io/filesystem/iterators/recursion_pending.cc:
5349         Likewise.
5350         * testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
5351         Likewise.
5352         * testsuite/27_io/filesystem/operations/absolute.cc: Likewise.
5353         * testsuite/27_io/filesystem/operations/all.cc: Likewise.
5354         * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
5355         * testsuite/27_io/filesystem/operations/copy.cc: Likewise.
5356         * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
5357         * testsuite/27_io/filesystem/operations/create_directories.cc:
5358         Likewise.
5359         * testsuite/27_io/filesystem/operations/create_directory.cc:
5360         Likewise.
5361         * testsuite/27_io/filesystem/operations/create_symlink.cc:
5362         Likewise.
5363         * testsuite/27_io/filesystem/operations/current_path.cc:
5364         Likewise.
5365         * testsuite/27_io/filesystem/operations/equivalent.cc: Likewise.
5366         * testsuite/27_io/filesystem/operations/exists.cc: Likewise.
5367         * testsuite/27_io/filesystem/operations/file_size.cc: Likewise.
5368         * testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
5369         * testsuite/27_io/filesystem/operations/last_write_time.cc:
5370         Likewise.
5371         * testsuite/27_io/filesystem/operations/permissions.cc:
5372         Likewise.
5373         * testsuite/27_io/filesystem/operations/proximate.cc: Likewise.
5374         * testsuite/27_io/filesystem/operations/read_symlink.cc:
5375         Likewise.
5376         * testsuite/27_io/filesystem/operations/relative.cc: Likewise.
5377         * testsuite/27_io/filesystem/operations/remove.cc: Likewise.
5378         * testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
5379         * testsuite/27_io/filesystem/operations/rename.cc: Likewise.
5380         * testsuite/27_io/filesystem/operations/resize_file.cc:
5381         Likewise.
5382         * testsuite/27_io/filesystem/operations/space.cc: Likewise.
5383         * testsuite/27_io/filesystem/operations/status.cc: Likewise.
5384         * testsuite/27_io/filesystem/operations/symlink_status.cc:
5385         Likewise.
5386         * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
5387         Likewise.
5388         * testsuite/27_io/filesystem/operations/weakly_canonical.cc:
5389         Likewise.
5390         * testsuite/27_io/filesystem/path/append/path.cc: Likewise.
5391         * testsuite/27_io/filesystem/path/append/source.cc: Likewise.
5392         * testsuite/27_io/filesystem/path/assign/assign.cc: Likewise.
5393         * testsuite/27_io/filesystem/path/assign/copy.cc: Likewise.
5394         * testsuite/27_io/filesystem/path/compare/compare.cc: Likewise.
5395         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
5396         * testsuite/27_io/filesystem/path/compare/path.cc: Likewise.
5397         * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.
5398         * testsuite/27_io/filesystem/path/concat/92853.cc: Likewise.
5399         * testsuite/27_io/filesystem/path/concat/94063.cc: Likewise.
5400         * testsuite/27_io/filesystem/path/concat/path.cc: Likewise.
5401         * testsuite/27_io/filesystem/path/concat/strings.cc: Likewise.
5402         * testsuite/27_io/filesystem/path/construct/80762.cc: Likewise.
5403         * testsuite/27_io/filesystem/path/construct/90281.cc: Likewise.
5404         * testsuite/27_io/filesystem/path/construct/90634.cc: Likewise.
5405         * testsuite/27_io/filesystem/path/construct/copy.cc: Likewise.
5406         * testsuite/27_io/filesystem/path/construct/default.cc:
5407         Likewise.
5408         * testsuite/27_io/filesystem/path/construct/format.cc: Likewise.
5409         * testsuite/27_io/filesystem/path/construct/locale.cc: Likewise.
5410         * testsuite/27_io/filesystem/path/construct/range.cc: Likewise.
5411         * testsuite/27_io/filesystem/path/construct/string_view.cc:
5412         Likewise.
5413         * testsuite/27_io/filesystem/path/decompose/extension.cc:
5414         Likewise.
5415         * testsuite/27_io/filesystem/path/decompose/filename.cc:
5416         Likewise.
5417         * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
5418         Likewise.
5419         * testsuite/27_io/filesystem/path/decompose/relative_path.cc:
5420         Likewise.
5421         * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
5422         Likewise.
5423         * testsuite/27_io/filesystem/path/decompose/root_name.cc:
5424         Likewise.
5425         * testsuite/27_io/filesystem/path/decompose/root_path.cc:
5426         Likewise.
5427         * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
5428         * testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc:
5429         Likewise.
5430         * testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise.
5431         * testsuite/27_io/filesystem/path/generation/normal.cc:
5432         Likewise.
5433         * testsuite/27_io/filesystem/path/generation/normal2.cc:
5434         Likewise.
5435         * testsuite/27_io/filesystem/path/generation/proximate.cc:
5436         Likewise.
5437         * testsuite/27_io/filesystem/path/generation/relative.cc:
5438         Likewise.
5439         * testsuite/27_io/filesystem/path/generic/94242.cc: Likewise.
5440         * testsuite/27_io/filesystem/path/generic/generic_string.cc:
5441         Likewise.
5442         * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise.
5443         * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise.
5444         * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
5445         * testsuite/27_io/filesystem/path/itr/components.cc: Likewise.
5446         * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
5447         * testsuite/27_io/filesystem/path/modifiers/clear.cc: Likewise.
5448         * testsuite/27_io/filesystem/path/modifiers/make_preferred.cc:
5449         Likewise.
5450         * testsuite/27_io/filesystem/path/modifiers/remove_filename.cc:
5451         Likewise.
5452         * testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
5453         Likewise.
5454         * testsuite/27_io/filesystem/path/modifiers/replace_filename.cc:
5455         Likewise.
5456         * testsuite/27_io/filesystem/path/modifiers/swap.cc: Likewise.
5457         * testsuite/27_io/filesystem/path/native/alloc.cc: Likewise.
5458         * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
5459         Likewise.
5460         * testsuite/27_io/filesystem/path/native/string.cc: Likewise.
5461         * testsuite/27_io/filesystem/path/nonmember/append.cc: Likewise.
5462         * testsuite/27_io/filesystem/path/nonmember/cmp.cc: Likewise.
5463         * testsuite/27_io/filesystem/path/nonmember/hash_value.cc:
5464         Likewise.
5465         * testsuite/27_io/filesystem/path/query/empty.cc: Likewise.
5466         * testsuite/27_io/filesystem/path/query/empty_neg.cc:
5467         * testsuite/27_io/filesystem/path/query/has_extension.cc:
5468         Likewise.
5469         * testsuite/27_io/filesystem/path/query/has_filename.cc:
5470         Likewise.
5471         * testsuite/27_io/filesystem/path/query/has_parent_path.cc:
5472         Likewise.
5473         * testsuite/27_io/filesystem/path/query/has_relative_path.cc:
5474         Likewise.
5475         * testsuite/27_io/filesystem/path/query/has_root_directory.cc:
5476         Likewise.
5477         * testsuite/27_io/filesystem/path/query/has_root_name.cc:
5478         Likewise.
5479         * testsuite/27_io/filesystem/path/query/has_root_path.cc:
5480         Likewise.
5481         * testsuite/27_io/filesystem/path/query/has_stem.cc: Likewise.
5482         * testsuite/27_io/filesystem/path/query/is_absolute.cc:
5483         Likewise.
5484         * testsuite/27_io/filesystem/path/query/is_relative.cc:
5485         Likewise.
5486         * testsuite/experimental/filesystem/path/construct/string_view.cc:
5487         Likewise.
5489 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5491         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc:
5492         Remove -std=gnu++17 from dg-options.
5493         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc:
5494         Likewise.
5495         * testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc:
5496         Likewise.
5497         * testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc:
5498         Likewise.
5499         * testsuite/25_algorithms/pstl/alg_merge/merge.cc: Likewise.
5500         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc:
5501         Likewise.
5502         * testsuite/25_algorithms/pstl/alg_modifying_operations/copy_move.cc:
5503         Likewise.
5504         * testsuite/25_algorithms/pstl/alg_modifying_operations/fill.cc:
5505         Likewise.
5506         * testsuite/25_algorithms/pstl/alg_modifying_operations/generate.cc:
5507         Likewise.
5508         * testsuite/25_algorithms/pstl/alg_modifying_operations/is_partitioned.cc:
5509         Likewise.
5510         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition.cc:
5511         Likewise.
5512         * testsuite/25_algorithms/pstl/alg_modifying_operations/partition_copy.cc:
5513         Likewise.
5514         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove.cc:
5515         Likewise.
5516         * testsuite/25_algorithms/pstl/alg_modifying_operations/remove_copy.cc:
5517         Likewise.
5518         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace.cc:
5519         Likewise.
5520         * testsuite/25_algorithms/pstl/alg_modifying_operations/replace_copy.cc:
5521         Likewise.
5522         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate.cc:
5523         Likewise.
5524         * testsuite/25_algorithms/pstl/alg_modifying_operations/rotate_copy.cc:
5525         Likewise.
5526         * testsuite/25_algorithms/pstl/alg_modifying_operations/swap_ranges.cc:
5527         Likewise.
5528         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_binary.cc:
5529         Likewise.
5530         * testsuite/25_algorithms/pstl/alg_modifying_operations/transform_unary.cc:
5531         Likewise.
5532         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique.cc:
5533         Likewise.
5534         * testsuite/25_algorithms/pstl/alg_modifying_operations/unique_copy_equal.cc:
5535         Likewise.
5536         * testsuite/25_algorithms/pstl/alg_nonmodifying/adjacent_find.cc:
5537         Likewise.
5538         * testsuite/25_algorithms/pstl/alg_nonmodifying/all_of.cc:
5539         Likewise.
5540         * testsuite/25_algorithms/pstl/alg_nonmodifying/any_of.cc:
5541         Likewise.
5542         * testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc:
5543         Likewise.
5544         * testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc:
5545         Likewise.
5546         * testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc:
5547         Likewise.
5548         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
5549         Likewise.
5550         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc:
5551         Likewise.
5552         * testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc:
5553         Likewise.
5554         * testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc:
5555         Likewise.
5556         * testsuite/25_algorithms/pstl/alg_nonmodifying/mismatch.cc:
5557         Likewise.
5558         * testsuite/25_algorithms/pstl/alg_nonmodifying/none_of.cc:
5559         Likewise.
5560         * testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc:
5561         Likewise.
5562         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc:
5563         Likewise.
5564         * testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc:
5565         Likewise.
5566         * testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
5567         Likewise.
5568         * testsuite/25_algorithms/pstl/alg_sorting/includes.cc:
5569         Likewise.
5570         * testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc: Likewise.
5571         * testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc:
5572         Likewise.
5573         * testsuite/25_algorithms/pstl/alg_sorting/lexicographical_compare.cc:
5574         Likewise.
5575         * testsuite/25_algorithms/pstl/alg_sorting/minmax_element.cc:
5576         Likewise.
5577         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort.cc:
5578         Likewise.
5579         * testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc:
5580         Likewise.
5581         * testsuite/25_algorithms/pstl/alg_sorting/set.cc: Likewise.
5582         * testsuite/25_algorithms/pstl/alg_sorting/sort.cc: Likewise.
5583         * testsuite/25_algorithms/pstl/feature_test-2.cc: Likewise.
5584         * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise.
5585         * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
5586         * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise.
5587         * testsuite/25_algorithms/pstl/feature_test.cc: Likewise.
5588         * testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc:
5589         Likewise.
5590         * testsuite/26_numerics/pstl/numeric_ops/reduce.cc: Likewise.
5591         * testsuite/26_numerics/pstl/numeric_ops/scan.cc: Likewise.
5592         * testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc:
5593         Likewise.
5594         * testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc:
5595         Likewise.
5597 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5599         * testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error
5600         for additional errors in C++20.
5601         * testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
5602         Likewise.
5603         * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
5604         * testsuite/27_io/filesystem/path/io/dr2989.cc: Likewise.
5606 2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
5608         * testsuite/20_util/variant/compile.cc: Rename 'any' to avoid
5609         clash with std::any.
5611 2021-05-07  Jonathan Wakely  <jwakely@redhat.com>
5613         * include/std/istream (__rvalue_stream_extraction_t): Replace
5614         use of __rval_streamable.
5615         * include/std/ostream (__rvalue_stream_insertion_t): Likewise.
5616         (__rval_streamable): Remove.
5617         (_Require_derived_from_ios_base, __derived_from_ios_base): New
5618         helper for checking constraints.
5619         * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Fix
5620         reference to the wrong subclause of the standard.
5621         * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc:
5622         Likewise.
5623         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
5624         Likewise.
5625         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
5626         Likewise.
5627         * testsuite/27_io/basic_ostream/inserters_other/char/99692.cc:
5628         New test.
5629         * testsuite/27_io/filesystem/path/io/dr2989.cc: Adjust pruned
5630         errors.
5632 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
5634         * include/bits/stl_algobase.h (__copy_move, __copy_move_backward):
5635         Improve static_assert messages.
5636         * testsuite/25_algorithms/copy/58982.cc: Adjust expected output.
5637         * testsuite/25_algorithms/copy_n/58982.cc: Likewise.
5639 2021-05-06  Patrick Palka  <ppalka@redhat.com>
5641         * include/std/ranges (filter_view::_Iterator::base): Make the
5642         const& overload unconstrained and return a const reference as
5643         per LWG 3533.  Make unconditionally noexcept.
5644         (transform_view::_Iterator::base): Likewise.
5645         (elements_view::_Iterator::base): Likewise.
5647 2021-05-06  Patrick Palka  <ppalka@redhat.com>
5649         * include/bits/stl_iterator.h (move_iterator::base): Make the
5650         const& overload unconstrained and return a const reference as
5651         per LWG 3391.  Make unconditionally noexcept.
5652         (counted_iterator::base): Likewise.
5653         * testsuite/24_iterators/move_iterator/lwg3391.cc: New test.
5654         * testsuite/24_iterators/move_iterator/move_only.cc: Adjust
5655         has_member_base concept to decay-copy the result of base().
5657 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
5659         * include/std/type_traits (remove_cvref_t): Define in terms of
5660         remove_cvref.
5661         * testsuite/20_util/remove_cvref/value.cc: Check alias.
5663 2021-05-06  Jonathan Wakely  <jwakely@redhat.com>
5665         Revert:
5666         2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
5668         * include/std/charconv (__from_chars_alnum): Pass unsigned
5669         char to std::isdigit.
5671 2021-05-05  Patrick Palka  <ppalka@redhat.com>
5673         * include/bits/ranges_util.h (enable_borrowed_range<subrange>):
5674         Remove constraints on this partial specialization.
5675         * include/std/ranges (enable_borrowed_range<iota_view>):
5676         Likewise.
5678 2021-05-05  Patrick Palka  <ppalka@redhat.com>
5680         * include/std/ranges (transform_view::_Iterator::iter_swap):
5681         Remove as per LWG 3520.
5682         (join_view::_Iterator::iter_swap): Add indirectly_swappable
5683         constraint as per LWG 3517.
5685 2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
5687         * testsuite/20_util/function_objects/invoke/3.cc: Check feature
5688         test macro.
5689         * testsuite/20_util/function_objects/invoke/version.cc: New test.
5691 2021-05-05  Jonathan Wakely  <jwakely@redhat.com>
5693         * include/std/charconv (__from_chars_alnum): Pass unsigned
5694         char to std::isdigit.
5696 2021-05-05  Corentin Gay  <gay@adacore.com>
5698         * acinclude.m4: Add VxWorks-specific case for the
5699         configuration of ctypes.
5700         * configure: Regenerate.
5701         * config/locale/vxworks/ctype_members.cc: Add VxWorks-specific
5702         version.
5703         * config/os/vxworks/ctype_base.h: Adjust for VxWorks7+.
5704         * config/os/vxworks/ctype_configure_char.cc: Likewise.
5705         * config/os/vxworks/ctype_inline.h: Likewise.
5706         * testsuite/28_regex/traits/char/isctype.cc: Defines
5707         NEWLINE_IN_CLASS_BLANK if the target is VxWorks.
5708         * testsuite/28_regex/traits/wchar_t/isctype.cc: Likewise.
5710 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5712         * include/std/future (promise::set_value): Check for existence
5713         of shared state before dereferncing it.
5714         (promise::set_exception, promise::set_value_at_thread_exit)
5715         (promise::set_exception_at_thread_exit): Likewise.
5716         (promise<R&>::set_value, promise<R&>::set_exception)
5717         (promise<R&>::set_value_at_thread_exit)
5718         (promise<R&>::set_exception_at_thread_exit): Likewise.
5719         (promise<void>::set_value, promise<void>::set_exception)
5720         (promise<void>::set_value_at_thread_exit)
5721         (promise<void>::set_exception_at_thread_exit): Likewise.
5722         * testsuite/30_threads/promise/members/at_thread_exit2.cc:
5723         Remove unused variable.
5725 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5727         * include/bits/basic_string.h (basic_string(const CharT*, const A&)):
5728         Do not do arithmetic on null pointer.
5730 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5732         * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
5733         (find_key_pointer(key_const_reference, false_type))
5734         (find_key_pointer(key_const_reference, true_type)): Do not
5735         dereference null pointer.
5737 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5739         * testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid
5740         overflow.
5741         * testsuite/24_iterators/reverse_iterator/2.cc: Do not add
5742         non-zero value to null pointer.
5743         * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
5744         Use past-the-end iterator for result.
5745         * testsuite/25_algorithms/move_backward/69478.cc: Likewise.
5746         * testsuite/25_algorithms/move_backward/93872.cc: Likewise.
5748 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5750         PR libstdc++/100384
5751         * include/std/variant (__get_t): New alias template yielding the
5752         return type of std::get<N> on a variant.
5753         (__visit_result_t): New alias template yielding the result of
5754         std::visit.
5755         (__same_types): Move into namespace __detail::__variant.
5756         (__check_visitor_results): Likewise. Use __invoke_result_t and
5757         __get_t.
5758         (__check_visitor_result): Remove.
5759         (visit): Use __visit_result_t for return type.
5760         * testsuite/20_util/variant/100384.cc: New test.
5762 2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
5764         * acinclude.m4 (GLIBCXX_ENABLE_INT128_FLOAT128): Remove
5765         checks for __int128 and rename to GLIBCXX_ENABLE_FLOAT128.
5766         * config.h.in: Regenerate.
5767         * configure: Regenerate.
5768         * configure.ac: Adjust to use GLIBCXX_ENABLE_FLOAT128.
5769         * include/bits/random.h (_Select_uint_least_t<s, 1>):
5770         Use __SIZEOF_INT128__ to decide whether to use __int128.
5771         * include/std/charconv (__to_chars_unsigned_type): Likewise.
5773 2021-05-03  Gerald Pfeifer  <gerald@pfeifer.com>
5775         * doc/xml/manual/ctype.xml: Move unix.org reference to https.
5776         * doc/html/manual/facets.html: Regenerate.
5778 2021-04-30  Patrick Palka  <ppalka@redhat.com>
5780         * include/std/ranges (__detail::__non_propating_cache): Define
5781         as per P2328.
5782         (join_view): Remove constraints on the value and reference types
5783         of the wrapped iterator type as per P2328.
5784         (join_view::_Iterator::_M_satisfy): Adjust as per P2328.
5785         (join_view::_Iterator::operator++): Likewise.
5786         (join_view::_M_inner): Use __non_propating_cache as per P2328.
5787         Remove now-redundant use of __maybe_present_t.
5788         * testsuite/std/ranges/adaptors/join.cc: Include <array>.
5789         (test10): New test.
5791 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5793         * include/bits/basic_string.h (__cpp_lib_constexpr_string):
5794         Only define for C++17 and later.
5795         * include/std/version (__cpp_lib_semaphore): Fix condition
5796         to match the one in <semaphore>.
5798 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5800         * acinclude.m4 (GLIBCXX_CHECK_INT64_T): Delete.
5801         * config.h.in: Regenerate.
5802         * configure: Regenerate.
5803         * configure.ac: Do not use GLIBCXX_CHECK_INT64_T.
5804         * include/bits/postypes.h: Remove include of <stdint.h> and
5805         definition/undefinition of the __STDC_LIMIT_MACROS and
5806         __STDC_CONSTANT_MACROS macros.
5807         (streamoff): Use __INT64_TYPE__ if defined.
5809 2021-04-30  Patrick Palka  <ppalka@redhat.com>
5811         * include/std/ranges (split_view::_InnerIter::operator++):
5812         Depend on _Base instead of _Vp directly, as per LWG 3532.
5814 2021-04-30  Patrick Palka  <ppalka@redhat.com>
5816         * include/bits/ranges_util.h (subrange::subrange): Avoid
5817         list-initialization in delegating constructor.
5818         * include/std/ranges (single_view): Replace implicit guide
5819         with explicit deduction guide that decays its argument.
5820         (_Single::operator()): Avoid CTAD when constructing the
5821         single_view object.
5822         (_Iota::operator()): Avoid list-initialization.
5823         (__detail::__can_filter_view, _Filter::operator()): Likewise.
5824         (__detail::__can_transform_view, _Transform::operator()): Likewise.
5825         (take_view::begin): Likewise.
5826         (__detail::__can_take_view, _Take::operator()): Likewise.
5827         (__detail::__can_take_while_view, _TakeWhile::operator()): Likewise.
5828         (__detail::__can_drop_view, _Drop::operator()): Likewise.
5829         (__detail::__can_drop_while_view, _DropWhile::operator()): Likewise.
5830         (split_view::split_view): Use views::single when initializing
5831         _M_pattern.
5832         (__detail::__can_split_view, _Split::operator()): Avoid
5833         list-initialization.
5834         (_Counted::operator()): Likewise.
5835         * testsuite/std/ranges/p2367.cc: New test.
5837 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5839         PR libstdc++/60497
5840         * include/bits/basic_ios.tcc (basic_ios::copyfmt): use
5841         std::addressof.
5842         * include/bits/basic_string.tcc (basic_string::swap)
5843         (basic_string::assign): Likewise.
5844         * include/bits/deque.tcc (deque::operator=(const deque&)):
5845         Likewise.
5846         * include/bits/stl_tree.h (_Rb_tree::operator=(const * _Rb_tree&)):
5847         Likewise.
5848         * include/bits/vector.tcc (vector::operator=(const vector&)):
5849         Likewise.
5851 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5853         * include/std/istream (operator>>(Istream&&, x&)): Simplify, as
5854         per LWG 1203.
5855         * include/std/ostream (operator<<(Ostream&&, const x&)):
5856         Likewise.
5857         * testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc:
5858         Adjust dg-error pattern.
5859         * testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc:
5860         Likewise.
5861         * testsuite/27_io/basic_istream/extractors_other/char/4.cc: Define
5862         is_extractable trait to replace std::__is_extractable. Make it
5863         work with rvalue streams as well as lvalues, to replace f() and
5864         g() helper functions.
5865         * testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc:
5866         Likewise.
5867         * testsuite/27_io/basic_ostream/inserters_other/char/6.cc:
5868         Define is_insertable trait to replace std::__is_insertable. Make
5869         it work with rvalue streams as well as lvalues, to replace f()
5870         and g() helper functions.
5871         * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc:
5872         Likewise.
5873         * testsuite/27_io/filesystem/path/io/dr2989.cc: Prune additional
5874         errors from new constraints.
5875         * testsuite/27_io/rvalue_streams-2.cc: Remove PR 80675 checks,
5876         which are no longer expected to compile.
5877         * testsuite/27_io/rvalue_streams.cc: Adjust existing test.
5878         Verify LWG 1203 changes.
5880 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5882         PR libstdc++/100285
5883         * include/experimental/socket (__basic_socket_impl::set_option)
5884         (__basic_socket_impl::get_option) [!_GLIBCXX_HAVE_SYS_SOCKET_H]:
5885         Just set error code.
5886         * testsuite/experimental/net/socket/socket_base.cc: CHeck
5887         for <sys/socket.h> not <socket.h>.
5889 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
5891         PR libstdc++/100180
5892         PR libstdc++/100286
5893         PR libstdc++/100351
5894         * testsuite/experimental/net/internet/address/v4/comparisons.cc:
5895         Use new effective-target keyword.
5896         * testsuite/experimental/net/internet/address/v4/cons.cc:
5897         Likewise.
5898         * testsuite/experimental/net/internet/address/v4/creation.cc:
5899         Likewise.
5900         * testsuite/experimental/net/internet/address/v4/members.cc:
5901         Likewise.
5902         * testsuite/experimental/net/internet/address/v6/members.cc:
5903         Likewise.
5904         * testsuite/experimental/net/internet/resolver/base.cc:
5905         Likewise.
5906         * testsuite/experimental/net/internet/resolver/ops/lookup.cc:
5907         Likewise.
5908         * testsuite/experimental/net/internet/resolver/ops/reverse.cc:
5909         Likewise.
5910         * testsuite/experimental/net/internet/socket/opt.cc:
5911         Likewise.
5912         * testsuite/experimental/net/internet/tcp.cc:
5913         Likewise.
5914         * testsuite/experimental/net/internet/udp.cc:
5915         Likewise.
5916         * testsuite/lib/libstdc++.exp (check_effective_target_net_ts_ip):
5917         New proc to check net_ts_ip et.
5919 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5921         PR libstdc++/97930
5922         * testsuite/20_util/pair/requirements/structural.cc: New test.
5924 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5926         * include/bits/stl_pair.h (pair) [__cplusplus > 202002]: Add
5927         new definitions for constructors and assignment operators using
5928         concepts for constraints.
5929         * testsuite/20_util/pair/cons/99957.cc: Disable for C++20 and
5930         later.
5931         * testsuite/20_util/pair/cons/explicit_construct.cc: Adjust
5932         expected error messages to also match C++20 errors.
5934 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5936         PR libstdc++/99957
5937         * include/bits/stl_pair.h (_PCC::_MoveCopyPair, _PCC::_CopyMovePair):
5938         Combine and replace with ...
5939         (_PCC::_DeprConsPair): New SFINAE helper function.
5940         (pair): Merge preprocessor blocks so that all C++03 members
5941         are defined together at the end.
5942         (pair::pair(const _T1&, _U2&&), pair::pair(_U1&&, const _T2&)):
5943         Replace _T1 and _T2 parameters with __null_ptr_constant and
5944         adjust constraints.
5945         * testsuite/20_util/pair/40925.cc: Use nullptr instead of 0.
5946         * testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
5947         * testsuite/20_util/pair/cons/99957.cc: New test.
5949 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5951         * include/bits/basic_string.h (__cpp_lib_constexpr_string): Define.
5952         * include/std/version (__cpp_lib_constexpr_string): Define.
5953         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
5954         Check for __cpp_lib_constexpr_string.
5955         * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
5956         Likewise.
5957         * testsuite/21_strings/char_traits/requirements/version.cc: New test.
5959 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5961         * doc/Makefile.am (stamp-pdf-doxygen): Improve comment about
5962         dealing with errors. Use '@' to prevent shell command being
5963         echoed.
5964         * doc/Makefile.in: Regenerate.
5966 2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
5968         PR libstdc++/100298
5969         * include/bits/std_thread.h (thread::hardware_concurrency): Add
5970         missing noexcept to inline definition for non-gthreads targets.
5972 2021-04-28  Patrick Palka  <ppalka@redhat.com>
5974         PR libstdc++/100187
5975         PR libstdc++/100237
5976         PR libstdc++/100249
5977         PR libstdc++/100287
5978         * include/bits/ranges_algo.h (__search_n_fn::operator()): Give
5979         the __value_comp lambda an explicit bool return type.
5980         (__is_permutation_fn::operator()): Give the __proj_scan local
5981         variable auto&& return type.  Give the __comp_scan lambda an
5982         explicit bool return type.
5983         (__remove_fn::operator()): Give the __pred lambda an explicit
5984         bool return type.
5985         (__partition_fn::operator()): Don't std::move __first twice
5986         when returning an empty subrange.
5987         (__min_fn::operator()): Don't std::move __comp.
5988         (__max_fn::operator()): Likewise.
5989         (__minmax_fn::operator()): Likewise.
5991 2021-04-27  Patrick Palka  <ppalka@redhat.com>
5993         PR libstdc++/100290
5994         * include/std/ranges (join_view::_Iterator::operator++): Correct
5995         the return type of the lambda to avoid returning a copy of
5996         _M_parent->_M_inner.
5997         * testsuite/std/ranges/adaptors/join.cc (test10): New test.
5999 2021-04-27  Jakub Jelinek  <jakub@redhat.com>
6001         Revert:
6002         2021-04-22  Jakub Jelinek  <jakub@redhat.com>
6004         PR target/100182
6005         * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
6006         ia32.
6007         * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
6008         ia32.
6010 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6012         * include/experimental/internet (address_v6::bytes_type): Adjust
6013         formatting.
6014         (basic_endpoint): Define _M_is_v6() to put all checks for
6015         AF_INET6 in one place.
6016         (basic_endpoint::resize): Simplify.
6017         (operator==(const tcp&, const tcp&)): Add constexpr and noexcept.
6018         (operator!=(const tcp&, const tcp&)): Likewise.
6019         (operator==(const udp&, const udp&)): Likewise.
6020         (operator!=(const udp&, const udp&)): Likewise.
6021         * testsuite/experimental/net/internet/tcp.cc: New test.
6022         * testsuite/experimental/net/internet/udp.cc: New test.
6024 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6026         PR libstdc++/100286
6027         * include/experimental/internet (resolver_errc, resolver_category())
6028         (make_error_code, make_error_condition): Define unconditionally,
6029         only make enumerators and use of gai_strerror depend on the
6030         availability of <netdb.h>.
6031         (address_v4::to_string): Use correct constant for string length.
6032         (address_v4::to_string, address_v6::to_string): Define
6033         unconditionally, throw if unsupported.
6034         (make_address_v4, make_address_v6): Define unconditionally.
6035         Return an error if unsupported.
6036         (tcp, udp, v6_only, unicast::hops, multicast::*): Define
6037         conditionally,
6038         * testsuite/experimental/net/internet/socket/opt.cc: Check for
6039         <netinet/in.h> and <netinet/tcp.h> before using types from
6040         namespace net::ip.
6042 2021-04-27  Jonathan Wakely  <jwakely@redhat.com>
6044         PR libstdc++/100285
6045         * include/experimental/internet (resolver_base::flags):
6046         Define overloaded operators as hidden friends.
6047         * include/experimental/socket (socket_base::message_flags):
6048         Likewise.
6050 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6052         * include/experimental/internet (tcp::no_delay, v6_only)
6053         (unicast::hops, multicast::hops, multicast::enable_loopback):
6054         Change access of base class and static data members. Add
6055         using-declaration for __socket_crtp::operator=(_Tp).
6056         (multicast::__mcastopt): New type.
6057         (multicast::join_group, multicast::leave_group): Derive from
6058         __mcastopt for common implementation.
6059         * include/experimental/socket: Add comment.
6060         * testsuite/experimental/net/internet/socket/opt.cc: New test.
6061         * testsuite/experimental/net/socket/socket_base.cc: Check for
6062         protected constructor/destructor of socket_base. Check for
6063         explicit constructors of socket option classes.
6065 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6067         * include/experimental/bits/net.h (__socket_base): Add
6068         bool template parameter to allow BooleanSocketOption and
6069         IntegerSocketOption to have different __socket_base<int>
6070         base classes.
6071         (__socket_base<bool>): Adjust base class.
6072         (__socket_base<int>): Add partial specialization.
6073         (__socket_crtp::operator=(_Tp)): Add noexcept-specifier.
6074         * include/experimental/socket (socket_base::broadcast)
6075         (socket_base::debug, socket_base::do_not_route)
6076         (socket_base::keep_alive, socket_base::linger)
6077         (socket_base::out_of_band_inline)
6078         (socket_base::receive_buffer_size)
6079         (socket_base::receive_low_watermark)
6080         (socket_base::reuse_address, socket_base::send_buffer_size)
6081         (socket_base::send_low_watermark): Add using-declaration for
6082         __socket_crtp::operator=(_Tp).
6083         * testsuite/experimental/net/socket/socket_base.cc: Check
6084         properties of socket option types.
6086 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6088         * include/experimental/internet (resolver_base::flags): Remove
6089         enumerators. Initialize constants directly with desired values.
6090         Make all operators constexpr and noexcept.
6091         * testsuite/experimental/net/internet/resolver/base.cc: Use
6092         __gnu_test::test_bitmask_values for bitmask type. Check
6093         construction and destruction is protected.
6095 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6097         * include/bits/semaphore_base.h: Include <exception> and <errno.h>.
6099 2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
6101         PR libstdc++/100259
6102         * include/experimental/internet (net::ip::make_error_code)
6103         (net::ip::make_error_condition, net::ip::make_network_v4)
6104         (net::ip::operator==(const udp&, const udp&)): Add 'inline'.
6106 2021-04-24  David Edelsohn  <dje.gcc@gmail.com>
6108         * testsuite/lib/dg-options.exp (atomic_link_flags): New.
6109         (add_options_for_libatomic): Use atomic_link_flags.
6111 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
6113         PR libstdc++/100180
6114         * include/experimental/io_context (io_context): Define
6115         dummy_pollfd type so that most member functions still compile
6116         without <poll.h> and struct pollfd.
6118 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
6120         * include/experimental/io_context (io_context::async_wait): Add
6121         comment.
6122         * include/experimental/socket (basic_socket::async_connect):
6123         Cast wait_type constant to int.
6124         (basic_datagram_socket::async_receive): Likewise.
6125         (basic_datagram_socket::async_receive_from): Likewise.
6126         (basic_datagram_socket::async_send): Likewise.
6127         (basic_datagram_socket::async_send_to): Likewise.
6128         (basic_stream_socket::async_receive): Likewise.
6129         (basic_stream_socket::async_send): Likewise. Use io_context
6130         parameter directly, instead of via an executor.
6131         (basic_socket_acceptor::async_accept): Likewise.
6133 2021-04-23  Jonathan Wakely  <jwakely@redhat.com>
6135         * include/experimental/socket (socket_base::shutdown_type):
6136         (socket_base::wait_type, socket_base::message_flags):
6137         Remove enumerators. Initialize constants directly with desired
6138         values.
6139         (socket_base::message_flags): Make all operators constexpr and
6140         noexcept.
6141         * testsuite/util/testsuite_common_types.h (test_bitmask_values):
6142         New test utility.
6143         * testsuite/experimental/net/socket/socket_base.cc: New test.
6145 2021-04-22  David Edelsohn  <dje.gcc@gmail.com>
6147         * config/os/aix/atomicity.h: Delete.
6149 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
6151         * include/bits/atomic_timed_wait.h (__cond_wait_until_impl):
6152         Handle system_clock as well as steady_clock.
6153         * testsuite/30_threads/semaphore/try_acquire_for.cc: Re-enable.
6154         * testsuite/30_threads/semaphore/try_acquire_until.cc:
6155         Re-enable.
6157 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
6159         * testsuite/30_threads/semaphore/try_acquire_posix.cc: Add
6160         options for libatomic.
6162 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
6164         * config/os/gnu-linux/os_defines.h: Fix type in comment.
6166 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
6168         PR libstdc++/99006
6169         * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
6170         is not an array type.
6171         * include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
6172         * testsuite/20_util/shared_ptr/creation/99006.cc: New test.
6174 2021-04-22  Thomas Rodgers  <rodgert@twrodgers.com>
6176         * include/bits/atomic_wait.h: Always notify waiters in the
6177         case of 'bare' address notification.
6179 2021-04-22  Jakub Jelinek  <jakub@redhat.com>
6181         PR target/100182
6182         * testsuite/29_atomics/atomic_float/1.cc: Add dg-xfail-run-if for
6183         ia32.
6184         * testsuite/29_atomics/atomic_float/wait_notify.cc: Add dg-skip-if for
6185         ia32.
6187 2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
6189         PR libstdc++/100179
6190         * include/bits/semaphore_base.h: Remove #error.
6191         * include/std/semaphore: Do not define anything unless one of
6192         the implementations is available.
6194 2021-04-21  Thomas Rodgers  <rodgert@twrodgers.com>
6196         * include/bits/semaphore_base.h: Always reload __old in
6197         __atomic_semaphore::_S_do_try_acquire().
6198         * testsuite/30_threads/stop_token/stop_callback/destroy.cc:
6199         re-enable testcase.
6201 2021-04-21  Philippe Blain  <levraiphilippeblain@gmail.com>
6202             Jonathan Wakely  <jwakely@redhat.com>
6204         PR libstdc++/99453
6205         * python/Makefile.am: Install libstdc++*-gdb.py more robustly.
6206         * python/Makefile.in: Regenerate.
6208 2021-04-21  Thomas Rodgers  <rodgert@twrodgers.com>
6210         * include/bits/semaphore_base.h: Add missing _M_try_acquire()
6211         member to __platform_wait.
6213 2021-04-21  Jonathan Wakely  <jwakely@redhat.com>
6215         * include/std/latch: Replace tab characters in license text.
6216         * include/std/semaphore: Likewise.
6218 2021-04-21  Jakub Jelinek  <jakub@redhat.com>
6220         PR libstdc++/100164
6221         * acinclude.m4: For POSIX semaphores AC_DEFINE HAVE_POSIX_SEMAPHORE
6222         rather than _GLIBCXX_HAVE_POSIX_SEMAPHORE.
6223         * configure: Regenerated.
6224         * config.h.in: Regenerated.
6226 2021-04-20  Jonathan Wakely  <jwakely@redhat.com>
6228         * testsuite/30_threads/semaphore/try_acquire_for.cc: Disable
6229         test for targets not using futexes for semaphores.
6230         * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
6231         * testsuite/30_threads/stop_token/stop_callback/destroy.cc:
6232         Disable for all targets.
6234 2021-04-20  Thomas Rodgers  <trodgers@redhat.com>
6236         * include/Makefile.am: Add new <bits/this_thread_sleep.h> header.
6237         * include/Makefile.in: Regenerate.
6238         * include/bits/this_thread_sleep.h: New file.
6239         * include/bits/atomic_base.h: Adjust all calls
6240         to __atomic_wait/__atomic_notify for new call signatures.
6241         * include/bits/atomic_timed_wait.h: Extensive rewrite.
6242         * include/bits/atomic_wait.h: Likewise.
6243         * include/bits/semaphore_base.h: Adjust all calls
6244         to __atomic_wait/__atomic_notify for new call signatures.
6245         * include/std/atomic: Likewise.
6246         * include/std/barrier: Likewise.
6247         * include/std/latch: Likewise.
6248         * include/std/semaphore: Likewise.
6249         * include/std/thread (this_thread::sleep_for)
6250         (this_thread::sleep_until): Move to new header.
6251         * testsuite/29_atomics/atomic/wait_notify/bool.cc: Simplify
6252         test.
6253         * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
6254         * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
6255         * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
6256         * testsuite/29_atomics/atomic_float/wait_notify.cc: Likewise.
6257         * testsuite/29_atomics/atomic_integral/wait_notify.cc: Likewise.
6258         * testsuite/29_atomics/atomic_ref/wait_notify.cc: Likewise.
6260 2021-04-20  Patrick Palka  <ppalka@redhat.com>
6262         PR libstdc++/95983
6263         * include/bits/stl_iterator.h (__detail::__move_iter_cat):
6264         Define.
6265         (move_iterator): Derive from the above in C++20 in order to
6266         conditionally define iterator_category as per P2259.
6267         (move_iterator::__base_cat): No longer used, so remove.
6268         (move_iterator::iterator_category): Remove in C++20.
6269         (__detail::__common_iter_use_postfix_proxy): Define.
6270         (common_iterator::_Proxy): Rename to ...
6271         (common_iterator:__arrow_proxy): ... this.
6272         (common_iterator::__postfix_proxy): Define as per P2259.
6273         (common_iterator::operator->): Adjust.
6274         (common_iterator::operator++): Adjust as per P2259.
6275         (iterator_traits<common_iterator>::_S_iter_cat): Define.
6276         (iterator_traits<common_iterator>::iterator_category): Change as
6277         per P2259.
6278         (__detail::__counted_iter_value_type): Define.
6279         (__detail::__counted_iter_concept): Define.
6280         (__detail::__counted_iter_cat): Define.
6281         (counted_iterator): Derive from the above three classes in order
6282         to conditionally define value_type, iterator_concept and
6283         iterator category respectively as per P2259.
6284         (counted_iterator::operator->): Define as per P2259.
6285         (incrementable_traits<counted_iterator>): Remove as per P2259.
6286         (iterator_traits<counted_iterator>): Adjust as per P2259.
6287         * include/std/ranges (__detail::__iota_view_iter_cat): Define.
6288         (iota_view::_Iterator): Derive from the above in order to
6289         conditionally define iterator_category as per P2259.
6290         (iota_view::_S_iter_cat): Rename to ...
6291         (iota_view::_S_iter_concept): ... this.
6292         (iota_view::iterator_concept): Use it to apply LWG 3291 changes.
6293         (iota_view::iterator_category): Remove.
6294         (__detail::__filter_view_iter_cat): Define.
6295         (filter_view::_Iterator): Derive from the above in order to
6296         conditionally define iterator_category as per P2259.
6297         (filter_view::_Iterator): Move to struct __filter_view_iter_cat.
6298         (filter_view::_Iterator::iterator_category): Remove.
6299         (transform_view::_Base): Define.
6300         (transform_view::__iter_cat): Define.
6301         (transform_view::_Iterator): Derive from the above in order to
6302         conditionally define iterator_category as per P2259.
6303         (transform_view::_Iterator::_Base): Just alias
6304         transform_view::_Base.
6305         (transform_view::_Iterator::_S_iter_cat): Move to struct
6306         transform_view::__iter_cat.
6307         (transform_view::_Iterator::iterator_category): Remove.
6308         (transform_view::_Sentinel::_Base): Just alias
6309         transform_view::_Base.
6310         (join_view::_Base): Define.
6311         (join_view::_Outer_iter): Define.
6312         (join_view::_Inner_iter): Define.
6313         (join_view::_S_ref_is_glvalue): Define.
6314         (join_view::__iter_cat): Define.
6315         (join_view::_Iterator): Derive from it in order to conditionally
6316         define iterator_category as per P2259.
6317         (join_view::_Iterator::_Base): Just alias join_view::_Base.
6318         (join_view::_Iterator::_S_ref_is_glvalue): Just alias
6319         join_view::_S_ref_is_glvalue.
6320         (join_view::_Iterator::_S_iter_cat): Move to struct
6321         transform_view::__iter_cat.
6322         (join_view::_Iterator::_Outer_iter): Just alias
6323         join_view::_Outer_iter.
6324         (join_view::_Iterator::_Inner_iter): Just alias
6325         join_view::_Inner_iter.
6326         (join_view::_Iterator::iterator_category): Remove.
6327         (join_view::_Sentinel::_Base): Just alias join_view::_Base.
6328         (__detail::__split_view_outer_iter_cat): Define.
6329         (__detail::__split_view_inner_iter_cat): Define.
6330         (split_view::_Base): Define.
6331         (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat
6332         in order to conditionally define iterator_category as per P2259.
6333         (split_view::_Outer_iter::iterator_category): Remove.
6334         (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat
6335         in order to conditionally define iterator_category as per P2259.
6336         (split_view::_Inner_iter::_S_iter_cat): Move to
6337         __split_view_inner_iter_cat.
6338         (split_view::_Inner_iter::iterator_category): Remove.
6339         (elements_view::_Base): Define.
6340         (elements_view::__iter_cat): Define.
6341         (elements_view::_Iterator): Derive from the above in order to
6342         conditionall define iterator_category as per P2259.
6343         (elements_view::_Iterator::_Base): Just alias
6344         elements_view::_Base.
6345         (elements_view::_Iterator::_S_iter_concept)
6346         (elements_view::_Iterator::iterator_concept): Define as per
6347         P2259.
6348         (elements_view::_Iterator::iterator_category): Remove.
6349         (elements_view::_Sentinel::_Base): Just alias
6350         elements_view::_Base.
6351         * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
6352         Adjust constraints on iterator_traits<counted_iterator>.
6353         * testsuite/std/ranges/p2259.cc: New test.
6355 2021-04-20  Jonathan Wakely  <jwakely@redhat.com>
6357         PR libstdc++/100146
6358         * include/std/charconv (__cpp_lib_to_chars): Define
6359         conditionally.
6360         * include/std/version (__cpp_lib_to_chars): Likewise..
6361         * testsuite/20_util/from_chars/4.cc: Only check feature test
6362         macro, not _GLIBCXX_HAVE_USELOCALE.
6363         * testsuite/20_util/from_chars/5.cc: Likewise.
6364         * testsuite/20_util/from_chars/6.cc: Likewise.
6365         * testsuite/20_util/to_chars/long_double.cc: Likewise.
6367 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
6369         * testsuite/util/testsuite_abi.cc (compare_symbols): If any symbol
6370         versions with _IEEE128_ substring are found, set ieee_version_found
6371         to true.  Ignore missing symbols with _IEEE128_ in version name if
6372         !ieee_version_found.  Use i->first as version_name instead of
6373         i->second.version_name if the latter is empty.
6374         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
6376 2021-04-19  H.J. Lu  <hjl.tools@gmail.com>
6378         * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt:
6379         Updated.
6381 2021-04-17  Jakub Jelinek  <jakub@redhat.com>
6383         * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
6384         * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
6386 2021-04-17  Jakub Jelinek  <jakub@redhat.com>
6388         * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update.
6389         * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
6390         * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
6391         * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
6392         * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.
6393         * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update.
6395 2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
6397         * testsuite/lib/dg-options.exp (add_options_for_libatomic): Also
6398         add libatomic options for 32-bit sparc*-*-linux-gnu.
6400 2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
6402         PR libstdc++/96657
6403         * libsupc++/Makefile.am: Add atomicity.cc here.
6404         * src/c++98/Makefile.am: Remove it from here.
6405         * libsupc++/Makefile.in: Regenerate.
6406         * src/c++98/Makefile.in: Regenerate.
6407         * testsuite/18_support/exception_ptr/96657.cc: New test.
6409 2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
6411         PR libstdc++/100060
6412         * include/std/bit: Only include <ext/numeric_traits.h> for
6413         hosted build, use <limits> otherwise.
6415 2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
6417         * doc/xml/manual/backwards_compatibility.xml: Remove porting
6418         notes for libg++ and libstdc++-v2, and bibliography.
6419         * doc/html/*: Regenerated.
6421 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
6423         PR libstdc++/100044
6424         * include/bits/ranges_util.h (__detail::__iterator_sentinel_pair):
6425         Remove helper concept.
6426         (subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove
6427         deduction guides, as per LWG 3404.
6428         * testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class
6429         template argument deduction fails.
6431 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
6433         * testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc:
6434         Adjust expected error for C++20 mode.
6435         * testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc:
6436         Likewise.
6438 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
6440         PR libstdc++/99995
6441         * testsuite/17_intro/headers/c++1998/49745.cc: Include all
6442         standard headers and XFAIL for effective-target c++20.
6444 2021-04-09  François Dumont  <fdumont@gcc.gnu.org>
6446         PR libstdc++/99402
6447         * include/debug/helper_functions.h (__can_advance(_InputIterator,
6448         const std::pair<_Diff, _Distance_precision>&, int)): New.
6449         (__can_advance(const _Safe_iterator<>&,
6450         const std::pair<_Diff, _Distance_precision>&, int)): New.
6451         * include/debug/macros.h (__glibcxx_check_can_increment_dist): New,
6452         use latter.
6453         (__glibcxx_check_can_increment_range): Adapt to use latter.
6454         (__glibcxx_check_can_decrement_range): Likewise.
6455         * include/debug/safe_iterator.h
6456         (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
6457         int)): New.
6458         (__can_advance(const _Safe_iterator<>&,
6459         const std::pair<_Diff, _Distance_precision>&, int)): New.
6460         * include/debug/safe_iterator.tcc
6461         (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
6462         int)): New.
6463         (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
6464         std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
6465         __dp_sign_max_size.
6466         (__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist.
6467         (__copy_move_backward_a): Likewise.
6468         (__equal_aux): Likewise.
6469         * include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&,
6470         const std::pair<_Diff, _Distance_precision>&, int)): New.
6471         (__can_advance(const std::move_iterator<>&,
6472         const std::pair<_Diff, _Distance_precision>&, int)): New.
6473         * testsuite/25_algorithms/copy/debug/99402.cc: New test.
6475 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
6477         PR libstdc++/99985
6478         * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix
6479         to be a valid constexpr function in C++11.
6480         * testsuite/23_containers/unordered_set/cons/99985.cc: New test.
6482 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
6484         * include/bits/fs_fwd.h: Fix doxygen group command.
6485         * include/bits/streambuf_iterator.h: Likewise.
6486         * include/bits/uses_allocator_args.h: Likewise.
6487         * include/std/memory: Likewise.
6488         * include/tr1/complex: Likewise.
6490 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6492         * include/bits/basic_string.h: Tweak doxygen comment.
6494 2021-04-08  Patrick Palka  <ppalka@redhat.com>
6496         * include/std/ranges (__detail::find): Define.
6497         (split_view::_OuterIter::operator++): Apply proposed resolution
6498         of LWG 3505.
6499         * testsuite/std/ranges/adaptors/split.cc (test10): New test.
6501 2021-04-08  Patrick Palka  <ppalka@redhat.com>
6503         * include/std/ranges (__detail::find_if): Simplify.
6504         (__detail::find_if_not): Likewise.
6505         (__detail::min): Remove.
6506         (__detail::mismatch): Simplify.
6507         (take_view::size): Use std::min instead of __detail::min.
6509 2021-04-08  Patrick Palka  <ppalka@redhat.com>
6511         * include/std/ranges (__detail::__returnable_element): New
6512         concept.
6513         (elements_view): Use this concept in its constraints.  Add
6514         missing private access specifier.
6515         (elements_view::_S_get_element): Define as per LWG 3502.
6516         (elements_view::operator*, elements_view::operator[]): Use
6517         _S_get_element.
6518         (elements_view::operator++): Remove unnecessary constraint
6519         as per LWG 3492.
6520         * testsuite/std/ranges/adaptors/elements.cc (test05): New test.
6522 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6524         * doc/Makefile.am (stamp-pdf-doxygen): Also grep for
6525         out-of-memory error in log file.
6526         * doc/Makefile.in: Regenerate.
6528 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6530         * configure: Regenerate.
6532 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6534         * include/bits/random.h: Fix doxygen group commands.
6535         * include/bits/regex_constants.h: Likewise.
6536         * include/tr1/random.h: Likewise.
6538 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6540         * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()):
6541         New function to determine noexcept-specifier for move
6542         constructors.
6543         (_Hashtable): Use _S_nothrow_move() on move constructors.
6544         * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
6545         Correct static assertion message.
6546         * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
6547         Likewise.
6548         * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
6549         Likewise.
6550         * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
6551         Likewise.
6553 2021-04-08  Patrick Palka  <ppalka@redhat.com>
6555         PR libstdc++/98384
6556         * testsuite/20_util/to_chars/long_double.cc: Don't run the test
6557         on targets without a large long double.  XFAIL the execution on
6558         targets with a non-conforming printf.
6560 2021-04-08  Patrick Palka  <ppalka@redhat.com>
6562         PR libstdc++/99433
6563         * include/std/ranges (__adaptor::__maybe_refwrap): Remove.
6564         (__adaptor::__adaptor_invocable): New concept.
6565         (__adaptor::__adaptor_partial_app_viable): New concept.
6566         (__adaptor::_RangeAdaptorClosure): Rewrite, turning it into a
6567         non-template base class.
6568         (__adaptor::_RangeAdaptor): Rewrite, turning it into a CRTP base
6569         class template.
6570         (__adaptor::_Partial): New class template that represents
6571         partial application of a range adaptor non-closure.
6572         (__adaptor::__pipe_invocable): New concept.
6573         (__adaptor::_Pipe): New class template.
6574         (__detail::__can_ref_view): New concept.
6575         (__detail::__can_subrange): New concept.
6576         (all): Replace the lambda here with ...
6577         (_All): ... this functor.  Add appropriate constraints.
6578         (__detail::__can_filter_view): New concept.
6579         (filter, _Filter): As in all/_All.
6580         (__detail::__can_transform): New concept.
6581         (transform, _Transform): As in all/_All.
6582         (__detail::__can_take_view): New concept.
6583         (take, _Take): As in all/_All.
6584         (__detail::__can_take_while_view): New concept.
6585         (take_while, _TakeWhile): As in all/_All.
6586         (__detail::__can_drop_view): New concept.
6587         (drop, _Drop): As in all/_All.
6588         (__detail::__can_drop_while_view): New concept.
6589         (drop_while, _DropWhile): As in all/_All.
6590         (__detail::__can_join_view): New concept.
6591         (join, _Join): As in all/_All.
6592         (__detail::__can_split_view): New concept.
6593         (split, _Split): As in all/_All.  Rename template parameter
6594         _Fp to _Pattern.
6595         (__detail::__already_common): New concept.
6596         (__detail::__can_common_view): New concept.
6597         (common, _Common): As in all/_All.
6598         (__detail::__can_reverse_view): New concept.
6599         (reverse, _Reverse): As in all/_All.
6600         (__detail::__can_elements_view): New concept.
6601         (elements, _Elements): As in all/_All.
6602         (keys, values): Adjust.
6603         * testsuite/std/ranges/adaptors/99433.cc: New test.
6604         * testsuite/std/ranges/adaptors/all.cc: No longer expect that
6605         adding empty range adaptor closure objects to a pipeline doesn't
6606         increase the size of the pipeline.
6607         (test05): New test.
6608         * testsuite/std/ranges/adaptors/common.cc (test03): New test.
6609         * testsuite/std/ranges/adaptors/drop.cc (test09): New test.
6610         * testsuite/std/ranges/adaptors/drop_while.cc (test04): New test.
6611         * testsuite/std/ranges/adaptors/elements.cc (test04): New test.
6612         * testsuite/std/ranges/adaptors/filter.cc (test06): New test.
6613         * testsuite/std/ranges/adaptors/join.cc (test09): New test.
6614         * testsuite/std/ranges/adaptors/p2281.cc: New test.
6615         * testsuite/std/ranges/adaptors/reverse.cc (test07): New test.
6616         * testsuite/std/ranges/adaptors/split.cc (test01, test04):
6617         Adjust.
6618         (test09): New test.
6619         * testsuite/std/ranges/adaptors/split_neg.cc (test01): Adjust
6620         expected error message.
6621         (test02): Likewise.  Extend test.
6622         * testsuite/std/ranges/adaptors/take.cc (test06): New test.
6623         * testsuite/std/ranges/adaptors/take_while.cc (test05): New test.
6624         * testsuite/std/ranges/adaptors/transform.cc (test07, test08):
6625         New test.
6627 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6629         * include/std/string_view: Adjust Doxygen @file comment.
6631 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
6633         * include/std/type_traits (is_scoped_enum<T>): Constrain partial
6634         specialization to not match incomplete enum types. Use a
6635         requires-expression instead of instantiating is_convertible.
6636         (is_scoped_enum<const T>): Add as workaround for PR c++/99968.
6637         * testsuite/20_util/is_scoped_enum/value.cc: Check with
6638         incomplete types and opaque-enum-declarations.
6640 2021-04-07  Jonathan Wakely  <jwakely@redhat.com>
6642         PR libstdc++/99805
6643         * src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call
6644         non-const member on _M_pathname, to avoid copy-on-write.
6645         * testsuite/27_io/filesystem/path/decompose/parent_path.cc:
6646         Check construction from strings that might be shared.
6648 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
6650         * include/bits/move.h (forward, move, move_if_noexcept)
6651         (addressof): Add _GLIBCXX_NODISCARD.
6652         * include/bits/ranges_cmp.h (identity::operator()): Add
6653         nodiscard attribute.
6654         * include/c_global/cstddef (to_integer): Likewise.
6655         * include/std/bit (bit_cast): Likewise.
6656         * include/std/utility (as_const, to_underlying): Likewise.
6658 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
6660         * include/bits/move.h (forward): Change static_assert message
6661         to be unambiguous about what must be true.
6662         * testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
6663         * testsuite/20_util/forward/f_neg.cc: Likewise.
6665 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
6667         * include/bits/alloc_traits.h: Use markdown for code font.
6668         * include/bits/basic_string.h: Fix @param names.
6669         * include/bits/max_size_type.h: Remove period after @file.
6670         * include/bits/regex.h: Fix duplicate @retval names, and rename.
6671         * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add
6672         group open to match existing group close.
6673         * include/ext/pb_ds/priority_queue.hpp: Add blank line before group
6674         open.
6676 2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
6678         * include/bits/atomic_base.h: Fix doxygen group close.
6679         * include/bits/basic_ios.h: Likewise.
6680         * include/bits/forward_list.h: Likewise.
6681         * include/bits/fs_dir.h: Likewise.
6682         * include/bits/fs_ops.h: Likewise.
6683         * include/bits/fs_path.h: Likewise.
6684         * include/bits/functional_hash.h: Likewise.
6685         * include/bits/gslice.h: Likewise.
6686         * include/bits/gslice_array.h: Likewise.
6687         * include/bits/hashtable_policy.h: Likewise.
6688         * include/bits/indirect_array.h: Likewise.
6689         * include/bits/locale_classes.h: Likewise.
6690         * include/bits/locale_facets.h: Likewise.
6691         * include/bits/locale_facets_nonio.h: Likewise.
6692         * include/bits/mask_array.h: Likewise.
6693         * include/bits/refwrap.h: Likewise.
6694         * include/bits/regex.h: Likewise.
6695         * include/bits/regex_automaton.h: Likewise.
6696         * include/bits/regex_compiler.h: Likewise.
6697         * include/bits/regex_constants.h: Likewise.
6698         * include/bits/regex_error.h: Likewise.
6699         * include/bits/regex_executor.h: Likewise.
6700         * include/bits/regex_scanner.h: Likewise.
6701         * include/bits/shared_ptr.h: Likewise.
6702         * include/bits/shared_ptr_atomic.h: Likewise.
6703         * include/bits/shared_ptr_base.h: Likewise.
6704         * include/bits/slice_array.h: Likewise.
6705         * include/bits/specfun.h: Likewise.
6706         * include/bits/std_function.h: Likewise.
6707         * include/bits/std_mutex.h: Likewise.
6708         * include/bits/stl_deque.h: Likewise.
6709         * include/bits/stl_iterator.h: Likewise.
6710         * include/bits/stl_iterator_base_types.h: Likewise.
6711         * include/bits/stl_map.h: Likewise.
6712         * include/bits/stl_multimap.h: Likewise.
6713         * include/bits/stl_multiset.h: Likewise.
6714         * include/bits/stl_numeric.h: Likewise.
6715         * include/bits/stl_pair.h: Likewise.
6716         * include/bits/stl_set.h: Likewise.
6717         * include/bits/stl_uninitialized.h: Likewise.
6718         * include/bits/stream_iterator.h: Likewise.
6719         * include/bits/streambuf_iterator.h: Likewise.
6720         * include/bits/unique_ptr.h: Likewise.
6721         * include/bits/unordered_map.h: Likewise.
6722         * include/bits/unordered_set.h: Likewise.
6723         * include/decimal/decimal: Likewise.
6724         * include/experimental/any: Likewise.
6725         * include/experimental/array: Likewise.
6726         * include/experimental/bits/fs_dir.h: Likewise.
6727         * include/experimental/bits/fs_fwd.h: Likewise.
6728         * include/experimental/bits/fs_ops.h: Likewise.
6729         * include/experimental/bits/fs_path.h: Likewise.
6730         * include/experimental/buffer: Likewise.
6731         * include/experimental/internet: Likewise.
6732         * include/experimental/optional: Likewise.
6733         * include/experimental/propagate_const: Likewise.
6734         * include/experimental/socket: Likewise.
6735         * include/ext/pb_ds/assoc_container.hpp: Likewise.
6736         * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
6737         Likewise.
6738         * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise.
6739         * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise.
6740         * include/ext/pb_ds/detail/types_traits.hpp: Likewise.
6741         * include/ext/pb_ds/exception.hpp: Likewise.
6742         * include/ext/pb_ds/priority_queue.hpp: Likewise.
6743         * include/ext/pb_ds/tag_and_trait.hpp: Likewise.
6744         * include/ext/random: Likewise.
6745         * include/std/any: Likewise.
6746         * include/std/atomic: Likewise.
6747         * include/std/bitset: Likewise.
6748         * include/std/chrono: Likewise.
6749         * include/std/complex: Likewise.
6750         * include/std/condition_variable: Likewise.
6751         * include/std/fstream: Likewise.
6752         * include/std/future: Likewise.
6753         * include/std/iostream: Likewise.
6754         * include/std/istream: Likewise.
6755         * include/std/mutex: Likewise.
6756         * include/std/numeric: Likewise.
6757         * include/std/ostream: Likewise.
6758         * include/std/ratio: Likewise.
6759         * include/std/shared_mutex: Likewise.
6760         * include/std/stdexcept: Likewise.
6761         * include/std/streambuf: Likewise.
6762         * include/std/system_error: Likewise.
6763         * include/std/thread: Likewise.
6764         * include/std/valarray: Likewise.
6765         * include/std/variant: Likewise.
6766         * include/tr1/cmath: Likewise.
6767         * include/tr1/regex: Likewise.
6768         * include/tr2/dynamic_bitset: Likewise.
6769         * libsupc++/atomic_lockfree_defines.h: Likewise.
6770         * libsupc++/exception: Likewise.
6771         * libsupc++/exception.h: Likewise.
6772         * libsupc++/exception_ptr.h: Likewise.
6773         * libsupc++/nested_exception.h: Likewise.
6775 2021-03-31  Alexandre Oliva  <oliva@adacore.com>
6777         * testsuite/30_threads/future/members/poll.cc: Use faster
6778         after-ready call in the calibration loop.
6780 2021-03-29  Jonathan Wakely  <jwakely@redhat.com>
6782         * doc/xml/manual/status_cxx2017.xml: Adjust link for PSTL.
6783         * doc/html/manual/status.html: Regenerate.
6785 2021-03-28  François Dumont  <fdumont@gcc.gnu.org>
6787         * include/debug/forward_list
6788         (forward_list(forward_list&&, const allocator_type&)): Add noexcept qualification.
6789         * include/debug/list (list(list&&, const allocator_type&)): Likewise and add
6790         call to safe container allocator aware move constructor.
6791         * include/debug/vector (vector(vector&&, const allocator_type&)):
6792         Fix noexcept qualification.
6793         * testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc:
6794         Add allocator-extended move constructor noexceot qualification check.
6795         * testsuite/23_containers/list/cons/noexcept_move_construct.cc: Likewise.
6797 2021-03-26  Jonathan Wakely  <jwakely@redhat.com>
6799         * src/c++11/random.cc (USE_LCG): Define when a pseudo-random
6800         fallback is needed.
6801         [USE_LCG] (bad_seed, construct_lcg_at, destroy_lcg_at, __lcg):
6802         New helper functions and callback.
6803         (random_device::_M_init): Add 'prng' and 'all' enumerators.
6804         Replace switch with fallthrough with a series of 'if' statements.
6805         [USE_LCG]: Construct an lcg_type engine and use __lcg when cpuid
6806         checks fail.
6807         (random_device::_M_init_pretr1) [USE_MT19937]: Accept "prng"
6808         token.
6809         (random_device::_M_getval): Check for callback unconditionally
6810         and always pass _M_file pointer.
6811         * testsuite/26_numerics/random/random_device/85494.cc: Remove
6812         effective-target check. Use new random_device_available helper.
6813         * testsuite/26_numerics/random/random_device/94087.cc: Likewise.
6814         * testsuite/26_numerics/random/random_device/cons/default-cow.cc:
6815         Remove effective-target check.
6816         * testsuite/26_numerics/random/random_device/cons/default.cc:
6817         Likewise.
6818         * testsuite/26_numerics/random/random_device/cons/token.cc: Use
6819         new random_device_available helper. Test "prng" token.
6820         * testsuite/util/testsuite_random.h (random_device_available):
6821         New helper function.
6823 2021-03-25  François Dumont  <fdumont@gcc.gnu.org>
6825         * include/debug/string
6826         (basic_string(const basic_string&, const _Alloc&)): Define even if !_GLIBCXX_USE_CXX11_ABI.
6827         (basic_string(basic_string&&, const _Alloc&)): Likewise and add noexcept qualification.
6828         (basic_string<>::erase): Adapt to take __const_iterator.
6829         (basic_string(const _CharT*, const _Allocator&)): Remove assign call.
6830         (basic_string<>::insert(const_iterator, _InputIte, _InputIte)): Try to
6831         remove iterator debug layer even if !_GLIBCXX_USE_CXX11_ABI.
6832         [_GLIBCXX_USE_CHAR8_T] (__gnu_debug::u8string): New.
6833         (__gnu_debug::u16string, __gnu_debug::u32string): New.
6834         (std::hash<__gnu_debug::basic_string<>>): New partial specialization.
6835         (std::__is_fast_hash<__gnu_debug::basic_string<>>): Likewise.
6836         * testsuite/util/exception/safety.h
6837         (erase_base<__gnu_debug::basic_string<>>): New partial specialization.
6838         (insert_base<__gnu_debug::basic_string<>>): Likewise.
6839         * testsuite/util/testsuite_container_traits.h (traits<__gnu_debug::basic_string<>>):
6840         New partial specialization.
6841         * testsuite/21_strings/basic_string/hash/debug.cc: New test.
6842         * testsuite/21_strings/basic_string/requirements/citerators.cc:
6843         Add test on __gnu_debug::string.
6844         * testsuite/21_strings/basic_string/requirements/dr438/constructor.cc: Likewise.
6845         * testsuite/21_strings/basic_string/requirements/exception/basic.cc: Likewise.
6846         * testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc:
6847         Likewise.
6848         * testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc:
6849         Likewise.
6850         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc:
6851         Likewise.
6852         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc:
6853         Likewise.
6854         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc:
6855         Likewise.
6856         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc:
6857         Likewise.
6858         * testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc:
6859         Likewise.
6860         * testsuite/21_strings/basic_string/requirements/typedefs.cc: Likewise.
6862 2021-03-25  Jakub Jelinek  <jakub@redhat.com>
6864         PR c++/99672
6865         * testsuite/18_support/source_location/consteval.cc (main): Adjust
6866         expected column numbers.
6867         * testsuite/18_support/source_location/1.cc (main): Likewise.
6869 2021-03-25  Jonathan Wakely  <jwakely@redhat.com>
6871         * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare malloc.
6873 2021-03-25  Jonathan Wakely  <jwakely@redhat.com>
6875         * testsuite/util/exception/safety.h (setup_base::generate):
6876         Support seeding random engine.
6877         (erase_point, erase_range): Adjust range of random numbers to
6878         ensure dereferenceable iterators are used where required.
6879         (generation_prohibited::run): Do not try to erase from empty
6880         containers.
6881         * testsuite/util/testsuite_containergen.h (test_containers):
6882         Support seeding random engine.
6884 2021-03-23  Jonathan Wakely  <jwakely@redhat.com>
6886         * testsuite/std/ranges/adaptors/reverse.cc: Replace duplicated
6887         line with a check that uses the const being/end overloads.
6889 2021-03-23  Moritz Sichert  <sichert@in.tum.de>
6891         * include/std/ranges (reverse_view::begin, reverse_view::end):
6892         Qualify make_reverse_iterator calls to avoid ADL.
6893         * testsuite/std/ranges/adaptors/reverse.cc: Test that
6894         views::reverse works when make_reverse_iterator is defined
6895         in an associated namespace.
6897 2021-03-23  Jonathan Wakely  <jwakely@redhat.com>
6899         * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT):
6900         Do not define when compiling with Clang.
6902 2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
6904         * include/std/string_view (basic_string_view(Range&&)): Define new
6905         constructor and deduction guide.
6906         * testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc: New test.
6907         * testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc: New test.
6909 2021-03-22  Jonathan Wakely  <jwakely@redhat.com>
6911         * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])):
6912         Add missing 'noexcept' as per LWG 2280.
6913         (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>))
6914         (rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537.
6915         * testsuite/24_iterators/range_access/range_access.cc: Check for
6916         expected noexcept specifiers. Check result types of generic
6917         std::begin and std::end overloads.
6918         * testsuite/24_iterators/range_access/range_access_cpp14.cc:
6919         Check for expected noexcept specifiers.
6920         * testsuite/24_iterators/range_access/range_access_cpp17.cc:
6921         Likewise.
6923 2021-03-19  Jonathan Wakely  <jwakely@redhat.com>
6925         * include/std/type_traits (is_scoped_enum): Define.
6926         * include/std/version (__cpp_lib_is_scoped_enum): Define.
6927         * testsuite/20_util/is_scoped_enum/value.cc: New test.
6928         * testsuite/20_util/is_scoped_enum/version.cc: New test.
6930 2021-03-16  Jonathan Wakely  <jwakely@redhat.com>
6932         PR libstdc++/99341
6933         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove
6934         std::once_flag symbols.
6935         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise.
6936         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise.
6937         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt:
6938         Likewise.
6939         * config/abi/pre/gnu.ver: Likewise.
6940         * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX]
6941         (struct __once_flag_compat): Remove.
6942         (_ZNSt9once_flag11_M_activateEv): Remove.
6943         (_ZNSt9once_flag9_M_finishEb): Remove.
6945 2021-03-16  Jonathan Wakely  <jwakely@redhat.com>
6947         PR libstdc++/99341
6948         * include/std/mutex [_GLIBCXX_HAVE_LINUX_FUTEX] (once_flag):
6949         Revert to pthread_once_t implementation.
6950         [_GLIBCXX_HAVE_LINUX_FUTEX] (call_once): Likewise.
6951         * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX]
6952         (struct __once_flag_compat): New type matching the reverted
6953         implementation of once_flag using futexes.
6954         (once_flag::_M_activate): Remove, replace with ...
6955         (_ZNSt9once_flag11_M_activateEv): ... alias symbol.
6956         (once_flag::_M_finish): Remove, replace with ...
6957         (_ZNSt9once_flag9_M_finishEb): ... alias symbol.
6958         * testsuite/30_threads/call_once/66146.cc: Removed.
6960 2021-03-15  Iain Sandoe  <iain@sandoe.co.uk>
6962         * testsuite/17_intro/names.cc: Exclude j from the list
6963         of test symbols for Darwin.
6965 2021-03-15  Iain Sandoe  <iain@sandoe.co.uk>
6967         * config/os/bsd/darwin/ppc-extra.ver: Add matching for
6968         to_chars and from_chars for long double.
6970 2021-03-15  Patrick Palka  <ppalka@redhat.com>
6972         * include/bits/max_size_type.h (__max_size_type::operator _Tp):
6973         Fix formatting.
6974         (__max_size_type::operator++): Define.
6975         (__max_size_type::operator--): Likewise.
6976         (__max_size_type::operator<=>): Conditionally define (in place
6977         of the other comparison operators).
6978         (__max_diff_type::operator _Tp): Fix formatting.
6979         (__max_diff_type::operator++): Define.
6980         (__max_diff_type::operator--): Likewise.
6981         (__max_diff_type::operator<=>): Conditionally define (in place
6982         of the other comparison operators).
6983         * testsuite/std/ranges/iota/max_size_type.cc (test01): Test
6984         these operator overloads.
6986 2021-03-15  Caroline Tice  <cmtice@google.com>
6988         PR libstdc++/99172
6989         * src/Makefile.am (AM_CXXFLAGS_PRE, AM_CXXFLAGS): Add
6990         AM_CXXFLAGS_PRE with the old definition of AM_CXXFLAGS; make
6991         AM_CXXFLAGS to be AM_CXXFLAGS_PRE with '-fvtable-verify=std'
6992         filtered out.
6993         * src/Makefile.in: Regenerate.
6995 2021-03-11  Patrick Palka  <ppalka@redhat.com>
6997         * src/c++17/floating_to_chars.cc: Simplify the file as if
6998         __SIZEOF_INT128__ is always defined.
6999         [!defined __SIZEOF_INT128__]: Include "uint128_t.h".  Define
7000         a base-10 to_chars overload for the uint128_t class type.
7001         * src/c++17/uint128_t.h: New file.
7002         * testsuite/20_util/to_chars/long_double.cc: No longer expect an
7003         execution FAIL on targets that have a large long double type
7004         but lack __int128.
7006 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7008         * src/c++17/ryu/LOCAL_PATCHES: Update.
7009         * src/c++17/ryu/d2s_intrinsics.h: Don't define uint128_t.
7010         * src/c++17/ryu/generic_128.h: Likewise.
7011         * src/c++17/ryu/ryu_generic_128.h (struct floating_decimal_128):
7012         Use uint128_t instead of __uint128_t.
7013         (generic_binary_to_decimal): Likewise.
7015 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7017         * src/c++17/ryu/LOCAL_PATCHES: New file.
7019 2021-03-11  Patrick Palka  <ppalka@redhat.com>
7021         * src/c++17/floating_to_chars.cc (uint128_t): New conditionally
7022         defined alias of unsigned __int128.
7023         (floating_type_traits_binary128::mantissa_t): Use uint128_t
7024         instead of unsigned __int128.
7025         (floating_type_traits<long double>::mantissa_t)
7026         [LONG_DOUBLE_KIND == LDK_IBM128]: Likewise.
7027         (get_ieee_repr): Likewise.  Make casts from uint_t to mantissa_t
7028         and uint32_t explicit.  Simplify the extraction of mantissa,
7029         exponent and sign bit.
7031 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7033         * include/std/barrier (barrier::arrival_token): New move-only
7034         class that encapsulates the underlying token value.
7036 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7038         * python/libstdcxx/v6/printers.py (find_type): Use tag attribute
7039         instead of unqualified() method.
7041 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7043         PR libstdc++/99537
7044         * include/std/stop_token (_Stop_state_t::_M_release_ownership):
7045         Use acq_rel memory ordering.
7047 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7049         PR libstdc++/99533
7050         * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new
7051         helper function to check for permission denied errors.
7052         * src/filesystem/dir.cc (recursive_directory_iterator):
7053         Likewise.
7054         * src/filesystem/dir-common.h (is_permission_denied_error): New
7055         helper function.
7057 2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
7059         PR libstdc++/99536
7060         * include/bits/random.h (normal_distribution): Use
7061         default-initializer for _M_saved and _M_saved_available.
7063 2021-03-10  John David Anglin  <danglin@gcc.gnu.org>
7065         * testsuite/29_atomics/atomic/wait_notify/bool.cc: Add options to
7066         link with libatomic.
7067         * testsuite/29_atomics/atomic/wait_notify/generic.cc: Likewise.
7068         * testsuite/29_atomics/atomic/wait_notify/pointers.cc: Likewise.
7069         * testsuite/29_atomics/atomic_flag/wait_notify/1.cc: Likewise.
7070         * testsuite/30_threads/barrier/arrive.cc: Likewise.
7071         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
7072         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
7073         * testsuite/30_threads/barrier/completion.cc: Likewise.
7074         * testsuite/30_threads/latch/3.cc: Likewise.
7075         * testsuite/30_threads/semaphore/try_acquire.cc: Likewise.
7076         * testsuite/30_threads/semaphore/try_acquire_for.cc: Likewise.
7077         * testsuite/30_threads/semaphore/try_acquire_until.cc: Likewise.
7079 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7081         PR libstdc++/99413
7082         * include/bits/align.h: Include debug/assertions.h.
7083         * include/bits/codecvt.h: Include bits/c++config.h.
7084         * include/bits/enable_special_members.h: Likewise.
7085         * include/bits/erase_if.h: Likewise.
7086         * include/bits/functional_hash.h: Include <type_traits>.
7087         * include/bits/invoke.h: Include bits/move.h.
7088         * include/bits/ostream_insert.h: Include bits/exception_defines.h.
7089         * include/bits/parse_numbers.h: Include <type_traits>.
7090         * include/bits/predefined_ops.h: Include bits/c++config.h.
7091         * include/bits/range_access.h: Include bits/stl_iterator.h.
7092         * include/bits/stl_bvector.h: Do not include bits/stl_vector.h.
7093         * include/bits/stl_iterator.h: Include bits/stl_iterator_base_types.h.
7094         * include/bits/stl_uninitialized.h: Include bits/stl_algobase.h.
7095         * include/bits/uniform_int_dist.h: Include bits/concept_check.h.
7096         * include/bits/unique_lock.h: Include bits/std_mutex.h.
7097         * include/debug/assertions.h: Include bits/c++config.h.
7099 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7101         * include/bits/ranges_cmp.h (__eq_builtin_ptr_cmp): Remove.
7102         (ranges::equal_to, ranges::not_equal_to): Do not constrain
7103         with __eq_builtin_ptr_cmp.
7104         (ranges::less, ranges::greater, ranges::less_equal)
7105         (ranges::greater_equal): Do not constrain with
7106         __less_builtin_ptr_cmp.
7107         * libsupc++/compare (compare_three_way): Do not constrain with
7108         __3way_builtin_ptr_cmp.
7109         * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to...
7110         * testsuite/18_support/comparisons/object/lwg3530.cc: ...here.
7111         * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test.
7113 2021-03-10  Jonathan Wakely  <jwakely@redhat.com>
7115         * testsuite/std/time/syn_c++20.cc: Enable synopsis checks for
7116         C++20 calendar types.
7118 2021-03-06  Jakub Jelinek  <jakub@redhat.com>
7120         PR libstdc++/99396
7121         * include/std/bit (__rotl, __rotr): Add optimized variants for power of
7122         two _Nd which the compiler can pattern match the rotates.
7124 2021-03-04  Jonathan Wakely  <jwakely@redhat.com>
7126         PR libstdc++/99382
7127         * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc:
7128         Make storage larger than required. Verify no write to the last
7129         element.
7130         * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc:
7131         Likewise.
7133 2021-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7135         * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
7136         * config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
7137         Likewise.
7138         * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
7139         * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
7140         Likewise.
7142 2021-03-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
7144         * include/experimental/bits/simd.h: Replace reserved _X, _B by
7145         _Xp, _Bp.
7146         * include/experimental/bits/simd_builtin.h: Likewise.
7147         * include/experimental/bits/simd_x86.h: Likewise.
7149 2021-02-27  Jonathan Wakely  <jwakely@redhat.com>
7151         PR libstdc++/99301
7152         * include/std/chrono (year_month_day::_M_days_since_epoch()):
7153         Convert chrono::month and chrono::day to unsigned before
7154         converting to uint32_t.
7156 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
7158         * include/std/chrono (year_month_day::_S_from_days): Perform
7159         all calculations with type uint32_t.
7161 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
7163         * doc/xml/manual/abi.xml: Document versioning for GCC 11.
7164         * doc/html/manual/abi.html: Regenerate.
7166 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
7168         PR libstdc++/99270
7169         * testsuite/27_io/headers/cstdio/types_std.cc: Use pointer to
7170         FILE instead of FILE.
7172 2021-02-25  Andreas Schwab  <schwab@suse.de>
7174         * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update.
7175         * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
7176         * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.
7177         * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: Update.
7179 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
7181         PR libstdc++/99265
7182         * include/std/chrono (year_month_day::_S_from_days): Cast long
7183         to int explicitly.
7185 2021-02-25  Jonathan Wakely  <jwakely@redhat.com>
7187         * include/std/utility (to_underlying): Define.
7188         * include/std/version (__cpp_lib_to_underlying): Define.
7189         * testsuite/20_util/to_underlying/1.cc: New test.
7190         * testsuite/20_util/to_underlying/version.cc: New test.
7192 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
7194         PR libstdc++/99261
7195         * src/c++17/floating_to_chars.cc (sprintf_ld): Add extra args
7196         before value to be printed.
7198 2021-02-24  Patrick Palka  <ppalka@redhat.com>
7200         * src/c++17/floating_to_chars.cc (__floating_to_chars_precision):
7201         Relax the condition that guards the printf code path to accept
7202         F128_type as well as long double.
7204 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
7206         * include/std/chrono (year_month_day_last:day): New
7207         implementation.
7209 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
7211         * include/std/chrono (year::is_leap): New implementation.
7212         * testsuite/std/time/year/2.cc: New test.
7214 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
7216         * include/std/chrono (year_month_day::_M_days_since_epoch):
7217         New implementation.
7218         * testsuite/std/time/year_month_day/4.cc: New test.
7220 2021-02-24  Cassio Neri  <cassio.neri@gmail.com>
7222         * include/std/chrono (year_month_day::_S_from_days): New
7223         implementation.
7224         * testsuite/std/time/year_month_day/3.cc: New test.
7226 2021-02-24  Patrick Palka  <ppalka@redhat.com>
7228         PR libstdc++/98384
7229         * testsuite/20_util/to_chars/long_double.cc: Include <optional>.
7230         (test01): Simplify verifying the nearby values by using a
7231         2-iteration loop and a dedicated output buffer to check that the
7232         nearby values are different.  Factor out the printf-based
7233         verification into a local function, and check that the leading
7234         hex digits agree before comparing to the output of printf.  Also
7235         verify the output by round-tripping it through from_chars.
7237 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
7239         PR libstdc++/98389
7240         * config/abi/pre/gnu.ver (GLIBCXX_3.4.29): Do not match to_chars
7241         symbols for long double arguments mangled as 'g'.
7242         * config/os/gnu-linux/ldbl-extra.ver: Likewise.
7243         * config/os/gnu-linux/ldbl-ieee128-extra.ver: Likewise.
7244         * src/c++17/Makefile.am [GLIBCXX_LDBL_ALT128_COMPAT_TRUE]:
7245         Use -mabi=ibmlongdouble for floating_to_chars.cc.
7246         * src/c++17/Makefile.in: Regenerate.
7247         * src/c++17/floating_to_chars.cc (floating_type_traits_binary128):
7248         New type defining type traits of IEEE binary128 format.
7249         (floating_type_traits<__float128>): Define specialization.
7250         (floating_type_traits<long double>): Define in terms of
7251         floating_type_traits_binary128 when appropriate.
7252         (floating_to_shortest_scientific): Handle __float128.
7253         (sprintf_ld): New function template for printing a long double
7254         or __ieee128 value using sprintf.
7255         (__floating_to_chars_shortest, __floating_to_chars_precision):
7256         Use sprintf_ld.
7257         (to_chars): Define overloads for __float128.
7259 2021-02-24  Jonathan Wakely  <jwakely@redhat.com>
7261         * testsuite/17_intro/names.cc: Undefine 'u' on powerpc*-linux*.
7263 2021-02-23  Martin Sebor  <msebor@redhat.com>
7265         PR c++/99074
7266         * libsupc++/dyncast.cc (__dynamic_cast): Return null when
7267         first argument is null.
7269 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
7271         PR libstdc++/99181
7272         * testsuite/21_strings/char_traits/requirements/char/99181.cc: New
7273         test.
7275 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
7277         PR libstdc++/99181
7278         * include/bits/char_traits.h (char_traits<char>::compare): For
7279         constexpr evaluation don't call
7280         __gnu_cxx::char_traits<char_type>::compare but do the comparison loop
7281         directly.
7283 2021-02-23  Jakub Jelinek  <jakub@redhat.com>
7285         PR libstdc++/97549
7286         * include/pstl/parallel_backend_serial.h: Remove __pstl::__par_backend.
7288 2021-02-23  Patrick Palka  <ppalka@redhat.com>
7290         PR libstdc++/98384
7291         * src/c++17/floating_to_chars.cc (get_ieee_repr): Extract
7292         the high- and low-order parts from an IBM long double value
7293         in an endian-agnostic way.
7295 2021-02-19  Jonathan Wakely  <jwakely@redhat.com>
7297         * include/bits/atomic_wait.h (__thread_relax()): Call
7298         __thread_yield() not __gthread_yield().
7300 2021-02-15  Jonathan Wakely  <jwakely@redhat.com>
7302         * include/bits/atomic_wait.h (__thread_yield()): Check
7303         _GLIBCXX_HAS_GTHREADS before using __gthread_yield.
7304         (__thread_relax()): Use __thread_yield() instead of repeating
7305         the preprocessor checks for __gthread_yield.
7307 2021-02-15  Jonathan Wakely  <jwakely@redhat.com>
7309         * include/std/mutex (once_flag::_M_activate()): Add explicit
7310         return statement for passive case.
7311         (once_flag::_M_finish(bool)): Use reserved name for parameter.
7313 2021-02-14  Jonathan Wakely  <jwakely@redhat.com>
7315         PR libstdc++/99096
7316         * testsuite/util/testsuite_fs.h: Always include <unistd.h>.
7318 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7320         PR libstdc++/88881
7321         * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround.
7323 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7325         * doc/xml/manual/status_cxx2014.xml: Document implementation
7326         specific properties of std::experimental::filesystem::rename.
7327         * doc/xml/manual/status_cxx2017.xml: Document implementation
7328         specific properties of std::filesystem::rename.
7329         * doc/html/*: Regenerate.
7330         * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour
7331         for directories on Windows.
7332         * src/filesystem/ops-common.h (__gnu_posix::rename): Use
7333         MoveFileExW on Windows.
7334         * testsuite/27_io/filesystem/operations/rename.cc: New test.
7335         * testsuite/experimental/filesystem/operations/rename.cc: New test.
7337 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7339         * testsuite/util/testsuite_fs.h (nonexistent_path): Add
7340         random number to the path.
7342 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7344         * include/experimental/internet (address_v6::to_string): Include
7345         scope ID in string.
7346         * testsuite/experimental/net/internet/address/v6/members.cc:
7347         Test to_string() results.
7349 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7351         * include/experimental/internet (address_v6::any): Avoid using
7352         memcpy in constexpr function.
7353         (address_v6::loopback): Likewise.
7354         (make_address_v6): Fix missing return statements on error paths.
7355         * include/experimental/io_context: Avoid -Wdangling-else
7356         warning.
7357         * testsuite/experimental/net/internet/address/v4/members.cc:
7358         Remove unused variables.
7359         * testsuite/experimental/net/internet/address/v6/members.cc:
7360         New test.
7362 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7364         * include/bits/shared_ptr_base.h (__shared_ptr::_M_get_deleter):
7365         Add unused attribute to parameter.
7366         * src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq):
7367         Likewise.
7369 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7371         * testsuite/27_io/basic_ostream/emit/1.cc: Expect test to fail
7372         if -fno-rtti is used.
7373         * testsuite/30_threads/async/forced_unwind.cc: Expect test
7374         to abort if -fno-rtti is used.
7376 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7378         * testsuite/util/testsuite_allocator.h (memory_resource):
7379         Remove requirement for RTTI and exceptions to be enabled.
7381 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7383         * testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc: Use
7384         static_cast when RTTI is disabled.
7385         * testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc:
7386         Likewise.
7387         * testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc:
7388         Likewise.
7389         * testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc:
7390         Likewise.
7391         * testsuite/27_io/basic_stringstream/str/char/2.cc:
7392         Likewise.
7393         * testsuite/27_io/basic_stringstream/str/wchar_t/2.cc:
7394         Likewise.
7396 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7398         * include/std/ostream (__syncbuf_base::_S_get): Mark parameter
7399         as unused and only use dynamic_cast when RTTI is enabled.
7401 2021-02-12  Jonathan Wakely  <jwakely@redhat.com>
7403         PR libstdc++/99077
7404         * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)):
7405         Change int parameter to error_code, to match std::ios_failure.
7406         (__throw_ios_failure(const char*, int)): Construct error_code
7407         from int parameter.
7409 2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
7411         * libsupc++/eh_ptr.cc (_GLIBCXX_EH_PTR_RELOPS_COMPAT): Define
7412         new macro.
7413         * libsupc++/exception_ptr.h (_GLIBCXX_EH_PTR_USED): Check new
7414         macro instead of _GLIBCXX_EH_PTR_COMPAT.
7415         (operator==): Likewise.
7417 2021-02-11  Jonathan Wakely  <jwakely@redhat.com>
7419         PR libstdc++/99058
7420         * doc/xml/manual/status_cxx2011.xml: Document when support
7421         became stable.
7422         * doc/xml/manual/status_cxx2014.xml: Likewise.
7423         * doc/xml/manual/status_cxx2017.xml: Likewise.
7424         * doc/html/manual/status.html: Regenerate.
7426 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
7428         PR libstdc++/88881
7429         * src/c++17/fs_ops.cc (fs::status): Re-enable workaround.
7431 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
7433         * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
7434         (fs::remove): Use std::system_category() for error codes from
7435         GetLastError().
7436         * src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
7437         Likewise.
7439 2021-02-10  Jonathan Wakely  <jwakely@redhat.com>
7441         * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo
7442         in __MINGW32__ macro name.
7443         * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise.
7444         * testsuite/27_io/filesystem/path/generation/proximate.cc:
7445         Likewise.
7446         * testsuite/27_io/filesystem/path/generation/relative.cc:
7447         Likewise.
7448         * testsuite/util/testsuite_fs.h: Likewise.
7450 2021-02-09  François Dumont  <fdumont@gcc.gnu.org>
7452         * include/bits/stl_tree.h
7453         (__has_is_transparent, __has_is_transparent_t): Move...
7454         * include/bits/stl_function.h: ...here.
7455         * include/bits/hashtable_policy.h (_Hash_code_base<>::_M_hash_code_tr): New..
7456         (_Hashtable_base<>::_M_equals_tr): New.
7457         * include/bits/hashtable.h (_Hashtable<>::_M_find_tr, _Hashtable<>::_M_count_tr,
7458         _Hashtable<>::_M_equal_range_tr): New member function templates to perform
7459         heterogeneous lookup.
7460         (_Hashtable<>::_M_find_before_node_tr): New.
7461         (_Hashtable<>::_M_find_node_tr): New.
7462         * include/bits/unordered_map.h (unordered_map::find<>, unordered_map::count<>,
7463         unordered_map::contains<>, unordered_map::equal_range<>): New member function
7464         templates to perform heterogeneous lookup.
7465         (unordered_multimap::find<>, unordered_multimap::count<>,
7466         unordered_multimap::contains<>, unordered_multimap::equal_range<>): Likewise.
7467         * include/bits/unordered_set.h  (unordered_set::find<>, unordered_set::count<>,
7468         unordered_set::contains<>, unordered_set::equal_range<>): Likewise.
7469         (unordered_multiset::find<>, unordered_multiset::count<>,
7470         unordered_multiset::contains<>, unordered_multiset::equal_range<>): Likewise.
7471         * include/debug/unordered_map
7472         (unordered_map::find<>, unordered_map::equal_range<>): Likewise.
7473         (unordered_multimap::find<>, unordered_multimap::equal_range<>): Likewise.
7474         * include/debug/unordered_set
7475         (unordered_set::find<>, unordered_set::equal_range<>): Likewise.
7476         (unordered_multiset::find<>, unordered_multiset::equal_range<>): Likewise.
7477         * testsuite/23_containers/unordered_map/operations/1.cc: New test.
7478         * testsuite/23_containers/unordered_multimap/operations/1.cc: New test.
7479         * testsuite/23_containers/unordered_multiset/operations/1.cc: New test.
7480         * testsuite/23_containers/unordered_set/operations/1.cc: New test.
7482 2021-02-09  François Dumont  <fdumont@gcc.gnu.org>
7484         * include/bits/stl_deque.h
7485         (std::operator-(deque::iterator, deque::iterator)): Replace if/then with
7486         a null pointer test.
7488 2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
7490         * testsuite/27_io/filesystem/operations/remove_all.cc: Remove
7491         test directory after making it writable again.
7492         * testsuite/experimental/filesystem/operations/remove_all.cc:
7493         Likewise.
7495 2021-02-09  Jonathan Wakely  <jwakely@redhat.com>
7497         PR libstdc++/99021
7498         * include/std/coroutine (coroutine_handle<P>::from_address): Add
7499         noexcept.
7501 2021-02-09  Vladimir Vishnevsky  <vv.os.swe@gmail.com>
7503         * include/ext/stdio_sync_filebuf.h: Remove unused <unistd.h>.
7504         * src/c++17/fs_ops.cc (fs::permissions): Qualify mode_t.
7506 2021-02-09  Jakub Jelinek  <jakub@redhat.com>
7508         PR middle-end/98465
7509         * include/bits/basic_string.tcc (basic_string::_M_replace): When __s
7510         points to the characters moved by earlier _S_move, compute the source
7511         address using expression based on the __p pointer rather than __s
7512         pointer.
7514 2021-02-03  Jonathan Wakely  <jwakely@redhat.com>
7516         * testsuite/19_diagnostics/error_code/operators/not_equal.cc:
7517         Add comparison with same category and different values.
7518         * testsuite/19_diagnostics/error_code/operators/less.cc:
7519         Likewise. Fix comparison involving different categories.
7520         * testsuite/19_diagnostics/error_code/operators/three_way.cc:
7521         Likewise.
7522         * testsuite/19_diagnostics/error_condition/operators/less.cc:
7523         Add comment.
7524         * testsuite/19_diagnostics/error_condition/operators/three_way.cc:
7525         Likewise.
7527 2021-02-03  yaozhongxiao  <yaozhongxiao@linux.alibaba.com>
7529         * include/experimental/bits/simd_neon.h: Replace repeated vpadd
7530         calls with a single vaddv for aarch64.
7532 2021-02-03  Matthias Kretz  <kretz@kde.org>
7534         * testsuite/Makefile.am: Warn about the workaround. Add
7535         -fno-tree-vrp to CXXFLAGS passed to the check_simd script.
7536         Improve initial user feedback from make check-simd.
7537         * testsuite/Makefile.in: Regenerated.
7539 2021-02-03  Matthias Kretz  <kretz@kde.org>
7541         * include/experimental/bits/simd.h: Add __detail::_Minimum and
7542         __detail::_Maximum to use them as _BinaryOperation to _S_reduce.
7543         Add hmin and hmax overloads for simd and const_where_expression.
7544         * include/experimental/bits/simd_scalar.h
7545         (_SimdImplScalar::_S_reduce): Make unused _BinaryOperation
7546         parameter const-ref to allow calling _S_reduce with an rvalue.
7547         * testsuite/experimental/simd/tests/reductions.cc: Add tests for
7548         hmin and hmax. Since the compiler statically determined that all
7549         tests pass, repeat the test after a call to make_value_unknown.
7551 2021-02-03  Matthias Kretz  <kretz@kde.org>
7553         * testsuite/experimental/simd/tests/bits/verify.h (verify): Add
7554         instruction pointer data member. Ensure that the `if (m_failed)`
7555         branch is always inlined into the calling code. The body of the
7556         conditional can still be a function call. Move the get_ip call
7557         into the verify ctor to simplify the ctor calls.
7558         (COMPARE): Don't mention the use of all_of for reduction of a
7559         simd_mask. It only distracts from the real issue.
7561 2021-02-03  Matthias Kretz  <kretz@kde.org>
7563         * testsuite/experimental/simd/driver.sh: Abstract reading test
7564         options into read_src_option function. Read skip, only,
7565         expensive, and xfail via read_src_option. Add timeout and
7566         timeout-factor options and adjust timeout variable accordingly.
7567         * testsuite/experimental/simd/tests/loadstore.cc: Set
7568         timeout-factor 2.
7570 2021-02-03  Matthias Kretz  <kretz@kde.org>
7572         * testsuite/experimental/simd/driver.sh: When handling the pipe
7573         to log (and on verbose to stdout) count the lines. If it exceeds
7574         1000 log the issue and exit 125, which is then handled as a
7575         failure.
7577 2021-02-03  Matthias Kretz  <kretz@kde.org>
7579         * testsuite/experimental/simd/tests/hypot3_fma.cc: Add skip:
7580         markup for long double on powerpc64*.
7582 2021-02-03  Matthias Kretz  <kretz@kde.org>
7584         * include/experimental/bits/simd.h: Add __have_power10vec
7585         conditional on _ARCH_PWR10.
7586         * include/experimental/bits/simd_builtin.h: Forward declare
7587         _MaskImplPpc and use it as _MaskImpl when __ALTIVEC__ is
7588         defined.
7589         (_MaskImplBuiltin::_S_some_of): Call _S_popcount from the
7590         _SuperImpl for optimizations and correctness.
7591         * include/experimental/bits/simd_ppc.h: Add _MaskImplPpc.
7592         (_MaskImplPpc::_S_popcount): Implement via vec_cntm for POWER10.
7593         Otherwise, for >=int use -vec_sums divided by a sizeof factor.
7594         For <int use -vec_sums(vec_sum4s(...)) to sum all mask entries.
7596 2021-02-03  Matthias Kretz  <kretz@kde.org>
7598         * testsuite/experimental/simd/driver.sh: Remove executable on
7599         SIGINT. Process compiler and test executable output: In verbose
7600         mode print messages immediately, limited to 1000 lines and
7601         breaking long lines to below $COLUMNS (or 1024 if not set).
7602         Communicating the exit status of the compiler / test with the
7603         necessary pipe is done via a message through stdout/-in.
7605 2021-02-03  Matthias Kretz  <kretz@kde.org>
7607         * testsuite/Makefile.am: Ensure .simd.summary is empty before
7608         collecting a new summary.
7609         * testsuite/Makefile.in: Regenerate.
7611 2021-02-03  Matthias Kretz  <kretz@kde.org>
7613         * testsuite/experimental/simd/generate_makefile.sh: Use
7614         different variables internally than documented for user
7615         overrides. This makes internal append/prepend work as intended.
7617 2021-02-03  Matthias Kretz  <kretz@kde.org>
7619         * testsuite/experimental/simd/driver.sh (verify_test): Print
7620         test output on run xfail. Do not repeat lines from the log that
7621         were already printed on stdout.
7622         (test_selector): Make the compiler flags pattern usable as a
7623         substring selector.
7624         (toplevel): Trap on SIGINT and remove the log and sum files.
7625         Call timout with --foreground to quickly terminate on SIGINT.
7626         * testsuite/experimental/simd/generate_makefile.sh: Simplify run
7627         targets via target patterns. Default DRIVEROPTS to -v for run
7628         targets. Remove log and sum files after completion of the run
7629         target (so that it's always recompiled).
7630         Place help text into text file for reasonable 'make help'
7631         performance.
7633 2021-02-03  Matthias Kretz  <kretz@kde.org>
7635         * include/experimental/bits/simd.h: Remove unnecessary static
7636         assertion. Allow sizeof(8) integer __intrinsic_type to enable
7637         the necessary mask type.
7639 2021-02-03  Matthias Kretz  <kretz@kde.org>
7641         * include/experimental/bits/simd.h: Let __intrinsic_type<long
7642         double, N> be valid if sizeof(long double) == sizeof(double) and
7643         use a __vector double as member type.
7645 2021-02-03  Matthias Kretz  <kretz@kde.org>
7647         * include/experimental/bits/simd.h (__is_intrinsic_type): New
7648         internal type trait. Alias for __is_vector_type on x86.
7649         (_VectorTraitsImpl): Enable for __intrinsic_type in addition for
7650         __vector_type.
7651         (__intrin_bitcast): Allow casting to & from vector & intrinsic
7652         types.
7653         (__intrinsic_type): Explicitly specialize for NEON intrinsic
7654         vector types.
7656 2021-02-03  Matthias Kretz  <kretz@kde.org>
7658         * testsuite/experimental/simd/driver.sh: Implement skip, only,
7659         expensive, and xfail markers. They can select on type, ABI tag
7660         subset number, target-triplet, and compiler flags.
7661         * testsuite/experimental/simd/generate_makefile.sh: The summary
7662         now includes lines for unexpected passes and expected failures.
7663         If the skip or only markers are only conditional on the type, do
7664         not generate rules for those types.
7665         * testsuite/experimental/simd/tests/abs.cc: Mark test expensive
7666         for ABI tag subsets 1-9.
7667         * testsuite/experimental/simd/tests/algorithms.cc: Ditto.
7668         * testsuite/experimental/simd/tests/broadcast.cc: Ditto.
7669         * testsuite/experimental/simd/tests/casts.cc: Ditto.
7670         * testsuite/experimental/simd/tests/generator.cc: Ditto.
7671         * testsuite/experimental/simd/tests/integer_operators.cc: Ditto.
7672         * testsuite/experimental/simd/tests/loadstore.cc: Ditto.
7673         * testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto.
7674         * testsuite/experimental/simd/tests/mask_conversions.cc: Ditto.
7675         * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto.
7676         * testsuite/experimental/simd/tests/mask_loadstore.cc: Ditto.
7677         * testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto.
7678         * testsuite/experimental/simd/tests/mask_operators.cc: Ditto.
7679         * testsuite/experimental/simd/tests/mask_reductions.cc: Ditto.
7680         * testsuite/experimental/simd/tests/operator_cvt.cc: Ditto.
7681         * testsuite/experimental/simd/tests/operators.cc: Ditto.
7682         * testsuite/experimental/simd/tests/reductions.cc: Ditto.
7683         * testsuite/experimental/simd/tests/simd.cc: Ditto.
7684         * testsuite/experimental/simd/tests/split_concat.cc: Ditto.
7685         * testsuite/experimental/simd/tests/splits.cc: Ditto.
7686         * testsuite/experimental/simd/tests/where.cc: Ditto.
7687         * testsuite/experimental/simd/tests/fpclassify.cc: Ditto. In
7688         addition replace "test only floattypes" marker by unconditional
7689         "float|double|ldouble" only marker.
7690         * testsuite/experimental/simd/tests/frexp.cc: Ditto.
7691         * testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto.
7692         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
7693         Ditto.
7694         * testsuite/experimental/simd/tests/logarithm.cc: Ditto.
7695         * testsuite/experimental/simd/tests/math_1arg.cc: Ditto.
7696         * testsuite/experimental/simd/tests/math_2arg.cc: Ditto.
7697         * testsuite/experimental/simd/tests/remqo.cc: Ditto.
7698         * testsuite/experimental/simd/tests/trigonometric.cc: Ditto.
7699         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto.
7700         * testsuite/experimental/simd/tests/sincos.cc: Ditto. In
7701         addition, xfail on run because the reference data is missing.
7703 2021-02-02  Jonathan Wakely  <jwakely@redhat.com>
7705         * doc/xml/manual/status_cxx2011.xml: Remove stray table cell.
7706         * doc/xml/manual/status_cxx2014.xml: Likewise.
7707         * doc/xml/manual/status_cxx2017.xml: Likewise.
7708         * doc/html/manual/status.html: Regenerate.
7710 2021-02-01  François Dumont  <fdumont@gcc.gnu.org>
7712         PR libstdc++/70303
7713         * include/bits/stl_deque.h (std::deque<>::operator-(iterator, iterator)):
7714         Return 0 if both iterators are value-initialized.
7715         * testsuite/23_containers/deque/70303.cc: New test.
7716         * testsuite/23_containers/vector/70303.cc: New test.
7718 2021-02-01  Jonathan Wakely  <jwakely@redhat.com>
7720         * doc/xml/manual/status_cxx2011.xml: Update std::call_once
7721         status.
7722         * doc/xml/manual/status_cxx2014.xml: Likewise.
7723         * doc/xml/manual/status_cxx2017.xml: Likewise. Update
7724         std::from_chars and std::to_chars status. Fix formatting.
7725         * doc/html/manual/status.html: Regenerate.
7727 2021-01-28  Jonathan Wakely  <jwakely@redhat.com>
7729         * include/experimental/bits/numeric_traits.h: Update copyright
7730         dates.
7731         * include/experimental/bits/simd.h: Likewise.
7732         * include/experimental/bits/simd_builtin.h: Likewise.
7733         * include/experimental/bits/simd_converter.h: Likewise.
7734         * include/experimental/bits/simd_detail.h: Likewise.
7735         * include/experimental/bits/simd_fixed_size.h: Likewise.
7736         * include/experimental/bits/simd_math.h: Likewise.
7737         * include/experimental/bits/simd_neon.h: Likewise.
7738         * include/experimental/bits/simd_ppc.h: Likewise.
7739         * include/experimental/bits/simd_scalar.h: Likewise.
7740         * include/experimental/bits/simd_x86.h: Likewise.
7741         * include/experimental/bits/simd_x86_conversions.h: Likewise.
7742         * include/experimental/simd: Likewise.
7743         * testsuite/experimental/simd/*: Likewise.
7745 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
7747         * doc/xml/manual/status_cxx2017.xml: Replace invalid entity.
7748         * doc/html/*: Regenerate.
7750 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
7752         * testsuite/experimental/simd/generate_makefile.sh: Use printf
7753         instead of echo when printing escape characters.
7755 2021-01-27  Matthias Kretz  <kretz@kde.org>
7757         * scripts/check_simd: New file. This script is called from the
7758         the check-simd target. It determines a set of compiler flags and
7759         simulator setups for calling generate_makefile.sh and passes the
7760         information back to the check-simd target, which recurses to the
7761         generated Makefiles.
7762         * scripts/create_testsuite_files: Remove files below simd/tests/
7763         from testsuite_files and place them in testsuite_files_simd.
7764         * testsuite/Makefile.am: Add testsuite_files_simd. Add
7765         check-simd target.
7766         * testsuite/Makefile.in: Regenerate.
7767         * testsuite/experimental/simd/driver.sh: New file. This script
7768         compiles and runs a given simd test, logging its output and
7769         status. It uses the timeout command to implement compile and
7770         test timeouts.
7771         * testsuite/experimental/simd/generate_makefile.sh: New file.
7772         This script generates a Makefile which uses driver.sh to compile
7773         and run the tests and collect the logs into a single log file.
7774         * testsuite/experimental/simd/tests/abs.cc: New file. Tests
7775         abs(simd).
7776         * testsuite/experimental/simd/tests/algorithms.cc: New file.
7777         Tests min/max(simd, simd).
7778         * testsuite/experimental/simd/tests/bits/conversions.h: New
7779         file. Contains functions to support tests involving conversions.
7780         * testsuite/experimental/simd/tests/bits/make_vec.h: New file.
7781         Support functions make_mask and make_vec.
7782         * testsuite/experimental/simd/tests/bits/mathreference.h: New
7783         file. Support functions to supply precomputed math function
7784         reference data.
7785         * testsuite/experimental/simd/tests/bits/metahelpers.h: New
7786         file. Support code for SFINAE testing.
7787         * testsuite/experimental/simd/tests/bits/simd_view.h: New file.
7788         * testsuite/experimental/simd/tests/bits/test_values.h: New
7789         file. Test functions to easily drive a test with simd objects
7790         initialized from a given list of values and a range of random
7791         values.
7792         * testsuite/experimental/simd/tests/bits/ulp.h: New file.
7793         Support code to determine the ULP distance of simd objects.
7794         * testsuite/experimental/simd/tests/bits/verify.h: New file.
7795         Test framework for COMPARE'ing simd objects and instantiating
7796         the test templates with value_type and ABI tag.
7797         * testsuite/experimental/simd/tests/broadcast.cc: New file. Test
7798         simd broadcasts.
7799         * testsuite/experimental/simd/tests/casts.cc: New file. Test
7800         simd casts.
7801         * testsuite/experimental/simd/tests/fpclassify.cc: New file.
7802         Test floating-point classification functions.
7803         * testsuite/experimental/simd/tests/frexp.cc: New file. Test
7804         frexp(simd).
7805         * testsuite/experimental/simd/tests/generator.cc: New file. Test
7806         simd generator constructor.
7807         * testsuite/experimental/simd/tests/hypot3_fma.cc: New file.
7808         Test 3-arg hypot(simd,simd,simd) and fma(simd,simd,sim).
7809         * testsuite/experimental/simd/tests/integer_operators.cc: New
7810         file. Test integer operators.
7811         * testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
7812         New file. Test ldexp(simd), scalbn(simd), scalbln(simd), and
7813         modf(simd).
7814         * testsuite/experimental/simd/tests/loadstore.cc: New file. Test
7815         (converting) simd loads and stores.
7816         * testsuite/experimental/simd/tests/logarithm.cc: New file. Test
7817         log*(simd).
7818         * testsuite/experimental/simd/tests/mask_broadcast.cc: New file.
7819         Test simd_mask broadcasts.
7820         * testsuite/experimental/simd/tests/mask_conversions.cc: New
7821         file. Test simd_mask conversions.
7822         * testsuite/experimental/simd/tests/mask_implicit_cvt.cc: New
7823         file. Test simd_mask implicit conversions.
7824         * testsuite/experimental/simd/tests/mask_loadstore.cc: New file.
7825         Test simd_mask loads and stores.
7826         * testsuite/experimental/simd/tests/mask_operator_cvt.cc: New
7827         file. Test simd_mask operators convert as specified.
7828         * testsuite/experimental/simd/tests/mask_operators.cc: New file.
7829         Test simd_mask compares, subscripts, and negation.
7830         * testsuite/experimental/simd/tests/mask_reductions.cc: New
7831         file. Test simd_mask reductions.
7832         * testsuite/experimental/simd/tests/math_1arg.cc: New file. Test
7833         1-arg math functions on simd.
7834         * testsuite/experimental/simd/tests/math_2arg.cc: New file. Test
7835         2-arg math functions on simd.
7836         * testsuite/experimental/simd/tests/operator_cvt.cc: New file.
7837         Test implicit conversions on simd binary operators behave as
7838         specified.
7839         * testsuite/experimental/simd/tests/operators.cc: New file. Test
7840         simd compares, subscripts, not, unary minus, plus, minus,
7841         multiplies, divides, increment, and decrement.
7842         * testsuite/experimental/simd/tests/reductions.cc: New file.
7843         Test reduce(simd).
7844         * testsuite/experimental/simd/tests/remqo.cc: New file. Test
7845         remqo(simd).
7846         * testsuite/experimental/simd/tests/simd.cc: New file. Basic
7847         sanity checks of simd types.
7848         * testsuite/experimental/simd/tests/sincos.cc: New file. Test
7849         sin(simd) and cos(simd).
7850         * testsuite/experimental/simd/tests/split_concat.cc: New file.
7851         Test split(simd) and concat(simd, simd).
7852         * testsuite/experimental/simd/tests/splits.cc: New file. Test
7853         split(simd_mask).
7854         * testsuite/experimental/simd/tests/trigonometric.cc: New file.
7855         Test remaining trigonometric functions on simd.
7856         * testsuite/experimental/simd/tests/trunc_ceil_floor.cc: New
7857         file. Test trunc(simd), ceil(simd), and floor(simd).
7858         * testsuite/experimental/simd/tests/where.cc: New file. Test
7859         masked operations using where.
7861 2021-01-27  Matthias Kretz  <kretz@kde.org>
7863         * doc/xml/manual/status_cxx2017.xml: Add implementation status
7864         of the Parallelism TS 2. Document implementation-defined types
7865         and behavior.
7866         * include/Makefile.am: Add new headers.
7867         * include/Makefile.in: Regenerate.
7868         * include/experimental/simd: New file. New header for
7869         Parallelism TS 2.
7870         * include/experimental/bits/numeric_traits.h: New file.
7871         Implementation of P1841R1 using internal naming. Addition of
7872         missing IEC559 functionality query.
7873         * include/experimental/bits/simd.h: New file. Definition of the
7874         public simd interfaces and general implementation helpers.
7875         * include/experimental/bits/simd_builtin.h: New file.
7876         Implementation of the _VecBuiltin simd_abi.
7877         * include/experimental/bits/simd_converter.h: New file. Generic
7878         simd conversions.
7879         * include/experimental/bits/simd_detail.h: New file. Internal
7880         macros for the simd implementation.
7881         * include/experimental/bits/simd_fixed_size.h: New file. Simd
7882         fixed_size ABI specific implementations.
7883         * include/experimental/bits/simd_math.h: New file. Math
7884         overloads for simd.
7885         * include/experimental/bits/simd_neon.h: New file. Simd NEON
7886         specific implementations.
7887         * include/experimental/bits/simd_ppc.h: New file. Implement bit
7888         shifts to avoid invalid results for integral types smaller than
7889         int.
7890         * include/experimental/bits/simd_scalar.h: New file. Simd scalar
7891         ABI specific implementations.
7892         * include/experimental/bits/simd_x86.h: New file. Simd x86
7893         specific implementations.
7894         * include/experimental/bits/simd_x86_conversions.h: New file.
7895         x86 specific conversion optimizations. The conversion patterns
7896         work around missing conversion patterns in the compiler and
7897         should be removed as soon as PR85048 is resolved.
7898         * testsuite/experimental/simd/standard_abi_usable.cc: New file.
7899         Test that all (not all fixed_size<N>, though) standard simd and
7900         simd_mask types are usable.
7901         * testsuite/experimental/simd/standard_abi_usable_2.cc: New
7902         file. As above but with -ffast-math.
7903         * testsuite/libstdc++-dg/conformance.exp: Don't build simd tests
7904         from the standard test loop. Instead use
7905         check_vect_support_and_set_flags to build simd tests with the
7906         relevant machine flags.
7908 2021-01-27  Jonathan Wakely  <jwakely@redhat.com>
7910         PR libstdc++/66414
7911         * include/bits/string_view.tcc
7912         (basic_string_view::find(const CharT*, size_type, size_type)):
7913         Optimize.
7915 2021-01-27  Paul Fee  <paul.f.fee@gmail.com>
7917         * include/bits/basic_string.h (basic_string::contains): New
7918         member functions.
7919         * include/std/string_view (basic_string_view::contains):
7920         Likewise.
7921         * include/std/version (__cpp_lib_string_contains): Define.
7922         * testsuite/21_strings/basic_string/operations/starts_with/char/1.cc:
7923         Remove trailing whitespace.
7924         * testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc:
7925         Likewise.
7926         * testsuite/21_strings/basic_string/operations/contains/char/1.cc: New test.
7927         * testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc: New test.
7928         * testsuite/21_strings/basic_string_view/operations/contains/char/1.cc: New test.
7929         * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc: New test.
7930         * testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc: New test.
7932 2021-01-21  Jonathan Wakely  <jwakely@redhat.com>
7934         * src/c++17/Makefile.in: Regenerate.
7936 2021-01-20  David Edelsohn  <dje.gcc@gmail.com>
7938         * config/os/aix/ctype_inline.h (bool ctype<char>:: is): Cast
7939         _OBJ_DATA subscript to unsigned char. Add _THREAD_SAFE access to
7940         __lc_type.
7941         (const char* ctype<char>:: is): Same.
7943 2021-01-18  Jonathan Wakely  <jwakely@redhat.com>
7945         PR libstdc++/98725
7946         * testsuite/20_util/unique_ptr/io/lwg2948.cc:  Do not try to
7947         write to a wide character stream if wide character support is
7948         disabled in the library.
7950 2021-01-18  Jonathan Wakely  <jwakely@redhat.com>
7952         * testsuite/27_io/basic_stringstream/cons/char/1.cc: Use
7953         stringbuf not wstringbuf.
7955 2021-01-18  Jakub Jelinek  <jakub@redhat.com>
7957         PR debug/98708
7958         * src/c++11/Makefile.am (cxx11-ios_failure-lt.s, cxx11-ios_failure.s):
7959         Compile with -gno-as-loc-support.
7960         * src/c++11/Makefile.in: Regenerated.
7962 2021-01-16  H.J. Lu  <hjl.tools@gmail.com>
7964         * testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
7965         Add -fcf-protection=none to -march=i486.
7967 2021-01-14  François Dumont  <fdumont@gcc.gnu.org>
7969         * testsuite/23_containers/deque/debug/98466.cc: Make it pre-C++11
7970         compliant.
7972 2021-01-14  Alexandre Oliva  <oliva@adacore.com>
7974         * testsuite/30_threads/future/members/poll.cc: Calibrate
7975         iteration count.
7977 2021-01-14  François Dumont  <fdumont@gcc.gnu.org>
7979         PR libstdc++/98466
7980         * include/bits/hashtable_policy.h (_Node_iterator_base()): Set _M_cur to nullptr.
7981         (_Node_iterator()): Make default.
7982         (_Node_const_iterator()): Make default.
7983         * include/debug/macros.h (__glibcxx_check_erae_range_after): Add _M_singular
7984         iterator checks.
7985         * include/debug/safe_iterator.h
7986         (_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator are value initialized.
7987         * include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
7988         Likewise.
7989         * include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): Add
7990         _M_singular checks on input iterators.
7991         * src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare): Remove _M_singular
7992         checks.
7993         * testsuite/23_containers/deque/debug/98466.cc: New test.
7994         * testsuite/23_containers/unordered_map/debug/98466.cc: New test.
7996 2021-01-14  Jonathan Wakely  <jwakely@redhat.com>
7998         PR libstdc++/98471
7999         * include/bits/fs_path.h (__throw_conversion_error): New
8000         function to throw or abort on character conversion errors.
8001         (__wstr_from_utf8): Move definition after filesystem_error has
8002         been defined. Use __throw_conversion_error.
8003         (path::_S_convert<_EcharT>): Use __throw_conversion_error.
8004         (path::_S_str_convert<_CharT, _Traits, _Allocator>): Likewise.
8005         (path::u8string): Likewise.
8007 2021-01-14  Jonathan Wakely  <jwakely@redhat.com>
8009         * include/std/barrier: Update copyright years. Fix whitespace.
8010         * include/std/version: Fix whitespace.
8011         * testsuite/30_threads/barrier/1.cc: Update copyright years.
8012         * testsuite/30_threads/barrier/2.cc: Likewise.
8013         * testsuite/30_threads/barrier/arrive.cc: Likewise.
8014         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
8015         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
8016         * testsuite/30_threads/barrier/completion.cc: Likewise.
8018 2021-01-13  Jonathan Wakely  <jwakely@redhat.com>
8020         * doc/doxygen/user.cfg.in (INPUT): Remove include/debug/array.
8022 2021-01-10  David Edelsohn  <dje.gcc@gmail.com>
8024         PR libstdc++/98613
8025         * testsuite/ext/vstring/cons/moveable.cc: Suppress false positive
8026         warning.
8027         * testsuite/ext/vstring/modifiers/assign/move_assign.cc: Same.
8029 2021-01-08  Olivier Hainque  <hainque@adacore.com>
8031         * testsuite/20_util/bind/ref_neg.cc: Tweak the
8032         dg-prune-output regex for out-of-build-tree contexts.
8034 2021-01-07  Thomas Rodgers  <trodgers@redhat.com>
8036         * doc/doxygen/user.cfg.in: Add new header.
8037         * include/Makefile.am (std_headers): likewise.
8038         * include/Makefile.in: Regenerate.
8039         * include/precompiled/stdc++.h: Add new header.
8040         * include/std/barrier: New file.
8041         * include/std/version: Add __cpp_lib_barrier feature test macro.
8042         * testsuite/30_threads/barrier/1.cc: New test.
8043         * testsuite/30_threads/barrier/2.cc: Likewise.
8044         * testsuite/30_threads/barrier/arrive_and_drop.cc: Likewise.
8045         * testsuite/30_threads/barrier/arrive_and_wait.cc: Likewise.
8046         * testsuite/30_threads/barrier/arrive.cc: Likewise.
8047         * testsuite/30_threads/barrier/completion.cc: Likewise.
8049 2021-01-07  Patrick Palka  <ppalka@redhat.com>
8051         PR libstdc++/98384
8052         * testsuite/20_util/to_chars/long_double.cc: Use nexttowardl
8053         instead of the non-standard nextupl and nextdownl.
8055 2021-01-05  Samuel Thibault  <samuel.thibault@ens-lyon.org>
8057         * configure: Re-generate.
8059 2021-01-05  Ed Smith-Rowland  <3dw4rd@verizon.net>
8061         * include/precompiled/stdc++.h: Add <source_location> to C++20 section.
8063 2021-01-01  Jakub Jelinek  <jakub@redhat.com>
8065         * ChangeLog-2020: Rotate ChangeLog.  New file.
8068 Copyright (C) 2021 Free Software Foundation, Inc.
8070 Copying and distribution of this file, with or without modification,
8071 are permitted in any medium without royalty provided the copyright
8072 notice and this notice are preserved.