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